Переглянути джерело

Merge branch 'master' of https://github.com/wekan/wekan into move-swimlane

John Supplee 4 роки тому
батько
коміт
be9e98b2a1
92 змінених файлів з 3001 додано та 4950 видалено
  1. 0 1
      .gitignore
  2. 1 1
      .tx/config
  3. 71 1
      CHANGELOG.md
  4. 4 4
      README.md
  5. 1 1
      Stackerfile.yml
  6. 1 1
      client/components/boards/boardBody.js
  7. 5 2
      client/components/boards/boardHeader.jade
  8. 10 8
      client/components/boards/boardHeader.js
  9. 0 1
      client/components/cards/cardDetails.jade
  10. 3 1
      client/components/cards/cardDetails.js
  11. 10 2
      client/components/main/layouts.js
  12. 2 5
      client/components/settings/settingBody.jade
  13. 19 1
      client/components/settings/settingBody.js
  14. 10 2
      client/components/users/userHeader.js
  15. 5 1
      i18n/ar-EG.i18n.json
  16. 5 1
      i18n/ar.i18n.json
  17. 5 1
      i18n/bg.i18n.json
  18. 5 1
      i18n/br.i18n.json
  19. 5 1
      i18n/ca.i18n.json
  20. 6 2
      i18n/cs.i18n.json
  21. 5 1
      i18n/da.i18n.json
  22. 5 1
      i18n/de.i18n.json
  23. 5 1
      i18n/el.i18n.json
  24. 5 1
      i18n/en-GB.i18n.json
  25. 4 1
      i18n/en.i18n.json
  26. 5 1
      i18n/eo.i18n.json
  27. 5 1
      i18n/es-AR.i18n.json
  28. 5 1
      i18n/es-CL.i18n.json
  29. 987 0
      i18n/es-LA.i18n.json
  30. 5 1
      i18n/es-MX.i18n.json
  31. 5 1
      i18n/es-PE.i18n.json
  32. 5 1
      i18n/es-PY.i18n.json
  33. 5 1
      i18n/es.i18n.json
  34. 5 1
      i18n/eu.i18n.json
  35. 5 1
      i18n/fa-IR.i18n.json
  36. 5 1
      i18n/fa.i18n.json
  37. 5 1
      i18n/fi.i18n.json
  38. 15 11
      i18n/fr.i18n.json
  39. 5 1
      i18n/gl.i18n.json
  40. 17 13
      i18n/he.i18n.json
  41. 5 1
      i18n/hi.i18n.json
  42. 66 62
      i18n/hr.i18n.json
  43. 5 1
      i18n/hu.i18n.json
  44. 5 1
      i18n/hy.i18n.json
  45. 29 25
      i18n/id.i18n.json
  46. 5 1
      i18n/ig.i18n.json
  47. 119 115
      i18n/it.i18n.json
  48. 13 9
      i18n/ja.i18n.json
  49. 5 1
      i18n/ka.i18n.json
  50. 5 1
      i18n/km.i18n.json
  51. 5 1
      i18n/ko.i18n.json
  52. 5 1
      i18n/lt.i18n.json
  53. 5 1
      i18n/lv.i18n.json
  54. 5 1
      i18n/mk.i18n.json
  55. 5 1
      i18n/mn.i18n.json
  56. 5 1
      i18n/nl.i18n.json
  57. 5 1
      i18n/oc.i18n.json
  58. 5 1
      i18n/pa.i18n.json
  59. 5 1
      i18n/pl.i18n.json
  60. 5 1
      i18n/pt-BR.i18n.json
  61. 5 1
      i18n/pt.i18n.json
  62. 5 1
      i18n/ro.i18n.json
  63. 34 30
      i18n/ru.i18n.json
  64. 5 1
      i18n/sk.i18n.json
  65. 5 1
      i18n/sl.i18n.json
  66. 5 1
      i18n/sr.i18n.json
  67. 116 112
      i18n/sv.i18n.json
  68. 5 1
      i18n/sw.i18n.json
  69. 5 1
      i18n/ta.i18n.json
  70. 5 1
      i18n/th.i18n.json
  71. 5 1
      i18n/tr.i18n.json
  72. 5 1
      i18n/uk.i18n.json
  73. 723 719
      i18n/vi.i18n.json
  74. 24 20
      i18n/zh-CN.i18n.json
  75. 5 1
      i18n/zh-HK.i18n.json
  76. 5 1
      i18n/zh-TW.i18n.json
  77. 41 28
      models/customFields.js
  78. 12 0
      models/presences.js
  79. 50 27
      models/trelloCreator.js
  80. 19 0
      models/users.js
  81. 0 1
      openapi/generate_openapi.py
  82. 324 214
      package-lock.json
  83. 2 2
      package.json
  84. 1 1
      packages/markdown/src/template-integration.js
  85. 1 1
      public/api/wekan.html
  86. 1 3450
      public/api/wekan.yml
  87. 5 11
      releases/rebuild-docs-install-deps.sh
  88. 2 7
      releases/release-bundle.sh
  89. 3 0
      releases/translations/pull-translations.sh
  90. 1 5
      releases/up.sh
  91. 2 2
      sandstorm-pkgdef.capnp
  92. 2 2
      server/notifications/outgoing.js

+ 0 - 1
.gitignore

@@ -31,5 +31,4 @@ Thumbs.db
 ehthumbs.db
 .eslintcache
 .meteor/local
-.meteor-1.6-snap/.meteor/local
 .devcontainer/docker-compose.extend.yml

+ 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 = ar_EG:ar-EG, bg_BG:bg, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
+lang_map = ar_EG:ar-EG, bg_BG:bg, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
 
 [wekan.application]
 file_filter = i18n/<lang>.i18n.json

+ 71 - 1
CHANGELOG.md

@@ -1,11 +1,81 @@
-# Upcoming Wekan release
+# v5.08 2021-03-26 Wekan release
 
 This release adds the following new features:
 
+- [Admin Panel/Settings/Accounts: Hide system messages of all users](https://github.com/wekan/wekan/commit/a249ffc8054189d8e3db9b4c8f082cc7ce7dcb52).
+  Thanks to bbyszio, r4nc0r and xet7.
+
+and adds the following improvements:
+
+- [Add Trello attached links to the card description](https://github.com/wekan/wekan/pull/3669).
+  Thanks to jrsupplee.
+- [Added package-lock.json and updated .gitignore](https://github.com/wekan/wekan/commit/d532a3591f338cec9a3839d43d9a1e9d69f59dc2).
+  Thanks to xet7.
+
+and adds the following new translations:
+
+- [Added translation: español de América Latina](https://github.com/wekan/wekan/commit/ccc9efb2703efda4e199a861920b9ec88e634b59).
+  Thanks to translators.
+
+and fixes the following bugs:
+
+- [Fix typos in translations](https://github.com/wekan/wekan/commit/a0e1b6f918dbb252a13db05d6b9e1f832c28654f).
+  Thanks to xet7.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
+# v5.07 2021-03-19 Wekan release
+
+This release fixes the following bugs:
+
+- [Fixed sort cards feature](https://github.com/wekan/wekan/pull/3662).
+  Thanks to ednamaeG.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
+# v5.06 2021-03-18 Wekan release
+
+This release fixes the following bugs:
+
+- [Fixed Bug: Calendar & parent cards URLs used absolute URLs](https://github.com/wekan/wekan/pull/3648).
+  Thanks to Majed6.
+- [Fixed Bug: copy to clipboard uses pathname](https://github.com/wekan/wekan/pull/3661).
+  Thanks to Majed6.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
+# v5.05 2021-03-11 Wekan release
+
+This release fixes the following bugs:
+
+- [Change URL scheme recognition for allowing abasurl to link](https://github.com/wekan/wekan/pull/3641).
+  Thanks to tod31 and chrisi51.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
+# v5.04 2021-03-07 Wekan release
+
+This release adds the following speed improvements:
+
+- [Speed improvement: Delete presences older than one week, and add database index to presences
+  serverId](https://github.com/wekan/wekan/commit/9db3c931161adfbeb6fc52d3e4cf621fb9a4955f).
+  Thanks to xet7.
+
+and adds the following new features:
+
 - [Added autolinking settings in Admin Panel](https://github.com/wekan/wekan/pull/3633).
   Thanks to chrisi51.
 - [Add custom field editing to the REST API](https://github.com/wekan/wekan/pull/3593).
   Thanks to dudeofawesome.
+- [Related to custom field editing, Fixed generating API docs and Wekan Custom Fields
+  REST API](https://github.com/wekan/wekan/commit/0bb3b670753c6ba20b0ad63f63d273036f609ee5).
+  Thanks to xet7.
+
+and adds back the following platforms:
+
+- [OpenPower Minicloud emergency maintenance has finished, so can now build Wekan for
+  ppc64le](https://github.com/wekan/wekan/commit/ac9b23f00f10b0170b8693e1e997bfb54f807adc).
+  Thanks to OpenPower Minicloud.
 
 and fixes the following bugs:
 

+ 4 - 4
README.md

@@ -1,4 +1,4 @@
-[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/wekan/wekan) 
+[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/wekan/wekan)
 
 # Wekan - Open Source kanban
 
@@ -32,7 +32,7 @@ It's better than at chat where details get lost when chat scrolls up.
 
 ## FAQ
 
-**NOTE**: 
+**NOTE**:
 - Please read the [FAQ](https://github.com/wekan/wekan/wiki/FAQ) first
 - Please don't feed the [trolls](https://github.com/wekan/wekan/wiki/FAQ#why-am-i-called-a-troll) and [spammers](https://github.com/wekan/wekan/wiki/FAQ#why-am-i-called-a-spammer) that are mentioned in the FAQ :)
 
@@ -52,7 +52,7 @@ that by providing one-click installation on various platforms.
 
 - Wekan is used in [most countries of the world](https://snapcraft.io/wekan).
 - Wekan largest user has 13k users using Wekan in their company.
-- Wekan has been [translated](https://transifex.com/wekan/wekan) to about 61 languages.
+- Wekan has been [translated](https://transifex.com/wekan/wekan) to about 62 languages.
 - [Features][features]: Wekan has real-time user interface.
 - [Platforms][platforms]: Wekan supports many platforms.
   Wekan is critical part of new platforms Wekan is currently being integrated to.
@@ -64,7 +64,7 @@ that by providing one-click installation on various platforms.
   [More Platforms](https://github.com/wekan/wekan/wiki/Platforms), bundle for RasPi3 ARM and other CPUs where Node.js and MongoDB exists.
 - 1 GB RAM minimum free for Wekan. Production server should have minimum total 4 GB RAM.
   For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/master/docker-compose.yml): 3 frontend servers,
-  each having 2 CPU and 2 wekan-app containers. One backend wekan-db server with many CPUs.  
+  each having 2 CPU and 2 wekan-app containers. One backend wekan-db server with many CPUs.
 - Enough disk space and alerts about low disk space. If you run out disk space, MongoDB database gets corrupted.
 - SECURITY: Updating to newest Wekan version very often. Please check you do not have automatic updates of Sandstorm or Snap turned off.
   Old versions have security issues because of old versions Node.js etc. Only newest Wekan is supported.

+ 1 - 1
Stackerfile.yml

@@ -1,5 +1,5 @@
 appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
-appVersion: "v5.03.0"
+appVersion: "v5.08.0"
 files:
   userUploads:
     - README.md

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

@@ -360,7 +360,7 @@ BlazeComponent.extendComponent({
             end: end || card.endAt,
             allDay:
               Math.abs(end.getTime() - start.getTime()) / 1000 === 24 * 3600,
-            url: FlowRouter.url('card', {
+            url: FlowRouter.path('card', {
               boardId: currentBoard._id,
               slug: currentBoard.slug,
               cardId: card._id,

+ 5 - 2
client/components/boards/boardHeader.jade

@@ -34,9 +34,12 @@ template(name="boardHeaderBar")
             if $eq watchLevel "muted"
               i.fa.fa-bell-slash
             span {{_ watchLevel}}
-          a.board-header-btn.js-sort-cards(title="{{_ 'sort-cards'}}")
+          a.board-header-btn(title="{{_ 'sort-cards'}}" class="{{#if isSortActive }}emphasis{{else}} js-sort-cards {{/if}}")
             i.fa.fa-sort
-            | {{_ 'sort-cards'}} {{sortCardsBy.get}}
+            span {{#if isSortActive }}{{_ 'Sort is on'}}{{else}}{{_ 'sort-cards'}}{{/if}}
+            if isSortActive
+              a.board-header-btn-close.js-sort-reset(title="Remove Sort")
+                i.fa.fa-times-thin
 
         else
           a.board-header-btn.js-log-in(

+ 10 - 8
client/components/boards/boardHeader.js

@@ -54,6 +54,10 @@ Template.boardChangeTitlePopup.events({
 });
 
 BlazeComponent.extendComponent({
+  onCreated() {
+    // set sort to default
+    Session.set('sortBy', '');
+  },
   watchLevel() {
     const currentBoard = Boards.findOne(Session.get('currentBoard'));
     return currentBoard && currentBoard.getWatchLevel(Meteor.userId());
@@ -129,6 +133,9 @@ BlazeComponent.extendComponent({
           Sidebar.setView();
           Filter.reset();
         },
+        'click .js-sort-reset'() {
+          Session.set('sortBy', '');
+        },
         'click .js-open-search-view'() {
           Sidebar.setView('search');
         },
@@ -162,6 +169,9 @@ Template.boardHeaderBar.helpers({
   boardView() {
     return Utils.boardView();
   },
+  isSortActive() {
+    return Session.get('sortBy') ? true : false;
+  },
 });
 
 Template.boardChangeViewPopup.events({
@@ -407,14 +417,6 @@ BlazeComponent.extendComponent({
           sortCardsBy.set(TAPi18n.__('date-created-oldest-first'));
           Popup.close();
         },
-        'click .js-sort-default'() {
-          const sortBy = {
-            sort: 1,
-          };
-          Session.set('sortBy', sortBy);
-          sortCardsBy.set(TAPi18n.__('default'));
-          Popup.close();
-        },
       },
     ];
   },

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

@@ -12,7 +12,6 @@ template(name="cardDetails")
             a.fa.fa-link.card-copy-button.js-copy-link(
               class="fa-link"
               title="{{_ 'copy-card-link-to-clipboard'}}"
-              value="{{ originRelativeUrl }}"
             )
         if isMiniScreen
           a.fa.fa-times-thin.close-card-details-mobile-web.js-close-card-details

+ 3 - 1
client/components/cards/cardDetails.js

@@ -114,7 +114,7 @@ BlazeComponent.extendComponent({
     if (card) {
       const board = Boards.findOne(card.boardId);
       if (board) {
-        result = FlowRouter.url('card', {
+        result = FlowRouter.path('card', {
           boardId: card.boardId,
           slug: board.slug,
           cardId: card._id,
@@ -291,6 +291,8 @@ BlazeComponent.extendComponent({
         },
         'click .js-copy-link'() {
           StringToCopyElement = document.getElementById('cardURL_copy');
+          StringToCopyElement.value =
+            window.location.origin + window.location.pathname;
           StringToCopyElement.select();
           if (document.execCommand('copy')) {
             StringToCopyElement.blur();

+ 10 - 2
client/components/main/layouts.js

@@ -77,8 +77,6 @@ Template.userFormsLayout.helpers({
       } else if (lang.name === 'ar-EG') {
         // ar-EG = Arabic (Egypt), simply Masri (مَصرى, [ˈmɑsˤɾi], Egyptian, Masr refers to Cairo)
         name = 'مَصرى';
-      } else if (lang.name === 'es-PY') {
-        name = 'Español de Paraguayo';
       } else if (lang.name === 'fa-IR') {
         // fa-IR = Persian (Iran)
         name = 'فارسی/پارسی (ایران‎)';
@@ -94,6 +92,14 @@ Template.userFormsLayout.helpers({
         name = 'Latviešu';
       } else if (lang.name === 'Español') {
         name = 'español';
+      } else if (lang.name === 'es_419') {
+        name = 'español de América Latina';
+      } else if (lang.name === 'es-419') {
+        name = 'español de América Latina';
+      } else if (lang.name === 'Español de América Latina') {
+        name = 'español de América Latina';
+      } else if (lang.name === 'es-LA') {
+        name = 'español de América Latina';
       } else if (lang.name === 'Español de Argentina') {
         name = 'español de Argentina';
       } else if (lang.name === 'Español de Chile') {
@@ -104,6 +110,8 @@ Template.userFormsLayout.helpers({
         name = 'español de México';
       } else if (lang.name === 'es-PY') {
         name = 'español de Paraguayo';
+      } else if (lang.name === 'Español de Paraguayo') {
+        name = 'español de Paraguayo';
       } else if (lang.name === 'Español de Perú') {
         name = 'español de Perú';
       } else if (lang.name === 'Español de Puerto Rico') {

+ 2 - 5
client/components/settings/settingBody.jade

@@ -122,6 +122,8 @@ template(name='email')
 
 template(name='accountSettings')
   ul#account-setting.setting-detail
+    li
+      button.js-all-hide-system-messages.primary {{_ 'hide-system-messages-of-all-users'}}
     li.accounts-form
       .title {{_ 'accounts-allowEmailChange'}}
       .form-group.flex
@@ -129,23 +131,18 @@ template(name='accountSettings')
         span {{_ 'yes'}}
         input.wekan-form-control#accounts-allowEmailChange(type="radio" name="allowEmailChange" value="false" checked="{{#unless allowEmailChange}}checked{{/unless}}")
         span {{_ 'no'}}
-    li
-    li.accounts-form
       .title {{_ 'accounts-allowUserNameChange'}}
       .form-group.flex
         input.wekan-form-control#accounts-allowUserNameChange(type="radio" name="allowUserNameChange" value="true" checked="{{#if allowUserNameChange}}checked{{/if}}")
         span {{_ 'yes'}}
         input.wekan-form-control#accounts-allowUserNameChange(type="radio" name="allowUserNameChange" value="false" checked="{{#unless allowUserNameChange}}checked{{/unless}}")
         span {{_ 'no'}}
-    li
-    li.accounts-form
       .title {{_ 'accounts-allowUserDelete'}}
       .form-group.flex
         input.wekan-form-control#accounts-allowUserDelete(type="radio" name="allowUserDelete" value="true" checked="{{#if allowUserDelete}}checked{{/if}}")
         span {{_ 'yes'}}
         input.wekan-form-control#accounts-allowUserDelete(type="radio" name="allowUserDelete" value="false" checked="{{#unless allowUserDelete}}checked{{/unless}}")
         span {{_ 'no'}}
-    li
       button.js-accounts-save.primary {{_ 'save'}}
 
 template(name='announcementSettings')

+ 19 - 1
client/components/settings/settingBody.js

@@ -274,7 +274,6 @@ BlazeComponent.extendComponent({
       $set: { booleanValue: allowUserDelete },
     });
   },
-
   allowEmailChange() {
     return AccountSettings.findOne('accounts-allowEmailChange').booleanValue;
   },
@@ -284,12 +283,31 @@ BlazeComponent.extendComponent({
   allowUserDelete() {
     return AccountSettings.findOne('accounts-allowUserDelete').booleanValue;
   },
+  allHideSystemMessages() {
+    Meteor.call('setAllUsersHideSystemMessages', (err, ret) => {
+      if (!err && ret) {
+        if (ret === true) {
+          const message = `${TAPi18n.__(
+            'now-system-messages-of-all-users-are-hidden',
+          )}`;
+          alert(message);
+        }
+      } else {
+        const reason = err.reason || '';
+        const message = `${TAPi18n.__(err.error)}\n${reason}`;
+        alert(message);
+      }
+    });
+  },
 
   events() {
     return [
       {
         'click button.js-accounts-save': this.saveAccountsChange,
       },
+      {
+        'click button.js-all-hide-system-messages': this.allHideSystemMessages,
+      },
     ];
   },
 }).register('accountSettings');

+ 10 - 2
client/components/users/userHeader.js

@@ -171,8 +171,6 @@ Template.changeLanguagePopup.helpers({
       } else if (lang.name === 'ar-EG') {
         // ar-EG = Arabic (Egypt), simply Masri (مَصرى, [ˈmɑsˤɾi], Egyptian, Masr refers to Cairo)
         name = 'مَصرى';
-      } else if (lang.name === 'es-PY') {
-        name = 'Español de Paraguayo';
       } else if (lang.name === 'fa-IR') {
         // fa-IR = Persian (Iran)
         name = 'فارسی/پارسی (ایران‎)';
@@ -188,6 +186,14 @@ Template.changeLanguagePopup.helpers({
         name = 'Latviešu';
       } else if (lang.name === 'Español') {
         name = 'español';
+      } else if (lang.name === 'es_419') {
+        name = 'español de América Latina';
+      } else if (lang.name === 'es-419') {
+        name = 'español de América Latina';
+      } else if (lang.name === 'Español de América Latina') {
+        name = 'español de América Latina';
+      } else if (lang.name === 'es-LA') {
+        name = 'español de América Latina';
       } else if (lang.name === 'Español de Argentina') {
         name = 'español de Argentina';
       } else if (lang.name === 'Español de Chile') {
@@ -198,6 +204,8 @@ Template.changeLanguagePopup.helpers({
         name = 'español de México';
       } else if (lang.name === 'es-PY') {
         name = 'español de Paraguayo';
+      } else if (lang.name === 'Español de Paraguayo') {
+        name = 'español de Paraguayo';
       } else if (lang.name === 'Español de Perú') {
         name = 'español de Perú';
       } else if (lang.name === 'Español de Puerto Rico') {

+ 5 - 1
i18n/ar-EG.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/ar.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "اسم المستخدم",
   "import-usernames": "Import Usernames",
   "view-it": "شاهدها",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/bg.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Потребителско име",
   "import-usernames": "Import Usernames",
   "view-it": "Прегледайте",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/br.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/ca.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Nom d'Usuari",
   "import-usernames": "Import Usernames",
   "view-it": "Vist",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 6 - 2
i18n/cs.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "URL vlastního loga přihlášení",
   "custom-login-logo-link-url": "URL odkazu vlastního loga přihlášení",
   "text-below-custom-login-logo": "Text pod vlastním logem přihlášení",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Uživatelské jméno",
   "import-usernames": "Importovat uživatelská jména",
   "view-it": "Zobrazit",
@@ -905,7 +906,7 @@
   "operator-modified": "modifikováno",
   "operator-sort": "třídění",
   "operator-comment": "komentář",
-  "operator-has": "has",
+  "operator-has": "",
   "operator-limit": "limit",
   "predicate-archived": "archivováno",
   "predicate-open": "otevřít",
@@ -979,5 +980,8 @@
   "due-date": "Požadovaný termín",
   "title-alphabetically": "Nadpis (Abecedně)",
   "created-at-newest-first": "Vyvtořeno (Od nejnovějších)",
-  "created-at-oldest-first": "Vytvořeno (Od nejstarších)"
+  "created-at-oldest-first": "Vytvořeno (Od nejstarších)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/da.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Brugernavn",
   "import-usernames": "Import Usernames",
   "view-it": "Vis den",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/de.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Benutzerdefiniertes Login Logo Bild URL",
   "custom-login-logo-link-url": "Benutzerdefiniertes Login Logo Link URL",
   "text-below-custom-login-logo": "Text unterhalb benutzerdefiniertem Login Logo",
+  "automatic-linked-url-schemes": "Spezielle URL-Schemas, die durch Klick automatisch öffenbar sein sollen. Ein URL-Schema pro Zeile",
   "username": "Benutzername",
   "import-usernames": "Nutzernamen importieren",
   "view-it": "Ansehen",
@@ -979,5 +980,8 @@
   "due-date": "Fälligkeitsdatum",
   "title-alphabetically": "Überschrift (alphabetisch)",
   "created-at-newest-first": "Erstelldatum (neueste zuerst)",
-  "created-at-oldest-first": "Erstelldatum (älteste zuerst)"
+  "created-at-oldest-first": "Erstelldatum (älteste zuerst)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Alle System-Nachrichten aller Nutzer verbergen",
+  "now-system-messages-of-all-users-are-hidden": "Alle System-Nachrichten aller Nutzer sind nun verborgen"
 }

+ 5 - 1
i18n/el.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Όνομα Χρήστη",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/en-GB.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 4 - 1
i18n/en.i18n.json

@@ -981,5 +981,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/eo.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Uzantnomo",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/es-AR.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Nombre de usuario",
   "import-usernames": "Import Usernames",
   "view-it": "Verlo",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/es-CL.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Nombre de usuario",
   "import-usernames": "Import Usernames",
   "view-it": "Verla",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 987 - 0
i18n/es-LA.i18n.json

@@ -0,0 +1,987 @@
+{
+  "accept": "Accept",
+  "act-activity-notify": "Activity Notification",
+  "act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-editComment": "edited comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-deleteComment": "deleted comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-createBoard": "created board __board__",
+  "act-createSwimlane": "created swimlane __swimlane__ to board __board__",
+  "act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
+  "act-createCustomField": "created custom field __customField__ at board __board__",
+  "act-deleteCustomField": "deleted custom field __customField__ at board __board__",
+  "act-setCustomField": "edited custom field __customField__: __customFieldValue__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-createList": "added list __list__ to board __board__",
+  "act-addBoardMember": "added member __member__ to board __board__",
+  "act-archivedBoard": "Board __board__ moved to Archive",
+  "act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
+  "act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
+  "act-archivedSwimlane": "Swimlane __swimlane__ at board __board__ moved to Archive",
+  "act-importBoard": "imported board __board__",
+  "act-importCard": "imported card  __card__ to list __list__ at swimlane __swimlane__ at board __board__",
+  "act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
+  "act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
+  "act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
+  "act-removeBoardMember": "removed member __member__ from board __board__",
+  "act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
+  "act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-withBoardTitle": "__board__",
+  "act-withCardTitle": "[__board__] __card__",
+  "actions": "Actions",
+  "activities": "Activities",
+  "activity": "Activity",
+  "activity-added": "added %s to %s",
+  "activity-archived": "%s moved to Archive",
+  "activity-attached": "attached %s to %s",
+  "activity-created": "created %s",
+  "activity-customfield-created": "created custom field %s",
+  "activity-excluded": "excluded %s from %s",
+  "activity-imported": "imported %s into %s from %s",
+  "activity-imported-board": "imported %s from %s",
+  "activity-joined": "joined %s",
+  "activity-moved": "moved %s from %s to %s",
+  "activity-on": "on %s",
+  "activity-removed": "removed %s from %s",
+  "activity-sent": "sent %s to %s",
+  "activity-unjoined": "unjoined %s",
+  "activity-subtask-added": "added subtask to %s",
+  "activity-checked-item": "checked %s in checklist %s of %s",
+  "activity-unchecked-item": "unchecked %s in checklist %s of %s",
+  "activity-checklist-added": "added checklist to %s",
+  "activity-checklist-removed": "removed a checklist from %s",
+  "activity-checklist-completed": "completed checklist %s of %s",
+  "activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
+  "activity-checklist-item-added": "added checklist item to '%s' in %s",
+  "activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
+  "add": "Add",
+  "activity-checked-item-card": "checked %s in checklist %s",
+  "activity-unchecked-item-card": "unchecked %s in checklist %s",
+  "activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "activity-checklist-uncompleted-card": "uncompleted the checklist %s",
+  "activity-editComment": "edited comment %s",
+  "activity-deleteComment": "deleted comment %s",
+  "activity-receivedDate": "edited received date to %s of %s",
+  "activity-startDate": "edited start date to %s of %s",
+  "activity-dueDate": "edited due date to %s of %s",
+  "activity-endDate": "edited end date to %s of %s",
+  "add-attachment": "Add Attachment",
+  "add-board": "Add Board",
+  "add-card": "Add Card",
+  "add-swimlane": "Add Swimlane",
+  "add-subtask": "Add Subtask",
+  "add-checklist": "Add Checklist",
+  "add-checklist-item": "Add an item to checklist",
+  "add-cover": "Add Cover",
+  "add-label": "Add Label",
+  "add-list": "Add List",
+  "add-members": "Add Members",
+  "added": "Added",
+  "addMemberPopup-title": "Members",
+  "admin": "Admin",
+  "admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
+  "admin-announcement": "Announcement",
+  "admin-announcement-active": "Active System-Wide Announcement",
+  "admin-announcement-title": "Announcement from Administrator",
+  "all-boards": "All boards",
+  "and-n-other-card": "And __count__ other card",
+  "and-n-other-card_plural": "And __count__ other cards",
+  "apply": "Apply",
+  "app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
+  "archive": "Move to Archive",
+  "archive-all": "Move All to Archive",
+  "archive-board": "Move Board to Archive",
+  "archive-card": "Move Card to Archive",
+  "archive-list": "Move List to Archive",
+  "archive-swimlane": "Move Swimlane to Archive",
+  "archive-selection": "Move selection to Archive",
+  "archiveBoardPopup-title": "Move Board to Archive?",
+  "archived-items": "Archive",
+  "archived-boards": "Boards in Archive",
+  "restore-board": "Restore Board",
+  "no-archived-boards": "No Boards in Archive.",
+  "archives": "Archive",
+  "template": "Template",
+  "templates": "Templates",
+  "assign-member": "Assign member",
+  "attached": "attached",
+  "attachment": "Attachment",
+  "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
+  "attachmentDeletePopup-title": "Delete Attachment?",
+  "attachments": "Attachments",
+  "auto-watch": "Automatically watch boards when they are created",
+  "avatar-too-big": "The avatar is too large (520KB max)",
+  "back": "Back",
+  "board-change-color": "Change color",
+  "board-nb-stars": "%s stars",
+  "board-not-found": "Board not found",
+  "board-private-info": "This board will be <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 Settings",
+  "boardChangeViewPopup-title": "Board View",
+  "boards": "Boards",
+  "board-view": "Board View",
+  "board-view-cal": "Calendar",
+  "board-view-swimlanes": "Swimlanes",
+  "board-view-collapse": "Collapse",
+  "board-view-gantt": "Gantt",
+  "board-view-lists": "Lists",
+  "bucket-example": "Like “Bucket List” for example",
+  "cancel": "Cancel",
+  "card-archived": "This card is moved to Archive.",
+  "board-archived": "This board is moved to Archive.",
+  "card-comments-title": "This card has %s comment.",
+  "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
+  "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
+  "card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
+  "card-due": "Due",
+  "card-due-on": "Due on",
+  "card-spent": "Spent Time",
+  "card-edit-attachments": "Edit attachments",
+  "card-edit-custom-fields": "Edit custom fields",
+  "card-edit-labels": "Edit labels",
+  "card-edit-members": "Edit members",
+  "card-labels-title": "Change the labels for the card.",
+  "card-members-title": "Add or remove members of the board from the card.",
+  "card-start": "Start",
+  "card-start-on": "Starts on",
+  "cardAttachmentsPopup-title": "Attach From",
+  "cardCustomField-datePopup-title": "Change date",
+  "cardCustomFieldsPopup-title": "Edit custom fields",
+  "cardStartVotingPopup-title": "Start a vote",
+  "positiveVoteMembersPopup-title": "Proponents",
+  "negativeVoteMembersPopup-title": "Opponents",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
+  "vote-question": "Voting question",
+  "vote-public": "Show who voted what",
+  "vote-for-it": "for it",
+  "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
+  "cardDeletePopup-title": "Delete Card?",
+  "cardDetailsActionsPopup-title": "Card Actions",
+  "cardLabelsPopup-title": "Labels",
+  "cardMembersPopup-title": "Members",
+  "cardMorePopup-title": "More",
+  "cardTemplatePopup-title": "Create template",
+  "cards": "Cards",
+  "cards-count": "Cards",
+  "casSignIn": "Sign In with CAS",
+  "cardType-card": "Card",
+  "cardType-linkedCard": "Linked Card",
+  "cardType-linkedBoard": "Linked Board",
+  "change": "Change",
+  "change-avatar": "Change Avatar",
+  "change-password": "Change Password",
+  "change-permissions": "Change permissions",
+  "change-settings": "Change Settings",
+  "changeAvatarPopup-title": "Change Avatar",
+  "changeLanguagePopup-title": "Change Language",
+  "changePasswordPopup-title": "Change Password",
+  "changePermissionsPopup-title": "Change Permissions",
+  "changeSettingsPopup-title": "Change Settings",
+  "subtasks": "Subtasks",
+  "checklists": "Checklists",
+  "click-to-star": "Click to star this board.",
+  "click-to-unstar": "Click to unstar this board.",
+  "clipboard": "Clipboard or drag & drop",
+  "close": "Close",
+  "close-board": "Close Board",
+  "close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
+  "color-black": "black",
+  "color-blue": "blue",
+  "color-crimson": "crimson",
+  "color-darkgreen": "darkgreen",
+  "color-gold": "gold",
+  "color-gray": "gray",
+  "color-green": "green",
+  "color-indigo": "indigo",
+  "color-lime": "lime",
+  "color-magenta": "magenta",
+  "color-mistyrose": "mistyrose",
+  "color-navy": "navy",
+  "color-orange": "orange",
+  "color-paleturquoise": "paleturquoise",
+  "color-peachpuff": "peachpuff",
+  "color-pink": "pink",
+  "color-plum": "plum",
+  "color-purple": "purple",
+  "color-red": "red",
+  "color-saddlebrown": "saddlebrown",
+  "color-silver": "silver",
+  "color-sky": "sky",
+  "color-slateblue": "slateblue",
+  "color-white": "white",
+  "color-yellow": "yellow",
+  "unset-color": "Unset",
+  "comment": "Comment",
+  "comment-placeholder": "Write Comment",
+  "comment-only": "Comment only",
+  "comment-only-desc": "Can comment on cards only.",
+  "no-comments": "No comments",
+  "no-comments-desc": "Can not see comments and activities.",
+  "worker": "Worker",
+  "worker-desc": "Can only move cards, assign itself to card and comment.",
+  "computer": "Computer",
+  "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+  "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
+  "copy-card-link-to-clipboard": "Copy card link to clipboard",
+  "linkCardPopup-title": "Link Card",
+  "searchElementPopup-title": "Search",
+  "copyCardPopup-title": "Copy Card",
+  "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
+  "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+  "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
+  "create": "Create",
+  "createBoardPopup-title": "Create Board",
+  "chooseBoardSourcePopup-title": "Import board",
+  "createLabelPopup-title": "Create Label",
+  "createCustomField": "Create Field",
+  "createCustomFieldPopup-title": "Create Field",
+  "current": "current",
+  "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+  "custom-field-checkbox": "Checkbox",
+  "custom-field-currency": "Currency",
+  "custom-field-currency-option": "Currency Code",
+  "custom-field-date": "Date",
+  "custom-field-dropdown": "Dropdown List",
+  "custom-field-dropdown-none": "(none)",
+  "custom-field-dropdown-options": "List Options",
+  "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+  "custom-field-dropdown-unknown": "(unknown)",
+  "custom-field-number": "Number",
+  "custom-field-text": "Text",
+  "custom-fields": "Custom Fields",
+  "date": "Date",
+  "decline": "Decline",
+  "default-avatar": "Default avatar",
+  "delete": "Delete",
+  "deleteCustomFieldPopup-title": "Delete Custom Field?",
+  "deleteLabelPopup-title": "Delete Label?",
+  "description": "Description",
+  "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
+  "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
+  "discard": "Discard",
+  "done": "Done",
+  "download": "Download",
+  "edit": "Edit",
+  "edit-avatar": "Change Avatar",
+  "edit-profile": "Edit Profile",
+  "edit-wip-limit": "Edit WIP Limit",
+  "soft-wip-limit": "Soft WIP Limit",
+  "editCardStartDatePopup-title": "Change start date",
+  "editCardDueDatePopup-title": "Change due date",
+  "editCustomFieldPopup-title": "Edit Field",
+  "editCardSpentTimePopup-title": "Change spent time",
+  "editLabelPopup-title": "Change Label",
+  "editNotificationPopup-title": "Edit Notification",
+  "editProfilePopup-title": "Edit Profile",
+  "email": "Email",
+  "email-enrollAccount-subject": "An account created for you on __siteName__",
+  "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
+  "email-fail": "Sending email failed",
+  "email-fail-text": "Error trying to send email",
+  "email-invalid": "Invalid email",
+  "email-invite": "Invite via Email",
+  "email-invite-subject": "__inviter__ sent you an invitation",
+  "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
+  "email-resetPassword-subject": "Reset your password on __siteName__",
+  "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
+  "email-sent": "Email sent",
+  "email-verifyEmail-subject": "Verify your email address on __siteName__",
+  "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
+  "enable-wip-limit": "Enable WIP Limit",
+  "error-board-doesNotExist": "This board does not exist",
+  "error-board-notAdmin": "You need to be admin of this board to do that",
+  "error-board-notAMember": "You need to be a member of this board to do that",
+  "error-json-malformed": "Your text is not valid JSON",
+  "error-json-schema": "Your JSON data does not include the proper information in the correct format",
+  "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
+  "error-list-doesNotExist": "This list does not exist",
+  "error-user-doesNotExist": "This user does not exist",
+  "error-user-notAllowSelf": "You can not invite yourself",
+  "error-user-notCreated": "This user is not created",
+  "error-username-taken": "This username is already taken",
+  "error-orgname-taken": "This organization name is already taken",
+  "error-teamname-taken": "This team name is already taken",
+  "error-email-taken": "Email has already been taken",
+  "export-board": "Export board",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-excel": "Export board to Excel",
+  "user-can-not-export-excel": "User can not export Excel",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
+  "sort": "Sort",
+  "sort-desc": "Click to Sort List",
+  "list-sort-by": "Sort the List By:",
+  "list-label-modifiedAt": "Last Access Time",
+  "list-label-title": "Name of the List",
+  "list-label-sort": "Your Manual Order",
+  "list-label-short-modifiedAt": "(L)",
+  "list-label-short-title": "(N)",
+  "list-label-short-sort": "(M)",
+  "filter": "Filter",
+  "filter-cards": "Filter Cards or Lists",
+  "list-filter-label": "Filter List by Title",
+  "filter-clear": "Clear filter",
+  "filter-labels-label": "Filter by label",
+  "filter-no-label": "No label",
+  "filter-member-label": "Filter by member",
+  "filter-no-member": "No member",
+  "filter-assignee-label": "Filter by assignee",
+  "filter-no-assignee": "No assignee",
+  "filter-custom-fields-label": "Filter by Custom Fields",
+  "filter-no-custom-fields": "No Custom Fields",
+  "filter-show-archive": "Show archived lists",
+  "filter-hide-empty": "Hide empty lists",
+  "filter-on": "Filter is on",
+  "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
+  "filter-to-selection": "Filter to selection",
+  "other-filters-label": "Other Filters",
+  "advanced-filter-label": "Advanced Filter",
+  "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
+  "fullname": "Full Name",
+  "header-logo-title": "Go back to your boards page.",
+  "hide-system-messages": "Hide system messages",
+  "headerBarCreateBoardPopup-title": "Create Board",
+  "home": "Home",
+  "import": "Import",
+  "impersonate-user": "Impersonate user",
+  "link": "Link",
+  "import-board": "import board",
+  "import-board-c": "Import board",
+  "import-board-title-trello": "Import board from Trello",
+  "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
+  "from-trello": "From Trello",
+  "from-wekan": "From previous export",
+  "from-csv": "From CSV/TSV",
+  "import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
+  "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
+  "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
+  "import-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
+  "import-map-members": "Map members",
+  "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
+  "import-members-map-note": "Note: Unmapped members will be assigned to the current user.",
+  "import-show-user-mapping": "Review members mapping",
+  "import-user-select": "Pick your existing user you want to use as this member",
+  "importMapMembersAddPopup-title": "Select member",
+  "info": "Version",
+  "initials": "Initials",
+  "invalid-date": "Invalid date",
+  "invalid-time": "Invalid time",
+  "invalid-user": "Invalid user",
+  "joined": "joined",
+  "just-invited": "You are just invited to this board",
+  "keyboard-shortcuts": "Keyboard shortcuts",
+  "label-create": "Create Label",
+  "label-default": "%s label (default)",
+  "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
+  "labels": "Labels",
+  "language": "Language",
+  "last-admin-desc": "You can’t change roles because there must be at least one admin.",
+  "leave-board": "Leave Board",
+  "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
+  "leaveBoardPopup-title": "Leave Board ?",
+  "link-card": "Link to this card",
+  "list-archive-cards": "Move all cards in this list to Archive",
+  "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
+  "list-move-cards": "Move all cards in this list",
+  "list-select-cards": "Select all cards in this list",
+  "set-color-list": "Set Color",
+  "listActionPopup-title": "List Actions",
+  "settingsUserPopup-title": "User Settings",
+  "swimlaneActionPopup-title": "Swimlane Actions",
+  "swimlaneAddPopup-title": "Add a Swimlane below",
+  "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
+  "listMorePopup-title": "More",
+  "link-list": "Link to this list",
+  "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
+  "list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
+  "lists": "Lists",
+  "swimlanes": "Swimlanes",
+  "log-out": "Log Out",
+  "log-in": "Log In",
+  "loginPopup-title": "Log In",
+  "memberMenuPopup-title": "Member Settings",
+  "members": "Members",
+  "menu": "Menu",
+  "move-selection": "Move selection",
+  "moveCardPopup-title": "Move Card",
+  "moveCardToBottom-title": "Move to Bottom",
+  "moveCardToTop-title": "Move to Top",
+  "moveSelectionPopup-title": "Move selection",
+  "multi-selection": "Multi-Selection",
+  "multi-selection-label": "Set label for selection",
+  "multi-selection-member": "Set member for selection",
+  "multi-selection-on": "Multi-Selection is on",
+  "muted": "Muted",
+  "muted-info": "You will never be notified of any changes in this board",
+  "my-boards": "My Boards",
+  "name": "Name",
+  "no-archived-cards": "No cards in Archive.",
+  "no-archived-lists": "No lists in Archive.",
+  "no-archived-swimlanes": "No swimlanes in Archive.",
+  "no-results": "No results",
+  "normal": "Normal",
+  "normal-desc": "Can view and edit cards. Can't change settings.",
+  "not-accepted-yet": "Invitation not accepted yet",
+  "notify-participate": "Receive updates to any cards you participate as creater or member",
+  "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
+  "optional": "optional",
+  "or": "or",
+  "page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
+  "page-not-found": "Page not found.",
+  "password": "Password",
+  "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
+  "participating": "Participating",
+  "preview": "Preview",
+  "previewAttachedImagePopup-title": "Preview",
+  "previewClipboardImagePopup-title": "Preview",
+  "private": "Private",
+  "private-desc": "This board is private. Only people added to the board can view and edit it.",
+  "profile": "Profile",
+  "public": "Public",
+  "public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
+  "quick-access-description": "Star a board to add a shortcut in this bar.",
+  "remove-cover": "Remove Cover",
+  "remove-from-board": "Remove from Board",
+  "remove-label": "Remove Label",
+  "listDeletePopup-title": "Delete List ?",
+  "remove-member": "Remove Member",
+  "remove-member-from-card": "Remove from Card",
+  "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
+  "removeMemberPopup-title": "Remove Member?",
+  "rename": "Rename",
+  "rename-board": "Rename Board",
+  "restore": "Restore",
+  "save": "Save",
+  "search": "Search",
+  "rules": "Rules",
+  "search-cards": "Search from card/list titles, descriptions and custom fields on this board",
+  "search-example": "Write text you search and press Enter",
+  "select-color": "Select Color",
+  "select-board": "Select Board",
+  "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
+  "setWipLimitPopup-title": "Set WIP Limit",
+  "shortcut-assign-self": "Assign yourself to current card",
+  "shortcut-autocomplete-emoji": "Autocomplete emoji",
+  "shortcut-autocomplete-members": "Autocomplete members",
+  "shortcut-clear-filters": "Clear all filters",
+  "shortcut-close-dialog": "Close Dialog",
+  "shortcut-filter-my-cards": "Filter my cards",
+  "shortcut-show-shortcuts": "Bring up this shortcuts list",
+  "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
+  "shortcut-toggle-searchbar": "Toggle Search Sidebar",
+  "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+  "show-cards-minimum-count": "Show cards count if list contains more than",
+  "sidebar-open": "Open Sidebar",
+  "sidebar-close": "Close Sidebar",
+  "signupPopup-title": "Create an Account",
+  "star-board-title": "Click to star this board. It will show up at top of your boards list.",
+  "starred-boards": "Starred Boards",
+  "starred-boards-description": "Starred boards show up at the top of your boards list.",
+  "subscribe": "Subscribe",
+  "team": "Team",
+  "this-board": "this board",
+  "this-card": "this card",
+  "spent-time-hours": "Spent time (hours)",
+  "overtime-hours": "Overtime (hours)",
+  "overtime": "Overtime",
+  "has-overtime-cards": "Has overtime cards",
+  "has-spenttime-cards": "Has spent time cards",
+  "time": "Time",
+  "title": "Title",
+  "tracking": "Tracking",
+  "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+  "type": "Type",
+  "unassign-member": "Unassign member",
+  "unsaved-description": "You have an unsaved description.",
+  "unwatch": "Unwatch",
+  "upload": "Upload",
+  "upload-avatar": "Upload an avatar",
+  "uploaded-avatar": "Uploaded an avatar",
+  "custom-top-left-corner-logo-image-url": "Custom Top Left Corner Logo Image URL",
+  "custom-top-left-corner-logo-link-url": "Custom Top Left Corner Logo Link URL",
+  "custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
+  "custom-login-logo-image-url": "Custom Login Logo Image URL",
+  "custom-login-logo-link-url": "Custom Login Logo Link URL",
+  "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
+  "username": "Username",
+  "import-usernames": "Import Usernames",
+  "view-it": "View it",
+  "warn-list-archived": "warning: this card is in an list at Archive",
+  "watch": "Watch",
+  "watching": "Watching",
+  "watching-info": "You will be notified of any change in this board",
+  "welcome-board": "Welcome Board",
+  "welcome-swimlane": "Milestone 1",
+  "welcome-list1": "Basics",
+  "welcome-list2": "Advanced",
+  "card-templates-swimlane": "Card Templates",
+  "list-templates-swimlane": "List Templates",
+  "board-templates-swimlane": "Board Templates",
+  "what-to-do": "What do you want to do?",
+  "wipLimitErrorPopup-title": "Invalid WIP Limit",
+  "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
+  "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
+  "admin-panel": "Admin Panel",
+  "settings": "Settings",
+  "people": "People",
+  "registration": "Registration",
+  "disable-self-registration": "Disable Self-Registration",
+  "invite": "Invite",
+  "invite-people": "Invite People",
+  "to-boards": "To board(s)",
+  "email-addresses": "Email Addresses",
+  "smtp-host-description": "The address of the SMTP server that handles your emails.",
+  "smtp-port-description": "The port your SMTP server uses for outgoing emails.",
+  "smtp-tls-description": "Enable TLS support for SMTP server",
+  "smtp-host": "SMTP Host",
+  "smtp-port": "SMTP Port",
+  "smtp-username": "Username",
+  "smtp-password": "Password",
+  "smtp-tls": "TLS support",
+  "send-from": "From",
+  "send-smtp-test": "Send a test email to yourself",
+  "invitation-code": "Invitation Code",
+  "email-invite-register-subject": "__inviter__ sent you an invitation",
+  "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
+  "email-smtp-test-subject": "SMTP Test Email",
+  "email-smtp-test-text": "You have successfully sent an email",
+  "error-invitation-code-not-exist": "Invitation code doesn't exist",
+  "error-notAuthorized": "You are not authorized to view this page.",
+  "webhook-title": "Webhook Name",
+  "webhook-token": "Token (Optional for Authentication)",
+  "outgoing-webhooks": "Outgoing Webhooks",
+  "bidirectional-webhooks": "Two-Way Webhooks",
+  "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+  "boardCardTitlePopup-title": "Card Title Filter",
+  "disable-webhook": "Disable This Webhook",
+  "global-webhook": "Global Webhooks",
+  "new-outgoing-webhook": "New Outgoing Webhook",
+  "no-name": "(Unknown)",
+  "Node_version": "Node version",
+  "Meteor_version": "Meteor version",
+  "MongoDB_version": "MongoDB version",
+  "MongoDB_storage_engine": "MongoDB storage engine",
+  "MongoDB_Oplog_enabled": "MongoDB Oplog enabled",
+  "OS_Arch": "OS Arch",
+  "OS_Cpus": "OS CPU Count",
+  "OS_Freemem": "OS Free Memory",
+  "OS_Loadavg": "OS Load Average",
+  "OS_Platform": "OS Platform",
+  "OS_Release": "OS Release",
+  "OS_Totalmem": "OS Total Memory",
+  "OS_Type": "OS Type",
+  "OS_Uptime": "OS Uptime",
+  "days": "days",
+  "hours": "hours",
+  "minutes": "minutes",
+  "seconds": "seconds",
+  "show-field-on-card": "Show this field on card",
+  "automatically-field-on-card": "Add field to new cards",
+  "always-field-on-card": "Add field to all cards",
+  "showLabel-field-on-card": "Show field label on minicard",
+  "yes": "Yes",
+  "no": "No",
+  "accounts": "Accounts",
+  "accounts-allowEmailChange": "Allow Email Change",
+  "accounts-allowUserNameChange": "Allow Username Change",
+  "createdAt": "Created at",
+  "modifiedAt": "Modified at",
+  "verified": "Verified",
+  "active": "Active",
+  "card-received": "Received",
+  "card-received-on": "Received on",
+  "card-end": "End",
+  "card-end-on": "Ends on",
+  "editCardReceivedDatePopup-title": "Change received date",
+  "editCardEndDatePopup-title": "Change end date",
+  "setCardColorPopup-title": "Set color",
+  "setCardActionsColorPopup-title": "Choose a color",
+  "setSwimlaneColorPopup-title": "Choose a color",
+  "setListColorPopup-title": "Choose a color",
+  "assigned-by": "Assigned By",
+  "requested-by": "Requested By",
+  "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+  "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+  "boardDeletePopup-title": "Delete Board?",
+  "delete-board": "Delete Board",
+  "default-subtasks-board": "Subtasks for __board__ board",
+  "default": "Default",
+  "queue": "Queue",
+  "subtask-settings": "Subtasks Settings",
+  "card-settings": "Card Settings",
+  "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+  "boardCardSettingsPopup-title": "Card Settings",
+  "deposit-subtasks-board": "Deposit subtasks to this board:",
+  "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+  "show-parent-in-minicard": "Show parent in minicard:",
+  "prefix-with-full-path": "Prefix with full path",
+  "prefix-with-parent": "Prefix with parent",
+  "subtext-with-full-path": "Subtext with full path",
+  "subtext-with-parent": "Subtext with parent",
+  "change-card-parent": "Change card's parent",
+  "parent-card": "Parent card",
+  "source-board": "Source board",
+  "no-parent": "Don't show parent",
+  "activity-added-label": "added label '%s' to %s",
+  "activity-removed-label": "removed label '%s' from %s",
+  "activity-delete-attach": "deleted an attachment from %s",
+  "activity-added-label-card": "added label '%s'",
+  "activity-removed-label-card": "removed label '%s'",
+  "activity-delete-attach-card": "deleted an attachment",
+  "activity-set-customfield": "set custom field '%s' to '%s' in %s",
+  "activity-unset-customfield": "unset custom field '%s' in %s",
+  "r-rule": "Rule",
+  "r-add-trigger": "Add trigger",
+  "r-add-action": "Add action",
+  "r-board-rules": "Board rules",
+  "r-add-rule": "Add rule",
+  "r-view-rule": "View rule",
+  "r-delete-rule": "Delete rule",
+  "r-new-rule-name": "New rule title",
+  "r-no-rules": "No rules",
+  "r-trigger": "Trigger",
+  "r-action": "Action",
+  "r-when-a-card": "When a card",
+  "r-is": "is",
+  "r-is-moved": "is moved",
+  "r-added-to": "Added to",
+  "r-removed-from": "Removed from",
+  "r-the-board": "the board",
+  "r-list": "list",
+  "list": "List",
+  "set-filter": "Set Filter",
+  "r-moved-to": "Moved to",
+  "r-moved-from": "Moved from",
+  "r-archived": "Moved to Archive",
+  "r-unarchived": "Restored from Archive",
+  "r-a-card": "a card",
+  "r-when-a-label-is": "When a label is",
+  "r-when-the-label": "When the label",
+  "r-list-name": "list name",
+  "r-when-a-member": "When a member is",
+  "r-when-the-member": "When the member",
+  "r-name": "name",
+  "r-when-a-attach": "When an attachment",
+  "r-when-a-checklist": "When a checklist is",
+  "r-when-the-checklist": "When the checklist",
+  "r-completed": "Completed",
+  "r-made-incomplete": "Made incomplete",
+  "r-when-a-item": "When a checklist item is",
+  "r-when-the-item": "When the checklist item",
+  "r-checked": "Checked",
+  "r-unchecked": "Unchecked",
+  "r-move-card-to": "Move card to",
+  "r-top-of": "Top of",
+  "r-bottom-of": "Bottom of",
+  "r-its-list": "its list",
+  "r-archive": "Move to Archive",
+  "r-unarchive": "Restore from Archive",
+  "r-card": "card",
+  "r-add": "Add",
+  "r-remove": "Remove",
+  "r-label": "label",
+  "r-member": "member",
+  "r-remove-all": "Remove all members from the card",
+  "r-set-color": "Set color to",
+  "r-checklist": "checklist",
+  "r-check-all": "Check all",
+  "r-uncheck-all": "Uncheck all",
+  "r-items-check": "items of checklist",
+  "r-check": "Check",
+  "r-uncheck": "Uncheck",
+  "r-item": "item",
+  "r-of-checklist": "of checklist",
+  "r-send-email": "Send an email",
+  "r-to": "to",
+  "r-of": "of",
+  "r-subject": "subject",
+  "r-rule-details": "Rule details",
+  "r-d-move-to-top-gen": "Move card to top of its list",
+  "r-d-move-to-top-spec": "Move card to top of list",
+  "r-d-move-to-bottom-gen": "Move card to bottom of its list",
+  "r-d-move-to-bottom-spec": "Move card to bottom of list",
+  "r-d-send-email": "Send email",
+  "r-d-send-email-to": "to",
+  "r-d-send-email-subject": "subject",
+  "r-d-send-email-message": "message",
+  "r-d-archive": "Move card to Archive",
+  "r-d-unarchive": "Restore card from Archive",
+  "r-d-add-label": "Add label",
+  "r-d-remove-label": "Remove label",
+  "r-create-card": "Create new card",
+  "r-in-list": "in list",
+  "r-in-swimlane": "in swimlane",
+  "r-d-add-member": "Add member",
+  "r-d-remove-member": "Remove member",
+  "r-d-remove-all-member": "Remove all member",
+  "r-d-check-all": "Check all items of a list",
+  "r-d-uncheck-all": "Uncheck all items of a list",
+  "r-d-check-one": "Check item",
+  "r-d-uncheck-one": "Uncheck item",
+  "r-d-check-of-list": "of checklist",
+  "r-d-add-checklist": "Add checklist",
+  "r-d-remove-checklist": "Remove checklist",
+  "r-by": "by",
+  "r-add-checklist": "Add checklist",
+  "r-with-items": "with items",
+  "r-items-list": "item1,item2,item3",
+  "r-add-swimlane": "Add swimlane",
+  "r-swimlane-name": "swimlane name",
+  "r-board-note": "Note: leave a field empty to match every possible value.",
+  "r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
+  "r-when-a-card-is-moved": "When a card is moved to another list",
+  "r-set": "Set",
+  "r-update": "Update",
+  "r-datefield": "date field",
+  "r-df-start-at": "start",
+  "r-df-due-at": "due",
+  "r-df-end-at": "end",
+  "r-df-received-at": "received",
+  "r-to-current-datetime": "to current date/time",
+  "r-remove-value-from": "Remove value from",
+  "ldap": "LDAP",
+  "oauth2": "OAuth2",
+  "cas": "CAS",
+  "authentication-method": "Authentication method",
+  "authentication-type": "Authentication type",
+  "custom-product-name": "Custom Product Name",
+  "layout": "Layout",
+  "hide-logo": "Hide Logo",
+  "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
+  "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
+  "error-undefined": "Something went wrong",
+  "error-ldap-login": "An error occurred while trying to login",
+  "display-authentication-method": "Display Authentication Method",
+  "default-authentication-method": "Default Authentication Method",
+  "duplicate-board": "Duplicate Board",
+  "org-number": "The number of organizations is:",
+  "team-number": "The number of teams is:",
+  "people-number": "The number of people is:",
+  "swimlaneDeletePopup-title": "Delete Swimlane ?",
+  "swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
+  "restore-all": "Restore all",
+  "delete-all": "Delete all",
+  "loading": "Loading, please wait.",
+  "previous_as": "last time was",
+  "act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
+  "act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
+  "act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
+  "act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
+  "a-dueAt": "modified due time to be",
+  "a-endAt": "modified ending time to be",
+  "a-startAt": "modified starting time to be",
+  "a-receivedAt": "modified received time to be",
+  "almostdue": "current due time %s is approaching",
+  "pastdue": "current due time %s is past",
+  "duenow": "current due time %s is today",
+  "act-newDue": "__list__/__card__ has 1st due reminder [__board__]",
+  "act-withDue": "__list__/__card__ due reminders [__board__]",
+  "act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
+  "act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
+  "act-duenow": "was reminding the current due (__timeValue__) of __card__ is now",
+  "act-atUserComment": "You were mentioned in [__board__] __list__/__card__",
+  "delete-user-confirm-popup": "Are you sure you want to delete this account? There is no undo.",
+  "accounts-allowUserDelete": "Allow users to self delete their account",
+  "hide-minicard-label-text": "Hide minicard label text",
+  "show-desktop-drag-handles": "Show desktop drag handles",
+  "assignee": "Assignee",
+  "cardAssigneesPopup-title": "Assignee",
+  "addmore-detail": "Add a more detailed description",
+  "show-on-card": "Show on Card",
+  "new": "New",
+  "editOrgPopup-title": "Edit Organization",
+  "newOrgPopup-title": "New Organization",
+  "editTeamPopup-title": "Edit Team",
+  "newTeamPopup-title": "New Team",
+  "editUserPopup-title": "Edit User",
+  "newUserPopup-title": "New User",
+  "notifications": "Notifications",
+  "view-all": "View All",
+  "filter-by-unread": "Filter by Unread",
+  "mark-all-as-read": "Mark all as read",
+  "remove-all-read": "Remove all read",
+  "allow-rename": "Allow Rename",
+  "allowRenamePopup-title": "Allow Rename",
+  "start-day-of-week": "Set day of the week start",
+  "monday": "Monday",
+  "tuesday": "Tuesday",
+  "wednesday": "Wednesday",
+  "thursday": "Thursday",
+  "friday": "Friday",
+  "saturday": "Saturday",
+  "sunday": "Sunday",
+  "status": "Status",
+  "swimlane": "Swimlane",
+  "owner": "Owner",
+  "last-modified-at": "Last modified at",
+  "last-activity": "Last activity",
+  "voting": "Voting",
+  "archived": "Archived",
+  "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
+  "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
+  "hide-checked-items": "Hide checked items",
+  "task": "Task",
+  "create-task": "Create Task",
+  "ok": "OK",
+  "organizations": "Organizations",
+  "teams": "Teams",
+  "displayName": "Display Name",
+  "shortName": "Short Name",
+  "website": "Website",
+  "person": "Person",
+  "my-cards": "My Cards",
+  "card": "Card",
+  "board": "Board",
+  "context-separator": "/",
+  "myCardsSortChange-title": "My Cards Sort",
+  "myCardsSortChangePopup-title": "My Cards Sort",
+  "myCardsSortChange-choice-board": "By Board",
+  "myCardsSortChange-choice-dueat": "By Due Date",
+  "dueCards-title": "Due Cards",
+  "dueCardsViewChange-title": "Due Cards View",
+  "dueCardsViewChangePopup-title": "Due Cards View",
+  "dueCardsViewChange-choice-me": "Me",
+  "dueCardsViewChange-choice-all": "All Users",
+  "dueCardsViewChange-choice-all-description": "Shows all incomplete cards with a *Due* date from boards for which the user has permission.",
+  "broken-cards": "Broken Cards",
+  "board-title-not-found": "Board '%s' not found.",
+  "swimlane-title-not-found": "Swimlane '%s' not found.",
+  "list-title-not-found": "List '%s' not found.",
+  "label-not-found": "Label '%s' not found.",
+  "label-color-not-found": "Label color %s not found.",
+  "user-username-not-found": "Username '%s' not found.",
+  "comment-not-found": "Card with comment containing text '%s' not found.",
+  "globalSearch-title": "Search All Boards",
+  "no-cards-found": "No Cards Found",
+  "one-card-found": "One Card Found",
+  "n-cards-found": "%s Cards Found",
+  "n-n-of-n-cards-found": "__start__-__end__ of __total__ Cards Found",
+  "operator-board": "board",
+  "operator-board-abbrev": "b",
+  "operator-swimlane": "swimlane",
+  "operator-swimlane-abbrev": "s",
+  "operator-list": "list",
+  "operator-list-abbrev": "l",
+  "operator-label": "label",
+  "operator-label-abbrev": "#",
+  "operator-user": "user",
+  "operator-user-abbrev": "@",
+  "operator-member": "member",
+  "operator-member-abbrev": "m",
+  "operator-assignee": "assignee",
+  "operator-assignee-abbrev": "a",
+  "operator-status": "status",
+  "operator-due": "due",
+  "operator-created": "created",
+  "operator-modified": "modified",
+  "operator-sort": "sort",
+  "operator-comment": "comment",
+  "operator-has": "has",
+  "operator-limit": "limit",
+  "predicate-archived": "archived",
+  "predicate-open": "open",
+  "predicate-ended": "ended",
+  "predicate-all": "all",
+  "predicate-overdue": "overdue",
+  "predicate-week": "week",
+  "predicate-month": "month",
+  "predicate-quarter": "quarter",
+  "predicate-year": "year",
+  "predicate-due": "due",
+  "predicate-modified": "modified",
+  "predicate-created": "created",
+  "predicate-attachment": "attachment",
+  "predicate-description": "description",
+  "predicate-checklist": "checklist",
+  "predicate-start": "start",
+  "predicate-end": "end",
+  "predicate-assignee": "assignee",
+  "predicate-member": "member",
+  "predicate-public": "public",
+  "predicate-private": "private",
+  "operator-unknown-error": "%s is not an operator",
+  "operator-number-expected": "operator __operator__ expected a number, got '__value__'",
+  "operator-sort-invalid": "sort of '%s' is invalid",
+  "operator-status-invalid": "'%s' is not a valid status",
+  "operator-has-invalid": "%s is not a valid existence check",
+  "operator-limit-invalid": "%s is not a valid limit.  Limit should be a positive integer.",
+  "next-page": "Next Page",
+  "previous-page": "Previous Page",
+  "heading-notes": "Notes",
+  "globalSearch-instructions-heading": "Search Instructions",
+  "globalSearch-instructions-description": "Searches can include operators to refine the search.  Operators are specified by writing the operator name and value separated by a colon.  For example, an operator specification of `list:Blocked` would limit the search to cards that are contained in a list named *Blocked*.  If the value contains spaces or special characters it must be enclosed in quotation marks (e.g. `__operator_list__:\"To Review\"`).",
+  "globalSearch-instructions-operators": "Available operators:",
+  "globalSearch-instructions-operator-board": "`__operator_board__:<title>` - cards in boards matching the specified *<title>*",
+  "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - cards in lists matching the specified *<title>*",
+  "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - cards in swimlanes matching the specified *<title>*",
+  "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - cards with a comment containing *<text>*.",
+  "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - cards that have a label matching *<color>* or *<name>",
+  "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - shorthand for `__operator_label__:<color>` or `__operator_label__:<name>`",
+  "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - cards where *<username>* is a *member* or *assignee*",
+  "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:<username>`",
+  "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - cards where *<username>* is a *member*",
+  "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - cards where *<username>* is an *assignee*",
+  "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cards which are due up to *<n>* days from now.  `__operator_due__:__predicate_overdue__ lists all cards past their due date.",
+  "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cards which were created *<n>* days ago or less",
+  "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cards which were modified *<n>* days ago or less",
+  "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - where *<status>* is one of the following:",
+  "globalSearch-instructions-status-archived": "`__predicate_archived__` - archived cards",
+  "globalSearch-instructions-status-all": "`__predicate_all__` - all archived and unarchived cards",
+  "globalSearch-instructions-status-ended": "`__predicate_ended__` - cards with an end date",
+  "globalSearch-instructions-status-public": "`__predicate_public__` - cards only in public boards",
+  "globalSearch-instructions-status-private": "`__predicate_private__` - cards only in private boards",
+  "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - where *<field>* is one of `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` or `__predicate_member__`.  Placing a `-` in front of *<field>* searches for the absence of a value in that field (e.g. `has:-due` searches for cards without a due date).",
+  "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - where *<sort-name>* is one of `__predicate_due__`, `__predicate_created__` or `__predicate_modified__`.  For a descending sort, place a `-` in front of the sort name.",
+  "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - where *<n>* is a positive integer expressing the number of cards to be displayed per page.",
+  "globalSearch-instructions-notes-1": "Multiple operators may be specified.",
+  "globalSearch-instructions-notes-2": "Similar operators are *OR*ed together.  Cards that match any of the conditions will be returned.\n`__operator_list__:Available __operator_list__:Blocked` would return cards contained in any list named *Blocked* or *Available*.",
+  "globalSearch-instructions-notes-3": "Differing operators are *AND*ed together.  Only cards that match all of the differing operators are returned.  `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.",
+  "globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.",
+  "globalSearch-instructions-notes-4": "Text searches are case insensitive.",
+  "globalSearch-instructions-notes-5": "By default archived cards are not searched.",
+  "link-to-search": "Link to this search",
+  "excel-font": "Arial",
+  "number": "Number",
+  "label-colors": "Label Colors",
+  "label-names": "Label Names",
+  "archived-at": "archived at",
+  "sort-cards": "Sort Cards",
+  "cardsSortPopup-title": "Sort Cards",
+  "due-date": "Due Date",
+  "title-alphabetically": "Title (Alphabetically)",
+  "created-at-newest-first": "Created At (Newest First)",
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+}

+ 5 - 1
i18n/es-MX.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/es-PE.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "URL de imagen del logo personalizado de inicio de sesión",
   "custom-login-logo-link-url": "URL de enlace del logo personalizado de inicio de sesión",
   "text-below-custom-login-logo": "Texto debajo del logo personalizado de inicio de sesión",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Nombre de usuario",
   "import-usernames": "Import Usernames",
   "view-it": "Verla",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/es-PY.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/es.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Nombre de usuario",
   "import-usernames": "Import Usernames",
   "view-it": "Verla",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/eu.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Erabiltzaile-izena",
   "import-usernames": "Import Usernames",
   "view-it": "Ikusi",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/fa-IR.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/fa.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "آدرس تصویر لوگوی سفارشی در لاگین",
   "custom-login-logo-link-url": "آدرس لینک لوگوی سفارشی در لاگین",
   "text-below-custom-login-logo": "متن پایین لوگوی سفارشی در فرم لاگین",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "نام کاربری",
   "import-usernames": "درون ریزی کاربران",
   "view-it": "مشاهده",
@@ -979,5 +980,8 @@
   "due-date": "تاریخ اجرا",
   "title-alphabetically": "تیتر (به صورت الفبا)",
   "created-at-newest-first": "ساخته شده در تاریخ (با اولویت جدید تر)",
-  "created-at-oldest-first": "ساخته شده در تاریخ (با اولویت قدیمی تر)"
+  "created-at-oldest-first": "ساخته شده در تاریخ (با اولویت قدیمی تر)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/fi.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Mukautettu kirjautumis logo kuvan URL",
   "custom-login-logo-link-url": "Mukautettu kirjautumis logon linkki URL",
   "text-below-custom-login-logo": "Teksti mukautetun kirjautumis logon alla",
+  "automatic-linked-url-schemes": "Mukautetut URL-mallit, joiden pitäisi olla automaattisesti klikattavissa. Yksi URL-malli riviä kohden",
   "username": "Käyttäjätunnus",
   "import-usernames": "Tuo käyttäjänimet",
   "view-it": "Näytä se",
@@ -979,5 +980,8 @@
   "due-date": "Eräpäivä",
   "title-alphabetically": "Otsikko (Aakkosjärjestyksessä)",
   "created-at-newest-first": "Luotu (Uusin ensin)",
-  "created-at-oldest-first": "Luotu (Vanhin ensin)"
+  "created-at-oldest-first": "Luotu (Vanhin ensin)",
+  "links-heading": "Linkit",
+  "hide-system-messages-of-all-users": "Piilota kaikkien käyttäjien järjestelmäviestit",
+  "now-system-messages-of-all-users-are-hidden": "Nyt kaikkien käyttäjien järjestelmäviestit on piilotettu"
 }

+ 15 - 11
i18n/fr.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "URL de l'image du logo de connexion personnalisé",
   "custom-login-logo-link-url": "Lien URL du logo de connexion personnalisé",
   "text-below-custom-login-logo": "Texte sous le logo de connexion personnalisé",
+  "automatic-linked-url-schemes": "Schémas d'URI personnalisés qui devraient être automatiquement cliquables. Un schéma d'URI par ligne",
   "username": "Nom d'utilisateur",
   "import-usernames": "Importer les noms d'utilisateurs",
   "view-it": "Le voir",
@@ -946,22 +947,22 @@
   "globalSearch-instructions-operator-comment": "`__operator_comment__:<texte>` - cartes dont le commentaire contient *<texte>*.",
   "globalSearch-instructions-operator-label": "`__operator_label__:<couleur>` `__operator_label__:<nom>` - cartes qui ont une étiquette correspondant à *<couleur>* ou à *<nom>*.",
   "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<nom|couleur>` - raccourci pour `__operator_label__:<couleur>` ou `__operator_label__:<nom>`",
-  "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - cards where *<username>* is a *member* or *assignee*",
-  "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:<username>`",
-  "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - cards where *<username>* is a *member*",
-  "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - cards where *<username>* is an *assignee*",
-  "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cards which are due up to *<n>* days from now.  `__operator_due__:__predicate_overdue__ lists all cards past their due date.",
-  "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cards which were created *<n>* days ago or less",
-  "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cards which were modified *<n>* days ago or less",
-  "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - where *<status>* is one of the following:",
+  "globalSearch-instructions-operator-user": "`__operator_user__:<nom>` - cartes où l'utilisateur <nom> est *assigné* ou est un *participant*.",
+  "globalSearch-instructions-operator-at": "`__operator_user_abbrev__nom` - raccourci pour `__operator_user__:<nom>`",
+  "globalSearch-instructions-operator-member": "`__operator_member__:<nom>` - cartes pour lesquelles l'utilisateur *<nom>* est *participant*",
+  "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<nom>` - cartes *assignées* à l'utilisateur *<nom>*",
+  "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cartes qui arrive à échéance dans moins de *<n>* jours à partir d'aujourd'hui.\n`__operator_due__:__predicate_overdue__` liste toutes les cartes ayant passé la date d'échéance.",
+  "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cartes qui ont été créées il y a *<n>* jours ou moins",
+  "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cartes qui ont été modifiées il y a *<n>* jours ou moins",
+  "globalSearch-instructions-operator-status": "`__operator_status__:<état>` - où *<état>* est l'un des choix suivants :",
   "globalSearch-instructions-status-archived": "`__predicate_archived__` - cartes qui ont été archivées.",
   "globalSearch-instructions-status-all": "`__predicate_all__` -  toutes les cartes : archivées et non archivées.",
   "globalSearch-instructions-status-ended": "`__predicate_ended__` - cartes ayant une date de fin.",
   "globalSearch-instructions-status-public": "`__predicate_public__` - uniquement les cartes qui sont dans un tableau public.",
   "globalSearch-instructions-status-private": "`__predicate_private__` - uniquement les cartes qui sont dans un tableau privé.",
   "globalSearch-instructions-operator-has": "`__operator_has__:<champ>` - où *<champ>* est un parmi `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` ou `__predicate_member__`.  Placer un `-` au début de *<champ>* recherche l'absence de valeur dans ce champ (par exemple. __operator_has:__predicate_due` recherche les carte sans date d'échéance).",
-  "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - where *<sort-name>* is one of `__predicate_due__`, `__predicate_created__` or `__predicate_modified__`.  For a descending sort, place a `-` in front of the sort name.",
-  "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - where *<n>* is a positive integer expressing the number of cards to be displayed per page.",
+  "globalSearch-instructions-operator-sort": "`__operator_sort__:<tri>` - où *<tri>* est une méthode parmi `__predicate_due__`, `__predicate_created__` ou `__predicate_modified__`.  Pour un tri descendant, préfixez la méthode par `-`.",
+  "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - où *<n>* est un entier positif exprimant le nombre de cartes à afficher par page.",
   "globalSearch-instructions-notes-1": "Il est possible d'utiliser plusieurs opérateurs.",
   "globalSearch-instructions-notes-2": "Les opérateurs similaires deviennent *optionnels*. Les cartes correspondant à n'importe quelle condition sont retournées.\n`__operator_list__:Disponible __operator_list__:Bloquée` retournera les cartes contenues dans la liste *Disponible* ou dans la liste *Bloquée*.",
   "globalSearch-instructions-notes-3": "Les opérateurs différents sont *combinés*. Seules les cartes correspondant à tous les critères sont retournées.  `__operator_list__:Disponible __operator_label__:rouge` ne retourne que les cartes dans la liste *Disponible* avec une étiquette *rouge*.",
@@ -979,5 +980,8 @@
   "due-date": "Date d'échéance",
   "title-alphabetically": "Titre (Alphabétiquement)",
   "created-at-newest-first": "Date de création (Plus récentes en premier)",
-  "created-at-oldest-first": "Date de création (Plus anciennes en premier)"
+  "created-at-oldest-first": "Date de création (Plus anciennes en premier)",
+  "links-heading": "Liens",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/gl.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Nome de usuario",
   "import-usernames": "Import Usernames",
   "view-it": "Velo",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 17 - 13
i18n/he.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "כתובת תמונת לוגו משלך לכניסה",
   "custom-login-logo-link-url": "כתובת קישור לוגו משלך לכניסה",
   "text-below-custom-login-logo": "טקסט מתחת לשיטת כניסה מותאמת",
+  "automatic-linked-url-schemes": "סכמות כתובות בהתאמה אישית שיהפכו ללחיצות אוטומטית. סכמת כתובת אחת בשורה",
   "username": "שם משתמש",
   "import-usernames": "ייבוא שמות משתמשים",
   "view-it": "הצגה",
@@ -945,27 +946,27 @@
   "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - כרטיסים במסלולים שעונים על *<title>* שצוין",
   "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - כרטיסים עם הערה שמכילים *<text>*.",
   "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - כרטיסים שיש להם תווית שתואמת את *<color>* או את *<name>",
-  "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - shorthand for `__operator_label__:<color>` or `__operator_label__:<name>`",
-  "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - cards where *<username>* is a *member* or *assignee*",
-  "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:<username>`",
-  "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - cards where *<username>* is a *member*",
-  "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - cards where *<username>* is an *assignee*",
-  "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cards which are due up to *<n>* days from now.  `__operator_due__:__predicate_overdue__ lists all cards past their due date.",
-  "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cards which were created *<n>* days ago or less",
-  "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cards which were modified *<n>* days ago or less",
+  "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - קיצור של `__operator_label__:<color>` או `__operator_label__:<name>`",
+  "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - כרטיסים שהוקצו אל *<username>* או שהוא *חבר* בהם",
+  "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - קיצור של `user:<username>`",
+  "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - כרטיסים בהם *<username>* *חבר*",
+  "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - כרטיסים שהוקצו אל *<username>*",
+  "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - כרטיסים שהתוקף שלהם יפוג עד עוד *<n>* ימים מעכשיו.  `__operator_due__:__predicate_overdue__ מציג את כל הכרטיסים שתאריך התוקף שלהם עבר.",
+  "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - כרטיסים שנוצרו לפני *<n>* ימים או פחות",
+  "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - כרטיסים שנערכו לפני *<n>* ימים או פחות",
   "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - כאשר *<status>* יכול להיות אחד מהבאים:",
   "globalSearch-instructions-status-archived": "`__predicate_archived__` - כרטיסים בארכיון",
   "globalSearch-instructions-status-all": "`__predicate_all__` - כל הכרטיסים שבארכיון ומחוצה לו.",
   "globalSearch-instructions-status-ended": "`__predicate_ended__` - כרטיסים עם מועד סיום",
   "globalSearch-instructions-status-public": "`__predicate_public__` - כרטיסים בלוחות ציבוריים בלבד",
   "globalSearch-instructions-status-private": "`__predicate_private__` - כרטיסים בלוחות פרטיים בלבד.",
-  "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - where *<field>* is one of `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` or `__predicate_member__`.  Placing a `-` in front of *<field>* searches for the absence of a value in that field (e.g. `has:-due` searches for cards without a due date).",
-  "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - where *<sort-name>* is one of `__predicate_due__`, `__predicate_created__` or `__predicate_modified__`.  For a descending sort, place a `-` in front of the sort name.",
-  "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - where *<n>* is a positive integer expressing the number of cards to be displayed per page.",
+  "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - כאשר *<field>* הוא אחד מבין `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` או `__predicate_member__`.  הוספת `-` לפני חיפושי *<field>* מחפש שדות שאין בהם את הערך שצוין (למשל: `has:-due` יחפש כרטיסים בלי תאריך תפוגה).",
+  "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - כאשר *<sort-name>* הוא אחד מבין `__predicate_due__`, `__predicate_created__` או `__predicate_modified__`.  לסדר יורד יש להציב `-` לפני שם המיון.",
+  "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - כאשר *<n>* הוא מספר שלם וחיובי שמבטא את מספר הכרטיסים שיופיעו בכל עמוד.",
   "globalSearch-instructions-notes-1": "אפשר לציין מגוון סימוני פעולה.",
   "globalSearch-instructions-notes-2": "על פעולות דומות חל שער לוגי *או* (*OR*). כרטיסים שתואמים אי אילו מהכללים יוחזרו.\n`__operator_list__:זמינים __operator_list__:חסומים` תחזרנה כרטיסים שמופיעים ברשימות עם השמות *חסומים* או *זמינים*.",
   "globalSearch-instructions-notes-3": "על פעולות שונות חל שער לוגי *וגם* (*AND*). רק כרטיסים שתואמים את שתי הפעולות השונות יוחזרו. `__operator_list__:זמינים __operator_label__:אדום` תחזיר רק כרטיסים מהרשימה *זמינים* עם תווית בצבע *אדום*.",
-  "globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.",
+  "globalSearch-instructions-notes-3-2": "ניתן לציין ימים כמספר שלם חיובי או שלילי או על ידי ציון `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` או `__predicate_year__` לתקופה הנוכחית.",
   "globalSearch-instructions-notes-4": "חיפושי טקסט הם תלויי רישיות.",
   "globalSearch-instructions-notes-5": "כבררת מחדל לא מתבצע חיפוש בכרטיסים שבארכיון.",
   "link-to-search": "קישור לחיפוש הזה",
@@ -979,5 +980,8 @@
   "due-date": "מועד סיום",
   "title-alphabetically": "כותרת (לפי האלפבית)",
   "created-at-newest-first": "מועד יצירה (החדש ביותר בהתחלה)",
-  "created-at-oldest-first": "מועד יצירה (הישן ביותר בהתחלה)"
+  "created-at-oldest-first": "מועד יצירה (הישן ביותר בהתחלה)",
+  "links-heading": "קישורים",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/hi.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "आलोकन it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 66 - 62
i18n/hr.i18n.json

@@ -51,30 +51,30 @@
   "activity-created": "kreirao/la je %s",
   "activity-customfield-created": "kreirao/la je prilagođeno polje %s",
   "activity-excluded": "izdvojio/la je %s iz %s",
-  "activity-imported": "imported %s into %s from %s",
-  "activity-imported-board": "imported %s from %s",
-  "activity-joined": "joined %s",
+  "activity-imported": "uvezeno %s u %s iz %s ",
+  "activity-imported-board": "uvezeno %s iz %s",
+  "activity-joined": "spojen",
   "activity-moved": "moved %s from %s to %s",
   "activity-on": "na %s",
-  "activity-removed": "removed %s from %s",
-  "activity-sent": "sent %s to %s",
-  "activity-unjoined": "unjoined %s",
-  "activity-subtask-added": "added subtask to %s",
-  "activity-checked-item": "checked %s in checklist %s of %s",
-  "activity-unchecked-item": "unchecked %s in checklist %s of %s",
-  "activity-checklist-added": "added checklist to %s",
-  "activity-checklist-removed": "removed a checklist from %s",
-  "activity-checklist-completed": "completed checklist %s of %s",
-  "activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
-  "activity-checklist-item-added": "added checklist item to '%s' in %s",
-  "activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
+  "activity-removed": "uklonjen %s iz %s",
+  "activity-sent": "poslano %s u %s",
+  "activity-unjoined": "odspojen %s",
+  "activity-subtask-added": "dodan podzadatak u %s",
+  "activity-checked-item": "označen %s u listi provjere %s od %s",
+  "activity-unchecked-item": "odznačen %s u listi provjere %s od %s",
+  "activity-checklist-added": "dodana lista provjere u %s",
+  "activity-checklist-removed": "uklonjena lista provjere iz %s",
+  "activity-checklist-completed": "dovršena lista provjere %s od %s",
+  "activity-checklist-uncompleted": "nedovršena lista provjere %s od %s",
+  "activity-checklist-item-added": "dodana stavka '%s' u %s",
+  "activity-checklist-item-removed": "uklonjena stavka iz '%s' u %s",
   "add": "Dodaj",
-  "activity-checked-item-card": "checked %s in checklist %s",
-  "activity-unchecked-item-card": "unchecked %s in checklist %s",
+  "activity-checked-item-card": "označeno %s u listi provjere %s",
+  "activity-unchecked-item-card": "odznačeno %s u listi provjere %s",
   "activity-checklist-completed-card": "lista provjere __checklist__ na kartici __card__ na listi __list__ u traci __swimlane__ na ploči __board__ je potpuno završena",
   "activity-checklist-uncompleted-card": "uncompleted the checklist %s",
-  "activity-editComment": "edited comment %s",
-  "activity-deleteComment": "deleted comment %s",
+  "activity-editComment": "uređen komentar %s",
+  "activity-deleteComment": "obrisan komentar %s",
   "activity-receivedDate": "edited received date to %s of %s",
   "activity-startDate": "edited start date to %s of %s",
   "activity-dueDate": "edited due date to %s of %s",
@@ -86,49 +86,49 @@
   "add-subtask": "Dodaj podzadatak",
   "add-checklist": "Dodaj listu provjere",
   "add-checklist-item": "Dodaj stavku listi provjere",
-  "add-cover": "Add Cover",
+  "add-cover": "Dodaj naslovnicu",
   "add-label": "Dodaj oznaku",
   "add-list": "Dodaj listu",
   "add-members": "Dodaj korisnika",
-  "added": "Added",
+  "added": "Dodano",
   "addMemberPopup-title": "Korisnici",
   "admin": "Administrator",
-  "admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
+  "admin-desc": "Može pregledavati i uređivati ​​kartice, uklanjati članove i mijenjati postavke ploče.",
   "admin-announcement": "Obavijest",
-  "admin-announcement-active": "Active System-Wide Announcement",
+  "admin-announcement-active": "Aktivne sistemske obavijesti",
   "admin-announcement-title": "Administratorske obavijesti",
   "all-boards": "Sve ploče",
   "and-n-other-card": "And __count__ other card",
   "and-n-other-card_plural": "And __count__ other cards",
   "apply": "Primjeni",
   "app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
-  "archive": "Move to Archive",
-  "archive-all": "Move All to Archive",
-  "archive-board": "Move Board to Archive",
-  "archive-card": "Move Card to Archive",
-  "archive-list": "Move List to Archive",
-  "archive-swimlane": "Move Swimlane to Archive",
-  "archive-selection": "Move selection to Archive",
-  "archiveBoardPopup-title": "Move Board to Archive?",
+  "archive": "Preseli u arhivu",
+  "archive-all": "Preseli sve u arhivu",
+  "archive-board": "Preseli ploču u arhivu",
+  "archive-card": "Preseli karticu u arhivu",
+  "archive-list": "Preseli listu u arhivu",
+  "archive-swimlane": "Preseli traku u arhivu",
+  "archive-selection": "Preseli selekciju u arhivu",
+  "archiveBoardPopup-title": "Želite preseliti ploču u arhivu?",
   "archived-items": "Arhiva",
   "archived-boards": "Ploče u arhivi",
-  "restore-board": "Restore Board",
-  "no-archived-boards": "No Boards in Archive.",
+  "restore-board": "Vrati ploču",
+  "no-archived-boards": "Nema ploča u arhivi.",
   "archives": "Arhiva",
   "template": "Predložak",
   "templates": "Predlošci",
-  "assign-member": "Assign member",
-  "attached": "attached",
+  "assign-member": "Dodijeli člana",
+  "attached": "u prilogu",
   "attachment": "Privitak",
-  "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
+  "attachment-delete-pop": "Brisanje priloga je trajno. Nema poništavanja brisanja.",
   "attachmentDeletePopup-title": "Obrisati privitak?",
   "attachments": "Privitci",
-  "auto-watch": "Automatically watch boards when they are created",
-  "avatar-too-big": "The avatar is too large (520KB max)",
+  "auto-watch": "Automatski pratite nove ploče kada su kreirane",
+  "avatar-too-big": "Slika za avatar je prevelika (maksimalno 520KB)",
   "back": "Nazad",
-  "board-change-color": "Change color",
-  "board-nb-stars": "%s stars",
-  "board-not-found": "Board not found",
+  "board-change-color": "Promijeni boju",
+  "board-nb-stars": "%s zvjezdica",
+  "board-not-found": "Ploča nije pronađena",
   "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",
@@ -190,16 +190,16 @@
   "cardType-card": "Kartica",
   "cardType-linkedCard": "Povezane kartice",
   "cardType-linkedBoard": "Povezane ploče",
-  "change": "Promjeni",
-  "change-avatar": "Promjeni avatara",
-  "change-password": "Promjeni lozinku",
-  "change-permissions": "Promjeni dozvole",
-  "change-settings": "Promjeni postavke",
-  "changeAvatarPopup-title": "Promjeni avatara",
-  "changeLanguagePopup-title": "Promjeni jezik",
-  "changePasswordPopup-title": "Promjeni lozinku",
-  "changePermissionsPopup-title": "Promjeni dozvole",
-  "changeSettingsPopup-title": "Promjeni postavke",
+  "change": "Promijeni",
+  "change-avatar": "Promijeni avatara",
+  "change-password": "Promijeni lozinku",
+  "change-permissions": "Promijeni dozvole",
+  "change-settings": "Promijeni postavke",
+  "changeAvatarPopup-title": "Promijeni avatara",
+  "changeLanguagePopup-title": "Promijeni jezik",
+  "changePasswordPopup-title": "Promijeni lozinku",
+  "changePermissionsPopup-title": "Promijeni dozvole",
+  "changeSettingsPopup-title": "Promijeni postavke",
   "subtasks": "Podzadaci",
   "checklists": "Liste provjere",
   "click-to-star": "Click to star this board.",
@@ -285,15 +285,15 @@
   "done": "Done",
   "download": "Preuzmi",
   "edit": "Uredi",
-  "edit-avatar": "Promjeni avatara",
+  "edit-avatar": "Promijeni avatara",
   "edit-profile": "Uredi profil",
   "edit-wip-limit": "Edit WIP Limit",
   "soft-wip-limit": "Soft WIP Limit",
-  "editCardStartDatePopup-title": "Change start date",
-  "editCardDueDatePopup-title": "Change due date",
+  "editCardStartDatePopup-title": "Promijeni datum početka",
+  "editCardDueDatePopup-title": "Promijeni datum dospijeća",
   "editCustomFieldPopup-title": "Uredi polje",
   "editCardSpentTimePopup-title": "Change spent time",
-  "editLabelPopup-title": "Change Label",
+  "editLabelPopup-title": "Promijeni oznaku",
   "editNotificationPopup-title": "Edit Notification",
   "editProfilePopup-title": "Uredi profil",
   "email": "Email",
@@ -403,7 +403,7 @@
   "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
   "labels": "Oznake",
   "language": "Jezik",
-  "last-admin-desc": "You can’t change roles because there must be at least one admin.",
+  "last-admin-desc": "Ne možeš promijeniti uloge jer mora postojati barem jedan administrator.",
   "leave-board": "Napusti ploču",
   "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
   "leaveBoardPopup-title": "Napustiti ploču?",
@@ -441,7 +441,7 @@
   "multi-selection-member": "Set member for selection",
   "multi-selection-on": "Multi-Selection is on",
   "muted": "Bez obavijesti",
-  "muted-info": "You will never be notified of any changes in this board",
+  "muted-info": "Nikada nećeš biti obaviješten o bilo kakvim promjenama na ovoj ploči",
   "my-boards": "Moje ploče",
   "name": "Ime",
   "no-archived-cards": "Nema kartica u arhivi",
@@ -449,7 +449,7 @@
   "no-archived-swimlanes": "Nema traka u arhivi",
   "no-results": "Bez rezultata",
   "normal": "Normalno",
-  "normal-desc": "Can view and edit cards. Can't change settings.",
+  "normal-desc": "Može pregledavati i uređivati ​​kartice. Nije moguće promijeniti postavke.",
   "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",
@@ -518,7 +518,7 @@
   "time": "Vrijeme",
   "title": "Naziv",
   "tracking": "Tracking",
-  "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+  "tracking-info": "Bit ćeš obaviješten o svim promjenama na onim karticama u koje si uključen kao autor ili član.",
   "type": "Tip",
   "unassign-member": "Unassign member",
   "unsaved-description": "You have an unsaved description.",
@@ -532,13 +532,14 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Korisničko ime",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
   "warn-list-archived": "warning: this card is in an list at Archive",
   "watch": "Prati",
   "watching": "Watching",
-  "watching-info": "You will be notified of any change in this board",
+  "watching-info": "Bit ćeš obaviješten o svim promjenama na ovoj ploči",
   "welcome-board": "Welcome Board",
   "welcome-swimlane": "Milestone 1",
   "welcome-list1": "Osnove",
@@ -703,7 +704,7 @@
   "r-top-of": "Top of",
   "r-bottom-of": "Bottom of",
   "r-its-list": "its list",
-  "r-archive": "Move to Archive",
+  "r-archive": "Preseli u arhivu",
   "r-unarchive": "Restore from Archive",
   "r-card": "card",
   "r-add": "Dodati",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/hu.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Felhasználónév",
   "import-usernames": "Import Usernames",
   "view-it": "Megtekintés",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/hy.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 29 - 25
i18n/id.i18n.json

@@ -1,15 +1,15 @@
 {
   "accept": "Terima",
-  "act-activity-notify": "Pemeberitahuan Aktifitas",
-  "act-addAttachment": "ditambahkan lampiran __attachment__ di kartu __card__ pada daftar __list__ pada swimline __swimline__ pada papan __board__",
-  "act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-activity-notify": "Pemberitahuan Aktifitas",
+  "act-addAttachment": "menambahkan lampiran __attachment__ ke kartu __card__ pada daftar __list__ pada jalur __swimline__ dalam papan __board__",
+  "act-deleteAttachment": "menghapus lampiran __attachment__ di kartu __card__ pada daftar __list__ pada jalur __swimlane__ dalam papan __board__",
+  "act-addSubtask": "menambah tugas __subtask__ ke kartu __card__ pada daftar __list__ pada jalur __swimlane__ dalam papan __board__",
+  "act-addLabel": "Menambah label __label__ ke kartu __card__ pada daftar __list__ pada jalur __swimlane__ dalam papan __board__",
+  "act-addedLabel": "Menambah label __label__ ke kartu __card__ pada daftar __list__ pada jalur __swimlane__ dalam papan __board__",
+  "act-removeLabel": "Menghapus label __label__ dari kartu __card__ pada daftar __list__ pada jalur __swimlane__ dalam papan __board__",
+  "act-removedLabel": "Menghapus label __label__ dari kartu__card__ pada daftar __list__ pada jalur __swimlane__ dalam papan __board__",
+  "act-addChecklist": "menambah daftar cek __checklist__ ke kartu __card__ pada daftar __list__ pada jalur __swimlane__ dalam papan __board__",
+  "act-addChecklistItem": "menambah item cek __checklistItem__ ke daftar cek __checklist__ di kartu __card__ pada daftar __list__ pada jalur __swimlane__ dalam papan __board__",
   "act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
   "act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
   "act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Nama Pengguna",
   "import-usernames": "Import Usernames",
   "view-it": "Lihat",
@@ -572,7 +573,7 @@
   "invitation-code": "Kode Undangan",
   "email-invite-register-subject": "__inviter__ mengirim undangan ke Anda",
   "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
-  "email-smtp-test-subject": "SMTP Tes Surel",
+  "email-smtp-test-subject": "Tes Surel SMTP",
   "email-smtp-test-text": "You have successfully sent an email",
   "error-invitation-code-not-exist": "Kode undangan tidak ada",
   "error-notAuthorized": "You are not authorized to view this page.",
@@ -683,7 +684,7 @@
   "r-moved-from": "Dipindahkan dari",
   "r-archived": "Dipindahkan ke Arsip",
   "r-unarchived": "Dipulihkan dari Arsip",
-  "r-a-card": "Kartu",
+  "r-a-card": "satu kartu",
   "r-when-a-label-is": "Ketika label adalah",
   "r-when-the-label": "Ketika label",
   "r-list-name": "nama daftar",
@@ -702,8 +703,8 @@
   "r-move-card-to": "Move card to",
   "r-top-of": "Top of",
   "r-bottom-of": "Bottom of",
-  "r-its-list": "daftar ini",
-  "r-archive": "Pindahlan ke Arsip",
+  "r-its-list": "daftarnya",
+  "r-archive": "Pindahkan ke Arsip",
   "r-unarchive": "Pulihkan dari Arsip",
   "r-card": "Kartu",
   "r-add": "Tambah",
@@ -718,12 +719,12 @@
   "r-items-check": "items of checklist",
   "r-check": "Check",
   "r-uncheck": "Uncheck",
-  "r-item": "Item",
+  "r-item": "item",
   "r-of-checklist": "of checklist",
   "r-send-email": "Send an email",
   "r-to": "kepada",
   "r-of": "dari",
-  "r-subject": "Subyek",
+  "r-subject": "subyek",
   "r-rule-details": "Rule details",
   "r-d-move-to-top-gen": "Move card to top of its list",
   "r-d-move-to-top-spec": "Move card to top of list",
@@ -731,15 +732,15 @@
   "r-d-move-to-bottom-spec": "Move card to bottom of list",
   "r-d-send-email": "Kirim surel",
   "r-d-send-email-to": "kepada",
-  "r-d-send-email-subject": "Subyek",
+  "r-d-send-email-subject": "subyek",
   "r-d-send-email-message": "pesan",
-  "r-d-archive": "Pindahlan kartu ke Arsip",
+  "r-d-archive": "Pindahkan kartu ke Arsip",
   "r-d-unarchive": "Pulihkan kartu dari Arsip",
   "r-d-add-label": "Tambahkan label",
   "r-d-remove-label": "Hapus label",
   "r-create-card": "Buat kartu baru",
   "r-in-list": "pada daftar",
-  "r-in-swimlane": "in swimlane",
+  "r-in-swimlane": "pada jalur",
   "r-d-add-member": "Tambahkan anggota",
   "r-d-remove-member": "Hapus anggota",
   "r-d-remove-all-member": "Hapus semua anggota",
@@ -753,7 +754,7 @@
   "r-by": "oleh",
   "r-add-checklist": "Tambahkan daftar periksa",
   "r-with-items": "dengan item",
-  "r-items-list": "item 1, item2, item 3",
+  "r-items-list": "item1, item2, item3",
   "r-add-swimlane": "Add swimlane",
   "r-swimlane-name": "swimlane name",
   "r-board-note": "Note: leave a field empty to match every possible value.",
@@ -761,20 +762,20 @@
   "r-when-a-card-is-moved": "When a card is moved to another list",
   "r-set": "Tetapkan",
   "r-update": "Ubah",
-  "r-datefield": "bidang tanggal",
+  "r-datefield": "kolom tanggal",
   "r-df-start-at": "mulai",
   "r-df-due-at": "sampai",
   "r-df-end-at": "berakhir",
   "r-df-received-at": "diterima",
-  "r-to-current-datetime": "to current date/time",
-  "r-remove-value-from": "Remove value from",
+  "r-to-current-datetime": "ke tanggal/waktu sekarang",
+  "r-remove-value-from": "Hapus nilai dari",
   "ldap": "LDAP",
   "oauth2": "OAuth2",
   "cas": "CAS",
   "authentication-method": "Metode Autentikasi",
   "authentication-type": "Tipe Autentikasi",
   "custom-product-name": "Custom Product Name",
-  "layout": "Tata letak",
+  "layout": "Tata Letak",
   "hide-logo": "Sembunyikan Logo",
   "add-custom-html-after-body-start": "Tambahkan HTML khusus setelah <body> mulai",
   "add-custom-html-before-body-end": "Tambahkan HTML khusus sebelum </body> berakhir",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/ig.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "Hụ ya",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 119 - 115
i18n/it.i18n.json

@@ -1,45 +1,45 @@
 {
   "accept": "Accetta",
   "act-activity-notify": "Notifica attività",
-  "act-addAttachment": "Aggiunto allegato __attachment__ alla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
-  "act-deleteAttachment": "Eliminato allegato __attachment__ dalla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
-  "act-addSubtask": "Aggiunto sottotask __subtask__ alla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
-  "act-addLabel": "Aggiunta etichetta __label__ alla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
-  "act-addedLabel": "Aggiunta etichetta __label__ alla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
-  "act-removeLabel": "Rimossa etichetta __label__ dalla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
-  "act-removedLabel": "Rimossa etichetta __label__ dalla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
-  "act-addChecklist": "aggiunta lista di controllo __label__ alla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
-  "act-addChecklistItem": "aggiunto elemento __checklistItem__ alla lista di controllo __checklist__ della scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
-  "act-removeChecklist": "rimossa lista di controllo __checklist__ dalla scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
-  "act-removeChecklistItem": "rimosso elemento __checklistItem__ dalla lista di controllo __checkList__ della scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
-  "act-checkedItem": "attivato __checklistItem__ nella lista di controllo __checklist__ della scheda __card__ della lista __list__ della corsia __swimlane__ nella bacheca __board__",
-  "act-uncheckedItem": "disattivato __checklistItem__ della lista di controllo __checklist__ dalla scheda __card__ della lista __list__ della corsia __swimlane__ nella bacheca __board__",
-  "act-completeChecklist": "completata lista di controllo __checklist__  nella scheda __card__ della lista __list__ della corsia __swimlane__ nella bacheca __board__",
-  "act-uncompleteChecklist": "lista di controllo __checklist__ incompleta nella scheda __card__ della lista __list__ in corsia __swimlane__ della bacheca __board__",
-  "act-addComment": "commento sulla scheda __card__: __comment__ nella lista __list__ della corsia __swimlane__ della bacheca __board__",
+  "act-addAttachment": "Aggiunto allegato __attachment__ alla scheda __card__ della lista __list__ della swimlane __swimlane__  nella bacheca __board__",
+  "act-deleteAttachment": "Eliminato allegato __attachment__ dalla scheda __card__ della lista __list__ della swimlane __swimlane__  nella bacheca __board__",
+  "act-addSubtask": "Aggiunto sottotask __subtask__ alla scheda __card__ della lista __list__ della swimlane __swimlane__  nella bacheca __board__",
+  "act-addLabel": "Aggiunta etichetta __label__ alla scheda __card__ della lista __list__ della swimlane __swimlane__  nella bacheca __board__",
+  "act-addedLabel": "Aggiunta etichetta __label__ alla scheda __card__ della lista __list__ della swimlane __swimlane__  nella bacheca __board__",
+  "act-removeLabel": "Rimossa etichetta __label__ dalla scheda __card__ della lista __list__ della swimlane __swimlane__  nella bacheca __board__",
+  "act-removedLabel": "Rimossa etichetta __label__ dalla scheda __card__ della lista __list__ della swimlane __swimlane__  nella bacheca __board__",
+  "act-addChecklist": "aggiunta lista di controllo __label__ alla scheda __card__ della lista __list__ della swimlane __swimlane__  nella bacheca __board__",
+  "act-addChecklistItem": "aggiunto elemento __checklistItem__ alla lista di controllo __checklist__ della scheda __card__ della lista __list__ della swimlane __swimlane__  nella bacheca __board__",
+  "act-removeChecklist": "rimossa lista di controllo __checklist__ dalla scheda __card__ della lista __list__ della swimlane __swimlane__  nella bacheca __board__",
+  "act-removeChecklistItem": "rimosso elemento __checklistItem__ dalla lista di controllo __checkList__ della scheda __card__ della lista __list__ della swimlane __swimlane__  nella bacheca __board__",
+  "act-checkedItem": "attivato __checklistItem__ nella lista di controllo __checklist__ della scheda __card__ della lista __list__ della swimlane __swimlane__ nella bacheca __board__",
+  "act-uncheckedItem": "disattivato __checklistItem__ della lista di controllo __checklist__ dalla scheda __card__ della lista __list__ della swimlane __swimlane__ nella bacheca __board__",
+  "act-completeChecklist": "completata lista di controllo __checklist__  nella scheda __card__ della lista __list__ della swimlane __swimlane__ nella bacheca __board__",
+  "act-uncompleteChecklist": "lista di controllo __checklist__ incompleta nella scheda __card__ della lista __list__ in swimlane __swimlane__ della bacheca __board__",
+  "act-addComment": "commento sulla scheda __card__: __comment__ nella lista __list__ della swimlane __swimlane__ della bacheca __board__",
   "act-editComment": "commento modificato sulla scheda __card__: __comment__ nella lista __list__ nella swim lane __swimlane__ nella bacheca __board__",
   "act-deleteComment": "commento eliminato sulla scheda __card__: __comment__ nella lista __list__ nella swim lane __swimlane__ nella bacheca __board__",
   "act-createBoard": "bacheca __board__ creata",
-  "act-createSwimlane": "creata corsia __swimlane__ alla bacheca __board__",
-  "act-createCard": "scheda __card__ creata nella lista __list__ della corsia __swimlane__ della bacheca __board__",
+  "act-createSwimlane": "creata swimlane __swimlane__ alla bacheca __board__",
+  "act-createCard": "scheda __card__ creata nella lista __list__ della swimlane __swimlane__ della bacheca __board__",
   "act-createCustomField": "creato campo personalizzato __customField__ nella bacheca __board",
   "act-deleteCustomField": "campo personalizzato eliminato __customField__ nella bacheca __board",
   "act-setCustomField": "campo personalizzato modificato __customField__: __customFieldValue__ sulla scheda __card__ sulla lista __list__ sulla swimlane __swimlane__ sulla bacheca __board__",
   "act-createList": "aggiunta lista __list__ alla bacheca __board__",
   "act-addBoardMember": "aggiunto membro __member__ alla bacheca __board__",
   "act-archivedBoard": "Bacheca __board__ archiviata",
-  "act-archivedCard": "Scheda __card__ della lista __list__ della corsia __swimlane__ della bacheca __board__ archiviata",
-  "act-archivedList": "Lista __list__ della corsia __swimlane__ della bacheca __board__ archiviata",
+  "act-archivedCard": "Scheda __card__ della lista __list__ della swimlane __swimlane__ della bacheca __board__ archiviata",
+  "act-archivedList": "Lista __list__ della swimlane __swimlane__ della bacheca __board__ archiviata",
   "act-archivedSwimlane": "Corsia __swimlane__ della bacheca __board__ archiviata",
   "act-importBoard": "Bacheca __board__ importata",
-  "act-importCard": "scheda importata  __card__ nella lista __list__ della corsia __swimlane__ della bacheca __board__",
-  "act-importList": "lista __list__ importata nella corsia __swimlane__ della bacheca __board__",
-  "act-joinMember": "aggiunto membro __member__  alla scheda __card__ della list __list__ nella corsia __swimlane__ della bacheca __board__",
-  "act-moveCard": "spostata scheda __card__ della bacheca __board__ dalla lista __oldList__ della corsia  __oldSwimlane__ alla lista __list__ della corsia __swimlane__",
-  "act-moveCardToOtherBoard": "postata scheda __card__ dalla lista __oldList__ della corsia __oldSwimlane__ della bacheca __oldBoard__ alla lista __list__ nella corsia __swimlane__ della bacheca __board__",
+  "act-importCard": "scheda importata  __card__ nella lista __list__ della swimlane __swimlane__ della bacheca __board__",
+  "act-importList": "lista __list__ importata nella swimlane __swimlane__ della bacheca __board__",
+  "act-joinMember": "aggiunto membro __member__  alla scheda __card__ della list __list__ nella swimlane __swimlane__ della bacheca __board__",
+  "act-moveCard": "spostata scheda __card__ della bacheca __board__ dalla lista __oldList__ della swimlane  __oldSwimlane__ alla lista __list__ della swimlane __swimlane__",
+  "act-moveCardToOtherBoard": "postata scheda __card__ dalla lista __oldList__ della swimlane __oldSwimlane__ della bacheca __oldBoard__ alla lista __list__ nella swimlane __swimlane__ della bacheca __board__",
   "act-removeBoardMember": "rimosso membro __member__ dalla bacheca __board__",
-  "act-restoredCard": "scheda ripristinata __card__ della lista __list__ nella corsia __swimlane__ della bacheca __board__",
-  "act-unjoinMember": "rimosso membro __member__ dalla scheda __card__ della lista __list__ della corsia __swimlane__ nella bacheca __board__",
+  "act-restoredCard": "scheda ripristinata __card__ della lista __list__ nella swimlane __swimlane__ della bacheca __board__",
+  "act-unjoinMember": "rimosso membro __member__ dalla scheda __card__ della lista __list__ della swimlane __swimlane__ nella bacheca __board__",
   "act-withBoardTitle": "__board__",
   "act-withCardTitle": "[__board__] __card__",
   "actions": "Azioni",
@@ -54,7 +54,7 @@
   "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-moved": "ha spostato %s da %s a %s",
   "activity-on": "su %s",
   "activity-removed": "rimosso %s da %s",
   "activity-sent": "inviato %s a %s",
@@ -62,7 +62,7 @@
   "activity-subtask-added": "aggiunto il sottocompito a 1%s",
   "activity-checked-item": "selezionata %s nella checklist %s di %s",
   "activity-unchecked-item": "disattivato %s nella checklist %s di %s",
-  "activity-checklist-added": "aggiunta checklist a %s",
+  "activity-checklist-added": "ha aggiunto una checklist a %s",
   "activity-checklist-removed": "È stata rimossa una checklist da%s",
   "activity-checklist-completed": "%s di %s checklists completate",
   "activity-checklist-uncompleted": "La checklist non è stata completata",
@@ -71,24 +71,24 @@
   "add": "Aggiungi",
   "activity-checked-item-card": "%s è stato selezionato nella checklist %s",
   "activity-unchecked-item-card": "%s è stato deselezionato nella  checklist %s",
-  "activity-checklist-completed-card": "checklist  __checklist__ completata nella scheda __card__ della lista __list__ della corsia __swimlane__  nella bacheca __board__",
+  "activity-checklist-completed-card": "checklist  __checklist__ completata nella scheda __card__ della lista __list__ della swimlane __swimlane__  nella bacheca __board__",
   "activity-checklist-uncompleted-card": "La checklist %s non è completa",
   "activity-editComment": "commento modificato %s",
   "activity-deleteComment": "commento eliminato %s",
-  "activity-receivedDate": "data della ricevuta modificata da %s di %s",
-  "activity-startDate": "modificata data di inizio a %s di %s",
-  "activity-dueDate": "modificata data di scadenza a %s di %s",
-  "activity-endDate": "modificata data di fine a %s di %s ",
+  "activity-receivedDate": "ha modificato la data di ricevuta a %s di %s",
+  "activity-startDate": "ha modificato la data di inizio a %s di %s",
+  "activity-dueDate": "ha modificato la data di scadenza a %s di %s",
+  "activity-endDate": "ha modificato la data di fine a %s di %s ",
   "add-attachment": "Aggiungi allegato",
   "add-board": "Aggiungi bacheca",
   "add-card": "Aggiungi scheda",
-  "add-swimlane": "Aggiungi Diagramma Swimlane",
+  "add-swimlane": "Aggiungi swimlane",
   "add-subtask": "Aggiungi sotto-compito",
   "add-checklist": "Aggiungi Checklist",
   "add-checklist-item": "Aggiungi un elemento alla checklist",
   "add-cover": "Aggiungi copertina",
   "add-label": "Aggiungi etichetta",
-  "add-list": "Aggiungi Lista",
+  "add-list": "Aggiungi lista",
   "add-members": "Aggiungi membri",
   "added": "Aggiunto/a",
   "addMemberPopup-title": "Membri",
@@ -102,14 +102,14 @@
   "and-n-other-card_plural": "E __count__ altre schede",
   "apply": "Applica",
   "app-is-offline": "Caricamento, attendere prego. Aggiornare la pagina porterà ad una perdita dei dati. Se il caricamento non dovesse funzionare, per favore controlla che il server non sia stato fermato.",
-  "archive": "Sposta nell'Archivio",
-  "archive-all": "Sposta tutto nell'Archivio",
+  "archive": "Sposta nell'archivio",
+  "archive-all": "Sposta tutto nell'archivio",
   "archive-board": "Sposta la bacheca nell'archivio",
-  "archive-card": "Sposta la scheda nell'Archivio",
-  "archive-list": "Sposta elenco nell'Archivio",
-  "archive-swimlane": "Sposta diagramma nell'Archivio",
+  "archive-card": "Sposta scheda nell'archivio",
+  "archive-list": "Sposta lista nell'archivio",
+  "archive-swimlane": "Sposta swimlane nell'archivio",
   "archive-selection": "Sposta elementi selezionati nell'archivio",
-  "archiveBoardPopup-title": "Spostare al bacheca nell'archivio?",
+  "archiveBoardPopup-title": "Spostare bacheca nell'archivio?",
   "archived-items": "Archivio",
   "archived-boards": "Bacheche nell'archivio",
   "restore-board": "Ripristina bacheca",
@@ -120,11 +120,11 @@
   "assign-member": "Assegna a un membro",
   "attached": "allegato",
   "attachment": "Allegato",
-  "attachment-delete-pop": "L'eliminazione di un allegato è permanente. Non è possibile annullare.",
+  "attachment-delete-pop": "L'eliminazione di un allegato è permanente. Non è possibile tornare indietro.",
   "attachmentDeletePopup-title": "Eliminare l'allegato?",
   "attachments": "Allegati",
   "auto-watch": "Segui automaticamente le bacheche quando vengono create.",
-  "avatar-too-big": "L'avatar è troppo grande (520KB max)",
+  "avatar-too-big": "L'avatar è troppo grande (520 KB massimo)",
   "back": "Indietro",
   "board-change-color": "Cambia colore",
   "board-nb-stars": "%s stelle",
@@ -138,20 +138,20 @@
   "boardMenuPopup-title": "Impostazioni bacheca",
   "boardChangeViewPopup-title": "Vista bacheca",
   "boards": "Bacheche",
-  "board-view": "Visualizza bacheca",
+  "board-view": "Vista bacheca",
   "board-view-cal": "Calendario",
-  "board-view-swimlanes": "Diagramma Swimlane",
+  "board-view-swimlanes": "Swimlane",
   "board-view-collapse": "Comprimi",
   "board-view-gantt": "Gantt",
   "board-view-lists": "Liste",
-  "bucket-example": "Per esempio come \"una lista di cose da fare\"",
+  "bucket-example": "Come \"una lista di cose da fare\" per esempio",
   "cancel": "Cancella",
   "card-archived": "Questa scheda è stata spostata nell'archivio",
   "board-archived": "Questa bacheca è stata spostata nell'archivio",
   "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": "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 spostare una scheda nell'archivio per rimuoverla dalla bacheca e mantenere la sua attività",
+  "card-delete-suggest-archive": "Puoi spostare una scheda nell'archivio per rimuoverla dalla bacheca e mantenere la sua attività.",
   "card-due": "Scadenza",
   "card-due-on": "Scade il",
   "card-spent": "Tempo trascorso",
@@ -204,14 +204,14 @@
   "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",
+  "clipboard": "Appunti o trascinamento",
   "close": "Chiudi",
   "close-board": "Chiudi bacheca",
   "close-board-pop": "Potrai ripristinare la bacheca cliccando sul tasto \"Archivio\"  presente nell'intestazione della home.",
   "color-black": "nero",
   "color-blue": "blu",
   "color-crimson": "Rosso cremisi",
-  "color-darkgreen": "Verde scuro",
+  "color-darkgreen": "verde scuro",
   "color-gold": "oro",
   "color-gray": "grigio",
   "color-green": "verde",
@@ -234,8 +234,8 @@
   "color-white": "bianco",
   "color-yellow": "giallo",
   "unset-color": "Non impostato",
-  "comment": "Commento",
-  "comment-placeholder": "Scrivi Commento",
+  "comment": "Commenta",
+  "comment-placeholder": "Scrivi un commento...",
   "comment-only": "Solo commenti",
   "comment-only-desc": "Puoi commentare solo le schede.",
   "no-comments": "Non ci sono commenti.",
@@ -245,10 +245,10 @@
   "computer": "Computer",
   "confirm-subtask-delete-dialog": "Sei sicuro di voler eliminare il sotto-compito?",
   "confirm-checklist-delete-dialog": "Sei sicuro di voler eliminare la checklist?",
-  "copy-card-link-to-clipboard": "Copia link della scheda sulla clipboard",
+  "copy-card-link-to-clipboard": "Copia link della scheda negli appunti",
   "linkCardPopup-title": "Collega scheda",
   "searchElementPopup-title": "Cerca",
-  "copyCardPopup-title": "Copia Scheda",
+  "copyCardPopup-title": "Copia scheda",
   "copyChecklistToManyCardsPopup-title": "Copia template checklist su più schede",
   "copyChecklistToManyCardsPopup-instructions": "Titolo e la descrizione della scheda di destinazione in questo formato JSON",
   "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Titolo prima scheda\", \"description\":\"Descrizione prima scheda\"}, {\"title\":\"Titolo seconda scheda\",\"description\":\"Descrizione seconda scheda\"},{\"title\":\"Titolo ultima scheda\",\"description\":\"Descrizione ultima scheda\"} ]",
@@ -298,19 +298,19 @@
   "editProfilePopup-title": "Modifica profilo",
   "email": "Email",
   "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-enrollAccount-text": "Ciao __user__,\n\nPer iniziare ad utilizzare il servizio, clicca sul link seguente:\n\n__url__\n\nGrazie.",
   "email-fail": "Invio email fallito",
   "email-fail-text": "Errore nel tentativo di invio email",
   "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-invite-text": "Caro __user__,\n\n__inviter__ ti ha invitato ad unirti alla bacheca \"__board__\" per collaborare.\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 __siteName__",
   "email-verifyEmail-text": "Ciao __user__,\n\nPer verificare il tuo account email, clicca sul link seguente:\n\n__url__\n\nGrazie.",
-  "enable-wip-limit": "Abilita limite di  work in progress",
+  "enable-wip-limit": "Abilita limite Work In Progress",
   "error-board-doesNotExist": "Questa bacheca non esiste",
   "error-board-notAdmin": "Devi essere admin di questa bacheca per poterlo fare",
   "error-board-notAMember": "Devi essere un membro di questa bacheca per poterlo fare",
@@ -335,7 +335,7 @@
   "exportBoardPopup-title": "Esporta bacheca",
   "sort": "Ordina",
   "sort-desc": "Clicca per ordinare la lista",
-  "list-sort-by": "Ordina la lista per:",
+  "list-sort-by": "Ordina lista per:",
   "list-label-modifiedAt": "Orario ultimo accesso",
   "list-label-title": "Nome della lista",
   "list-label-sort": "Il tuo ordine manuale",
@@ -354,7 +354,7 @@
   "filter-no-assignee": "Nessun assegnatario",
   "filter-custom-fields-label": "Filtra secondo campi personalizzati",
   "filter-no-custom-fields": "Nessun campo personalizzato",
-  "filter-show-archive": "Mostra le liste archiviate",
+  "filter-show-archive": "Mostra liste archiviate",
   "filter-hide-empty": "Nascondi liste vuote",
   "filter-on": "Il filtro è attivo",
   "filter-on-desc": "Stai filtrando le schede su questa bacheca. Clicca qui per modificare il filtro,",
@@ -408,15 +408,15 @@
   "leave-board-pop": "Sei sicuro di voler abbandonare __boardTitle__? Sarai rimosso da tutte le schede in questa bacheca.",
   "leaveBoardPopup-title": "Abbandonare la bacheca?",
   "link-card": "Link a questa scheda",
-  "list-archive-cards": "Sposta tutte le schede in questo elenco nell'Archivio",
+  "list-archive-cards": "Sposta tutte le schede in questa lista nell'archivio",
   "list-archive-cards-pop": "Questo rimuoverà tutte le schede nell'elenco dalla bacheca. Per vedere le schede nell'archivio e portarle dov'erano  nella bacheca, clicca su \"Menu\"  > \"Archivio\".",
   "list-move-cards": "Sposta tutte le schede in questa lista",
-  "list-select-cards": "Selezione tutte le schede in questa lista",
-  "set-color-list": "Imposta il colore",
-  "listActionPopup-title": "Azioni disponibili",
+  "list-select-cards": "Seleziona tutte le schede in questa lista",
+  "set-color-list": "Imposta colore",
+  "listActionPopup-title": "Azioni lista",
   "settingsUserPopup-title": "Impostazioni utente",
-  "swimlaneActionPopup-title": "Azioni diagramma Swimlane",
-  "swimlaneAddPopup-title": "Aggiungi un diagramma Swimlane di seguito",
+  "swimlaneActionPopup-title": "Azioni swimlane",
+  "swimlaneAddPopup-title": "Aggiungi un swimlane sotto",
   "listImportCardPopup-title": "Importa una scheda di Trello",
   "listImportCardsTsvPopup-title": "Importa CSV/TSV di Excel",
   "listMorePopup-title": "Altro",
@@ -424,7 +424,7 @@
   "list-delete-pop": "Tutte le azioni saranno rimosse dal flusso attività e non sarai in grado di recuperare la lista. Non potrai tornare indietro.",
   "list-delete-suggest-archive": "Puoi spostare un elenco nell'archivio per rimuoverlo dalla bacheca e mantentere la sua attività.",
   "lists": "Liste",
-  "swimlanes": "Diagramma Swimlane",
+  "swimlanes": "Swimlane",
   "log-out": "Esci",
   "log-in": "Accedi",
   "loginPopup-title": "Accedi",
@@ -445,8 +445,8 @@
   "my-boards": "Le mie bacheche",
   "name": "Nome",
   "no-archived-cards": "Non ci sono schede nell'archivio.",
-  "no-archived-lists": "Non ci sono elenchi nell'archivio.",
-  "no-archived-swimlanes": "Non ci sono diagrammi Swimlane nell'archivio.",
+  "no-archived-lists": "Non ci sono liste nell'archivio.",
+  "no-archived-swimlanes": "Non ci sono swimlane nell'archivio.",
   "no-results": "Nessun risultato",
   "normal": "Normale",
   "normal-desc": "Può visionare e modificare le schede. Non può cambiare le impostazioni.",
@@ -454,7 +454,7 @@
   "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",
+  "or": "oppure",
   "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",
@@ -500,8 +500,8 @@
   "shortcut-toggle-searchbar": "Apri/chiudi la barra laterale di ricerca",
   "shortcut-toggle-sidebar": "Apri/chiudi la barra laterale della bacheca",
   "show-cards-minimum-count": "Mostra il contatore delle schede se la lista ne contiene più di",
-  "sidebar-open": "Apri Sidebar",
-  "sidebar-close": "Chiudi Sidebar",
+  "sidebar-open": "Apri sidebar",
+  "sidebar-close": "Chiudi sidebar",
   "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",
@@ -532,10 +532,11 @@
   "custom-login-logo-image-url": "URL dell'immagine del logo personalizzato per il login",
   "custom-login-logo-link-url": "Link dell'immagine del logo personalizzato per il login",
   "text-below-custom-login-logo": "Testo sotto il logo personalizzato per il login",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Importa Username",
   "view-it": "Vedi",
-  "warn-list-archived": "Attenzione:questa scheda si trova in un elenco dell'archivio",
+  "warn-list-archived": "attenzione: questa scheda si trova in una lista nell'archivio",
   "watch": "Segui",
   "watching": "Stai seguendo",
   "watching-info": "Sarai notificato per tutte le modifiche in questa bacheca",
@@ -580,8 +581,8 @@
   "webhook-token": "Token (facoltativo per l'autenticazione)",
   "outgoing-webhooks": "Webhook in uscita",
   "bidirectional-webhooks": "Webhook a due vie",
-  "outgoingWebhooksPopup-title": "Server esterni",
-  "boardCardTitlePopup-title": "Filtro per Titolo Scheda",
+  "outgoingWebhooksPopup-title": "Webhook in uscita",
+  "boardCardTitlePopup-title": "Filtro per titolo scheda",
   "disable-webhook": "Disattiva questo webhook",
   "global-webhook": "Webhook globali",
   "new-outgoing-webhook": "Nuovo webhook in uscita",
@@ -592,14 +593,14 @@
   "MongoDB_storage_engine": "Storage engine di MongoDB",
   "MongoDB_Oplog_enabled": "MongoDB Oplog abilitato",
   "OS_Arch": "Architettura SO",
-  "OS_Cpus": "Conteggio della CPU del sistema operativo",
-  "OS_Freemem": "Memoria libera del sistema operativo",
-  "OS_Loadavg": "Carico medio del sistema operativo",
-  "OS_Platform": "Piattaforma del sistema operativo",
-  "OS_Release": "Versione di rilascio del sistema operativo",
-  "OS_Totalmem": "Memoria totale del sistema operativo",
-  "OS_Type": "Tipo di sistema operativo",
-  "OS_Uptime": "Tempo di attività del sistema operativo",
+  "OS_Cpus": "Numero CPU del SO",
+  "OS_Freemem": "Memoria libera del SO",
+  "OS_Loadavg": "Carico medio del SO",
+  "OS_Platform": "Piattaforma del SO",
+  "OS_Release": "Versione di rilascio del SO",
+  "OS_Totalmem": "Memoria totale del SO",
+  "OS_Type": "Tipo di SO",
+  "OS_Uptime": "Tempo di attività del SO",
   "days": "giorni",
   "hours": "ore",
   "minutes": "minuti",
@@ -651,8 +652,8 @@
   "parent-card": "Scheda genitore",
   "source-board": "Bacheca d'origine",
   "no-parent": "Non mostrare i genitori",
-  "activity-added-label": "L' etichetta  '%s' è stata aggiunta a %s",
-  "activity-removed-label": "L'etichetta '%s' è stata rimossa da %s",
+  "activity-added-label": "ha aggiunto l'etichetta  '%s' a %s",
+  "activity-removed-label": "ha rimosso l'etichetta '%s' da %s",
   "activity-delete-attach": "rimosso un allegato da %s",
   "activity-added-label-card": "aggiunta etichetta '%s'",
   "activity-removed-label-card": "L' etichetta '%s' è stata rimossa.",
@@ -686,7 +687,7 @@
   "r-a-card": "una scheda",
   "r-when-a-label-is": "Quando un'etichetta viene",
   "r-when-the-label": "Quando l'etichetta viene",
-  "r-list-name": "Nome dell'elenco",
+  "r-list-name": "nome lista",
   "r-when-a-member": "Quando un membro viene",
   "r-when-the-member": "Quando un membro viene",
   "r-name": "nome",
@@ -702,8 +703,8 @@
   "r-move-card-to": "Sposta scheda a",
   "r-top-of": "Al di sopra di",
   "r-bottom-of": "Al di sotto di",
-  "r-its-list": "il suo elenco",
-  "r-archive": "Sposta nell'Archivio",
+  "r-its-list": "la sua lista",
+  "r-archive": "Sposta nell'archivio",
   "r-unarchive": "Ripristina dall'archivio",
   "r-card": "scheda",
   "r-add": "Aggiungi",
@@ -711,7 +712,7 @@
   "r-label": "etichetta",
   "r-member": "membro",
   "r-remove-all": "Rimuovi tutti i membri dalla scheda",
-  "r-set-color": "Imposta il colore a",
+  "r-set-color": "Imposta il colore",
   "r-checklist": "checklist",
   "r-check-all": "Seleziona tutti",
   "r-uncheck-all": "Togli la spunta a tutti",
@@ -729,20 +730,20 @@
   "r-d-move-to-top-spec": "Sposta la scheda in cima alla lista",
   "r-d-move-to-bottom-gen": "Sposta la scheda in fondo alla sua lista",
   "r-d-move-to-bottom-spec": "Muovi la scheda in fondo alla lista",
-  "r-d-send-email": "Spedisci email",
+  "r-d-send-email": "Invia email",
   "r-d-send-email-to": "a",
   "r-d-send-email-subject": "oggetto",
   "r-d-send-email-message": "messaggio",
-  "r-d-archive": "Sposta la scheda nell'archivio",
+  "r-d-archive": "Sposta scheda nell'archivio",
   "r-d-unarchive": "Ripristina la scheda dall'archivio",
   "r-d-add-label": "Aggiungi etichetta",
   "r-d-remove-label": "Rimuovi etichetta",
   "r-create-card": "Crea una nuova scheda",
-  "r-in-list": "in elenco",
-  "r-in-swimlane": "nel diagramma swimlane",
+  "r-in-list": "in lista",
+  "r-in-swimlane": "nella swimlane",
   "r-d-add-member": "Aggiungi membro",
   "r-d-remove-member": "Rimuovi membro",
-  "r-d-remove-all-member": "Rimouvi tutti i membri",
+  "r-d-remove-all-member": "Rimuovi tutti i membri",
   "r-d-check-all": "Seleziona tutti gli item di una lista",
   "r-d-uncheck-all": "Deseleziona tutti gli items di una lista",
   "r-d-check-one": "Seleziona elemento",
@@ -754,11 +755,11 @@
   "r-add-checklist": "Aggiungi checklist",
   "r-with-items": "con elementi",
   "r-items-list": "elemento1,elemento2,elemento3",
-  "r-add-swimlane": "Aggiungi un diagramma swimlane",
-  "r-swimlane-name": "Nome diagramma swimlane",
+  "r-add-swimlane": "Aggiungi swimlane",
+  "r-swimlane-name": "nome swimlane",
   "r-board-note": "Nota: Lascia un campo vuoto per abbinare ogni possibile valore",
   "r-checklist-note": "Nota: Gli elementi della checklist devono essere scritti come valori separati dalla virgola",
-  "r-when-a-card-is-moved": "Quando una scheda viene spostata su un'altra lista",
+  "r-when-a-card-is-moved": "Quando una scheda viene spostata in un'altra lista",
   "r-set": "Imposta",
   "r-update": "Aggiorna",
   "r-datefield": "campo data",
@@ -772,7 +773,7 @@
   "oauth2": "OAuth2",
   "cas": "CAS",
   "authentication-method": "Metodo di Autenticazione",
-  "authentication-type": "Tipo Autenticazione",
+  "authentication-type": "Tipo di autenticazione",
   "custom-product-name": "Nome prodotto personalizzato",
   "layout": "Layout",
   "hide-logo": "Nascondi il logo",
@@ -786,7 +787,7 @@
   "org-number": "Il numero di organizzazioni è:",
   "team-number": "Il numero di teams è:",
   "people-number": "Il numero di persone è:",
-  "swimlaneDeletePopup-title": "Cancella diagramma swimlane ?",
+  "swimlaneDeletePopup-title": "Eliminare la swimlane?",
   "swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
   "restore-all": "Ripristina tutto",
   "delete-all": "Elimina tutto",
@@ -827,7 +828,7 @@
   "notifications": "Notifiche",
   "view-all": "Mostra tutte",
   "filter-by-unread": "Filtra per non letto",
-  "mark-all-as-read": "Segna come letto",
+  "mark-all-as-read": "Segna tutto come letto",
   "remove-all-read": "Rimuovi tutti i già letti",
   "allow-rename": "Consenti Rinomina",
   "allowRenamePopup-title": "Consenti Rinomina",
@@ -855,7 +856,7 @@
   "organizations": "Organizzazioni",
   "teams": "Teams",
   "displayName": "Nome da visualizzare",
-  "shortName": "Nome Corto",
+  "shortName": "Nome corto",
   "website": "Sito Web",
   "person": "Persona",
   "my-cards": "Le mie schede",
@@ -872,7 +873,7 @@
   "dueCardsViewChange-choice-me": "Me",
   "dueCardsViewChange-choice-all": "Tutti gli utenti",
   "dueCardsViewChange-choice-all-description": "Visualizza tutte le schede non completate con una data di *scadenza* dalle bacheche in cui l'utente ha il permesso.",
-  "broken-cards": "Schede rotte",
+  "broken-cards": "Schede danneggiate",
   "board-title-not-found": "Bacheca '%s' non trovata.",
   "swimlane-title-not-found": "Swimlane '%s' non trovata.",
   "list-title-not-found": "Lista '%s' non trovata.",
@@ -909,7 +910,7 @@
   "operator-limit": "limite",
   "predicate-archived": "archiviato",
   "predicate-open": "aperto/a",
-  "predicate-ended": "finito/a",
+  "predicate-ended": "finito",
   "predicate-all": "tutto",
   "predicate-overdue": "in ritardo",
   "predicate-week": "settimana",
@@ -930,7 +931,7 @@
   "predicate-private": "privato",
   "operator-unknown-error": "%s non è un operatore",
   "operator-number-expected": "l'operatore __operator__ prevede un numero, invece è stato fornito '__value__'",
-  "operator-sort-invalid": "sort of '%s' is invalid",
+  "operator-sort-invalid": "L'ordinamento di '%s' non è valido",
   "operator-status-invalid": "'%s' non è uno stato valido",
   "operator-has-invalid": "%s non è un controllo di esistenza valido",
   "operator-limit-invalid": "%s non è un limite valido.  Il limite dovrebbe essere un numero intero positivo.",
@@ -938,13 +939,13 @@
   "previous-page": "Pagina precedente",
   "heading-notes": "Note",
   "globalSearch-instructions-heading": "Istruzioni ricerca",
-  "globalSearch-instructions-description": "Searches can include operators to refine the search.  Operators are specified by writing the operator name and value separated by a colon.  For example, an operator specification of `list:Blocked` would limit the search to cards that are contained in a list named *Blocked*.  If the value contains spaces or special characters it must be enclosed in quotation marks (e.g. `__operator_list__:\"To Review\"`).",
+  "globalSearch-instructions-description": "Per affinare le ricerche si possono includere degli operatori. Questi vanno specificati indicandone il nome ed il valore separati dai due punti. Ad esempio, specificare `list:Blocked` limita la ricerca alle schede contenute nella lista denominata *Blocked*. Se il valore del criterio contiene spazi o caratteri speciali, va racchiuso tra virgolette (es.: `__operator_list__:\"Da Controllare\"`)",
   "globalSearch-instructions-operators": "Operatori disponibili:",
   "globalSearch-instructions-operator-board": "`__operator_board__:<title>` - schede nelle bacheche corrispondenti a *<title>*",
   "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - schede nelle liste corrispondenti a *<title>*",
-  "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - cards in swimlanes matching the specified *<title>*",
+  "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - schede in swimlane corrispondenti a *<title>*",
   "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - schede con commenti contenenti *<text>*.",
-  "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - schede aventi un'etichetta corrispondete a *<color>* oppure *<name>",
+  "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - schede aventi un'etichetta corrispondente a *<color>* oppure *<name>*",
   "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - abbreviazione per `__operator_label__:<color>` oppure `__operator_label__:<name>`",
   "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - schede dove *<username>* è un *membro* oppure *assegnatario*",
   "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - abbreviazione per `user:<username>`",
@@ -953,25 +954,25 @@
   "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cards which are due up to *<n>* days from now.  `__operator_due__:__predicate_overdue__ lists all cards past their due date.",
   "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - schede create *<n>* giorni fa o prima",
   "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - schede modificate *<n>* giorni fa o prima",
-  "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - dove *<status>* è una delle seguenti:",
+  "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - dove *<status>* è uno dei seguenti:",
   "globalSearch-instructions-status-archived": "`__predicate_archived__` - schede archiviate",
   "globalSearch-instructions-status-all": "`__predicate_all__` - tutte le schede archiviate e non archiviate",
-  "globalSearch-instructions-status-ended": "`__predicate_ended__` - schede con una data di fine",
+  "globalSearch-instructions-status-ended": "`__predicate_ended__` - schede aventi una data di fine",
   "globalSearch-instructions-status-public": "`__predicate_public__` - schede soltanto in bacheche pubbliche",
   "globalSearch-instructions-status-private": "`__predicate_private__` - schede soltanto in bacheche private",
-  "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - where *<field>* is one of `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` or `__predicate_member__`.  Placing a `-` in front of *<field>* searches for the absence of a value in that field (e.g. `has:-due` searches for cards without a due date).",
+  "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - dove *<field>* è uno di `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` oppure `__predicate_member__`.  Inserendo `-` davanti a *<field>* cerca per l'assenza di un valore nel campo (per esempio `has:-due` cerca per schede senza una data di scadenza).",
   "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - dove *<sort-name>* è uno dei `__predicate_due__`, `__predicate_created__` oppure `__predicate_modified__`.  Per un ordine discendente, aggiungi un `-` davanti al nome.",
   "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - dove *<n>* è un numero intero positivo che esprime il numero delle schede da visualizzare per pagina.",
   "globalSearch-instructions-notes-1": "È possibile specificare più operatori.",
-  "globalSearch-instructions-notes-2": "Similar operators are *OR*ed together.  Cards that match any of the conditions will be returned.\n`__operator_list__:Available __operator_list__:Blocked` would return cards contained in any list named *Blocked* or *Available*.",
-  "globalSearch-instructions-notes-3": "Differing operators are *AND*ed together.  Only cards that match all of the differing operators are returned.  `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.",
+  "globalSearch-instructions-notes-2": "Valori diversi dello stesso criterio di ricerca vengono combinati tramite *OR*. Vengono quindi selezionate tutte le schede che soddisfano almeno uno dei criteri. `__operator_list__:Available __operator_list__:Blocked` selezionerà le schede contenute in qualsiasi lista chiamata *Blocked* o *Available*.",
+  "globalSearch-instructions-notes-3": "Più criteri di ricerca sono combinati con l'operatore *AND*. Vengono selezionate solo le schede che soddisfano tutti gli operatori. `__operator_list__:Available __operator_label__:red` seleziona solo le schede nella lista *Available* che hanno una etichetta *red*.",
   "globalSearch-instructions-notes-3-2": "I giorni possono essere specificati come numeri interi positivi/negativi oppure utilizzando `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` oppure `__predicate_year__` per il periodo corrente.",
-  "globalSearch-instructions-notes-4": "Le ricerche di testo non effettuano distinzione tra maiuscole e minuscole.",
+  "globalSearch-instructions-notes-4": "La distinzione tra maiuscole e minuscole non viene effettuata nelle ricerche di testo.",
   "globalSearch-instructions-notes-5": "Per impostazione predefinita le schede archiviate non sono incluse nella ricerca.",
-  "link-to-search": "Collegamento a questa ricerca",
+  "link-to-search": "Link a questa ricerca",
   "excel-font": "Arial",
   "number": "Numero",
-  "label-colors": "Colori etichetta",
+  "label-colors": "Colori etichette",
   "label-names": "Nomi etichette",
   "archived-at": "archiviata il",
   "sort-cards": "Ordina schede",
@@ -979,5 +980,8 @@
   "due-date": "Data di scadenza",
   "title-alphabetically": "Titolo (ordine alfabetico)",
   "created-at-newest-first": "Data di creazione (dalla più nuova)",
-  "created-at-oldest-first": "Data di creazione (dalla più vecchia)"
+  "created-at-oldest-first": "Data di creazione (dalla più vecchia)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 13 - 9
i18n/ja.i18n.json

@@ -322,8 +322,8 @@
   "error-user-notAllowSelf": "自分を招待することはできません。",
   "error-user-notCreated": "ユーザーが作成されていません",
   "error-username-taken": "このユーザ名は既に使用されています",
-  "error-orgname-taken": "This organization name is already taken",
-  "error-teamname-taken": "This team name is already taken",
+  "error-orgname-taken": "この組織名はすでに使われています",
+  "error-teamname-taken": "このチーム名はすでに使われています",
   "error-email-taken": "メールは既に受け取られています",
   "export-board": "ボードのエクスポート",
   "export-board-json": "ボードをJSONにエクスポート",
@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "カスタムのログインロゴイメージのURL",
   "custom-login-logo-link-url": "カスタムのログインロゴイメージのリンクURL",
   "text-below-custom-login-logo": "カスタムログインロゴイメージの下のテキスト",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "ユーザー名",
   "import-usernames": "インポートするユーザー名",
   "view-it": "見る",
@@ -930,7 +931,7 @@
   "predicate-private": "非公開",
   "operator-unknown-error": "%sは演算子ではありません",
   "operator-number-expected": "演算子 __operator__ には数値の指定が必要ですが、「__value__」が入力されました",
-  "operator-sort-invalid": "sort of '%s' is invalid",
+  "operator-sort-invalid": "ソート「%s」は無効です",
   "operator-status-invalid": "「%s」は無効なステータスです",
   "operator-has-invalid": "%s is not a valid existence check",
   "operator-limit-invalid": "%s is not a valid limit.  Limit should be a positive integer.",
@@ -974,10 +975,13 @@
   "label-colors": "ラベル色",
   "label-names": "ラベル名",
   "archived-at": "archived at",
-  "sort-cards": "Sort Cards",
-  "cardsSortPopup-title": "Sort Cards",
-  "due-date": "Due Date",
-  "title-alphabetically": "Title (Alphabetically)",
-  "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "sort-cards": "カードの並び替え",
+  "cardsSortPopup-title": "カードの並び替え",
+  "due-date": "期限日",
+  "title-alphabetically": "タイトル(アルファベット順)",
+  "created-at-newest-first": "作成日(新しいものから)",
+  "created-at-oldest-first": "作成日(古いものから)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/ka.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "მომხმარებლის სახელი",
   "import-usernames": "Import Usernames",
   "view-it": "ნახვა",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/km.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/ko.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "아이디",
   "import-usernames": "Import Usernames",
   "view-it": "보기",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/lt.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/lv.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Logo pierakstīšanās ekrānā - URL",
   "custom-login-logo-link-url": "Logo saite pierakstīšanās ekrānā - URL",
   "text-below-custom-login-logo": "Teksts zem logo pierakstīšanās lapā",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Lietotājvārds",
   "import-usernames": "Import Usernames",
   "view-it": "Skatīt",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/mk.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Потребителско име",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/mn.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/nl.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "URL Voor Maatwerk Login Logo Afbeelding",
   "custom-login-logo-link-url": "URL Voor Maatwerk Login Logo Link",
   "text-below-custom-login-logo": "Tekst onder Maatwerk Login Logo",
+  "automatic-linked-url-schemes": "Maatwerk URL-schema's die automatisch klikbaar zouden moeten zijn. Een URL per regel.",
   "username": "Gebruikersnaam",
   "import-usernames": "Importeer Gebruikersnamen",
   "view-it": "Bekijk het",
@@ -979,5 +980,8 @@
   "due-date": "vervaldatum",
   "title-alphabetically": "Titel (Alfabetisch)",
   "created-at-newest-first": "Aangemaakt op (Nieuwste Eerst)",
-  "created-at-oldest-first": "Aangemaakt op (Oudste Eerst)"
+  "created-at-oldest-first": "Aangemaakt op (Oudste Eerst)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Verberg systeemberichten voor alle gebruikers",
+  "now-system-messages-of-all-users-are-hidden": "Systeemberichten zijn nu verborgen voor alle gebruikers"
 }

+ 5 - 1
i18n/oc.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Nom d’utilizaire",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/pa.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/pl.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "URL obrazu logo ekranu logowania",
   "custom-login-logo-link-url": "URL linku logo ekranu logowania",
   "text-below-custom-login-logo": "Tekst pod logo na ekranie logowania",
+  "automatic-linked-url-schemes": "Schematy adresów URL, które powinny być automatycznie przekształcane w aktywne. Wpisz jeden schemat URL w każdej linii",
   "username": "Nazwa użytkownika",
   "import-usernames": "Importuj użytkowników",
   "view-it": "Zobacz",
@@ -979,5 +980,8 @@
   "due-date": "terminu wykonania",
   "title-alphabetically": "nazwy (alfabetycznie)",
   "created-at-newest-first": "daty utworzenia (najpierw najnowsze)",
-  "created-at-oldest-first": "daty utworzenia (najpierw najstarsze)"
+  "created-at-oldest-first": "daty utworzenia (najpierw najstarsze)",
+  "links-heading": "Linki",
+  "hide-system-messages-of-all-users": "Ukryj powiadomienia systemowe wszystkich użytkowników",
+  "now-system-messages-of-all-users-are-hidden": "Odtąd powiadomienia systemowe wszystkich użytkowników będą ukryte"
 }

+ 5 - 1
i18n/pt-BR.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "URL da Imagem do logo customizado de login",
   "custom-login-logo-link-url": "URL do link do logo customizado de login",
   "text-below-custom-login-logo": "Texto abaixo do logo customizado de login",
+  "automatic-linked-url-schemes": "Esquemas de URL personalizados que devem ser clicáveis automaticamente. Um esquema de URL por linha",
   "username": "Nome de usuário",
   "import-usernames": "Importar nome de usuários",
   "view-it": "Visualizar",
@@ -979,5 +980,8 @@
   "due-date": "Prazo Final",
   "title-alphabetically": "Título (alfabeticamente) ",
   "created-at-newest-first": "Criado em (o mais recente primeiro) ",
-  "created-at-oldest-first": "Criado em (o mais antigo primeiro) "
+  "created-at-oldest-first": "Criado em (o mais antigo primeiro) ",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/pt.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Nome de utilizador",
   "import-usernames": "Import Usernames",
   "view-it": "Visualizá-lo",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/ro.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 34 - 30
i18n/ru.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "URL пользовательского изображения при входе",
   "custom-login-logo-link-url": "URL ссылки с пользовательского изображения при входе",
   "text-below-custom-login-logo": "Текст под пользовательским изображением при входе",
+  "automatic-linked-url-schemes": "Пользовательская URL схема, которая должна быть кликабельной. Одна схема в каждой строке.",
   "username": "Имя пользователя",
   "import-usernames": "Импорт имен пользователей",
   "view-it": "Просмотреть",
@@ -905,10 +906,10 @@
   "operator-modified": "изменено",
   "operator-sort": "сортировка",
   "operator-comment": "комментарий",
-  "operator-has": "has",
-  "operator-limit": "limit",
+  "operator-has": "имеет",
+  "operator-limit": "лимит",
   "predicate-archived": "архивировано",
-  "predicate-open": "open",
+  "predicate-open": "открыт",
   "predicate-ended": "завершено",
   "predicate-all": "все",
   "predicate-overdue": "просрочено",
@@ -930,42 +931,42 @@
   "predicate-private": "приватно",
   "operator-unknown-error": "%1 не оператор",
   "operator-number-expected": "оператор __operator__ используется с числом, задано '__value__'",
-  "operator-sort-invalid": "sort of '%s' is invalid",
+  "operator-sort-invalid": "сортировка '%s' неверна",
   "operator-status-invalid": "'%s' не допустимый статус",
-  "operator-has-invalid": "%s is not a valid existence check",
-  "operator-limit-invalid": "%s is not a valid limit.  Limit should be a positive integer.",
+  "operator-has-invalid": "%s неверная проверка присутствия",
+  "operator-limit-invalid": "%s неверное ограничение. Ограничение должно быть положительным целым.",
   "next-page": "Следующая страница",
   "previous-page": "Предыдущая страница",
   "heading-notes": "Заметки",
   "globalSearch-instructions-heading": "Инструкция по поиску",
   "globalSearch-instructions-description": "Поисковая строка может содержать операторы для уточнения запроса. Оператор задается именем оператора и значением разделенными двоеточием. Например, оператор 'list:Blocked' ограничит результат запроса карточками состоящими в списке 'Blocked'. Если значение содержит пробелы или специальные символы, то оно должно быть заключено в кавычки(__operator_list__:\"To Review\").",
   "globalSearch-instructions-operators": "Доступные операторы:",
-  "globalSearch-instructions-operator-board": "`__operator_board__:<title>` - cards in boards matching the specified *<title>*",
-  "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - cards in lists matching the specified *<title>*",
-  "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - cards in swimlanes matching the specified *<title>*",
-  "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - cards with a comment containing *<text>*.",
-  "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - cards that have a label matching *<color>* or *<name>",
-  "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - shorthand for `__operator_label__:<color>` or `__operator_label__:<name>`",
-  "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - cards where *<username>* is a *member* or *assignee*",
-  "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:<username>`",
-  "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - cards where *<username>* is a *member*",
-  "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - cards where *<username>* is an *assignee*",
-  "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cards which are due up to *<n>* days from now.  `__operator_due__:__predicate_overdue__ lists all cards past their due date.",
-  "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cards which were created *<n>* days ago or less",
-  "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cards which were modified *<n>* days ago or less",
-  "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - where *<status>* is one of the following:",
-  "globalSearch-instructions-status-archived": "`__predicate_archived__` - archived cards",
-  "globalSearch-instructions-status-all": "`__predicate_all__` - all archived and unarchived cards",
-  "globalSearch-instructions-status-ended": "`__predicate_ended__` - cards with an end date",
-  "globalSearch-instructions-status-public": "`__predicate_public__` - cards only in public boards",
-  "globalSearch-instructions-status-private": "`__predicate_private__` - cards only in private boards",
-  "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - where *<field>* is one of `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` or `__predicate_member__`.  Placing a `-` in front of *<field>* searches for the absence of a value in that field (e.g. `has:-due` searches for cards without a due date).",
-  "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - where *<sort-name>* is one of `__predicate_due__`, `__predicate_created__` or `__predicate_modified__`.  For a descending sort, place a `-` in front of the sort name.",
-  "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - where *<n>* is a positive integer expressing the number of cards to be displayed per page.",
+  "globalSearch-instructions-operator-board": "`__operator_board__:<title>` - карточки соответствуют: *<title>*",
+  "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - карточки в списке соответствуют: *<title>*",
+  "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - карточки на дорожках, соответствующих *<title>*",
+  "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - карточки с комментарием содержащим *<text>*.",
+  "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - карточки, которые имеют метку соответствующую *<color>* or *<name>",
+  "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - сокращение для `__operator_label__:<color>` или `__operator_label__:<name>`",
+  "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - карточки в которых *<username>* *участник* или *исполнитель*",
+  "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - сокращение для `пользователь:<username>`",
+  "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - карточки, в которых *<username>* *участник*",
+  "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - карточки, в которых *<username>* *исполнитель*",
+  "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - карточки с датой завершения до *<n>* дней от текущей даты.  `__operator_due__:__predicate_overdue__ список всех просроченных карточек.",
+  "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - карточки, которые были созданы до *<n>* дней назад",
+  "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - карточки, который изменены до *<n>* дней назад",
+  "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - где *<status>* что-то из следующего:",
+  "globalSearch-instructions-status-archived": "`__predicate_archived__` - архивированные карточки",
+  "globalSearch-instructions-status-all": "`__predicate_all__` - все архивированные и не архивированные карточки",
+  "globalSearch-instructions-status-ended": "`__predicate_ended__` - карточки с датой завершения",
+  "globalSearch-instructions-status-public": "`__predicate_public__` - карточки только на публичных досках",
+  "globalSearch-instructions-status-private": "`__predicate_private__` - карточки только на личных досках",
+  "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - где *<field>* что-либо из `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` или `__predicate_member__`.  Указание `-` перед *<field>* производит поиск по отсутствию значения в указанном поле. (напр. `has:-due` поиск карточек без даты завершения).",
+  "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - где*<sort-name>* что-либо из `__predicate_due__`, `__predicate_created__` или `__predicate_modified__`.  Для сортировки по убыванию, укажите `-` перед названием сортировки.",
+  "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - где *<n>* положительное целое определяющее количество карточек на одной странице.",
   "globalSearch-instructions-notes-1": "Может быть задано несколько операторов.",
   "globalSearch-instructions-notes-2": "Одинаковые операторы объединяются логическим \"ИЛИ\", например:\n`__operator_list__:Available __operator_list__:Blocked` вернет карточки, которые содержатся в списке *Blocked* или *Available*.",
   "globalSearch-instructions-notes-3": "Разные операторы объединяются логическим \"И\". Возвращаются только объекты удовлетворяющие всем заданным условиям.`__operator_list__:Available __operator_label__:red` вернет карточки, которые содержатся в списке *Available* и имеют метку *red*.",
-  "globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.",
+  "globalSearch-instructions-notes-3-2": "Количество дней может быть задано положительным или отрицательным целым или используя `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` или `__predicate_year__` для текущего периода.",
   "globalSearch-instructions-notes-4": "Текстовый поиск нечувствителен к регистру символов.",
   "globalSearch-instructions-notes-5": "По умолчанию, поиск в архивированных карточках не производится.",
   "link-to-search": "Ссылка на этот поиск",
@@ -979,5 +980,8 @@
   "due-date": "Назначенная дата",
   "title-alphabetically": "Название (по алфавиту)",
   "created-at-newest-first": "Дата создания (сначала новые)",
-  "created-at-oldest-first": "Дата создания (сначала старые)"
+  "created-at-oldest-first": "Дата создания (сначала старые)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/sk.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/sl.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Up. ime",
   "import-usernames": "Import Usernames",
   "view-it": "Poglej",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/sr.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Korisničko ime",
   "import-usernames": "Import Usernames",
   "view-it": "Pregledaj je",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 116 - 112
i18n/sv.i18n.json

@@ -322,8 +322,8 @@
   "error-user-notAllowSelf": "Du kan inte bjuda in dig själv",
   "error-user-notCreated": "Den här användaren har inte skapats",
   "error-username-taken": "Detta användarnamn är redan taget",
-  "error-orgname-taken": "This organization name is already taken",
-  "error-teamname-taken": "This team name is already taken",
+  "error-orgname-taken": "Organisations namnet är upptaget.",
+  "error-teamname-taken": "Detta team namn är redan taget.",
   "error-email-taken": "E-post har redan tagits",
   "export-board": "Exportera tavla",
   "export-board-json": "Exportera tavla till JSON",
@@ -386,7 +386,7 @@
   "import-csv-placeholder": "Klistra in CSV/TSV data här",
   "import-map-members": "Kartlägg medlemmar",
   "import-members-map": "Din importerade tavla har några medlemmar. Vänligen matcha medlemmarna du vill importera mot dina användare",
-  "import-members-map-note": "Note: Unmapped members will be assigned to the current user.",
+  "import-members-map-note": "Notera: Ommappade medlemmar kommer tilldelas den nuvarande användaren. ",
   "import-show-user-mapping": "Granska medlemskartläggning",
   "import-user-select": "Välj din befintliga användare du vill använda som den här medlemmen",
   "importMapMembersAddPopup-title": "Välj medlem",
@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Länk till bild för anpassad logotyp på inloggningssidan",
   "custom-login-logo-link-url": "Länk för anpassad logotyp på inloggningssidan",
   "text-below-custom-login-logo": "Text under anpassad logga för inloggning",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Änvandarnamn",
   "import-usernames": "Importera användarnamn",
   "view-it": "Visa det",
@@ -818,10 +819,10 @@
   "addmore-detail": "Lägg till detaljerad beskrivning",
   "show-on-card": "Visa på kort",
   "new": "Ny",
-  "editOrgPopup-title": "Edit Organization",
-  "newOrgPopup-title": "New Organization",
-  "editTeamPopup-title": "Edit Team",
-  "newTeamPopup-title": "New Team",
+  "editOrgPopup-title": "Editera Oraganisation.",
+  "newOrgPopup-title": "Ny Organisation.",
+  "editTeamPopup-title": "Redigera Grupp",
+  "newTeamPopup-title": "Ny Grupp",
   "editUserPopup-title": "Redigera användare",
   "newUserPopup-title": "Ny användare",
   "notifications": "Notiser",
@@ -852,132 +853,135 @@
   "task": "Uppgift",
   "create-task": "Skapa uppgift",
   "ok": "OK",
-  "organizations": "Organizations",
-  "teams": "Teams",
-  "displayName": "Display Name",
-  "shortName": "Short Name",
-  "website": "Website",
+  "organizations": "Organisationer",
+  "teams": "Grupper",
+  "displayName": "Visningsnamn",
+  "shortName": "kort namn",
+  "website": "Webbsida",
   "person": "Person",
-  "my-cards": "My Cards",
+  "my-cards": "Mina Kort",
   "card": "Kort",
-  "board": "Board",
+  "board": "Tavla",
   "context-separator": "/",
-  "myCardsSortChange-title": "My Cards Sort",
-  "myCardsSortChangePopup-title": "My Cards Sort",
-  "myCardsSortChange-choice-board": "By Board",
-  "myCardsSortChange-choice-dueat": "By Due Date",
-  "dueCards-title": "Due Cards",
-  "dueCardsViewChange-title": "Due Cards View",
-  "dueCardsViewChangePopup-title": "Due Cards View",
-  "dueCardsViewChange-choice-me": "Me",
-  "dueCardsViewChange-choice-all": "All Users",
-  "dueCardsViewChange-choice-all-description": "Shows all incomplete cards with a *Due* date from boards for which the user has permission.",
-  "broken-cards": "Broken Cards",
-  "board-title-not-found": "Board '%s' not found.",
-  "swimlane-title-not-found": "Swimlane '%s' not found.",
-  "list-title-not-found": "List '%s' not found.",
-  "label-not-found": "Label '%s' not found.",
-  "label-color-not-found": "Label color %s not found.",
-  "user-username-not-found": "Username '%s' not found.",
-  "comment-not-found": "Card with comment containing text '%s' not found.",
-  "globalSearch-title": "Search All Boards",
-  "no-cards-found": "No Cards Found",
-  "one-card-found": "One Card Found",
-  "n-cards-found": "%s Cards Found",
-  "n-n-of-n-cards-found": "__start__-__end__ of __total__ Cards Found",
-  "operator-board": "board",
+  "myCardsSortChange-title": "Mina Tavlor sortering",
+  "myCardsSortChangePopup-title": "Mina Tavlor sortering",
+  "myCardsSortChange-choice-board": "På tavla",
+  "myCardsSortChange-choice-dueat": "På förfallodatum",
+  "dueCards-title": "Förfallna tavlor",
+  "dueCardsViewChange-title": "Förfallna tavlor vy",
+  "dueCardsViewChangePopup-title": "Förfallna tavlor vy",
+  "dueCardsViewChange-choice-me": "Jag",
+  "dueCardsViewChange-choice-all": "Alla användare",
+  "dueCardsViewChange-choice-all-description": "Visar alla oklara kort med *förfallo* datum från tavlor som användaren har tillgång till.",
+  "broken-cards": "Trasiga kort",
+  "board-title-not-found": "Tavla '%s' hittades inte.",
+  "swimlane-title-not-found": "Simbana '%s' hittades inte.",
+  "list-title-not-found": "Lista '%s' hittades inte.",
+  "label-not-found": "Märkning '%s' hittades inte.",
+  "label-color-not-found": "Märnkingsfärg '%s' hittades inte.",
+  "user-username-not-found": "Användarnamn '%s' hittades inte.",
+  "comment-not-found": "Kort med kommentarer innehållande text '%s' hittades inte.",
+  "globalSearch-title": "Sök Alla Tavlor",
+  "no-cards-found": "Inga Kort Hittades",
+  "one-card-found": "Ett Kort hittades",
+  "n-cards-found": "%s Kort hittade",
+  "n-n-of-n-cards-found": "__start__-__slut__ av __totala__ Kort Hittade",
+  "operator-board": "tavla",
   "operator-board-abbrev": "b",
-  "operator-swimlane": "swimlane",
+  "operator-swimlane": "Simbana",
   "operator-swimlane-abbrev": "s",
   "operator-list": "lista",
   "operator-list-abbrev": "l",
   "operator-label": "etikett",
   "operator-label-abbrev": "#",
-  "operator-user": "user",
+  "operator-user": "användare",
   "operator-user-abbrev": "@",
   "operator-member": "medlem",
   "operator-member-abbrev": "m",
-  "operator-assignee": "assignee",
+  "operator-assignee": "Tilldelad",
   "operator-assignee-abbrev": "a",
   "operator-status": "status",
   "operator-due": "förfallotid",
-  "operator-created": "created",
-  "operator-modified": "modified",
-  "operator-sort": "sort",
-  "operator-comment": "comment",
-  "operator-has": "has",
-  "operator-limit": "limit",
-  "predicate-archived": "archived",
-  "predicate-open": "open",
-  "predicate-ended": "ended",
-  "predicate-all": "all",
-  "predicate-overdue": "overdue",
-  "predicate-week": "week",
-  "predicate-month": "month",
-  "predicate-quarter": "quarter",
-  "predicate-year": "year",
+  "operator-created": "skapad",
+  "operator-modified": "ändrad",
+  "operator-sort": "sortera",
+  "operator-comment": "kommentar",
+  "operator-has": "har",
+  "operator-limit": "gräns",
+  "predicate-archived": "arkiverad",
+  "predicate-open": "öppen",
+  "predicate-ended": "avslutad",
+  "predicate-all": "alla",
+  "predicate-overdue": "förfallen",
+  "predicate-week": "vecka",
+  "predicate-month": "månad",
+  "predicate-quarter": "kvartal",
+  "predicate-year": "år",
   "predicate-due": "förfallotid",
-  "predicate-modified": "modified",
-  "predicate-created": "created",
-  "predicate-attachment": "attachment",
-  "predicate-description": "description",
+  "predicate-modified": "ändrad",
+  "predicate-created": "skapad",
+  "predicate-attachment": "bilaga",
+  "predicate-description": "beskrivning",
   "predicate-checklist": "checklista",
   "predicate-start": "start",
   "predicate-end": "slut",
-  "predicate-assignee": "assignee",
+  "predicate-assignee": "Tilldelad",
   "predicate-member": "medlem",
-  "predicate-public": "public",
-  "predicate-private": "private",
-  "operator-unknown-error": "%s is not an operator",
-  "operator-number-expected": "operator __operator__ expected a number, got '__value__'",
-  "operator-sort-invalid": "sort of '%s' is invalid",
-  "operator-status-invalid": "'%s' is not a valid status",
-  "operator-has-invalid": "%s is not a valid existence check",
-  "operator-limit-invalid": "%s is not a valid limit.  Limit should be a positive integer.",
-  "next-page": "Next Page",
-  "previous-page": "Previous Page",
-  "heading-notes": "Notes",
-  "globalSearch-instructions-heading": "Search Instructions",
-  "globalSearch-instructions-description": "Searches can include operators to refine the search.  Operators are specified by writing the operator name and value separated by a colon.  For example, an operator specification of `list:Blocked` would limit the search to cards that are contained in a list named *Blocked*.  If the value contains spaces or special characters it must be enclosed in quotation marks (e.g. `__operator_list__:\"To Review\"`).",
-  "globalSearch-instructions-operators": "Available operators:",
-  "globalSearch-instructions-operator-board": "`__operator_board__:<title>` - cards in boards matching the specified *<title>*",
-  "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - cards in lists matching the specified *<title>*",
-  "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - cards in swimlanes matching the specified *<title>*",
-  "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - cards with a comment containing *<text>*.",
-  "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - cards that have a label matching *<color>* or *<name>",
-  "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - shorthand for `__operator_label__:<color>` or `__operator_label__:<name>`",
-  "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - cards where *<username>* is a *member* or *assignee*",
-  "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:<username>`",
-  "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - cards where *<username>* is a *member*",
-  "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - cards where *<username>* is an *assignee*",
-  "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cards which are due up to *<n>* days from now.  `__operator_due__:__predicate_overdue__ lists all cards past their due date.",
-  "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cards which were created *<n>* days ago or less",
-  "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cards which were modified *<n>* days ago or less",
-  "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - where *<status>* is one of the following:",
-  "globalSearch-instructions-status-archived": "`__predicate_archived__` - archived cards",
-  "globalSearch-instructions-status-all": "`__predicate_all__` - all archived and unarchived cards",
-  "globalSearch-instructions-status-ended": "`__predicate_ended__` - cards with an end date",
-  "globalSearch-instructions-status-public": "`__predicate_public__` - cards only in public boards",
-  "globalSearch-instructions-status-private": "`__predicate_private__` - cards only in private boards",
-  "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - where *<field>* is one of `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` or `__predicate_member__`.  Placing a `-` in front of *<field>* searches for the absence of a value in that field (e.g. `has:-due` searches for cards without a due date).",
-  "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - where *<sort-name>* is one of `__predicate_due__`, `__predicate_created__` or `__predicate_modified__`.  For a descending sort, place a `-` in front of the sort name.",
-  "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - where *<n>* is a positive integer expressing the number of cards to be displayed per page.",
-  "globalSearch-instructions-notes-1": "Multiple operators may be specified.",
-  "globalSearch-instructions-notes-2": "Similar operators are *OR*ed together.  Cards that match any of the conditions will be returned.\n`__operator_list__:Available __operator_list__:Blocked` would return cards contained in any list named *Blocked* or *Available*.",
-  "globalSearch-instructions-notes-3": "Differing operators are *AND*ed together.  Only cards that match all of the differing operators are returned.  `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.",
+  "predicate-public": "publik",
+  "predicate-private": "privat",
+  "operator-unknown-error": "%s är inte en operator",
+  "operator-number-expected": "operator __operator__ förväntade ett nummer, fick '__värde__'",
+  "operator-sort-invalid": "Typ av '%s' är ogiltig",
+  "operator-status-invalid": "'%s' är inte en giltig status",
+  "operator-has-invalid": "%s är inte en giltig existenskontroll.",
+  "operator-limit-invalid": "%s är inte en giltig gräns. Gräns ska vara en positiv integer.",
+  "next-page": "Nästa Sida",
+  "previous-page": "Föregående Sida",
+  "heading-notes": "Noteringar",
+  "globalSearch-instructions-heading": "Sökinstruktioner",
+  "globalSearch-instructions-description": "Sökningar kan inkludera operatorer för att förfina sökningen. Operatorer är specifierade genon att skriva operator namn och värd separerat med ett kolon. Till exempel, en operator specifikation av 'list:Blocked' skulle limitera sökningen till kort som är innuti  en lista döpt till *Blocked*. Om värdet innehåller blanksteg eller specialtecken måste den vara innesluten med citations tecken. (t e x. `__operator_list__:\"To Review\"`).",
+  "globalSearch-instructions-operators": "Tillgängliga operatorer:",
+  "globalSearch-instructions-operator-board": "`__operator_board__:<title>` - kort i tavlor matchande den specifierade *<title>*",
+  "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - kort i listor matchande den specifierade *<title>*",
+  "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - kort i simbanor matchande den specifierade *<title>*",
+  "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - kort med kommentar innehållandes *<text>*.",
+  "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` -kort med märkning som matchar *<color>* or *<name>",
+  "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color> - förkortning för `__operator_label__:<color>` or `__operator_label__:<name>`",
+  "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - kort där*<username>* är en *medlem* eller *tilldelad*",
+  "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - förkortning för `user:<username>`",
+  "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - kort där *<username>* är en *medlem*",
+  "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - kort där *<username>* är en *tilldelad*",
+  "globalSearch-instructions-operator-due": "`__operator_due__:1` - cards which are due up to *2* days from now. `__operator_due__:__predicate_overdue__ lists all cards past their due date.",
+  "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - kort som skapade för *<n>* dagar sedan eller mindre.",
+  "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - kort som är modifierade för *<n>* dagar sedan eller mindre",
+  "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - där*<status>* är en av följande:",
+  "globalSearch-instructions-status-archived": "`__predicate_archived__` - arkiverade kort",
+  "globalSearch-instructions-status-all": "`__predicate_all__` - alla arkiverade och oarkiverade kort.",
+  "globalSearch-instructions-status-ended": "`__predicate_ended__` -kort med ett slutdatum",
+  "globalSearch-instructions-status-public": "`__predicate_public__` - kort endast i publika tavlor",
+  "globalSearch-instructions-status-private": "`__predicate_private__` - kort endast i privata tavlor",
+  "globalSearch-instructions-operator-has": "`__operator_has__:<field> - där*<field>* är en av `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` eller`__predicate_member__`. placer en `-` framför *<field>* söker för frånvaron av ett värde i det fältet (t ex. `has:-due` söker efter kort utan förfallodatum).",
+  "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - där*<sort-name>* är en av `__predicate_due__`, `__predicate_created__` eller `__predicate_modified__`. för enm fallande sortering, placera en `-` framför sorteringsnamnet.",
+  "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - där *<n>* är en positivc integer utryckandes antalet kort som ska visas per sida.",
+  "globalSearch-instructions-notes-1": "Multipla operatörer kan specifieras.",
+  "globalSearch-instructions-notes-2": "Liknande operatörer *OR*ade  tillsammans. Kort som matchar någon av villkoren kommer returneras.\n`__operator_list__:Tillgängliga __operator_list__:Blockerad` skuille returna kort i vilken list som helst som heter *Blockerad* eller *Tillgängliga*.",
+  "globalSearch-instructions-notes-3": "Differing operators are *AND*ed together. Only cards that match all of the differing operators are returned. `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.",
   "globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.",
-  "globalSearch-instructions-notes-4": "Text searches are case insensitive.",
-  "globalSearch-instructions-notes-5": "By default archived cards are not searched.",
-  "link-to-search": "Link to this search",
+  "globalSearch-instructions-notes-4": "Textsökningar är skiftlägeskänsliga.",
+  "globalSearch-instructions-notes-5": "Som standard söks inte arkiverade kort.",
+  "link-to-search": "Länka till denna sökningen",
   "excel-font": "Arial",
   "number": "Nummer",
-  "label-colors": "Label Colors",
-  "label-names": "Label Names",
-  "archived-at": "archived at",
-  "sort-cards": "Sort Cards",
-  "cardsSortPopup-title": "Sort Cards",
-  "due-date": "Due Date",
-  "title-alphabetically": "Title (Alphabetically)",
-  "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "label-colors": "Märkningsfärger",
+  "label-names": "Märkningsnamn",
+  "archived-at": "arkiverad den",
+  "sort-cards": "Sortera Kort",
+  "cardsSortPopup-title": "Sortera Kort",
+  "due-date": "Förfallodatum",
+  "title-alphabetically": "Titel (Alfabetisk)",
+  "created-at-newest-first": "Skapad den (Nyast först)",
+  "created-at-oldest-first": "Skapad den (äldst först)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/sw.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/ta.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/th.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "ชื่อผู้ใช้งาน",
   "import-usernames": "Import Usernames",
   "view-it": "ดู",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/tr.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Özel Oturum Açma Logosu Resmi URL'si",
   "custom-login-logo-link-url": "Özel Oturum Açma Logosu Bağlantı URL'si",
   "text-below-custom-login-logo": "Özel Oturum Açma Logosunun altındaki metin",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Kullanıcı adı",
   "import-usernames": "Import Usernames",
   "view-it": "Görüntüle",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/uk.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "Переглянути це",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 723 - 719
i18n/vi.i18n.json

@@ -1,52 +1,52 @@
 {
   "accept": "Chấp nhận",
   "act-activity-notify": "Thông báo hoạt động",
-  "act-addAttachment": "thêm tập tin đính kèm __attachment__  vào thẻ __list__ tại danh sách __list__  tại đường bơi __swimlane__ tại bảng __board__",
-  "act-deleteAttachment": "xóa tập tin đính kèm __attachment__ tại thẻ __card__ tại danh sách __list__ tại đường bơi __swimlane__ tại bảng __board__ ",
-  "act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-editComment": "edited comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-deleteComment": "deleted comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-createBoard": "created board __board__",
-  "act-createSwimlane": "created swimlane __swimlane__ to board __board__",
-  "act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
-  "act-createCustomField": "created custom field __customField__ at board __board__",
-  "act-deleteCustomField": "deleted custom field __customField__ at board __board__",
-  "act-setCustomField": "edited custom field __customField__: __customFieldValue__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-createList": "added list __list__ to board __board__",
-  "act-addBoardMember": "added member __member__ to board __board__",
-  "act-archivedBoard": "Board __board__ moved to Archive",
-  "act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
-  "act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
-  "act-archivedSwimlane": "Swimlane __swimlane__ at board __board__ moved to Archive",
-  "act-importBoard": "imported board __board__",
-  "act-importCard": "imported card  __card__ to list __list__ at swimlane __swimlane__ at board __board__",
-  "act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
-  "act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
-  "act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__",
-  "act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
-  "act-removeBoardMember": "removed member __member__ from board __board__",
-  "act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
-  "act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "act-addAttachment": "thêm tập tin đính kèm __attachment__  vào thẻ __list__ tại danh sách __list__  tại làn ngang __swimlane__ tại bảng __board__",
+  "act-deleteAttachment": "xóa tập tin đính kèm __attachment__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__ ",
+  "act-addSubtask": "đã thêm nhiệm vụ con __subtask__ vào thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ at board __board__",
+  "act-addLabel": "Đã thêm nhãn __label__ vào thẻ  __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-addedLabel": "Đã thêm nhãn __label__ vào thẻ  __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-removeLabel": "Đã xóa nhãn __label__ từ thẻ  __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-removedLabel": "Đã xóa nhãn __label__ từ thẻ  __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-addChecklist": "đã thêm checklist __checklist__ vào thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-addChecklistItem": "đã thêm mục checklist __checklistItem__ vào checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-removeChecklist": "đã xóa checklist __checklist__ từ thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-removeChecklistItem": "đã xóa mục checklist __checklistItem__ từ checklist __checkList__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-checkedItem": "đã đánh dấu hoàn thành mục __checklistItem__ của checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-uncheckedItem": "đã bỏ đánh dấu hoàn thành mục __checklistItem__ của checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-completeChecklist": "đã hoàn thành checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-uncompleteChecklist": "đã bỏ đánh dấu hoàn thành checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-addComment": "đã bình luận trên thẻ __card__: __comment__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-editComment": "đã sửa bình luận trên thẻ __card__: __comment__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-deleteComment": "đã xóa bình luận trên thẻ __card__: __comment__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-createBoard": "đã tạo bảng __board__",
+  "act-createSwimlane": "đã tạo làn ngang __swimlane__ tới bảng __board__",
+  "act-createCard": "đã tạo thẻ __card__ vào danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-createCustomField": "đã tạo trường __customField__ tại bảng __board__",
+  "act-deleteCustomField": "đã xóa trường tùy chỉnh __customField__ tại bảng __board__",
+  "act-setCustomField": "trường tùy chỉnh đã chỉnh sửa __customField__: __customFieldValue__ Tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-createList": "đã thêm danh sách __list__ vàng bảng __board__",
+  "act-addBoardMember": "đã thêm thành viên __member__ vào bảng __board__",
+  "act-archivedBoard": "Bảng __board__ đã được chuyển đến Lưu trữ",
+  "act-archivedCard": "Thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__ được chuyển vào Lưu trữ",
+  "act-archivedList": "Danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__ đã chuyển đến Lưu trữ",
+  "act-archivedSwimlane": "Làn ngang __swimlane__ tại bảng __board__ được chuyển đến Lưu trữ",
+  "act-importBoard": "đã nhập bảng __board__",
+  "act-importCard": "đã nhập thẻ  __card__ vào danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-importList": "đã nhập danh sách __list__ vào làn ngang __swimlane__ tại bảng __board__",
+  "act-joinMember": "đã thêm thành viên __member__ vào thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ at board __board__",
+  "act-moveCard": "đã di chuyển thẻ __card__ tại bảng __board__ từ danh sách __oldList__ tại làn ngang __oldSwimlane__ tới danh sách __list__ tại làn ngang __swimlane__",
+  "act-moveCardToOtherBoard": "đã di chuyển thẻ __card__ từ danh sách __oldList__ tại làn ngang __oldSwimlane__ tại bảng __oldBoard__ tới danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-removeBoardMember": "đã xóa thành viên __member__ khỏi bảng __board__",
+  "act-restoredCard": "đã khôi phục thẻ __card__ vào danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
+  "act-unjoinMember": "đã xóa thành viên __member__ từ thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
   "act-withBoardTitle": "__board__",
   "act-withCardTitle": "[__board__] __card__",
   "actions": "Hành Động",
   "activities": "Hoạt Động",
   "activity": "Hoạt Động",
   "activity-added": "đã thêm %s vào %s",
-  "activity-archived": "%s đã chuyển đến Lưu trữ",
+  "activity-archived": "đã chuyển %s đến Lưu trữ",
   "activity-attached": "đã đính kèm %s vào %s",
   "activity-created": "đã tạo %s",
   "activity-customfield-created": "đã tạo trường tuỳ chỉnh %s",
@@ -60,29 +60,29 @@
   "activity-sent": "gửi %s đến %s",
   "activity-unjoined": "đã rời khỏi %s",
   "activity-subtask-added": "đã thêm subtask vào %s",
-  "activity-checked-item": "checked %s in checklist %s of %s",
-  "activity-unchecked-item": "unchecked %s in checklist %s of %s",
+  "activity-checked-item": "đã đánh dấu hoàn thành %s trong checklist %s của %s",
+  "activity-unchecked-item": "đã bỏ đánh dấu hoàn thành %s trong checklist %s của %s",
   "activity-checklist-added": "đã thêm checklist vào %s",
-  "activity-checklist-removed": "removed a checklist from %s",
-  "activity-checklist-completed": "completed checklist %s of %s",
-  "activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
-  "activity-checklist-item-added": "added checklist item to '%s' in %s",
-  "activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
+  "activity-checklist-removed": "đã xóa một checklist từ %s",
+  "activity-checklist-completed": "đã đánh dấu hoàn thành toàn bộ checklist %s của %s",
+  "activity-checklist-uncompleted": "đánh dấu chưa hoàn thành toàn bộ checklist %s của %s",
+  "activity-checklist-item-added": "đã thêm mục checklist vào '%s' trong %s",
+  "activity-checklist-item-removed": "đã xóa một mục checklist từ '%s' trong %s",
   "add": "Thêm",
-  "activity-checked-item-card": "checked %s in checklist %s",
-  "activity-unchecked-item-card": "unchecked %s in checklist %s",
-  "activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+  "activity-checked-item-card": "đã hoàn thành %s trong checklist %s",
+  "activity-unchecked-item-card": "đã bỏ đánh dấu hoàn thành %s trong checklist %s",
+  "activity-checklist-completed-card": "đã hoàn thành checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__",
   "activity-checklist-uncompleted-card": "chưa hoàn thành checklist",
   "activity-editComment": "lời bình đã sửa",
   "activity-deleteComment": "đã xoá lời bình %s",
-  "activity-receivedDate": "ngày nhận đã sửa từ %s thành %s",
-  "activity-startDate": "ngày bắt đầu đã sửa từ %s thành %s",
-  "activity-dueDate": "ngày đến hạn đã sửa từ %s thành %s",
-  "activity-endDate": "ngày kết thúc đã sửa từ %s thành %s",
+  "activity-receivedDate": "đã sửa ngày nhận đến %s của %s",
+  "activity-startDate": "đã sửa ngày bắt đầu thành %s của %s",
+  "activity-dueDate": "đã sửa ngày hết hạn thành %s của %s",
+  "activity-endDate": "đã sửa ngày kết thúc thành %s của %s",
   "add-attachment": "Thêm Bản Đính Kèm",
   "add-board": "Thêm Bảng",
   "add-card": "Thêm Thẻ",
-  "add-swimlane": "Add Swimlane",
+  "add-swimlane": "Thêm làn ngang",
   "add-subtask": "Thêm Nhiệm vụ phụ",
   "add-checklist": "Thêm Danh Sách Kiểm Tra",
   "add-checklist-item": "Thêm Một Mục Vào Danh Sách Kiểm Tra",
@@ -94,26 +94,26 @@
   "addMemberPopup-title": "Thành Viên",
   "admin": "Quản Trị Viên",
   "admin-desc": "Có thể xem và chỉnh sửa những thẻ, xóa thành viên và thay đổi cài đặt cho bảng.",
-  "admin-announcement": "Announcement",
-  "admin-announcement-active": "Active System-Wide Announcement",
-  "admin-announcement-title": "Announcement from Administrator",
+  "admin-announcement": "Thông báo",
+  "admin-announcement-active": "Thông báo trên toàn hệ thống đang hoạt động",
+  "admin-announcement-title": "Thông báo từ Quản trị viên",
   "all-boards": "Tất cả các bảng",
   "and-n-other-card": "Và __count__ thẻ khác",
   "and-n-other-card_plural": "Và __count__ thẻ khác",
-  "apply": "Ứng Dụng",
-  "app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
-  "archive": "Move to Archive",
-  "archive-all": "Move All to Archive",
-  "archive-board": "Move Board to Archive",
-  "archive-card": "Move Card to Archive",
-  "archive-list": "Move List to Archive",
-  "archive-swimlane": "Move Swimlane to Archive",
-  "archive-selection": "Move selection to Archive",
-  "archiveBoardPopup-title": "Move Board to Archive?",
+  "apply": "Áp Dụng",
+  "app-is-offline": "Đang tải, vui lòng đợi. Làm mới trang sẽ làm mất dữ liệu. Nếu quá trình tải không hoạt động, vui lòng kiểm tra lại máy chủ.",
+  "archive": "Di chuyển đến Lưu trữ",
+  "archive-all": "Di chuyển tất cả vào Lưu trữ",
+  "archive-board": "Di chuyển Bảng sang Lưu trữ",
+  "archive-card": "Di chuyển Thẻ vào Lưu trữ",
+  "archive-list": "Di chuyển Danh sách vào Lưu trữ",
+  "archive-swimlane": "Di chuyển Làn ngang vào Lưu trữ",
+  "archive-selection": "Di chuyển lựa chọn vào Lưu trữ",
+  "archiveBoardPopup-title": "Chuyển Bảng sang Lưu trữ?",
   "archived-items": "Lưu Trữ",
-  "archived-boards": "Boards in Archive",
+  "archived-boards": "Các bảng trong lưu trữ",
   "restore-board": "Khôi Phục Bảng",
-  "no-archived-boards": "No Boards in Archive.",
+  "no-archived-boards": "Không có bảng nào trong Lưu trữ.",
   "archives": "Lưu Trữ",
   "template": "Mẫu",
   "templates": "Các mẫu",
@@ -124,13 +124,13 @@
   "attachmentDeletePopup-title": "Xóa tệp đính kèm không?",
   "attachments": "Tệp Đính Kèm",
   "auto-watch": "Tự động xem bảng lúc được tạo ra",
-  "avatar-too-big": "The avatar is too large (520KB max)",
+  "avatar-too-big": "Hình đại diện quá lớn (tối đa 520KB)",
   "back": "Trở Lại",
   "board-change-color": "Đổi màu",
   "board-nb-stars": "%s sao",
   "board-not-found": "Không tìm được bảng",
-  "board-private-info": "Bảng này sẽ chuyển sang <strong> chế độ private</strong>.",
-  "board-public-info": "Bảng này sẽ chuyển sang <strong> chế độ public</strong>.",
+  "board-private-info": "Bảng này sẽ chuyển sang chế độ <strong>riêng tư</strong>.",
+  "board-public-info": "Bảng này sẽ chuyển sang chế độ <strong>công khai</strong>.",
   "boardChangeColorPopup-title": "Thay hình nền của bảng",
   "boardChangeTitlePopup-title": "Đổi tên bảng",
   "boardChangeVisibilityPopup-title": "Đổi cách hiển thị",
@@ -140,18 +140,18 @@
   "boards": "Bảng",
   "board-view": "Kiểu xem Bảng",
   "board-view-cal": "Lịch",
-  "board-view-swimlanes": "Thu gọn",
-  "board-view-collapse": "Collapse",
-  "board-view-gantt": "Gantt",
+  "board-view-swimlanes": "Làn ngang",
+  "board-view-collapse": "Thu gọn",
+  "board-view-gantt": "Biểu đồ Gantt",
   "board-view-lists": "Danh sách",
-  "bucket-example": "Like “Bucket List” for example",
+  "bucket-example": "Ví dụ như \"Danh sách nhóm\"",
   "cancel": "Hủy",
-  "card-archived": "This card is moved to Archive.",
-  "board-archived": "This board is moved to Archive.",
+  "card-archived": "Thẻ này đã được chuyển đến Lưu trữ.",
+  "board-archived": "Bảng này đã được chuyển đến Lưu trữ.",
   "card-comments-title": "Thẻ này có %s bình luận.",
   "card-delete-notice": "Hành động xóa là không thể khôi phục. Bạn sẽ mất hết các hoạt động liên quan đến thẻ này.",
-  "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-  "card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
+  "card-delete-pop": "Tất cả các hành động sẽ bị xóa khỏi nguồn cấp dữ liệu hoạt động và bạn sẽ không thể mở lại thẻ. Không có hoàn tác.",
+  "card-delete-suggest-archive": "Bạn có thể di chuyển một thẻ vào Lưu trữ để xóa thẻ đó khỏi bảng và duy trì hoạt động này.",
   "card-due": "Đến hạn",
   "card-due-on": "Đến hạn vào",
   "card-spent": "Thời lượng",
@@ -160,53 +160,53 @@
   "card-edit-labels": "Sửa nhãn",
   "card-edit-members": "Sửa thành viên",
   "card-labels-title": "Thay đổi nhãn cho Thẻ",
-  "card-members-title": "Add or remove members of the board from the card.",
+  "card-members-title": "Thêm hoặc xóa các thành viên của bảng khỏi thẻ.",
   "card-start": "Bắt đầu",
-  "card-start-on": "Starts on",
-  "cardAttachmentsPopup-title": "Attach From",
-  "cardCustomField-datePopup-title": "Change date",
+  "card-start-on": "Bắt đầu vào",
+  "cardAttachmentsPopup-title": "Đính kèm từ",
+  "cardCustomField-datePopup-title": "Thay đổi ngày",
   "cardCustomFieldsPopup-title": "Sửa trường tuỳ chỉnh",
-  "cardStartVotingPopup-title": "Start a vote",
-  "positiveVoteMembersPopup-title": "Proponents",
-  "negativeVoteMembersPopup-title": "Opponents",
+  "cardStartVotingPopup-title": "Bắt đầu một cuộc bỏ phiếu",
+  "positiveVoteMembersPopup-title": "Những người ủng hộ",
+  "negativeVoteMembersPopup-title": "Những người phản đối",
   "card-edit-voting": "Sửa bình chọn",
-  "editVoteEndDatePopup-title": "Change vote end date",
-  "allowNonBoardMembers": "Allow all logged in users",
-  "vote-question": "Voting question",
-  "vote-public": "Show who voted what",
-  "vote-for-it": "for it",
-  "vote-against": "against",
+  "editVoteEndDatePopup-title": "Thay đổi ngày kết thúc phiếu bầu",
+  "allowNonBoardMembers": "Cho phép tất cả người dùng đã đăng nhập",
+  "vote-question": "Câu hỏi bình chọn",
+  "vote-public": "Hiển thị ai đã bình chọn cái gì",
+  "vote-for-it": "tán thành",
+  "vote-against": "phản đối",
   "deleteVotePopup-title": "Xoá bình chọn?",
-  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
+  "vote-delete-pop": "Việc xóa là vĩnh viễn. Bạn sẽ mất tất cả các hành động liên quan đến phiếu bầu này.",
   "cardDeletePopup-title": "Xoá Thẻ",
-  "cardDetailsActionsPopup-title": "Card Actions",
+  "cardDetailsActionsPopup-title": "Hành động thẻ",
   "cardLabelsPopup-title": "Nhãn",
   "cardMembersPopup-title": "Thành Viên",
-  "cardMorePopup-title": "More",
+  "cardMorePopup-title": "Thêm nữa",
   "cardTemplatePopup-title": "Tạo mẫu",
-  "cards": "Cards",
-  "cards-count": "Cards",
-  "casSignIn": "Sign In with CAS",
-  "cardType-card": "Card",
-  "cardType-linkedCard": "Linked Card",
-  "cardType-linkedBoard": "Linked Board",
-  "change": "Change",
-  "change-avatar": "Change Avatar",
-  "change-password": "Change Password",
-  "change-permissions": "Change permissions",
-  "change-settings": "Change Settings",
-  "changeAvatarPopup-title": "Change Avatar",
-  "changeLanguagePopup-title": "Change Language",
-  "changePasswordPopup-title": "Change Password",
-  "changePermissionsPopup-title": "Change Permissions",
-  "changeSettingsPopup-title": "Change Settings",
+  "cards": "Thẻ",
+  "cards-count": "Thẻ",
+  "casSignIn": "Đăng nhập bằng CAS",
+  "cardType-card": "Thẻ",
+  "cardType-linkedCard": "Thẻ đã liên kết",
+  "cardType-linkedBoard": "Bảng đã liên kết",
+  "change": "Thay đổi",
+  "change-avatar": "Thay đổi hình đại diện",
+  "change-password": "Đổi mật khẩu",
+  "change-permissions": "Thay đổi quyền",
+  "change-settings": "Thay đổi Cài đặt",
+  "changeAvatarPopup-title": "Thay đổi hình đại diện",
+  "changeLanguagePopup-title": "Thay đổi ngôn ngữ",
+  "changePasswordPopup-title": "Đổi mật khẩu",
+  "changePermissionsPopup-title": "Thay đổi quyền",
+  "changeSettingsPopup-title": "Thay đổi Cài đặt",
   "subtasks": "Nhiệm vụ phụ",
-  "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",
+  "checklists": "Danh sách việc cần hoàn thành",
+  "click-to-star": "Bấm để gắn dấu sao bảng này.",
+  "click-to-unstar": "Bấm để bỏ gắn bảng này.",
+  "clipboard": "Clipboard hoặc kéo và thả",
+  "close": "Đóng",
+  "close-board": "Đóng bảng",
   "close-board-pop": "Bạn sẽ có thể khôi phục bảng bằng cách nhấp vào nút \"Lưu trữ\" từ tiêu đề trang chủ.",
   "color-black": "black",
   "color-blue": "blue",
@@ -233,233 +233,233 @@
   "color-slateblue": "slateblue",
   "color-white": "white",
   "color-yellow": "yellow",
-  "unset-color": "Unset",
-  "comment": "Comment",
-  "comment-placeholder": "Write Comment",
-  "comment-only": "Comment only",
-  "comment-only-desc": "Can comment on cards only.",
-  "no-comments": "No comments",
-  "no-comments-desc": "Can not see comments and activities.",
+  "unset-color": "Không đặt",
+  "comment": "Bình luận",
+  "comment-placeholder": "Viết Bình Luận",
+  "comment-only": "Chỉ bình luận",
+  "comment-only-desc": "Chỉ có thể nhận xét về thẻ.",
+  "no-comments": "Không có bình luận",
+  "no-comments-desc": "Không thể xem bình luận và hoạt động.",
   "worker": "Worker",
   "worker-desc": "Chỉ có thể di chuyển thẻ, tự gán thẻ và nhận xét.",
-  "computer": "Computer",
+  "computer": "Máy tính",
   "confirm-subtask-delete-dialog": "Bạn có chắc chắn muốn xóa nhiệm vụ phụ không?",
-  "confirm-checklist-delete-dialog": "Bạn có chắc chắn muốn xóa danh sách kiểm tra không?",
-  "copy-card-link-to-clipboard": "Copy card link to clipboard",
-  "linkCardPopup-title": "Link Card",
+  "confirm-checklist-delete-dialog": "Bạn có chắc chắn muốn xóa checklist không?",
+  "copy-card-link-to-clipboard": "Sao chép liên kết thẻ vào khay nhớ tạm",
+  "linkCardPopup-title": "Thẻ liên kết",
   "searchElementPopup-title": "Tìm kiếm",
-  "copyCardPopup-title": "Copy Card",
-  "copyChecklistToManyCardsPopup-title": "Sao chép Mẫu danh sách kiểm tra cho Nhiều thẻ",
-  "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
-  "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
-  "create": "Create",
-  "createBoardPopup-title": "Create Board",
-  "chooseBoardSourcePopup-title": "Import board",
-  "createLabelPopup-title": "Create Label",
-  "createCustomField": "Create Field",
-  "createCustomFieldPopup-title": "Create Field",
-  "current": "current",
-  "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
-  "custom-field-checkbox": "Checkbox",
-  "custom-field-currency": "Currency",
-  "custom-field-currency-option": "Currency Code",
-  "custom-field-date": "Date",
-  "custom-field-dropdown": "Dropdown List",
+  "copyCardPopup-title": "Sao chép Thẻ",
+  "copyChecklistToManyCardsPopup-title": "Sao chép Mẫu Checklist cho Nhiều thẻ",
+  "copyChecklistToManyCardsPopup-instructions": "Tiêu đề và mô tả thẻ đích ở định dạng JSON này",
+  "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Tiêu đề thẻ đầu tiên\", \"description\":\"Mô tả thẻ đầu tiên\"}, {\"title\":\"Tiêu đề thẻ thứ hai\",\"description\":\"Mô tả thẻ thứ hai\"},{\"title\":\"Tiêu đề thẻ cuối cùng\",\"description\":\"Mô tả thẻ cuối cùng\"} ]",
+  "create": "Tạo",
+  "createBoardPopup-title": "Tạo Bảng",
+  "chooseBoardSourcePopup-title": "Nhập bảng",
+  "createLabelPopup-title": "Tạo nhãn",
+  "createCustomField": "Tạo Trường",
+  "createCustomFieldPopup-title": "Tạo Trường",
+  "current": "hiện tại",
+  "custom-field-delete-pop": "Không thể hoàn tác. Thao tác này sẽ xóa trường tùy chỉnh này khỏi tất cả các thẻ và hủy lịch sử của nó.",
+  "custom-field-checkbox": "Hộp kiểm",
+  "custom-field-currency": "Tiền tệ",
+  "custom-field-currency-option": "Mã tiền tệ",
+  "custom-field-date": "Ngày",
+  "custom-field-dropdown": "Danh sách thả xuống",
   "custom-field-dropdown-none": "(none)",
-  "custom-field-dropdown-options": "List Options",
-  "custom-field-dropdown-options-placeholder": "Press enter to add more options",
-  "custom-field-dropdown-unknown": "(unknown)",
-  "custom-field-number": "Number",
-  "custom-field-text": "Text",
-  "custom-fields": "Custom Fields",
-  "date": "Date",
-  "decline": "Decline",
-  "default-avatar": "Default avatar",
+  "custom-field-dropdown-options": "Tùy chọn danh sách",
+  "custom-field-dropdown-options-placeholder": "Nhấn enter để thêm các tùy chọn khác",
+  "custom-field-dropdown-unknown": "(không xác định)",
+  "custom-field-number": "Số",
+  "custom-field-text": "Văn bản",
+  "custom-fields": "Trường tùy chỉnh",
+  "date": "Ngày",
+  "decline": "Từ chối",
+  "default-avatar": "Hình đại diện mặc định",
   "delete": "Xoá",
   "deleteCustomFieldPopup-title": "Xoá Trường tuỳ chỉnh?",
   "deleteLabelPopup-title": "Xoá Nhãn?",
-  "description": "Description",
-  "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
-  "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
-  "discard": "Discard",
-  "done": "Done",
-  "download": "Download",
+  "description": "Mô tả",
+  "disambiguateMultiLabelPopup-title": "Đánh dấu nhãn hành động",
+  "disambiguateMultiMemberPopup-title": "Làm rõ hành động của thành viên",
+  "discard": "Bỏ đi",
+  "done": "Xong",
+  "download": "Tải về",
   "edit": "Sửa",
-  "edit-avatar": "Change Avatar",
+  "edit-avatar": "Thay đổi hình đại diện",
   "edit-profile": "Sửa Hồ sơ",
-  "edit-wip-limit": "Edit WIP Limit",
-  "soft-wip-limit": "Soft WIP Limit",
-  "editCardStartDatePopup-title": "Change start date",
-  "editCardDueDatePopup-title": "Change due date",
+  "edit-wip-limit": "Chỉnh sửa giới hạn WIP",
+  "soft-wip-limit": "Giới hạn Soft WIP",
+  "editCardStartDatePopup-title": "Thay đổi ngày bắt đầu",
+  "editCardDueDatePopup-title": "Thay đổi ngày đến hạn",
   "editCustomFieldPopup-title": "Sửa Trường",
-  "editCardSpentTimePopup-title": "Change spent time",
-  "editLabelPopup-title": "Change Label",
+  "editCardSpentTimePopup-title": "Thay đổi thời gian đã sử dụng",
+  "editLabelPopup-title": "Thay đổi nhãn",
   "editNotificationPopup-title": "Sửa Thông báo",
   "editProfilePopup-title": "Sửa Hồ sơ",
   "email": "Email",
-  "email-enrollAccount-subject": "An account created for you on __siteName__",
-  "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
-  "email-fail": "Sending email failed",
-  "email-fail-text": "Error trying to send email",
-  "email-invalid": "Invalid email",
-  "email-invite": "Invite via Email",
-  "email-invite-subject": "__inviter__ sent you an invitation",
-  "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
-  "email-resetPassword-subject": "Reset your password on __siteName__",
-  "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
-  "email-sent": "Email sent",
-  "email-verifyEmail-subject": "Verify your email address on __siteName__",
-  "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
-  "enable-wip-limit": "Enable WIP Limit",
-  "error-board-doesNotExist": "This board does not exist",
-  "error-board-notAdmin": "You need to be admin of this board to do that",
-  "error-board-notAMember": "You need to be a member of this board to do that",
-  "error-json-malformed": "Your text is not valid JSON",
-  "error-json-schema": "Your JSON data does not include the proper information in the correct format",
-  "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
-  "error-list-doesNotExist": "This list does not exist",
-  "error-user-doesNotExist": "This user does not exist",
-  "error-user-notAllowSelf": "You can not invite yourself",
-  "error-user-notCreated": "This user is not created",
-  "error-username-taken": "This username is already taken",
-  "error-orgname-taken": "This organization name is already taken",
-  "error-teamname-taken": "This team name is already taken",
-  "error-email-taken": "Email has already been taken",
-  "export-board": "Export board",
-  "export-board-json": "Export board to JSON",
-  "export-board-csv": "Export board to CSV",
-  "export-board-tsv": "Export board to TSV",
-  "export-board-excel": "Export board to Excel",
-  "user-can-not-export-excel": "User can not export Excel",
-  "export-board-html": "Export board to HTML",
-  "exportBoardPopup-title": "Export board",
-  "sort": "Sort",
-  "sort-desc": "Click to Sort List",
+  "email-enrollAccount-subject": "Một tài khoản được tạo cho bạn trên __siteName__",
+  "email-enrollAccount-text": "Chào __user__,\n\nĐể bắt đầu sử dụng dịch vụ, chỉ cần nhấp vào liên kết bên dưới.\n\n__url__\n\nCảm ơn.",
+  "email-fail": "Gửi email không thành công",
+  "email-fail-text": "Lỗi khi gửi email",
+  "email-invalid": "Email không hợp lệ",
+  "email-invite": "Mời qua Email",
+  "email-invite-subject": "__inviter__ đã gửi cho bạn lời mời",
+  "email-invite-text": "Gửi __user__,\n\n__inviter__ mời bạn tham gia bảng \"__board__\" để cộng tác.\n\nVui lòng theo liên kết bên dưới:\n\n__url__\n\nCảm ơn.",
+  "email-resetPassword-subject": "Đặt lại mật khẩu của bạn trên __siteName__",
+  "email-resetPassword-text": "Chào __user__,\n\nĐể đặt lại mật khẩu của bạn, chỉ cần nhấp vào liên kết bên dưới.\n\n__url__\n\nCảm ơn.",
+  "email-sent": "Đã gửi email",
+  "email-verifyEmail-subject": "Xác minh địa chỉ email của bạn trên __siteName__",
+  "email-verifyEmail-text": "Chào __user__,\n\nĐể xác minh email tài khoản của bạn, chỉ cần nhấp vào liên kết bên dưới.\n\n__url__\n\nCảm ơn.",
+  "enable-wip-limit": "Bật giới hạn WIP",
+  "error-board-doesNotExist": "Bảng này không tồn tại",
+  "error-board-notAdmin": "Bạn cần phải là quản trị viên của bảng này để làm điều đó",
+  "error-board-notAMember": "Bạn cần phải là thành viên của bảng này để làm điều đó",
+  "error-json-malformed": "Văn bản của bạn không phải là JSON hợp lệ",
+  "error-json-schema": "Dữ liệu JSON của bạn không bao gồm thông tin thích hợp ở định dạng chính xác",
+  "error-csv-schema": "CSV (Giá trị được phân tách bằng dấu phẩy)/TSV (Giá trị được phân cách bằng tab) của bạn không bao gồm thông tin thích hợp ở định dạng chính xác",
+  "error-list-doesNotExist": "Danh sách này không tồn tại",
+  "error-user-doesNotExist": "Người dùng này không tồn tại",
+  "error-user-notAllowSelf": "Bạn không thể mời chính mình",
+  "error-user-notCreated": "Người dùng này không được tạo",
+  "error-username-taken": "Tên người dùng này đã được sử dụng",
+  "error-orgname-taken": "Tên tổ chức này đã được sử dụng",
+  "error-teamname-taken": "Tên team này đã được sử dụng",
+  "error-email-taken": "Email đã được sử dụng",
+  "export-board": "Xuất bảng",
+  "export-board-json": "Xuất bảng sang JSON",
+  "export-board-csv": "Xuất bảng sang CSV",
+  "export-board-tsv": "Xuất bảng sang TSV",
+  "export-board-excel": "Xuất bảng sang Excel",
+  "user-can-not-export-excel": "Người dùng không thể xuất Excel",
+  "export-board-html": "Xuất bảng sang HTML",
+  "exportBoardPopup-title": "Xuất bảng",
+  "sort": "Sắp xếp",
+  "sort-desc": "Nhấp để sắp xếp danh sách",
   "list-sort-by": "Sắp xếp Danh sách bởi:",
-  "list-label-modifiedAt": "Last Access Time",
-  "list-label-title": "Name of the List",
+  "list-label-modifiedAt": "Lần truy cập cuối cùng",
+  "list-label-title": "Tên của danh sách",
   "list-label-sort": "Your Manual Order",
   "list-label-short-modifiedAt": "(L)",
   "list-label-short-title": "(N)",
   "list-label-short-sort": "(M)",
-  "filter": "Filter",
-  "filter-cards": "Filter Cards or Lists",
+  "filter": "Bộ lọc",
+  "filter-cards": "Lọc thẻ hoặc danh sách",
   "list-filter-label": "Lọc danh sách theo tiêu đề",
-  "filter-clear": "Clear filter",
+  "filter-clear": "Xóa bộ lọc",
   "filter-labels-label": "Lọc theo nhãn",
-  "filter-no-label": "No label",
+  "filter-no-label": "Không có nhãn",
   "filter-member-label": "Lọc theo thành viên",
-  "filter-no-member": "No member",
+  "filter-no-member": "Không có thành viên",
   "filter-assignee-label": "Lọc theo người được giao",
   "filter-no-assignee": "Không có người được giao",
   "filter-custom-fields-label": "Lọc theo Trường tuỳ chỉnh",
-  "filter-no-custom-fields": "No Custom Fields",
-  "filter-show-archive": "Show archived lists",
+  "filter-no-custom-fields": "Không có trường tùy chỉnh",
+  "filter-show-archive": "Hiển thị danh sách đã lưu trữ",
   "filter-hide-empty": "Ẩn danh sách trống",
-  "filter-on": "Filter is on",
+  "filter-on": "Bộ lọc đang bật",
   "filter-on-desc": "Bạn đang lọc thẻ trên bảng này. Nhấn vào đây để chỉnh sửa bộ lọc.",
-  "filter-to-selection": "Filter to selection",
-  "other-filters-label": "Other Filters",
-  "advanced-filter-label": "Advanced Filter",
-  "advanced-filter-description": "Bộ lọc nâng cao cho phép viết một chuỗi chứa các toán tử sau: ==! = <=> = && || () Một khoảng trắng được sử dụng làm dấu phân cách giữa các Toán tử. Bạn có thể lọc tất cả các Trường tùy chỉnh bằng cách nhập tên và giá trị của chúng. Ví dụ: Field1 == Value1. Lưu ý: Nếu các trường hoặc giá trị chứa khoảng trắng, bạn cần phải đóng gói chúng thành các dấu nháy đơn. Ví dụ: 'Trường 1' == 'Giá trị 1'. Để bỏ qua các ký tự điều khiển đơn ('\\ /), bạn có thể sử dụng \\. Ví dụ: Field1 == I \\ 'm. Ngoài ra bạn có thể kết hợp nhiều điều kiện. Ví dụ: F1 == V1 || F1 == V2. Thông thường tất cả các toán tử được giải thích từ trái sang phải. Bạn có thể thay đổi thứ tự bằng cách đặt dấu ngoặc. Ví dụ: F1 == V1 && (F2 == V2 || F2 == V3). Ngoài ra, bạn có thể tìm kiếm các trường văn bản bằng cách sử dụng regex: F1 == /Tes.*/i",
-  "fullname": "Full Name",
-  "header-logo-title": "Go back to your boards page.",
+  "filter-to-selection": "Lọc lựa chọn",
+  "other-filters-label": "Bộ lọc khác",
+  "advanced-filter-label": "Bộ lọc nâng cao",
+  "advanced-filter-description": "Bộ lọc Nâng cao cho phép viết một chuỗi chứa các toán tử sau: == != <= >= && || ( ) Một khoảng trắng được sử dụng làm dấu phân cách giữa các Toán tử. Bạn có thể lọc tất cả các Trường tùy chỉnh bằng cách nhập tên và giá trị của chúng. Ví dụ: Field1 == Value1. Chú ý: Nếu các trường hoặc giá trị chứa khoảng trắng, bạn cần phải đóng gói chúng thành các dấu ngoặc kép. Ví dụ: 'Field 1' == 'Value 1'. Để bỏ qua các ký tự điều khiển đơn (' \\/) bạn có thể sử dụng \\. Ví dụ: Field1 == I\\'m. Ngoài ra bạn có thể kết hợp nhiều điều kiện. Ví dụ: F1 == V1 || F1 == V2. Thông thường tất cả các toán tử được giải thích từ trái sang phải. Bạn có thể thay đổi thứ tự bằng cách đặt dấu ngoặc. Ví dụ: F1 == V1 && ( F2 == V2 || F2 == V3 ). Ngoài ra, bạn có thể tìm kiếm các trường văn bản bằng cách sử dụng regex: F1 == /Tes.*/i",
+  "fullname": "Họ và tên",
+  "header-logo-title": "Quay lại trang bảng của bạn.",
   "hide-system-messages": "Ẩn tin nhắn hệ thống",
-  "headerBarCreateBoardPopup-title": "Create Board",
-  "home": "Home",
-  "import": "Import",
-  "impersonate-user": "Impersonate user",
+  "headerBarCreateBoardPopup-title": "Tạo Bảng",
+  "home": "Trang Chủ",
+  "import": "Nhập khẩu",
+  "impersonate-user": "Mạo danh người dùng",
   "link": "Liên kết",
-  "import-board": "import board",
-  "import-board-c": "Import board",
-  "import-board-title-trello": "Import board from Trello",
-  "import-board-title-wekan": "Import board from previous export",
-  "import-board-title-csv": "Import board from CSV/TSV",
-  "from-trello": "From Trello",
-  "from-wekan": "From previous export",
-  "from-csv": "From CSV/TSV",
-  "import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
-  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
-  "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
-  "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
-  "import-json-placeholder": "Paste your valid JSON data here",
-  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
-  "import-map-members": "Map members",
-  "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
+  "import-board": "nhập bảng",
+  "import-board-c": "Nhập bảng",
+  "import-board-title-trello": "Nhập bảng từ Trello",
+  "import-board-title-wekan": "Nhập bảng từ lần xuất trước",
+  "import-board-title-csv": "Nhập bảng từ CSV/TSV",
+  "from-trello": "Từ Trello",
+  "from-wekan": "Từ lần xuất trước",
+  "from-csv": "Từ CSV/TSV",
+  "import-board-instruction-trello": "Trong bảng Trello của bạn, đi tới 'Trình đơn', sau đó đến 'Khác', 'In và Xuất', 'Xuất JSON' và sao chép văn bản kết quả.",
+  "import-board-instruction-csv": "Dán Giá trị được phân tách bằng dấu phẩy(CSV)/ Giá trị được phân cách bằng tab (TSV) của bạn.",
+  "import-board-instruction-wekan": "Trong bảng của bạn, hãy chuyển đến \"Menu\", sau đó \"Xuất bảng\" và sao chép văn bản trong tệp đã tải xuống.",
+  "import-board-instruction-about-errors": "Nếu bạn gặp lỗi khi nhập bảng, đôi khi quá trình nhập vẫn hoạt động và bảng ở trang Tất cả bảng.",
+  "import-json-placeholder": "Dán dữ liệu JSON hợp lệ của bạn vào đây",
+  "import-csv-placeholder": "Dán dữ liệu CSV/TSV hợp lệ của bạn vào đây",
+  "import-map-members": "Bản đồ thành viên",
+  "import-members-map": "Bảng nhập khẩu của bạn có một số thành viên. Vui lòng ánh xạ các thành viên bạn muốn nhập với người dùng của mình",
   "import-members-map-note": "Lưu ý: Các thành viên chưa được ánh xạ sẽ được chỉ định cho người dùng hiện tại.",
   "import-show-user-mapping": "Đánh giá bản đồ thành viên",
-  "import-user-select": "Pick your existing user you want to use as this member",
-  "importMapMembersAddPopup-title": "Select member",
-  "info": "Version",
-  "initials": "Initials",
-  "invalid-date": "Invalid date",
-  "invalid-time": "Invalid time",
-  "invalid-user": "Invalid user",
-  "joined": "joined",
-  "just-invited": "You are just invited to this board",
-  "keyboard-shortcuts": "Keyboard shortcuts",
-  "label-create": "Create Label",
-  "label-default": "%s label (default)",
-  "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
+  "import-user-select": "Chọn người dùng hiện tại của bạn mà bạn muốn sử dụng làm thành viên này",
+  "importMapMembersAddPopup-title": "Chọn thành viên",
+  "info": "Phiên bản",
+  "initials": "Tên viết tắt",
+  "invalid-date": "Ngày không hợp lệ",
+  "invalid-time": "Thời gian không hợp lệ",
+  "invalid-user": "Người dùng không hợp lệ",
+  "joined": "đã tham gia",
+  "just-invited": "Bạn vừa được mời vào bảng này",
+  "keyboard-shortcuts": "Các phím tắt",
+  "label-create": "Tạo nhãn",
+  "label-default": "nhãn %s (mặc định)",
+  "label-delete-pop": "Không có hoàn tác. Thao tác này sẽ xóa nhãn này khỏi tất cả các thẻ và hủy lịch sử của thẻ.",
   "labels": "Nhãn",
-  "language": "Language",
-  "last-admin-desc": "You can’t change roles because there must be at least one admin.",
-  "leave-board": "Leave Board",
-  "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
-  "leaveBoardPopup-title": "Leave Board ?",
-  "link-card": "Link to this card",
-  "list-archive-cards": "Move all cards in this list to Archive",
+  "language": "Ngôn ngữ",
+  "last-admin-desc": "Bạn không thể thay đổi vai trò vì phải có ít nhất một quản trị viên.",
+  "leave-board": "Rời khỏi Bảng",
+  "leave-board-pop": "Bạn có chắc chắn muốn rời khỏi __boardTitle__ không? Bạn sẽ bị xóa khỏi tất cả các Thẻ trên bảng này.",
+  "leaveBoardPopup-title": "Rời khỏi Bảng?",
+  "link-card": "Liên kết đến thẻ này",
+  "list-archive-cards": "Di chuyển tất cả các thẻ trong danh sách này vào Lưu trữ",
   "list-archive-cards-pop": "Thao tác này sẽ xóa tất cả các thẻ trong danh sách này khỏi bảng. Để xem thẻ trong Lưu trữ và đưa chúng trở lại bảng, hãy nhấp vào “Trình đơn”> “Lưu trữ”.",
-  "list-move-cards": "Move all cards in this list",
-  "list-select-cards": "Select all cards in this list",
-  "set-color-list": "Set Color",
-  "listActionPopup-title": "List Actions",
-  "settingsUserPopup-title": "User Settings",
-  "swimlaneActionPopup-title": "Swimlane Actions",
-  "swimlaneAddPopup-title": "Add a Swimlane below",
-  "listImportCardPopup-title": "Import a Trello card",
-  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
-  "listMorePopup-title": "More",
-  "link-list": "Link to this list",
-  "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
-  "list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
+  "list-move-cards": "Di chuyển tất cả các thẻ trong danh sách này",
+  "list-select-cards": "Chọn tất cả các thẻ trong danh sách này",
+  "set-color-list": "Đặt Màu",
+  "listActionPopup-title": "Liệt kê các hành động",
+  "settingsUserPopup-title": "Cài đặt người dùng",
+  "swimlaneActionPopup-title": "Hành động trên Làn ngang",
+  "swimlaneAddPopup-title": "Thêm một Làn ngang bên dưới",
+  "listImportCardPopup-title": "Nhập thẻ Trello",
+  "listImportCardsTsvPopup-title": "Nhập Excel CSV/TSV",
+  "listMorePopup-title": "Thêm nữa",
+  "link-list": "Liên kết đến danh sách này",
+  "list-delete-pop": "Tất cả các hành động sẽ bị xóa khỏi nguồn cấp dữ liệu hoạt động và bạn sẽ không thể khôi phục danh sách. Không có hoàn tác.",
+  "list-delete-suggest-archive": "Bạn có thể di chuyển danh sách vào Lưu trữ để xóa danh sách đó khỏi Bảng và duy trì hoạt động.",
   "lists": "Danh sách",
-  "swimlanes": "Thu gọn",
-  "log-out": "Log Out",
-  "log-in": "Log In",
-  "loginPopup-title": "Log In",
-  "memberMenuPopup-title": "Member Settings",
+  "swimlanes": "Làn ngang",
+  "log-out": "Đăng Xuất",
+  "log-in": "Đăng nhập",
+  "loginPopup-title": "Đăng nhập",
+  "memberMenuPopup-title": "Cài đặt thành viên",
   "members": "Thành Viên",
   "menu": "Menu",
-  "move-selection": "Move selection",
-  "moveCardPopup-title": "Move Card",
-  "moveCardToBottom-title": "Move to Bottom",
-  "moveCardToTop-title": "Move to Top",
-  "moveSelectionPopup-title": "Move selection",
+  "move-selection": "Di chuyển lựa chọn",
+  "moveCardPopup-title": "Di chuyển Thẻ",
+  "moveCardToBottom-title": "Di chuyển xuống dưới cùng",
+  "moveCardToTop-title": "Di chuyển lên đầu",
+  "moveSelectionPopup-title": "Di chuyển lựa chọn",
   "multi-selection": "Chọn nhiều",
-  "multi-selection-label": "Set label for selection",
-  "multi-selection-member": "Set member for selection",
+  "multi-selection-label": "Đặt nhãn để lựa chọn",
+  "multi-selection-member": "Đặt thành viên để lựa chọn",
   "multi-selection-on": "Chọn nhiều Đang bật",
-  "muted": "Muted",
+  "muted": "Đã tắt tiếng",
   "muted-info": "Bạn sẽ không bao giờ được thông báo về bất kỳ thay đổi nào trong bảng này",
   "my-boards": "Bảng của tôi",
-  "name": "Name",
-  "no-archived-cards": "No cards in Archive.",
-  "no-archived-lists": "No lists in Archive.",
-  "no-archived-swimlanes": "No swimlanes in Archive.",
-  "no-results": "No results",
-  "normal": "Normal",
+  "name": "Tên",
+  "no-archived-cards": "Không có thẻ nào trong Lưu trữ.",
+  "no-archived-lists": "Không có danh sách nào trong Lưu trữ.",
+  "no-archived-swimlanes": "Không có Làn ngang nào trong Lưu trữ.",
+  "no-results": "Không có kết quả",
+  "normal": "Bình thường",
   "normal-desc": "Có thể xem và chỉnh sửa thẻ. Không thể thay đổi cài đặt.",
-  "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",
+  "not-accepted-yet": "Lời mời chưa được chấp nhận",
+  "notify-participate": "Nhận thông tin cập nhật cho bất kỳ thẻ nào bạn tham gia với tư cách là người sáng tạo hoặc thành viên",
+  "notify-watch": "Nhận thông tin cập nhật cho bất kỳ bảng, danh sách hoặc thẻ nào bạn đang xem",
+  "optional": "không bắt buộc",
+  "or": "hoặc",
   "page-maybe-private": "Trang này có thể là riêng tư. Bạn có thể xem nó bằng cách <a href='%s'>đăng nhập.</a>",
-  "page-not-found": "Page not found.",
+  "page-not-found": "Không tìm thấy trang.",
   "password": "Mật khẩu",
-  "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
-  "participating": "Participating",
+  "paste-or-dragdrop": "để dán, hoặc kéo & thả tệp hình ảnh vào đó (chỉ hình ảnh)",
+  "participating": "Tham gia",
   "preview": "Xem trước",
   "previewAttachedImagePopup-title": "Xem trước",
   "previewClipboardImagePopup-title": "Xem trước",
@@ -467,517 +467,521 @@
   "private-desc": "Bảng này là riêng tư. Chỉ những người được thêm vào bảng mới có thể xem và chỉnh sửa nó.",
   "profile": "Hồ sơ",
   "public": "Công khai",
-  "public-desc": "Ban này là công khai. Nó hiển thị với bất kỳ ai có liên kết và sẽ hiển thị trong các công cụ tìm kiếm như Google. Chỉ những người được thêm vào diễn đàn mới có thể chỉnh sửa.",
-  "quick-access-description": "Star a board to add a shortcut in this bar.",
+  "public-desc": "Bảng này là công khai. Nó hiển thị với bất kỳ ai có liên kết và sẽ hiển thị trong các công cụ tìm kiếm như Google. Chỉ những người được thêm vào Bảng mới có thể chỉnh sửa.",
+  "quick-access-description": "Gắn dấu sao bảng để thêm lối tắt trong thanh này.",
   "remove-cover": "Remove Cover",
-  "remove-from-board": "Remove from Board",
-  "remove-label": "Remove Label",
+  "remove-from-board": "Xóa khỏi Bảng",
+  "remove-label": "Xóa nhãn",
   "listDeletePopup-title": "Xoá Danh sách?",
   "remove-member": "Loại bỏ Thành viên",
-  "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?",
+  "remove-member-from-card": "Xóa khỏi Thẻ",
+  "remove-member-pop": "Xóa __name__ (__username__) khỏi __boardTitle__? Thành viên sẽ bị xóa khỏi tất cả các thẻ trên bảng này. Họ sẽ nhận được một thông báo.",
+  "removeMemberPopup-title": "Xóa Thành Viên?",
   "rename": "Đổi tên",
   "rename-board": "Đổi tên bảng",
-  "restore": "Restore",
+  "restore": "Khôi phục",
   "save": "Lưu",
   "search": "Tìm kiếm",
-  "rules": "Rules",
+  "rules": "Quy tắc",
   "search-cards": "Tìm kiếm từ Tiêu đề Thẻ/Danh sách, Mô tả và các trường tùy chỉnh trên bảng này",
   "search-example": "Nhập từ khoá tìm kiếm và ấn Enter",
-  "select-color": "Select Color",
-  "select-board": "Select Board",
-  "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
-  "setWipLimitPopup-title": "Set WIP Limit",
+  "select-color": "Chọn màu",
+  "select-board": "Chọn Bảng",
+  "set-wip-limit-value": "Đặt giới hạn cho số lượng nhiệm vụ tối đa trong danh sách này",
+  "setWipLimitPopup-title": "Đặt giới hạn WIP",
   "shortcut-assign-self": "Chỉ định bạn vào thẻ hiện tại",
-  "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-autocomplete-emoji": "Tự động điền biểu tượng cảm xúc",
+  "shortcut-autocomplete-members": "Tự động điền Thành viên",
+  "shortcut-clear-filters": "Xóa tất cả các bộ lọc",
+  "shortcut-close-dialog": "Đóng hộp thoại",
+  "shortcut-filter-my-cards": "Lọc thẻ của tôi",
+  "shortcut-show-shortcuts": "Hiển thị danh sách phím tắt",
+  "shortcut-toggle-filterbar": "Chuyển đổi Thanh bên Bộ lọc",
   "shortcut-toggle-searchbar": "Chuyển đổi Thanh bên Tìm kiếm",
-  "shortcut-toggle-sidebar": "Toggle Board Sidebar",
-  "show-cards-minimum-count": "Show cards count if list contains more than",
-  "sidebar-open": "Open Sidebar",
-  "sidebar-close": "Close Sidebar",
-  "signupPopup-title": "Create an Account",
-  "star-board-title": "Click to star this board. It will show up at top of your boards list.",
+  "shortcut-toggle-sidebar": "Chuyển đổi thanh bên bảng",
+  "show-cards-minimum-count": "Hiển thị số lượng thẻ nếu danh sách chứa nhiều hơn",
+  "sidebar-open": "Mở Thanh Bên",
+  "sidebar-close": "Đóng Thanh bên",
+  "signupPopup-title": "Tạo Tài Khoản",
+  "star-board-title": "Bấm để gắn dấu sao bảng này. Nó sẽ hiển thị ở đầu danh sách bảng của bạn.",
   "starred-boards": "Bảng có gắn dấu sao",
   "starred-boards-description": "Bảng đánh dấu sao sẽ được Ghin lên đầu",
-  "subscribe": "Subscribe",
+  "subscribe": "Đăng ký",
   "team": "Team",
-  "this-board": "this board",
-  "this-card": "this card",
-  "spent-time-hours": "Spent time (hours)",
-  "overtime-hours": "Overtime (hours)",
-  "overtime": "Overtime",
-  "has-overtime-cards": "Has overtime cards",
-  "has-spenttime-cards": "Has spent time cards",
-  "time": "Time",
-  "title": "Title",
-  "tracking": "Tracking",
+  "this-board": "bảng này",
+  "this-card": "thẻ này",
+  "spent-time-hours": "Đã dành thời gian (giờ)",
+  "overtime-hours": "Tăng ca (giờ)",
+  "overtime": "Tăng ca",
+  "has-overtime-cards": "Có thẻ làm thêm giờ",
+  "has-spenttime-cards": "Đã sử dụng thẻ thời gian",
+  "time": "Thời gian",
+  "title": "Tiêu đề",
+  "tracking": "Đang theo dõi",
   "tracking-info": "Bạn sẽ được thông báo về bất kỳ thay đổi nào đối với những thẻ mà bạn tham gia với tư cách là người sáng tạo hoặc thành viên.",
-  "type": "Type",
+  "type": "Kiểu",
   "unassign-member": "Bỏ chỉ định thành viên",
-  "unsaved-description": "You have an unsaved description.",
-  "unwatch": "Unwatch",
-  "upload": "Upload",
-  "upload-avatar": "Upload an avatar",
-  "uploaded-avatar": "Uploaded an avatar",
-  "custom-top-left-corner-logo-image-url": "Custom Top Left Corner Logo Image URL",
-  "custom-top-left-corner-logo-link-url": "Custom Top Left Corner Logo Link URL",
-  "custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27",
-  "custom-login-logo-image-url": "Custom Login Logo Image URL",
-  "custom-login-logo-link-url": "Custom Login Logo Link URL",
-  "text-below-custom-login-logo": "Text below Custom Login Logo",
-  "username": "Username",
-  "import-usernames": "Import Usernames",
+  "unsaved-description": "Bạn có một mô tả chưa được lưu.",
+  "unwatch": "Bỏ theo dõi",
+  "upload": "Tải lên",
+  "upload-avatar": "Tải lên hình đại diện",
+  "uploaded-avatar": "Đã tải lên hình đại diện",
+  "custom-top-left-corner-logo-image-url": "Góc trên bên trái tùy chỉnh - URL hình ảnh Logo",
+  "custom-top-left-corner-logo-link-url": "Góc trên bên trái tùy chỉnh - URL liên kết Logo",
+  "custom-top-left-corner-logo-height": "Góc trên bên trái tùy chỉnh - Chiều cao Logo. Mặc định: 27",
+  "custom-login-logo-image-url": "Đăng nhập tùy chỉnh - URL hình ảnh Logo ",
+  "custom-login-logo-link-url": "Đăng nhập tùy chỉnh - Url liên kết Logo",
+  "text-below-custom-login-logo": "Đăng nhập tùy chỉnh - Văn bản bên dưới Logo",
+  "automatic-linked-url-schemes": "Lược đồ URL tùy chỉnh sẽ tự động có thể nhấp được. Một Lược đồ URL trên mỗi dòng",
+  "username": "Tài khoản",
+  "import-usernames": "Nhập khẩu Usernames",
   "view-it": "Xem",
-  "warn-list-archived": "warning: this card is in an list at Archive",
-  "watch": "Watch",
-  "watching": "Watching",
+  "warn-list-archived": "cảnh báo: thẻ này nằm trong một danh sách tại Lưu trữ",
+  "watch": "Theo dõi",
+  "watching": "Đang xem",
   "watching-info": "Bạn sẽ được thông báo về bất kỳ thay đổi nào trong bảng này",
   "welcome-board": "Welcome Board",
   "welcome-swimlane": "Milestone 1",
-  "welcome-list1": "Basics",
-  "welcome-list2": "Advanced",
+  "welcome-list1": "Cơ bản",
+  "welcome-list2": "Nâng cao",
   "card-templates-swimlane": "Mẫu Thẻ",
   "list-templates-swimlane": "Mẫu Danh sách",
   "board-templates-swimlane": "Mẫu Bảng",
-  "what-to-do": "What do you want to do?",
-  "wipLimitErrorPopup-title": "Invalid WIP Limit",
-  "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
-  "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
-  "admin-panel": "Admin Panel",
-  "settings": "Settings",
-  "people": "People",
-  "registration": "Registration",
-  "disable-self-registration": "Disable Self-Registration",
-  "invite": "Invite",
-  "invite-people": "Invite People",
-  "to-boards": "To board(s)",
-  "email-addresses": "Email Addresses",
-  "smtp-host-description": "The address of the SMTP server that handles your emails.",
-  "smtp-port-description": "The port your SMTP server uses for outgoing emails.",
-  "smtp-tls-description": "Enable TLS support for SMTP server",
+  "what-to-do": "Bạn muốn làm gì?",
+  "wipLimitErrorPopup-title": "Giới hạn WIP không hợp lệ",
+  "wipLimitErrorPopup-dialog-pt1": "Số lượng nhiệm vụ trong danh sách này cao hơn giới hạn WIP mà bạn đã xác định.",
+  "wipLimitErrorPopup-dialog-pt2": "Vui lòng chuyển một số nhiệm vụ ra khỏi danh sách này hoặc đặt giới hạn WIP cao hơn.",
+  "admin-panel": "Bảng quản trị",
+  "settings": "Cài đặt",
+  "people": "Mọi người",
+  "registration": "Đăng ký",
+  "disable-self-registration": "Vô hiệu hoá tự đăng ký",
+  "invite": "Mời",
+  "invite-people": "Mời mọi người",
+  "to-boards": "Đến bảng(s)",
+  "email-addresses": "Địa chỉ Email",
+  "smtp-host-description": "Địa chỉ của máy chủ SMTP xử lý email của bạn.",
+  "smtp-port-description": "Cổng mà máy chủ SMTP của bạn sử dụng cho các email gửi đi.",
+  "smtp-tls-description": "Bật hỗ trợ TLS cho máy chủ SMTP",
   "smtp-host": "SMTP Host",
   "smtp-port": "SMTP Port",
-  "smtp-username": "Username",
+  "smtp-username": "Tài khoản",
   "smtp-password": "Mật khẩu",
-  "smtp-tls": "TLS support",
-  "send-from": "From",
-  "send-smtp-test": "Send a test email to yourself",
-  "invitation-code": "Invitation Code",
-  "email-invite-register-subject": "__inviter__ sent you an invitation",
-  "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
-  "email-smtp-test-subject": "SMTP Test Email",
-  "email-smtp-test-text": "You have successfully sent an email",
-  "error-invitation-code-not-exist": "Invitation code doesn't exist",
+  "smtp-tls": "Hỗ trợ TLS",
+  "send-from": "Từ",
+  "send-smtp-test": "Gửi một email thử nghiệm cho chính bạn",
+  "invitation-code": "Mã lời mời",
+  "email-invite-register-subject": "__inviter__ đã gửi cho bạn lời mời",
+  "email-invite-register-text": "Gửi __user__,\n\n__inviter__ mời bạn tham gia bảng kanban để cộng tác.\n\nVui lòng truy cập liên kết bên dưới:\n__url__\n\nVà mã mời của bạn là: __icode__\n\nCảm ơn.",
+  "email-smtp-test-subject": "Email kiểm tra SMTP",
+  "email-smtp-test-text": "Bạn đã gửi thành công một email",
+  "error-invitation-code-not-exist": "Mã lời mời không tồn tại",
   "error-notAuthorized": "Bạn không được phép xem trang này.",
-  "webhook-title": "Webhook Name",
-  "webhook-token": "Token (Optional for Authentication)",
-  "outgoing-webhooks": "Outgoing Webhooks",
-  "bidirectional-webhooks": "Two-Way Webhooks",
-  "outgoingWebhooksPopup-title": "Outgoing Webhooks",
-  "boardCardTitlePopup-title": "Card Title Filter",
-  "disable-webhook": "Disable This Webhook",
-  "global-webhook": "Global Webhooks",
-  "new-outgoing-webhook": "New Outgoing Webhook",
-  "no-name": "(Unknown)",
-  "Node_version": "Node version",
-  "Meteor_version": "Meteor version",
-  "MongoDB_version": "MongoDB version",
+  "webhook-title": "Tên Webhook",
+  "webhook-token": "Mã thông báo (Tùy chọn để xác thực)",
+  "outgoing-webhooks": "Webhooks gửi đi",
+  "bidirectional-webhooks": "Webhooks hai chiều",
+  "outgoingWebhooksPopup-title": "Webhook gửi đi",
+  "boardCardTitlePopup-title": "Lọc tiêu đề thẻ",
+  "disable-webhook": "Vô hiệu hóa Webhook này",
+  "global-webhook": "Webhook toàn cầu",
+  "new-outgoing-webhook": "Webhook gửi đi mới",
+  "no-name": "(Không xác định)",
+  "Node_version": "Phiên bản Node",
+  "Meteor_version": "Phiên bản Meteor",
+  "MongoDB_version": "Phiên bản MongoDB",
   "MongoDB_storage_engine": "MongoDB storage engine",
   "MongoDB_Oplog_enabled": "MongoDB Oplog enabled",
   "OS_Arch": "OS Arch",
-  "OS_Cpus": "OS CPU Count",
-  "OS_Freemem": "OS Free Memory",
-  "OS_Loadavg": "OS Load Average",
-  "OS_Platform": "OS Platform",
-  "OS_Release": "OS Release",
-  "OS_Totalmem": "OS Total Memory",
-  "OS_Type": "OS Type",
-  "OS_Uptime": "OS Uptime",
-  "days": "days",
-  "hours": "hours",
-  "minutes": "minutes",
-  "seconds": "seconds",
-  "show-field-on-card": "Show this field on card",
-  "automatically-field-on-card": "Add field to new cards",
-  "always-field-on-card": "Add field to all cards",
-  "showLabel-field-on-card": "Show field label on minicard",
-  "yes": "Yes",
-  "no": "No",
-  "accounts": "Accounts",
-  "accounts-allowEmailChange": "Allow Email Change",
-  "accounts-allowUserNameChange": "Allow Username Change",
-  "createdAt": "Created at",
-  "modifiedAt": "Modified at",
-  "verified": "Verified",
-  "active": "Active",
-  "card-received": "Received",
-  "card-received-on": "Received on",
-  "card-end": "End",
-  "card-end-on": "Ends on",
-  "editCardReceivedDatePopup-title": "Change received date",
-  "editCardEndDatePopup-title": "Change end date",
-  "setCardColorPopup-title": "Set color",
-  "setCardActionsColorPopup-title": "Choose a color",
-  "setSwimlaneColorPopup-title": "Choose a color",
-  "setListColorPopup-title": "Choose a color",
+  "OS_Cpus": "S CPU",
+  "OS_Freemem": "Bộ nhớ trống",
+  "OS_Loadavg": "Tải trung bình",
+  "OS_Platform": "Nền tảng",
+  "OS_Release": "Phiên bản",
+  "OS_Totalmem": "Tổng bộ nhớ hệ điều hành",
+  "OS_Type": "Kiểu hệ điều hành",
+  "OS_Uptime": "Thời gian chạy",
+  "days": "ngày",
+  "hours": "giờ",
+  "minutes": "phút",
+  "seconds": "giây",
+  "show-field-on-card": "Hiển thị trường này trên thẻ",
+  "automatically-field-on-card": "Thêm trường vào thẻ mới",
+  "always-field-on-card": "Thêm trường vào tất cả các thẻ",
+  "showLabel-field-on-card": "Hiển thị nhãn trường trên minicard",
+  "yes": "",
+  "no": "Không",
+  "accounts": "Tài khoản",
+  "accounts-allowEmailChange": "Cho phép thay đổi email",
+  "accounts-allowUserNameChange": "Cho phép thay đổi tên người dùng",
+  "createdAt": "Được tạo lúc",
+  "modifiedAt": "Được sửa đổi lúc",
+  "verified": "Đã xác minh",
+  "active": "Hoạt động",
+  "card-received": "Đã nhận",
+  "card-received-on": "Nhận được trên",
+  "card-end": "Kết thúc",
+  "card-end-on": "Kết thúc vào",
+  "editCardReceivedDatePopup-title": "Thay đổi ngày nhận",
+  "editCardEndDatePopup-title": "Thay đổi ngày kết thúc",
+  "setCardColorPopup-title": "Đặt màu",
+  "setCardActionsColorPopup-title": "Chọn một màu",
+  "setSwimlaneColorPopup-title": "Chọn một màu",
+  "setListColorPopup-title": "Chọn một màu",
   "assigned-by": "Được chỉ định bởi",
   "requested-by": "Yêu cầu bởi",
-  "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+  "board-delete-notice": "Việc xóa là vĩnh viễn. Bạn sẽ mất tất cả danh sách, thẻ và hành động liên quan đến bảng này.",
   "delete-board-confirm-popup": "Tất cả danh sách, thẻ, nhãn và hoạt động sẽ bị xóa và bạn sẽ không thể khôi phục nội dung bảng. Không thể hoàn tác.",
   "boardDeletePopup-title": "Xoá Bảng?",
   "delete-board": "Xoá Bảng",
   "default-subtasks-board": "Nhiệm vụ phụ cho __board__ bảng",
-  "default": "Default",
-  "queue": "Queue",
+  "default": "Mặc định",
+  "queue": "Hàng đợi",
   "subtask-settings": "Cài đặt Nhiệm vụ phụ",
-  "card-settings": "Card Settings",
+  "card-settings": "Cài đặt Card",
   "boardSubtaskSettingsPopup-title": "Cài đặt Bảng Nhiệm vụ phụ",
-  "boardCardSettingsPopup-title": "Card Settings",
+  "boardCardSettingsPopup-title": "Cài đặt thẻ",
   "deposit-subtasks-board": "Gửi các nhiệm vụ phụ vào bảng này:",
   "deposit-subtasks-list": "Danh sách đích cho các nhiệm vụ phụ được gửi tại đây:",
-  "show-parent-in-minicard": "Show parent in minicard:",
-  "prefix-with-full-path": "Prefix with full path",
-  "prefix-with-parent": "Prefix with parent",
-  "subtext-with-full-path": "Subtext with full path",
-  "subtext-with-parent": "Subtext with parent",
-  "change-card-parent": "Change card's parent",
-  "parent-card": "Parent card",
-  "source-board": "Source board",
-  "no-parent": "Don't show parent",
-  "activity-added-label": "added label '%s' to %s",
-  "activity-removed-label": "removed label '%s' from %s",
+  "show-parent-in-minicard": "Hiện cha mẹ trong minicard:",
+  "prefix-with-full-path": "Tiền tố với đường dẫn đầy đủ",
+  "prefix-with-parent": "Tiền tố với cha mẹ",
+  "subtext-with-full-path": "Văn bản phụ với đường dẫn đầy đủ",
+  "subtext-with-parent": "Văn bản phụ với cha mẹ",
+  "change-card-parent": "Thay đổi phụ huynh của thẻ",
+  "parent-card": "Thẻ cha",
+  "source-board": "Bảng nguồn",
+  "no-parent": "Không hiển thị cho cha mẹ",
+  "activity-added-label": "đã thêm nhãn '%s' vào %s",
+  "activity-removed-label": "đã xóa nhãn '%s' khỏi %s",
   "activity-delete-attach": "đã xóa một tệp đính kèm khỏi %s",
-  "activity-added-label-card": "added label '%s'",
-  "activity-removed-label-card": "removed label '%s'",
+  "activity-added-label-card": "đã thêm nhãn '%s'",
+  "activity-removed-label-card": "đã xóa nhãn '%s'",
   "activity-delete-attach-card": "đã xóa một tệp đính kèm",
-  "activity-set-customfield": "set custom field '%s' to '%s' in %s",
-  "activity-unset-customfield": "unset custom field '%s' in %s",
-  "r-rule": "Rule",
-  "r-add-trigger": "Add trigger",
-  "r-add-action": "Add action",
-  "r-board-rules": "Board rules",
-  "r-add-rule": "Add rule",
+  "activity-set-customfield": "đặt trường tùy chỉnh '%s' thành '%s' trong %s",
+  "activity-unset-customfield": "bỏ đặt trường tùy chỉnh '%s' trong %s",
+  "r-rule": "Quy tắc",
+  "r-add-trigger": "Thêm trình kích hoạt",
+  "r-add-action": "Thêm hành động",
+  "r-board-rules": "Quy tắc bảng",
+  "r-add-rule": "Thêm quy tắc",
   "r-view-rule": "Xem quy tắc",
   "r-delete-rule": "Xoá quy tắc",
-  "r-new-rule-name": "New rule title",
-  "r-no-rules": "No rules",
-  "r-trigger": "Trigger",
-  "r-action": "Action",
-  "r-when-a-card": "When a card",
-  "r-is": "is",
-  "r-is-moved": "is moved",
-  "r-added-to": "Added to",
-  "r-removed-from": "Removed from",
-  "r-the-board": "the board",
-  "r-list": "list",
-  "list": "List",
-  "set-filter": "Set Filter",
-  "r-moved-to": "Moved to",
-  "r-moved-from": "Moved from",
-  "r-archived": "Moved to Archive",
-  "r-unarchived": "Restored from Archive",
-  "r-a-card": "a card",
-  "r-when-a-label-is": "When a label is",
-  "r-when-the-label": "When the label",
-  "r-list-name": "list name",
-  "r-when-a-member": "When a member is",
-  "r-when-the-member": "When the member",
-  "r-name": "name",
-  "r-when-a-attach": "When an attachment",
-  "r-when-a-checklist": "When a checklist is",
-  "r-when-the-checklist": "When the checklist",
-  "r-completed": "Completed",
-  "r-made-incomplete": "Made incomplete",
-  "r-when-a-item": "When a checklist item is",
-  "r-when-the-item": "When the checklist item",
-  "r-checked": "Checked",
-  "r-unchecked": "Unchecked",
-  "r-move-card-to": "Move card to",
-  "r-top-of": "Top of",
-  "r-bottom-of": "Bottom of",
-  "r-its-list": "its list",
-  "r-archive": "Move to Archive",
-  "r-unarchive": "Restore from Archive",
-  "r-card": "card",
+  "r-new-rule-name": "Tiêu đề quy tắc mới",
+  "r-no-rules": "Không có quy tắc",
+  "r-trigger": "Kích hoạt",
+  "r-action": "Hoạt động",
+  "r-when-a-card": "Khi một thẻ",
+  "r-is": "",
+  "r-is-moved": "được chuyển đi",
+  "r-added-to": "Đã thêm vào",
+  "r-removed-from": "Bị loại khỏi",
+  "r-the-board": "bảng",
+  "r-list": "danh sách",
+  "list": "Danh sách",
+  "set-filter": "Đặt bộ lọc",
+  "r-moved-to": "Chuyển đến",
+  "r-moved-from": "Đã di chuyển từ",
+  "r-archived": "Đã chuyển đến Lưu trữ",
+  "r-unarchived": "Đã khôi phục từ lưu trữ",
+  "r-a-card": "thẻ",
+  "r-when-a-label-is": "Khi một nhãn là",
+  "r-when-the-label": "Khi nhãn",
+  "r-list-name": "tên danh sách",
+  "r-when-a-member": "Khi một thành viên là",
+  "r-when-the-member": "Khi thành viên",
+  "r-name": "n",
+  "r-when-a-attach": "Khi một tệp đính kèm",
+  "r-when-a-checklist": "Khi một checklist là",
+  "r-when-the-checklist": "Khi checklist",
+  "r-completed": "Đã hoàn thành",
+  "r-made-incomplete": "Làm chưa hoàn thành",
+  "r-when-a-item": "Khi một mục checklist là",
+  "r-when-the-item": "Khi mục checklist",
+  "r-checked": "Đã chọn",
+  "r-unchecked": "Đã bỏ chọn",
+  "r-move-card-to": "Di chuyển thẻ đến",
+  "r-top-of": "Trên cùng của",
+  "r-bottom-of": "Dưới cùng của",
+  "r-its-list": "danh sách của nó",
+  "r-archive": "Di chuyển đến Lưu trữ",
+  "r-unarchive": "Khôi phục từ Lưu trữ",
+  "r-card": "thẻ",
   "r-add": "Thêm",
-  "r-remove": "Remove",
-  "r-label": "label",
-  "r-member": "member",
-  "r-remove-all": "Remove all members from the card",
-  "r-set-color": "Set color to",
+  "r-remove": "Xóa",
+  "r-label": "nhãn",
+  "r-member": "thành viên",
+  "r-remove-all": "Xóa tất cả thành viên khỏi thẻ",
+  "r-set-color": "Đặt màu cho",
   "r-checklist": "checklist",
-  "r-check-all": "Check all",
-  "r-uncheck-all": "Uncheck all",
-  "r-items-check": "items of checklist",
-  "r-check": "Check",
-  "r-uncheck": "Uncheck",
-  "r-item": "item",
-  "r-of-checklist": "of checklist",
-  "r-send-email": "Send an email",
-  "r-to": "to",
-  "r-of": "of",
-  "r-subject": "subject",
-  "r-rule-details": "Rule details",
-  "r-d-move-to-top-gen": "Move card to top of its list",
-  "r-d-move-to-top-spec": "Move card to top of list",
-  "r-d-move-to-bottom-gen": "Move card to bottom of its list",
-  "r-d-move-to-bottom-spec": "Move card to bottom of list",
-  "r-d-send-email": "Send email",
-  "r-d-send-email-to": "to",
-  "r-d-send-email-subject": "subject",
-  "r-d-send-email-message": "message",
-  "r-d-archive": "Move card to Archive",
-  "r-d-unarchive": "Restore card from Archive",
-  "r-d-add-label": "Add label",
-  "r-d-remove-label": "Remove label",
-  "r-create-card": "Create new card",
-  "r-in-list": "in list",
-  "r-in-swimlane": "in swimlane",
-  "r-d-add-member": "Add member",
-  "r-d-remove-member": "Remove member",
-  "r-d-remove-all-member": "Remove all member",
-  "r-d-check-all": "Check all items of a list",
-  "r-d-uncheck-all": "Uncheck all items of a list",
-  "r-d-check-one": "Check item",
-  "r-d-uncheck-one": "Uncheck item",
-  "r-d-check-of-list": "of checklist",
-  "r-d-add-checklist": "Add checklist",
-  "r-d-remove-checklist": "Remove checklist",
+  "r-check-all": "Đánh dấu tất cả",
+  "r-uncheck-all": "Bỏ đánh dấu tất cả",
+  "r-items-check": "mục của checklist",
+  "r-check": "Chọn",
+  "r-uncheck": "Bỏ chọn",
+  "r-item": "mục",
+  "r-of-checklist": "của checklist",
+  "r-send-email": "Gửi email",
+  "r-to": "đến",
+  "r-of": "của",
+  "r-subject": "Chủ đề",
+  "r-rule-details": "Chi tiết quy tắc",
+  "r-d-move-to-top-gen": "Di chuyển thẻ lên đầu danh sách của nó",
+  "r-d-move-to-top-spec": "Di chuyển thẻ lên đầu của danh sách",
+  "r-d-move-to-bottom-gen": "Di chuyển thẻ xuống cuối danh sách của nó",
+  "r-d-move-to-bottom-spec": "Di chuyển thẻ xuống cuối của danh sách",
+  "r-d-send-email": "Gửi email",
+  "r-d-send-email-to": "đến",
+  "r-d-send-email-subject": "Chủ đề",
+  "r-d-send-email-message": "tin nhắn",
+  "r-d-archive": "Di chuyển thẻ vào Lưu trữ",
+  "r-d-unarchive": "Khôi phục thẻ từ Lưu trữ",
+  "r-d-add-label": "Thêm nhãn",
+  "r-d-remove-label": "Xóa nhãn",
+  "r-create-card": "Tạo thẻ mới",
+  "r-in-list": "trong danh sách",
+  "r-in-swimlane": "trong làn ngang",
+  "r-d-add-member": "Thêm thành viên",
+  "r-d-remove-member": "Xóa thành viên",
+  "r-d-remove-all-member": "Xóa tất cả thành viên",
+  "r-d-check-all": "Check tất cả các mục của một danh sách",
+  "r-d-uncheck-all": "Bỏ check tất cả các mục của danh sách",
+  "r-d-check-one": "Chọn mục",
+  "r-d-uncheck-one": "Bỏ chọn mục",
+  "r-d-check-of-list": "của checklist",
+  "r-d-add-checklist": "Thêm checklist",
+  "r-d-remove-checklist": "Xóa checklist",
   "r-by": "bởi",
-  "r-add-checklist": "Add checklist",
-  "r-with-items": "with items",
+  "r-add-checklist": "Thêm checklist",
+  "r-with-items": "với các mục",
   "r-items-list": "item1,item2,item3",
-  "r-add-swimlane": "Add swimlane",
-  "r-swimlane-name": "swimlane name",
-  "r-board-note": "Note: leave a field empty to match every possible value.",
-  "r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
-  "r-when-a-card-is-moved": "When a card is moved to another list",
-  "r-set": "Set",
-  "r-update": "Update",
-  "r-datefield": "date field",
+  "r-add-swimlane": "Thêm làn ngang",
+  "r-swimlane-name": "tên làn ngang",
+  "r-board-note": "Lưu ý: để trống một trường để khớp với mọi giá trị có thể.",
+  "r-checklist-note": "Lưu ý: các mục của danh sách kiểm tra phải được viết dưới dạng các giá trị được phân tách bằng dấu phẩy.",
+  "r-when-a-card-is-moved": "Khi một thẻ được chuyển sang một danh sách khác",
+  "r-set": "Đặt",
+  "r-update": "Cập nhật",
+  "r-datefield": "trường ngày tháng",
   "r-df-start-at": "bắt đầu",
-  "r-df-due-at": "due",
-  "r-df-end-at": "end",
-  "r-df-received-at": "received",
-  "r-to-current-datetime": "to current date/time",
-  "r-remove-value-from": "Remove value from",
+  "r-df-due-at": "đến hạn",
+  "r-df-end-at": "kết thúc",
+  "r-df-received-at": "đã nhận",
+  "r-to-current-datetime": "đến ngày/giờ hiện tại",
+  "r-remove-value-from": "Xóa giá trị khỏi",
   "ldap": "LDAP",
   "oauth2": "OAuth2",
   "cas": "CAS",
-  "authentication-method": "Authentication method",
-  "authentication-type": "Authentication type",
-  "custom-product-name": "Custom Product Name",
-  "layout": "Layout",
+  "authentication-method": "Phương thức xác thực",
+  "authentication-type": "Loại xác thực",
+  "custom-product-name": "Tên sản phẩm tùy chỉnh",
+  "layout": "Bố cục",
   "hide-logo": "Ẩn Logo",
-  "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
-  "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
-  "error-undefined": "Something went wrong",
-  "error-ldap-login": "An error occurred while trying to login",
-  "display-authentication-method": "Display Authentication Method",
-  "default-authentication-method": "Default Authentication Method",
-  "duplicate-board": "Duplicate Board",
-  "org-number": "The number of organizations is:",
-  "team-number": "The number of teams is:",
-  "people-number": "The number of people is:",
+  "add-custom-html-after-body-start": "Thêm HTML tùy chỉnh sau thẻ <body>",
+  "add-custom-html-before-body-end": "Thêm HTML tùy chỉnh trước thẻ </body>",
+  "error-undefined": "Đã xảy ra sự cố",
+  "error-ldap-login": "Đã xảy ra lỗi khi cố gắng đăng nhập",
+  "display-authentication-method": "Hiển thị phương pháp xác thực",
+  "default-authentication-method": "Phương thức xác thực mặc định",
+  "duplicate-board": "Bảng trùng lặp",
+  "org-number": "Số lượng các tổ chức là:",
+  "team-number": "Số lượng các đội là:",
+  "people-number": "Số người là:",
   "swimlaneDeletePopup-title": "Xóa Swimlane?",
-  "swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
-  "restore-all": "Restore all",
+  "swimlane-delete-pop": "Tất cả các hành động sẽ bị xóa khỏi nguồn cấp dữ liệu hoạt động và bạn sẽ không thể khôi phục swimlane. Không có hoàn tác.",
+  "restore-all": "Khôi phục lại tất cả",
   "delete-all": "Xoá tất cả",
-  "loading": "Loading, please wait.",
-  "previous_as": "last time was",
-  "act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
-  "act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
-  "act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
-  "act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
-  "a-dueAt": "modified due time to be",
-  "a-endAt": "modified ending time to be",
-  "a-startAt": "modified starting time to be",
-  "a-receivedAt": "modified received time to be",
-  "almostdue": "current due time %s is approaching",
-  "pastdue": "current due time %s is past",
-  "duenow": "current due time %s is today",
-  "act-newDue": "__list__/__card__ has 1st due reminder [__board__]",
-  "act-withDue": "__list__/__card__ due reminders [__board__]",
-  "act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
-  "act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
-  "act-duenow": "was reminding the current due (__timeValue__) of __card__ is now",
-  "act-atUserComment": "You were mentioned in [__board__] __list__/__card__",
+  "loading": "Đang tải, vui lòng đợi.",
+  "previous_as": "lần trước là",
+  "act-a-dueAt": "sửa đổi thời gian đến hạn \nKhi nào: __timeValue__\nỞ đâu: __card__\n đến hạn trước đó là __timeOldValue__",
+  "act-a-endAt": "đã sửa đổi thời gian kết thúc thành __timeValue__ từ (__timeOldValue__)",
+  "act-a-startAt": "sửa đổi thời gian bắt đầu thành __timeValue__ from (__timeOldValue__)",
+  "act-a-receivedAt": "đã sửa đổi thời gian nhận thành __timeValue__ từ (__timeOldValue__)",
+  "a-dueAt": "sửa đổi thời gian đến hạn thành",
+  "a-endAt": "đã sửa đổi thời gian kết thúc thành",
+  "a-startAt": "thời gian bắt đầu được sửa đổi thành",
+  "a-receivedAt": "đã sửa đổi thời gian nhận được",
+  "almostdue": "thời gian đến hạn hiện tại %s đang đến gần",
+  "pastdue": "thời gian đến hạn hiện tại %s đã qua",
+  "duenow": "giờ đến hạn hiện tại %s là hôm nay",
+  "act-newDue": "__list__/__card__ có lời nhắc đến hạn lần 1 [__board__]",
+  "act-withDue": "__list__/__card__ lời nhắc đến hạn [__board__]",
+  "act-almostdue": "đang nhắc nhở thời hạn hiện tại là (__timeValue__) của __card__ đang đến gần",
+  "act-pastdue": "đang nhắc nhở thời hạn hiện tại (__timeValue__) của __card__ đã qua",
+  "act-duenow": "đã được nhắc nhở hiện tại đến hạn (__timeValue__) của __card__ bây giờ là",
+  "act-atUserComment": "Bạn đã được đề cập trong [__board__] __list__/__card__",
   "delete-user-confirm-popup": "Bạn có chắc chắn muốn xóa tài khoản này không? Không thể hoàn tác.",
   "accounts-allowUserDelete": "Cho phép người dùng tự xóa tài khoản của họ",
   "hide-minicard-label-text": "Ẩn nhãn minicard",
-  "show-desktop-drag-handles": "Show desktop drag handles",
+  "show-desktop-drag-handles": "Hiển thị nút kéo thả trên Desktop",
   "assignee": "Người được giao",
   "cardAssigneesPopup-title": "Người được giao",
-  "addmore-detail": "Add a more detailed description",
-  "show-on-card": "Show on Card",
-  "new": "New",
+  "addmore-detail": "Thêm mô tả chi tiết hơn",
+  "show-on-card": "Hiển thị trên thẻ",
+  "new": "Mới",
   "editOrgPopup-title": "Sửa Cơ quan",
-  "newOrgPopup-title": "New Organization",
+  "newOrgPopup-title": "Tổ chức mới",
   "editTeamPopup-title": "Sửa Nhóm",
-  "newTeamPopup-title": "New Team",
+  "newTeamPopup-title": "Team Mới",
   "editUserPopup-title": "Sửa Người dùng",
-  "newUserPopup-title": "New User",
+  "newUserPopup-title": "Người dùng mới",
   "notifications": "Thông báo",
   "view-all": "Xem Tất cả",
   "filter-by-unread": "Lọc theo Chưa đọc",
-  "mark-all-as-read": "Mark all as read",
-  "remove-all-read": "Remove all read",
-  "allow-rename": "Allow Rename",
-  "allowRenamePopup-title": "Allow Rename",
-  "start-day-of-week": "Set day of the week start",
-  "monday": "Monday",
-  "tuesday": "Tuesday",
-  "wednesday": "Wednesday",
-  "thursday": "Thursday",
-  "friday": "Friday",
-  "saturday": "Saturday",
-  "sunday": "Sunday",
-  "status": "Status",
-  "swimlane": "Swimlane",
-  "owner": "Owner",
-  "last-modified-at": "Last modified at",
-  "last-activity": "Last activity",
-  "voting": "Voting",
-  "archived": "Archived",
+  "mark-all-as-read": "Đánh dấu tất cả là đã đọc",
+  "remove-all-read": "Xóa tất cả đã đọc",
+  "allow-rename": "Cho phép đổi tên",
+  "allowRenamePopup-title": "Cho phép đổi tên",
+  "start-day-of-week": "Đặt ngày bắt đầu trong tuần",
+  "monday": "Thứ hai",
+  "tuesday": "Thứ ba",
+  "wednesday": "Thứ tư",
+  "thursday": "Thứ năm",
+  "friday": "Thứ sáu",
+  "saturday": "Thứ bảy",
+  "sunday": "Chủ nhật",
+  "status": "Trạng thái",
+  "swimlane": "Làn ngang",
+  "owner": "Chủ sở hữu",
+  "last-modified-at": "Sửa đổi lần cuối lúc",
+  "last-activity": "Hoạt động cuối",
+  "voting": "Bình chọn",
+  "archived": "Đã lưu trữ",
   "delete-linked-card-before-this-card": "Bạn không thể xóa thẻ này trước khi xóa lần đầu tiên thẻ được liên kết có",
   "delete-linked-cards-before-this-list": "Bạn không thể xóa danh sách này trước khi xóa lần đầu tiên các thẻ được liên kết trỏ đến các thẻ trong danh sách này",
   "hide-checked-items": "Ẩn đã hoàn thành",
-  "task": "Task",
-  "create-task": "Create Task",
+  "task": "Nhiệm vụ",
+  "create-task": "Tạo Nhiệm Vụ",
   "ok": "OK",
-  "organizations": "Organizations",
+  "organizations": "Các tổ chức",
   "teams": "Teams",
-  "displayName": "Display Name",
-  "shortName": "Short Name",
+  "displayName": "Tên Hiển Thị",
+  "shortName": "Tên ngắn",
   "website": "Website",
-  "person": "Person",
-  "my-cards": "My Cards",
-  "card": "Card",
-  "board": "Board",
+  "person": "Cá nhân",
+  "my-cards": "Thẻ của tôi",
+  "card": "Thẻ",
+  "board": "Bảng",
   "context-separator": "/",
-  "myCardsSortChange-title": "My Cards Sort",
-  "myCardsSortChangePopup-title": "My Cards Sort",
+  "myCardsSortChange-title": "Sắp xếp thẻ của tôi",
+  "myCardsSortChangePopup-title": "Sắp xếp thẻ của tôi",
   "myCardsSortChange-choice-board": "Theo bảng",
   "myCardsSortChange-choice-dueat": "Theo Ngày đến hạn",
-  "dueCards-title": "Due Cards",
+  "dueCards-title": "Thẻ đến hạn",
   "dueCardsViewChange-title": "Xem Thẻ đến hạn",
   "dueCardsViewChangePopup-title": "Xem Thẻ đến hạn",
-  "dueCardsViewChange-choice-me": "Me",
-  "dueCardsViewChange-choice-all": "All Users",
-  "dueCardsViewChange-choice-all-description": "Shows all incomplete cards with a *Due* date from boards for which the user has permission.",
-  "broken-cards": "Broken Cards",
-  "board-title-not-found": "Board '%s' not found.",
-  "swimlane-title-not-found": "Swimlane '%s' not found.",
-  "list-title-not-found": "List '%s' not found.",
-  "label-not-found": "Label '%s' not found.",
-  "label-color-not-found": "Label color %s not found.",
-  "user-username-not-found": "Username '%s' not found.",
-  "comment-not-found": "Card with comment containing text '%s' not found.",
+  "dueCardsViewChange-choice-me": "Tôi",
+  "dueCardsViewChange-choice-all": "Tất cả người dùng",
+  "dueCardsViewChange-choice-all-description": "Hiển thị tất cả các thẻ chưa hoàn thành có ngày *Đến hạn* từ bảng mà người dùng có quyền.",
+  "broken-cards": "Thẻ bị hỏng",
+  "board-title-not-found": "Không tìm thấy bảng '%s'",
+  "swimlane-title-not-found": "Không tìm thấy làn ngang '%s'",
+  "list-title-not-found": "Không tìm thấy danh sách '%s'",
+  "label-not-found": "Không tìm thấy nhãn '%s'",
+  "label-color-not-found": "Không tìm thấy màu nhãn %s",
+  "user-username-not-found": "Không tìm thấy tên người dùng '%s'",
+  "comment-not-found": "Không tìm thấy thẻ có bình luận chứa văn bản '%s'",
   "globalSearch-title": "Tìm tất cả các Bảng",
-  "no-cards-found": "No Cards Found",
-  "one-card-found": "One Card Found",
-  "n-cards-found": "%s Cards Found",
-  "n-n-of-n-cards-found": "__start__-__end__ of __total__ Cards Found",
-  "operator-board": "board",
+  "no-cards-found": "Không tìm thấy thẻ",
+  "one-card-found": "Đã tìm thấy một thẻ",
+  "n-cards-found": "Đã tìm thấy %s thẻ",
+  "n-n-of-n-cards-found": "__start__-__end__ của __total__ Thẻ được Tìm thấy",
+  "operator-board": "bảng",
   "operator-board-abbrev": "b",
-  "operator-swimlane": "swimlane",
+  "operator-swimlane": "làn ngang",
   "operator-swimlane-abbrev": "s",
-  "operator-list": "list",
+  "operator-list": "danh sách",
   "operator-list-abbrev": "l",
-  "operator-label": "label",
+  "operator-label": "nhãn",
   "operator-label-abbrev": "#",
-  "operator-user": "user",
+  "operator-user": "người dùng",
   "operator-user-abbrev": "@",
-  "operator-member": "member",
+  "operator-member": "thành viên",
   "operator-member-abbrev": "m",
   "operator-assignee": "người được giao",
   "operator-assignee-abbrev": "a",
-  "operator-status": "status",
-  "operator-due": "due",
-  "operator-created": "created",
-  "operator-modified": "modified",
-  "operator-sort": "sort",
-  "operator-comment": "comment",
-  "operator-has": "has",
-  "operator-limit": "limit",
-  "predicate-archived": "archived",
-  "predicate-open": "open",
-  "predicate-ended": "ended",
-  "predicate-all": "all",
-  "predicate-overdue": "overdue",
-  "predicate-week": "week",
-  "predicate-month": "month",
-  "predicate-quarter": "quarter",
-  "predicate-year": "year",
-  "predicate-due": "due",
-  "predicate-modified": "modified",
-  "predicate-created": "created",
-  "predicate-attachment": "attachment",
-  "predicate-description": "description",
+  "operator-status": "trạng thái",
+  "operator-due": "đến hạn",
+  "operator-created": "đã tạo",
+  "operator-modified": "sửa đổi",
+  "operator-sort": "sắp xếp",
+  "operator-comment": "bình luận",
+  "operator-has": "",
+  "operator-limit": "giới hạn",
+  "predicate-archived": "được lưu trữ",
+  "predicate-open": "mở",
+  "predicate-ended": "đã kết thúc",
+  "predicate-all": "tất cả",
+  "predicate-overdue": "quá hạn",
+  "predicate-week": "tuần",
+  "predicate-month": "tháng",
+  "predicate-quarter": "quý",
+  "predicate-year": "năm",
+  "predicate-due": "đến hạn",
+  "predicate-modified": "sửa đổi",
+  "predicate-created": "đã tạo",
+  "predicate-attachment": "tập đính kèm",
+  "predicate-description": "mô tả",
   "predicate-checklist": "checklist",
   "predicate-start": "bắt đầu",
-  "predicate-end": "end",
+  "predicate-end": "kết thúc",
   "predicate-assignee": "người được giao",
-  "predicate-member": "member",
-  "predicate-public": "public",
-  "predicate-private": "private",
-  "operator-unknown-error": "%s is not an operator",
-  "operator-number-expected": "operator __operator__ expected a number, got '__value__'",
-  "operator-sort-invalid": "sort of '%s' is invalid",
-  "operator-status-invalid": "'%s' is not a valid status",
-  "operator-has-invalid": "%s is not a valid existence check",
-  "operator-limit-invalid": "%s is not a valid limit.  Limit should be a positive integer.",
+  "predicate-member": "thành viên",
+  "predicate-public": "công khai",
+  "predicate-private": "riêng tư",
+  "operator-unknown-error": "%s không phải là một toán tử",
+  "operator-number-expected": "toán tử __operator__ chấp nhận một số, có giá trị '__value__'",
+  "operator-sort-invalid": "sắp xếp của '%s' không hợp lệ",
+  "operator-status-invalid": "'%s' không phải là trạng thái hợp lệ",
+  "operator-has-invalid": "%s không phải là một kiểm tra sự tồn tại hợp lệ",
+  "operator-limit-invalid": "%s không phải là giới hạn hợp lệ. Giới hạn phải là một số nguyên dương.",
   "next-page": "Trang tiếp theo",
   "previous-page": "Trang trước",
   "heading-notes": "Ghi chú",
   "globalSearch-instructions-heading": "Hướng dẫn Tìm kiếm",
-  "globalSearch-instructions-description": "Tìm kiếm có thể bao gồm các toán tử để tinh chỉnh tìm kiếm. Các toán tử được chỉ định bằng cách viết tên toán tử và giá trị được phân tách bằng dấu hai chấm. Ví dụ, một đặc tả toán tử của `danh sách: Bị chặn` sẽ giới hạn tìm kiếm đối với các thẻ có trong danh sách có tên là * Bị chặn *. Nếu giá trị chứa khoảng trắng hoặc ký tự đặc biệt, nó phải được đặt trong dấu ngoặc kép (ví dụ: `__operator_list __:\" To Review \"`).",
-  "globalSearch-instructions-operators": "Available operators:",
-  "globalSearch-instructions-operator-board": "`__operator_board__:<title>` - cards in boards matching the specified *<title>*",
-  "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - cards in lists matching the specified *<title>*",
-  "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - cards in swimlanes matching the specified *<title>*",
-  "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - cards with a comment containing *<text>*.",
-  "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - cards that have a label matching *<color>* or *<name>",
-  "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - shorthand for `__operator_label__:<color>` or `__operator_label__:<name>`",
-  "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - cards where *<username>* is a *member* or *assignee*",
-  "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:<username>`",
-  "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - cards where *<username>* is a *member*",
-  "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - cards where *<username>* is an *assignee*",
-  "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cards which are due up to *<n>* days from now.  `__operator_due__:__predicate_overdue__ lists all cards past their due date.",
-  "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cards which were created *<n>* days ago or less",
-  "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cards which were modified *<n>* days ago or less",
-  "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - where *<status>* is one of the following:",
-  "globalSearch-instructions-status-archived": "`__predicate_archived__` - archived cards",
-  "globalSearch-instructions-status-all": "`__predicate_all__` - all archived and unarchived cards",
-  "globalSearch-instructions-status-ended": "`__predicate_ended__` - cards with an end date",
-  "globalSearch-instructions-status-public": "`__predicate_public__` - cards only in public boards",
-  "globalSearch-instructions-status-private": "`__predicate_private__` - cards only in private boards",
-  "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - where *<field>* is one of `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` or `__predicate_member__`.  Placing a `-` in front of *<field>* searches for the absence of a value in that field (e.g. `has:-due` searches for cards without a due date).",
-  "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - where *<sort-name>* is one of `__predicate_due__`, `__predicate_created__` or `__predicate_modified__`.  For a descending sort, place a `-` in front of the sort name.",
-  "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - where *<n>* is a positive integer expressing the number of cards to be displayed per page.",
+  "globalSearch-instructions-description": "Tìm kiếm có thể bao gồm các toán tử để tinh chỉnh tìm kiếm. Toán tử được chỉ định bằng cách viết tên toán tử và giá trị được phân tách bằng dấu hai chấm. Ví dụ, một đặc tả toán tử của `list:Blocked` sẽ giới hạn tìm kiếm đối với các thẻ có trong danh sách có tên là *Blocked*.  Nếu giá trị chứa khoảng trắng hoặc ký tự đặc biệt, nó phải được đặt trong dấu ngoặc kép (ví dụ. `__operator_list__:\"To Review\"`).",
+  "globalSearch-instructions-operators": "Các toán tử có sẵn:",
+  "globalSearch-instructions-operator-board": "`__operator_board__:<title>` - thẻ trong bảng phù hợp với *<title>*",
+  "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - thẻ trong danh sách phù hợp với *<title>*",
+  "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - thẻ trong làn ngang phù hợp với *<title>*",
+  "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - thẻ có nhận xét chứa *<text>*.",
+  "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - thẻ có nhãn phù hợp *<color>* hoặc *<name>",
+  "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - viết tắt cho `__operator_label__:<color>` hoặc `__operator_label__:<name>`",
+  "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - thẻ trong đó *<username>* là *thành viên* hoặc *người được giao*",
+  "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - viết tắt cho `người dùng:<username>`",
+  "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - thẻ trong đó *<username>* là *thành viên*",
+  "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - thẻ trong đó *<username>* là *người được giao*",
+  "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - thẻ có thời hạn lên đến *<n>* ngày kể từ bây giờ.  `__operator_due__:__predicate_overdue__ liệt kê tất cả các thẻ đã quá hạn sử dụng.",
+  "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - thẻ đã được tạo *<n>* ngày trước hoặc ít hơn",
+  "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - thẻ đã được sửa đổi *<n>* ngày trước hoặc ít hơn",
+  "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - trong đó *<status>* là một trong các giá trị sau:",
+  "globalSearch-instructions-status-archived": "`__predicate_archived__` - thẻ đã lưu trữ",
+  "globalSearch-instructions-status-all": "`__predicate_all__` - tất cả các thẻ lưu trữ và hủy lưu trữ",
+  "globalSearch-instructions-status-ended": "`__predicate_ended__` - thẻ với ngày kết thúc",
+  "globalSearch-instructions-status-public": "`__predicate_public__` - chỉ thẻ trong bảng công khai",
+  "globalSearch-instructions-status-private": "`__predicate_private__` - chỉ thẻ trong bảng riêng tư",
+  "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - trong đó *<field>* là một trong `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` hoặc `__predicate_member__`.  Đặt dấu `-` trước *<field>* sẽ tìm kiếm sự không có giá trị trong trường đó (ví dụ. `has:-due` tìm kiếm các thẻ không có ngày đến hạn).",
+  "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - trong đó *<sort-name>* là một trong `__predicate_due__`, `__predicate_created__` hoặc `__predicate_modified__`.  Đối với sắp xếp giảm dần, hãy đặt dấu `-` trước tên sắp xếp.",
+  "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - trong đó *<n>* là một số nguyên dương thể hiện số lượng thẻ được hiển thị trên mỗi trang.",
   "globalSearch-instructions-notes-1": "Nhiều toán tử có thể được chỉ định.",
-  "globalSearch-instructions-notes-2": "Similar operators are *OR*ed together.  Cards that match any of the conditions will be returned.\n`__operator_list__:Available __operator_list__:Blocked` would return cards contained in any list named *Blocked* or *Available*.",
-  "globalSearch-instructions-notes-3": "Differing operators are *AND*ed together.  Only cards that match all of the differing operators are returned.  `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.",
-  "globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.",
+  "globalSearch-instructions-notes-2": "Các toán tử tương tự là *OR* cùng nhau. Các thẻ phù hợp với bất kỳ điều kiện nào sẽ được trả lại.\n`__operator_list__:Available __operator_list__:Blocked` sẽ trả lại các thẻ có trong bất kỳ danh sách nào có tên *Blocked* hoặc *Available*.",
+  "globalSearch-instructions-notes-3": "Các toán tử khác nhau là *AND* kết hợp với nhau. Chỉ những thẻ phù hợp với tất cả các toán tử khác nhau mới được trả lại. `__operator_list__:Available __operator_label__:red` chỉ trả về các thẻ trong danh sách *Có sẵn* với nhãn *red*.",
+  "globalSearch-instructions-notes-3-2": "Ngày có thể được chỉ định dưới dạng số nguyên dương hoặc âm hoặc sử dụng `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` hoặc `__predicate_year__` cho giai đoạn hiện tại.",
   "globalSearch-instructions-notes-4": "Tìm kiếm văn bản không phân biệt chữ hoa chữ thường.",
-  "globalSearch-instructions-notes-5": "By default archived cards are not searched.",
+  "globalSearch-instructions-notes-5": "Theo mặc định, thẻ đã lưu trữ không được tìm kiếm.",
   "link-to-search": "Liên kết đến tìm kiếm này",
   "excel-font": "Arial",
-  "number": "Number",
-  "label-colors": "Label Colors",
-  "label-names": "Label Names",
-  "archived-at": "archived at",
-  "sort-cards": "Sort Cards",
-  "cardsSortPopup-title": "Sort Cards",
-  "due-date": "Due Date",
-  "title-alphabetically": "Title (Alphabetically)",
-  "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "number": "Số",
+  "label-colors": "Màu Nhãn",
+  "label-names": "Tên Nhãn",
+  "archived-at": "được lưu trữ tại",
+  "sort-cards": "Sắp xếp thẻ",
+  "cardsSortPopup-title": "Sắp xếp thẻ",
+  "due-date": "Ngày đến hạn",
+  "title-alphabetically": "Tiêu đề (theo thứ tự bảng chữ cái)",
+  "created-at-newest-first": "Được tạo lúc (Mới nhất đầu tiên)",
+  "created-at-oldest-first": "Được tạo lúc (Cũ nhất trước)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 24 - 20
i18n/zh-CN.i18n.json

@@ -322,8 +322,8 @@
   "error-user-notAllowSelf": "无法邀请自己",
   "error-user-notCreated": "该用户未能成功创建",
   "error-username-taken": "此用户名已存在",
-  "error-orgname-taken": "This organization name is already taken",
-  "error-teamname-taken": "This team name is already taken",
+  "error-orgname-taken": "此组织名称已被使用",
+  "error-teamname-taken": "此团队名称已被使用",
   "error-email-taken": "此EMail已存在",
   "export-board": "导出看板",
   "export-board-json": "看板导出为JSON",
@@ -399,7 +399,7 @@
   "just-invited": "您刚刚被邀请加入此看板",
   "keyboard-shortcuts": "键盘快捷键",
   "label-create": "创建标签",
-  "label-default": "%s 标签 (默认)",
+  "label-default": "%s 标签(默认)",
   "label-delete-pop": "此操作不可逆,这将会删除该标签并清除它的历史记录。",
   "labels": "标签",
   "language": "语言",
@@ -528,10 +528,11 @@
   "uploaded-avatar": "头像已经上传",
   "custom-top-left-corner-logo-image-url": "通过图片链接设置左上角图标",
   "custom-top-left-corner-logo-link-url": "设置左上角图标链接地址",
-  "custom-top-left-corner-logo-height": "设置左上角图标高度. 默认值: 27",
-  "custom-login-logo-image-url": "设置登陆图标链接地址",
-  "custom-login-logo-link-url": "通过连接上传logo",
-  "text-below-custom-login-logo": "自定义登陆图标下方文字",
+  "custom-top-left-corner-logo-height": "设置左上角图标高度。默认值:27",
+  "custom-login-logo-image-url": "设置登录图标链接地址",
+  "custom-login-logo-link-url": "设置登录图标链接",
+  "text-below-custom-login-logo": "设置登录图标下方文字",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "用户名",
   "import-usernames": "导入用户名",
   "view-it": "查看",
@@ -634,7 +635,7 @@
   "boardDeletePopup-title": "删除看板?",
   "delete-board": "删除看板",
   "default-subtasks-board": "__board__ 看板的子任务",
-  "default": "缺省",
+  "default": "默认",
   "queue": "队列",
   "subtask-settings": "子任务设置",
   "card-settings": "卡片设置",
@@ -775,13 +776,13 @@
   "authentication-type": "认证类型",
   "custom-product-name": "自定义产品名称",
   "layout": "布局",
-  "hide-logo": "隐藏LOGO",
+  "hide-logo": "隐藏图标",
   "add-custom-html-after-body-start": "添加定制的HTML在开始<body>之前",
   "add-custom-html-before-body-end": "添加定制的HTML在结束</body>之后",
   "error-undefined": "出了点问题",
-  "error-ldap-login": "尝试登时出错",
+  "error-ldap-login": "尝试登时出错",
   "display-authentication-method": "显示认证方式",
-  "default-authentication-method": "缺省认证方式",
+  "default-authentication-method": "默认认证方式",
   "duplicate-board": "复制看板",
   "org-number": "组织数量为:",
   "team-number": "团队数量为:",
@@ -884,7 +885,7 @@
   "no-cards-found": "无法查询到卡片",
   "one-card-found": "查询到一个卡片",
   "n-cards-found": "查询到%s个卡片",
-  "n-n-of-n-cards-found": "__start__-__end__ of __total__ Cards Found",
+  "n-n-of-n-cards-found": "__start__-__end__ 共 __total__ 卡片被找到",
   "operator-board": "看板",
   "operator-board-abbrev": "b",
   "operator-swimlane": "泳道",
@@ -967,17 +968,20 @@
   "globalSearch-instructions-notes-3": "Differing operators are *AND*ed together.  Only cards that match all of the differing operators are returned.  `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.",
   "globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.",
   "globalSearch-instructions-notes-4": "文本搜索大小写不敏感。",
-  "globalSearch-instructions-notes-5": "By default archived cards are not searched.",
+  "globalSearch-instructions-notes-5": "默认情况下,不搜索存档卡片。",
   "link-to-search": "关联至本次查询",
   "excel-font": "Arial",
   "number": "数字",
   "label-colors": "标签颜色",
   "label-names": "标签名",
-  "archived-at": "archived at",
-  "sort-cards": "Sort Cards",
-  "cardsSortPopup-title": "Sort Cards",
-  "due-date": "Due Date",
-  "title-alphabetically": "Title (Alphabetically)",
-  "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "archived-at": "归档于",
+  "sort-cards": "排序卡片",
+  "cardsSortPopup-title": "排序卡片",
+  "due-date": "截至日期",
+  "title-alphabetically": "标题(按字母顺序)",
+  "created-at-newest-first": "创建时间(最新)",
+  "created-at-oldest-first": "创建时间(最旧)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/zh-HK.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "Custom Login Logo Image URL",
   "custom-login-logo-link-url": "Custom Login Logo Link URL",
   "text-below-custom-login-logo": "Text below Custom Login Logo",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "Username",
   "import-usernames": "Import Usernames",
   "view-it": "View it",
@@ -979,5 +980,8 @@
   "due-date": "Due Date",
   "title-alphabetically": "Title (Alphabetically)",
   "created-at-newest-first": "Created At (Newest First)",
-  "created-at-oldest-first": "Created At (Oldest First)"
+  "created-at-oldest-first": "Created At (Oldest First)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 5 - 1
i18n/zh-TW.i18n.json

@@ -532,6 +532,7 @@
   "custom-login-logo-image-url": "自訂登入商標圖示網址",
   "custom-login-logo-link-url": "自訂登入商標連結網址",
   "text-below-custom-login-logo": "登入商標下方文字",
+  "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line",
   "username": "使用者名稱",
   "import-usernames": "匯入使用者名稱",
   "view-it": "檢視",
@@ -979,5 +980,8 @@
   "due-date": "到期日",
   "title-alphabetically": "標題 (按字母順序)",
   "created-at-newest-first": "創建於(最新優先)",
-  "created-at-oldest-first": "創建於(最早優先)"
+  "created-at-oldest-first": "創建於(最早優先)",
+  "links-heading": "Links",
+  "hide-system-messages-of-all-users": "Hide system messages of all users",
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
 }

+ 41 - 28
models/customFields.js

@@ -307,7 +307,8 @@ if (Meteor.isServer) {
    *
    * @param {string} boardID the ID of the board
    * @param {string} customFieldId the ID of the custom field
-   * @return_type CustomFields
+   * @return_type [{_id: string,
+   *                boardIds: string}]
    */
   JsonRoutes.add(
     'GET',
@@ -377,9 +378,9 @@ if (Meteor.isServer) {
    * @param {string} name the name of the custom field
    * @param {string} type the type of the custom field
    * @param {string} settings the settings object of the custom field
-   * @param {boolean} showOnCard should we show the custom field on cards?
-   * @param {boolean} automaticallyOnCard should the custom fields automatically be added on cards?
-   * @param {boolean} showLabelOnMiniCard should the label of the custom field be shown on minicards?
+   * @param {boolean} showOnCard should we show the custom field on cards
+   * @param {boolean} automaticallyOnCard should the custom fields automatically be added on cards
+   * @param {boolean} showLabelOnMiniCard should the label of the custom field be shown on minicards
    * @return_type {_id: string}
    */
   JsonRoutes.add(
@@ -444,7 +445,7 @@ if (Meteor.isServer) {
    * @operation add_custom_field_dropdown_items
    * @summary Update a Custom Field's dropdown items
    *
-   * @param {string[]} items names of the custom field
+   * @param {string} [items] names of the custom field
    * @return_type {_id: string}
    */
   JsonRoutes.add(
@@ -453,27 +454,32 @@ if (Meteor.isServer) {
     (req, res) => {
       Authentication.checkUserId(req.userId);
 
-      if (req.body.hasOwnProperty('items') && Array.isArray(req.body.items)) {
-        CustomFields.direct.update(
-          { _id: req.params.customFieldId },
-          {
-            $push: {
-              'settings.dropdownItems': {
-                $each: req.body.items
-                  .filter(name => typeof name === 'string')
-                  .map(name => ({
-                    _id: Random.id(6),
-                    name,
-                  })),
+      const paramCustomFieldId = req.params.customFieldId;
+      const paramItems = req.body.items;
+
+      if (req.body.hasOwnProperty('items')) {
+        if (Array.isArray(paramItems)) {
+          CustomFields.direct.update(
+            { _id: paramCustomFieldId },
+            {
+              $push: {
+                'settings.dropdownItems': {
+                  $each: paramItems
+                    .filter(name => typeof name === 'string')
+                    .map(name => ({
+                      _id: Random.id(6),
+                      name,
+                    })),
+                },
               },
             },
-          },
-        );
+          );
+        }
       }
 
       JsonRoutes.sendResult(res, {
         code: 200,
-        data: { _id: req.params.customFieldId },
+        data: { _id: paramCustomFieldId },
       });
     },
   );
@@ -491,17 +497,21 @@ if (Meteor.isServer) {
     (req, res) => {
       Authentication.checkUserId(req.userId);
 
+      const paramDropdownItemId = req.params.dropdownItemId;
+      const paramCustomFieldId = req.params.customFieldId;
+      const paramName = req.body.name;
+
       if (req.body.hasOwnProperty('name')) {
         CustomFields.direct.update(
           {
-            _id: req.params.customFieldId,
-            'settings.dropdownItems._id': req.params.dropdownItemId,
+            _id: paramCustomFieldId,
+            'settings.dropdownItems._id': paramDropdownItemId,
           },
           {
             $set: {
               'settings.dropdownItems.$': {
-                _id: req.params.dropdownItemId,
-                name: req.body.name,
+                _id: paramDropdownItemId,
+                name: paramName,
               },
             },
           },
@@ -510,7 +520,7 @@ if (Meteor.isServer) {
 
       JsonRoutes.sendResult(res, {
         code: 200,
-        data: { _id: req.params.customFieldId },
+        data: { _id: customFieldId },
       });
     },
   );
@@ -528,18 +538,21 @@ if (Meteor.isServer) {
     (req, res) => {
       Authentication.checkUserId(req.userId);
 
+      paramCustomFieldId = req.params.customFieldId;
+      paramDropdownItemId = req.params.dropdownItemId;
+
       CustomFields.direct.update(
-        { _id: req.params.customFieldId },
+        { _id: paramCustomFieldId },
         {
           $pull: {
-            'settings.dropdownItems': { _id: req.params.dropdownItemId },
+            'settings.dropdownItems': { _id: paramDropdownItemId },
           },
         },
       );
 
       JsonRoutes.sendResult(res, {
         code: 200,
-        data: { _id: req.params.customFieldId },
+        data: { _id: paramCustomFieldId },
       });
     },
   );

+ 12 - 0
models/presences.js

@@ -0,0 +1,12 @@
+if (Meteor.isServer) {
+  Meteor.startup(() => {
+    // Date of 7 days ago
+    let lastWeek = new Date();
+    lastWeek.setDate(lastWeek.getDate() - 7);
+
+    presences.remove({ ttl: { $lte: lastWeek } });
+
+    // Create index for serverId that is queried often
+    presences._collection._ensureIndex({ serverId: -1 });
+  });
+}

+ 50 - 27
models/trelloCreator.js

@@ -416,39 +416,62 @@ export class TrelloCreator {
       const attachments = this.attachments[card.id];
       const trelloCoverId = card.idAttachmentCover;
       if (attachments) {
+        const links = [];
         attachments.forEach(att => {
-          const file = new FS.File();
-          // Simulating file.attachData on the client generates multiple errors
-          // - HEAD returns null, which causes exception down the line
-          // - the template then tries to display the url to the attachment which causes other errors
-          // so we make it server only, and let UI catch up once it is done, forget about latency comp.
-          const self = this;
-          if (Meteor.isServer) {
-            file.attachData(att.url, function(error) {
-              file.boardId = boardId;
-              file.cardId = cardId;
-              file.userId = self._user(att.idMemberCreator);
-              // The field source will only be used to prevent adding
-              // attachments' related activities automatically
-              file.source = 'import';
-              if (error) {
-                throw error;
-              } else {
-                const wekanAtt = Attachments.insert(file, () => {
-                  // we do nothing
-                });
-                self.attachmentIds[att.id] = wekanAtt._id;
-                //
-                if (trelloCoverId === att.id) {
-                  Cards.direct.update(cardId, {
-                    $set: { coverId: wekanAtt._id },
+          // if the attachment `name` and `url` are the same, then the
+          // attachment is an attached link
+          if (att.name === att.url) {
+            links.push(att.url);
+          } else {
+            const file = new FS.File();
+            // Simulating file.attachData on the client generates multiple errors
+            // - HEAD returns null, which causes exception down the line
+            // - the template then tries to display the url to the attachment which causes other errors
+            // so we make it server only, and let UI catch up once it is done, forget about latency comp.
+            const self = this;
+            if (Meteor.isServer) {
+              file.attachData(att.url, function(error) {
+                file.boardId = boardId;
+                file.cardId = cardId;
+                file.userId = self._user(att.idMemberCreator);
+                // The field source will only be used to prevent adding
+                // attachments' related activities automatically
+                file.source = 'import';
+                if (error) {
+                  throw error;
+                } else {
+                  const wekanAtt = Attachments.insert(file, () => {
+                    // we do nothing
                   });
+                  self.attachmentIds[att.id] = wekanAtt._id;
+                  //
+                  if (trelloCoverId === att.id) {
+                    Cards.direct.update(cardId, {
+                      $set: { coverId: wekanAtt._id },
+                    });
+                  }
                 }
-              }
-            });
+              });
+            }
           }
           // todo XXX set cover - if need be
         });
+
+        if (links.length) {
+          let desc = cardToCreate.description.trim();
+          if (desc) {
+            desc += '\n\n';
+          }
+          desc += `## ${TAPi18n.__('links-heading')}\n`;
+          links.forEach(link => {
+            desc += `* ${link}\n`;
+          });
+          Cards.direct.update(cardId, {
+            $set: {
+              description: desc,
+            },
+          });
+        }
       }
       result.push(cardId);
     });

+ 19 - 0
models/users.js

@@ -797,6 +797,25 @@ Meteor.methods({
 
 if (Meteor.isServer) {
   Meteor.methods({
+    setAllUsersHideSystemMessages() {
+      if (Meteor.user() && Meteor.user().isAdmin) {
+        // If setting is missing, add it
+        Users.update(
+          { 'profile.hiddenSystemMessages': { $exists: false } },
+          { $set: { 'profile.hiddenSystemMessages': true } },
+          { multi: true },
+        );
+        // If setting is false, set it to true
+        Users.update(
+          { 'profile.hiddenSystemMessages': false },
+          { $set: { 'profile.hiddenSystemMessages': true } },
+          { multi: true },
+        );
+        return true;
+      } else {
+        return false;
+      }
+    },
     setCreateUser(
       fullname,
       username,

+ 0 - 1
openapi/generate_openapi.py

@@ -1,7 +1,6 @@
 #!/bin/env python3
 
 import argparse
-import esprima
 import json
 import logging
 import os

Різницю між файлами не показано, бо вона завелика
+ 324 - 214
package-lock.json


+ 2 - 2
package.json

@@ -1,6 +1,6 @@
 {
   "name": "wekan",
-  "version": "v5.03.0",
+  "version": "v5.08.0",
   "description": "Open-Source kanban",
   "private": true,
   "scripts": {
@@ -72,7 +72,7 @@
     "ldapjs": "^2.2.3",
     "markdown-it": "^12.0.4",
     "markdown-it-emoji": "^2.0.0",
-    "meteor-node-stubs": "^1.0.1",
+    "meteor-node-stubs": "^1.0.2",
     "mongodb": "^3.6.4",
     "os": "^0.1.1",
     "page": "^1.11.5",

+ 1 - 1
packages/markdown/src/template-integration.js

@@ -37,7 +37,7 @@ function mySafeAttrValue(tag, name, value, cssFilter) {
   // then use your custom function
   if (tag === 'a' && name === 'href') {
     // only filter the value if starts with an registered url scheme
-    urlscheme = value.split(/:\/\//);
+    urlscheme = value.split(/:/);
     //console.log("validating "+urlscheme[0]);
     if(urlschemes.includes(urlscheme[0])) return value;
     else {

Різницю між файлами не показано, бо вона завелика
+ 1 - 1
public/api/wekan.html


+ 1 - 3450
public/api/wekan.yml

@@ -1,7 +1,7 @@
 swagger: '2.0'
 info:
   title: Wekan REST API
-  version: v5.03
+  version: v5.08
   description: |
     The REST API allows you to control and extend Wekan with ease.
 
@@ -134,3453 +134,4 @@ paths:
           description: |
             Error in registration
 
-  /api/boards:
-    get:
-      operationId: get_public_boards
-      summary: Get all public boards
-      tags:
-        - Boards
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              type: object
-              properties:
-                _id:
-                  type: string
-                title:
-                  type: string
-    post:
-      operationId: new_board
-      summary: Create a board
-      description: |
-        This allows to create a board.
-
-         The color has to be chosen between `belize`, `nephritis`, `pomegranate`,
-         `pumpkin`, `wisteria`, `moderatepink`, `strongcyan`,
-         `limegreen`, `midnight`, `dark`, `relax`, `corteza`:
-
-         <img src="https://wekan.github.io/board-colors.png" width="40%" alt="Wekan logo" />
-      tags:
-        - Boards
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: title
-          in: formData
-          description: |
-            the new title of the board
-          type: string
-          required: true
-        - name: owner
-          in: formData
-          description: |
-            "ABCDE12345" <= User ID in Wekan.
-                 (Not username or email)
-          type: string
-          required: true
-        - name: isAdmin
-          in: formData
-          description: |
-            is the owner an admin of the board (default true)
-          type: boolean
-          required: false
-        - name: isActive
-          in: formData
-          description: |
-            is the board active (default true)
-          type: boolean
-          required: false
-        - name: isNoComments
-          in: formData
-          description: |
-            disable comments (default false)
-          type: boolean
-          required: false
-        - name: isCommentOnly
-          in: formData
-          description: |
-            only enable comments (default false)
-          type: boolean
-          required: false
-        - name: isWorker
-          in: formData
-          description: |
-            only move cards, assign himself to card and comment (default false)
-          type: boolean
-          required: false
-        - name: permission
-          in: formData
-          description: |
-            "private" board <== Set to "public" if you
-                 want public Wekan board
-          type: string
-          required: false
-        - name: color
-          in: formData
-          description: |
-            the color of the board
-          type: string
-          required: false
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-              defaultSwimlaneId:
-                type: string
-  /api/boards/{board}:
-    get:
-      operationId: get_board
-      summary: Get the board with that particular ID
-      tags:
-        - Boards
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the ID of the board to retrieve the data
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            $ref: "#/definitions/Boards"
-    delete:
-      operationId: delete_board
-      summary: Delete a board
-      tags:
-        - Boards
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the ID of the board
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-  /api/boards/{board}/attachments:
-    get:
-      operationId: get_board_attachments
-      summary: Get the list of attachments of a board
-      tags:
-        - Boards
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              type: object
-              properties:
-                attachmentId:
-                  type: string
-                attachmentName:
-                  type: string
-                attachmentType:
-                  type: string
-                cardId:
-                  type: string
-                listId:
-                  type: string
-                swimlaneId:
-                  type: string
-  /api/boards/{board}/cards/{card}/checklists:
-    get:
-      operationId: get_all_checklists
-      summary: Get the list of checklists attached to a card
-      tags:
-        - Checklists
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the card ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              type: object
-              properties:
-                _id:
-                  type: string
-                title:
-                  type: string
-    post:
-      operationId: new_checklist
-      summary: create a new checklist
-      tags:
-        - Checklists
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: title
-          in: formData
-          description: |
-            the title of the new checklist
-          type: string
-          required: true
-        - name: items
-          in: formData
-          description: |
-            the list of items on the new checklist
-          type: string
-          required: false
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the card ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/cards/{card}/checklists/{checklist}:
-    get:
-      operationId: get_checklist
-      summary: Get a checklist
-      tags:
-        - Checklists
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the card ID
-          type: string
-          required: true
-        - name: checklist
-          in: path
-          description: |
-            the ID of the checklist
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              cardId:
-                type: string
-              title:
-                type: string
-              finishedAt:
-                type: string
-              createdAt:
-                type: string
-              sort:
-                type: number
-              items:
-                type: array
-                items:
-                  type: object
-                  properties:
-                    _id:
-                      type: string
-                    title:
-                      type: string
-                    isFinished:
-                      type: boolean
-    delete:
-      operationId: delete_checklist
-      summary: Delete a checklist
-      description: |
-        The checklist will be removed, not put in the recycle bin.
-      tags:
-        - Checklists
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the card ID
-          type: string
-          required: true
-        - name: checklist
-          in: path
-          description: |
-            the ID of the checklist to remove
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}:
-    get:
-      operationId: get_checklist_item
-      summary: Get a checklist item
-      tags:
-        - ChecklistItems
-        - Checklists
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the card ID
-          type: string
-          required: true
-        - name: checklist
-          in: path
-          description: |
-            the checklist ID
-          type: string
-          required: true
-        - name: item
-          in: path
-          description: |
-            the ID of the item
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            $ref: "#/definitions/ChecklistItems"
-    put:
-      operationId: edit_checklist_item
-      summary: Edit a checklist item
-      tags:
-        - ChecklistItems
-        - Checklists
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: isFinished
-          in: formData
-          description: |
-            is the item checked?
-          type: string
-          required: false
-        - name: title
-          in: formData
-          description: |
-            the new text of the item
-          type: string
-          required: false
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the card ID
-          type: string
-          required: true
-        - name: checklist
-          in: path
-          description: |
-            the checklist ID
-          type: string
-          required: true
-        - name: item
-          in: path
-          description: |
-            the ID of the item
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-    delete:
-      operationId: delete_checklist_item
-      summary: Delete a checklist item
-      description: |
-        Note: this operation can't be reverted.
-      tags:
-        - ChecklistItems
-        - Checklists
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the card ID
-          type: string
-          required: true
-        - name: checklist
-          in: path
-          description: |
-            the checklist ID
-          type: string
-          required: true
-        - name: item
-          in: path
-          description: |
-            the ID of the item to be removed
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/cards/{card}/comments:
-    get:
-      operationId: get_all_comments
-      summary: Get all comments attached to a card
-      tags:
-        - CardComments
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID of the card
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the ID of the card
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              type: object
-              properties:
-                _id:
-                  type: string
-                comment:
-                  type: string
-                authorId:
-                  type: string
-    post:
-      operationId: new_comment
-      summary: Add a comment on a card
-      tags:
-        - CardComments
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: authorId
-          in: formData
-          description: |
-            the user who 'posted' the comment
-          type: string
-          required: true
-        - name: comment
-          in: formData
-          description: the comment value
-          type: string
-          required: true
-        - name: board
-          in: path
-          description: |
-            the board ID of the card
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the ID of the card
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/cards/{card}/comments/{comment}:
-    get:
-      operationId: get_comment
-      summary: Get a comment on a card
-      tags:
-        - CardComments
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID of the card
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the ID of the card
-          type: string
-          required: true
-        - name: comment
-          in: path
-          description: |
-            the ID of the comment to retrieve
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            $ref: "#/definitions/CardComments"
-    delete:
-      operationId: delete_comment
-      summary: Delete a comment on a card
-      tags:
-        - CardComments
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID of the card
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the ID of the card
-          type: string
-          required: true
-        - name: comment
-          in: path
-          description: |
-            the ID of the comment to delete
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}:
-    get:
-      operationId: get_cards_by_custom_field
-      summary: Get all Cards that matchs a value of a specific custom field
-      tags:
-        - Cards
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: customField
-          in: path
-          description: |
-            the list ID
-          type: string
-          required: true
-        - name: customFieldValue
-          in: path
-          description: |
-            the value to look for
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              type: object
-              properties:
-                _id:
-                  type: string
-                title:
-                  type: string
-                description:
-                  type: string
-                listId:
-                  type: string
-                swinlaneId:
-                  type: string
-  /api/boards/{board}/custom-fields:
-    get:
-      operationId: get_all_custom_fields
-      summary: Get the list of Custom Fields attached to a board
-      tags:
-        - CustomFields
-      parameters:
-        - name: board
-          in: path
-          description: the board value
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              type: object
-              properties:
-                _id:
-                  type: string
-                name:
-                  type: string
-                type:
-                  type: string
-    post:
-      operationId: new_custom_field
-      summary: Create a Custom Field
-      tags:
-        - CustomFields
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: name
-          in: formData
-          description: |
-            the name of the custom field
-          type: string
-          required: true
-        - name: type
-          in: formData
-          description: |
-            the type of the custom field
-          type: string
-          required: true
-        - name: settings
-          in: formData
-          description: |
-            the settings object of the custom field
-          type: string
-          required: true
-        - name: showOnCard
-          in: formData
-          description: |
-            should we show the custom field on cards?
-          type: boolean
-          required: true
-        - name: automaticallyOnCard
-          in: formData
-          description: |
-            should the custom fields automatically be added on cards?
-          type: boolean
-          required: true
-        - name: showLabelOnMiniCard
-          in: formData
-          description: |
-            should the label of the custom field be shown on minicards?
-          type: boolean
-          required: true
-        - name: authorId
-          in: formData
-          description: the authorId value
-          type: string
-          required: true
-        - name: board
-          in: path
-          description: the board value
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/custom-fields/{customField}:
-    get:
-      operationId: get_custom_field
-      summary: Get a Custom Fields attached to a board
-      tags:
-        - CustomFields
-      parameters:
-        - name: board
-          in: path
-          description: the board value
-          type: string
-          required: true
-        - name: customField
-          in: path
-          description: |
-            the ID of the custom field
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            $ref: "#/definitions/CustomFields"
-    delete:
-      operationId: delete_custom_field
-      summary: Delete a Custom Fields attached to a board
-      description: |
-        The Custom Field can't be retrieved after this operation
-      tags:
-        - CustomFields
-      parameters:
-        - name: board
-          in: path
-          description: the board value
-          type: string
-          required: true
-        - name: customField
-          in: path
-          description: |
-            the ID of the custom field
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/export:
-    get:
-      operationId: exportJson
-      summary: This route is used to export the board to a json file format.
-      description: |
-        If user is already logged-in, pass loginToken as param
-         "authToken": '/api/boards/:boardId/export?authToken=:token'
-
-         See https://blog.kayla.com.au/server-side-route-authentication-in-meteor/
-         for detailed explanations
-      tags:
-        - Boards
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the ID of the board we are exporting
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-  /api/boards/{board}/integrations:
-    get:
-      operationId: get_all_integrations
-      summary: Get all integrations in board
-      tags:
-        - Integrations
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              $ref: "#/definitions/Integrations"
-    post:
-      operationId: new_integration
-      summary: Create a new integration
-      tags:
-        - Integrations
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: url
-          in: formData
-          description: |
-            the URL of the integration
-          type: string
-          required: true
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/integrations/{int}:
-    get:
-      operationId: get_integration
-      summary: Get a single integration in board
-      tags:
-        - Integrations
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: int
-          in: path
-          description: |
-            the integration ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            $ref: "#/definitions/Integrations"
-    put:
-      operationId: edit_integration
-      summary: Edit integration data
-      tags:
-        - Integrations
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: enabled
-          in: formData
-          description: |
-            is the integration enabled?
-          type: string
-          required: false
-        - name: title
-          in: formData
-          description: |
-            new name of the integration
-          type: string
-          required: false
-        - name: url
-          in: formData
-          description: |
-            new URL of the integration
-          type: string
-          required: false
-        - name: token
-          in: formData
-          description: |
-            new token of the integration
-          type: string
-          required: false
-        - name: activities
-          in: formData
-          description: |
-            new list of activities of the integration
-          type: string
-          required: false
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: int
-          in: path
-          description: |
-            the integration ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-    delete:
-      operationId: delete_integration
-      summary: Delete integration
-      tags:
-        - Integrations
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: int
-          in: path
-          description: |
-            the integration ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/integrations/{int}/activities:
-    delete:
-      operationId: delete_integration_activities
-      summary: Delete subscribed activities
-      tags:
-        - Integrations
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: int
-          in: path
-          description: |
-            the integration ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            $ref: "#/definitions/Integrations"
-    post:
-      operationId: new_integration_activities
-      summary: Add subscribed activities
-      tags:
-        - Integrations
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: activities
-          in: formData
-          description: the activities value
-          type: string
-          required: true
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: int
-          in: path
-          description: |
-            the integration ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            $ref: "#/definitions/Integrations"
-  /api/boards/{board}/labels:
-    put:
-      operationId: add_board_label
-      summary: Add a label to a board
-      description: |
-        If the board doesn't have the name/color label, this function
-         adds the label to the board.
-      tags:
-        - Boards
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: label
-          in: formData
-          description: the label value
-          type: string
-          required: true
-        - name: board
-          in: path
-          description: |
-            the board
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: string
-  /api/boards/{board}/lists:
-    get:
-      operationId: get_all_lists
-      summary: Get the list of Lists attached to a board
-      tags:
-        - Lists
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              type: object
-              properties:
-                _id:
-                  type: string
-                title:
-                  type: string
-    post:
-      operationId: new_list
-      summary: Add a List to a board
-      tags:
-        - Lists
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: title
-          in: formData
-          description: |
-            the title of the List
-          type: string
-          required: true
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/lists/{list}:
-    get:
-      operationId: get_list
-      summary: Get a List attached to a board
-      tags:
-        - Lists
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: list
-          in: path
-          description: |
-            the List ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            $ref: "#/definitions/Lists"
-    delete:
-      operationId: delete_list
-      summary: Delete a List
-      description: |
-        This **deletes** a list from a board.
-         The list is not put in the recycle bin.
-      tags:
-        - Lists
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: list
-          in: path
-          description: |
-            the ID of the list to remove
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/lists/{list}/cards:
-    get:
-      operationId: get_all_cards
-      summary: Get all Cards attached to a List
-      tags:
-        - Cards
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: list
-          in: path
-          description: |
-            the list ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              type: object
-              properties:
-                _id:
-                  type: string
-                title:
-                  type: string
-                description:
-                  type: string
-    post:
-      operationId: new_card
-      summary: Create a new Card
-      tags:
-        - Cards
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: authorId
-          in: formData
-          description: the authorId value
-          type: string
-          required: true
-        - name: members
-          in: formData
-          description: |
-            the member IDs list of the new card
-          type: string
-          required: false
-        - name: assignees
-          in: formData
-          description: |
-            the array of maximum one ID of assignee of the new card
-          type: string
-          required: false
-        - name: title
-          in: formData
-          description: |
-            the title of the new card
-          type: string
-          required: true
-        - name: description
-          in: formData
-          description: |
-            the description of the new card
-          type: string
-          required: true
-        - name: swimlaneId
-          in: formData
-          description: |
-            the swimlane ID of the new card
-          type: string
-          required: true
-        - name: board
-          in: path
-          description: |
-            the board ID of the new card
-          type: string
-          required: true
-        - name: list
-          in: path
-          description: |
-            the list ID of the new card
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/lists/{list}/cards/{card}:
-    get:
-      operationId: get_card
-      summary: Get a Card
-      tags:
-        - Cards
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: list
-          in: path
-          description: |
-            the list ID of the card
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the card ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            $ref: "#/definitions/Cards"
-    put:
-      operationId: edit_card
-      summary: Edit Fields in a Card
-      description: |
-        Edit a card
-
-         The color has to be chosen between `white`, `green`, `yellow`, `orange`,
-         `red`, `purple`, `blue`, `sky`, `lime`, `pink`, `black`, `silver`,
-         `peachpuff`, `crimson`, `plum`, `darkgreen`, `slateblue`, `magenta`,
-         `gold`, `navy`, `gray`, `saddlebrown`, `paleturquoise`, `mistyrose`,
-         `indigo`:
-
-         <img src="/card-colors.png" width="40%" alt="Wekan card colors" />
-
-         Note: setting the color to white has the same effect than removing it.
-      tags:
-        - Cards
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: title
-          in: formData
-          description: |
-            the new title of the card
-          type: string
-          required: false
-        - name: sort
-          in: formData
-          description: |
-            the new sort value of the card
-          type: string
-          required: false
-        - name: parentId
-          in: formData
-          description: |
-            change the parent of the card
-          type: string
-          required: false
-        - name: description
-          in: formData
-          description: |
-            the new description of the card
-          type: string
-          required: false
-        - name: color
-          in: formData
-          description: |
-            the new color of the card
-          type: string
-          required: false
-        - name: vote
-          in: formData
-          description: |
-            the vote object
-          type: object
-          required: false
-        - name: labelIds
-          in: formData
-          description: |
-            the new list of label IDs attached to the card
-          type: string
-          required: false
-        - name: requestedBy
-          in: formData
-          description: |
-            the new requestedBy field of the card
-          type: string
-          required: false
-        - name: assignedBy
-          in: formData
-          description: |
-            the new assignedBy field of the card
-          type: string
-          required: false
-        - name: receivedAt
-          in: formData
-          description: |
-            the new receivedAt field of the card
-          type: string
-          required: false
-        - name: startAt
-          in: formData
-          description: |
-            the new startAt field of the card
-          type: string
-          required: false
-        - name: dueAt
-          in: formData
-          description: |
-            the new dueAt field of the card
-          type: string
-          required: false
-        - name: endAt
-          in: formData
-          description: |
-            the new endAt field of the card
-          type: string
-          required: false
-        - name: spentTime
-          in: formData
-          description: |
-            the new spentTime field of the card
-          type: string
-          required: false
-        - name: isOverTime
-          in: formData
-          description: |
-            the new isOverTime field of the card
-          type: boolean
-          required: false
-        - name: customFields
-          in: formData
-          description: |
-            the new customFields value of the card
-          type: string
-          required: false
-        - name: members
-          in: formData
-          description: |
-            the new list of member IDs attached to the card
-          type: string
-          required: false
-        - name: assignees
-          in: formData
-          description: |
-            the array of maximum one ID of assignee attached to the card
-          type: string
-          required: false
-        - name: swimlaneId
-          in: formData
-          description: |
-            the new swimlane ID of the card
-          type: string
-          required: false
-        - name: listId
-          in: formData
-          description: |
-            the new list ID of the card (move operation)
-          type: string
-          required: false
-        - name: authorId
-          in: formData
-          description: |
-            change the owner of the card
-          type: string
-          required: false
-        - name: board
-          in: path
-          description: |
-            the board ID of the card
-          type: string
-          required: true
-        - name: list
-          in: path
-          description: |
-            the list ID of the card
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the ID of the card
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-    delete:
-      operationId: delete_card
-      summary: Delete a card from a board
-      description: |
-        This operation **deletes** a card, and therefore the card
-         is not put in the recycle bin.
-      tags:
-        - Cards
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID of the card
-          type: string
-          required: true
-        - name: list
-          in: path
-          description: |
-            the list ID of the card
-          type: string
-          required: true
-        - name: card
-          in: path
-          description: |
-            the ID of the card
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/members/{member}:
-    post:
-      operationId: set_board_member_permission
-      summary: Change the permission of a member of a board
-      tags:
-        - Boards
-        - Users
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: isAdmin
-          in: formData
-          description: |
-            admin capability
-          type: boolean
-          required: true
-        - name: isNoComments
-          in: formData
-          description: |
-            NoComments capability
-          type: boolean
-          required: true
-        - name: isCommentOnly
-          in: formData
-          description: |
-            CommentsOnly capability
-          type: boolean
-          required: true
-        - name: isWorker
-          in: formData
-          description: |
-            Worker capability
-          type: boolean
-          required: true
-        - name: board
-          in: path
-          description: |
-            the ID of the board that we are changing
-          type: string
-          required: true
-        - name: member
-          in: path
-          description: |
-            the ID of the user to change permissions
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-  /api/boards/{board}/members/{user}/add:
-    post:
-      operationId: add_board_member
-      summary: Add New Board Member with Role
-      description: |
-        Only the admin user (the first user) can call the REST API.
-
-         **Note**: see [Boards.set_board_member_permission](#set_board_member_permission)
-         to later change the permissions.
-      tags:
-        - Users
-        - Boards
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: action
-          in: formData
-          description: the action value
-          type: string
-          required: true
-        - name: isAdmin
-          in: formData
-          description: |
-            is the user an admin of the board
-          type: boolean
-          required: true
-        - name: isNoComments
-          in: formData
-          description: |
-            disable comments
-          type: boolean
-          required: true
-        - name: isCommentOnly
-          in: formData
-          description: |
-            only enable comments
-          type: boolean
-          required: true
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: user
-          in: path
-          description: |
-            the user ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-              title:
-                type: string
-  /api/boards/{board}/members/{user}/remove:
-    post:
-      operationId: remove_board_member
-      summary: Remove Member from Board
-      description: |
-        Only the admin user (the first user) can call the REST API.
-      tags:
-        - Users
-        - Boards
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: action
-          in: formData
-          description: |
-            the action (needs to be `remove`)
-          type: string
-          required: true
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: user
-          in: path
-          description: |
-            the user ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-              title:
-                type: string
-  /api/boards/{board}/swimlanes:
-    get:
-      operationId: get_all_swimlanes
-      summary: Get the list of swimlanes attached to a board
-      tags:
-        - Swimlanes
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the ID of the board
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              type: object
-              properties:
-                _id:
-                  type: string
-                title:
-                  type: string
-    post:
-      operationId: new_swimlane
-      summary: Add a swimlane to a board
-      tags:
-        - Swimlanes
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: title
-          in: formData
-          description: |
-            the new title of the swimlane
-          type: string
-          required: true
-        - name: board
-          in: path
-          description: |
-            the ID of the board
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/swimlanes/{swimlane}:
-    get:
-      operationId: get_swimlane
-      summary: Get a swimlane
-      tags:
-        - Swimlanes
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the ID of the board
-          type: string
-          required: true
-        - name: swimlane
-          in: path
-          description: |
-            the ID of the swimlane
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            $ref: "#/definitions/Swimlanes"
-    delete:
-      operationId: delete_swimlane
-      summary: Delete a swimlane
-      description: |
-        The swimlane will be deleted, not moved to the recycle bin
-      tags:
-        - Swimlanes
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the ID of the board
-          type: string
-          required: true
-        - name: swimlane
-          in: path
-          description: |
-            the ID of the swimlane
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/boards/{board}/swimlanes/{swimlane}/cards:
-    get:
-      operationId: get_swimlane_cards
-      summary: get all cards attached to a swimlane
-      tags:
-        - Cards
-      parameters:
-        - name: board
-          in: path
-          description: |
-            the board ID
-          type: string
-          required: true
-        - name: swimlane
-          in: path
-          description: |
-            the swimlane ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              type: object
-              properties:
-                _id:
-                  type: string
-                title:
-                  type: string
-                description:
-                  type: string
-                listId:
-                  type: string
-  /api/boards_count:
-    get:
-      operationId: get_boards_count
-      summary: Get public and private boards count
-      tags:
-        - Boards
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              private:
-                type: integer
-              public:
-                type: integer
-  /api/createtoken/{user}:
-    post:
-      operationId: create_user_token
-      summary: Create a user token
-      description: |
-        Only the admin user (the first user) can call the REST API.
-      tags:
-        - Users
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: user
-          in: path
-          description: |
-            the ID of the user to create token for.
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/user:
-    get:
-      operationId: get_current_user
-      summary: returns the current user
-      tags:
-        - Users
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            $ref: "#/definitions/Users"
-  /api/users:
-    get:
-      operationId: get_all_users
-      summary: return all the users
-      description: |
-        Only the admin user (the first user) can call the REST API.
-      tags:
-        - Users
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              type: object
-              properties:
-                _id:
-                  type: string
-                username:
-                  type: string
-    post:
-      operationId: new_user
-      summary: Create a new user
-      description: |
-        Only the admin user (the first user) can call the REST API.
-      tags:
-        - Users
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: username
-          in: formData
-          description: |
-            the new username
-          type: string
-          required: true
-        - name: email
-          in: formData
-          description: |
-            the email of the new user
-          type: string
-          required: true
-        - name: password
-          in: formData
-          description: |
-            the password of the new user
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/users/{user}:
-    get:
-      operationId: get_user
-      summary: get a given user
-      description: |
-        Only the admin user (the first user) can call the REST API.
-      tags:
-        - Users
-      parameters:
-        - name: user
-          in: path
-          description: |
-            the user ID or username
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            $ref: "#/definitions/Users"
-    put:
-      operationId: edit_user
-      summary: edit a given user
-      description: |
-        Only the admin user (the first user) can call the REST API.
-
-         Possible values for *action*:
-         - `takeOwnership`: The admin takes the ownership of ALL boards of the user (archived and not archived) where the user is admin on.
-         - `disableLogin`: Disable a user (the user is not allowed to login and his login tokens are purged)
-         - `enableLogin`: Enable a user
-      tags:
-        - Users
-      consumes:
-        - multipart/form-data
-        - application/json
-      parameters:
-        - name: action
-          in: formData
-          description: |
-            the action
-          type: string
-          required: true
-        - name: user
-          in: path
-          description: |
-            the user ID
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-              title:
-                type: string
-    delete:
-      operationId: delete_user
-      summary: Delete a user
-      description: |
-        Only the admin user (the first user) can call the REST API.
-      tags:
-        - Users
-      parameters:
-        - name: user
-          in: path
-          description: |
-            the ID of the user to delete
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: object
-            properties:
-              _id:
-                type: string
-  /api/users/{user}/boards:
-    get:
-      operationId: get_boards_from_user
-      summary: Get all boards attached to a user
-      tags:
-        - Boards
-      parameters:
-        - name: user
-          in: path
-          description: |
-            the ID of the user to retrieve the data
-          type: string
-          required: true
-      produces:
-        - application/json
-      security:
-          - UserSecurity: []
-      responses:
-        '200':
-          description: |-
-            200 response
-          schema:
-            type: array
-            items:
-              type: object
-              properties:
-                _id:
-                  type: string
-                title:
-                  type: string
 definitions:
-  Boards:
-    type: object
-    description:  This is a Board.
-    properties:
-      title:
-        description: |
-           The title of the board
-        type: string
-      slug:
-        description: |
-           The title slugified.
-        type: string
-      archived:
-        description: |
-           Is the board archived?
-        type: boolean
-      archivedAt:
-        description: |
-           Latest archiving time of the board
-        type: string
-        x-nullable: true
-      createdAt:
-        description: |
-           Creation time of the board
-        type: string
-      modifiedAt:
-        description: |
-           Last modification time of the board
-        type: string
-        x-nullable: true
-      stars:
-        description: |
-           How many stars the board has
-        type: number
-      labels:
-        description: |
-           List of labels attached to a board
-        type: array
-        items:
-          $ref: "#/definitions/BoardsLabels"
-      members:
-        description: |
-           List of members of a board
-        type: array
-        items:
-          $ref: "#/definitions/BoardsMembers"
-      permission:
-        description: |
-           visibility of the board
-        type: string
-        enum:
-          - public
-          - private
-      color:
-        description: |
-           The color of the board.
-        type: string
-        enum:
-          - belize
-          - nephritis
-          - pomegranate
-          - pumpkin
-          - wisteria
-          - moderatepink
-          - strongcyan
-          - limegreen
-          - midnight
-          - dark
-          - relax
-          - corteza
-          - clearblue
-          - natural
-          - modern
-          - moderndark
-      description:
-        description: |
-           The description of the board
-        type: string
-        x-nullable: true
-      subtasksDefaultBoardId:
-        description: |
-           The default board ID assigned to subtasks.
-        type: string
-        x-nullable: true
-      subtasksDefaultListId:
-        description: |
-           The default List ID assigned to subtasks.
-        type: string
-        x-nullable: true
-      dateSettingsDefaultBoardId:
-        type: string
-        x-nullable: true
-      dateSettingsDefaultListId:
-        type: string
-        x-nullable: true
-      allowsSubtasks:
-        description: |
-           Does the board allows subtasks?
-        type: boolean
-      allowsAttachments:
-        description: |
-           Does the board allows attachments?
-        type: boolean
-      allowsChecklists:
-        description: |
-           Does the board allows checklists?
-        type: boolean
-      allowsComments:
-        description: |
-           Does the board allows comments?
-        type: boolean
-      allowsDescriptionTitle:
-        description: |
-           Does the board allows description title?
-        type: boolean
-      allowsDescriptionText:
-        description: |
-           Does the board allows description text?
-        type: boolean
-      allowsActivities:
-        description: |
-           Does the board allows comments?
-        type: boolean
-      allowsLabels:
-        description: |
-           Does the board allows labels?
-        type: boolean
-      allowsAssignee:
-        description: |
-           Does the board allows assignee?
-        type: boolean
-      allowsMembers:
-        description: |
-           Does the board allows members?
-        type: boolean
-      allowsRequestedBy:
-        description: |
-           Does the board allows requested by?
-        type: boolean
-      allowsAssignedBy:
-        description: |
-           Does the board allows requested by?
-        type: boolean
-      allowsReceivedDate:
-        description: |
-           Does the board allows received date?
-        type: boolean
-      allowsStartDate:
-        description: |
-           Does the board allows start date?
-        type: boolean
-      allowsEndDate:
-        description: |
-           Does the board allows end date?
-        type: boolean
-      allowsDueDate:
-        description: |
-           Does the board allows due date?
-        type: boolean
-      presentParentTask:
-        description: |
-           Controls how to present the parent task:
-
-           - `prefix-with-full-path`: add a prefix with the full path
-           - `prefix-with-parent`: add a prefisx with the parent name
-           - `subtext-with-full-path`: add a subtext with the full path
-           - `subtext-with-parent`: add a subtext with the parent name
-           - `no-parent`: does not show the parent at all
-        type: string
-        enum:
-          - prefix-with-full-path
-          - prefix-with-parent
-          - subtext-with-full-path
-          - subtext-with-parent
-          - no-parent
-        x-nullable: true
-      startAt:
-        description: |
-           Starting date of the board.
-        type: string
-        x-nullable: true
-      dueAt:
-        description: |
-           Due date of the board.
-        type: string
-        x-nullable: true
-      endAt:
-        description: |
-           End date of the board.
-        type: string
-        x-nullable: true
-      spentTime:
-        description: |
-           Time spent in the board.
-        type: number
-        x-nullable: true
-      isOvertime:
-        description: |
-           Is the board overtimed?
-        type: boolean
-        x-nullable: true
-      type:
-        description: |
-           The type of board
-        type: string
-      sort:
-        description: |
-           Sort value
-        type: number
-    required:
-      - title
-      - slug
-      - archived
-      - createdAt
-      - stars
-      - labels
-      - members
-      - permission
-      - color
-      - allowsSubtasks
-      - allowsAttachments
-      - allowsChecklists
-      - allowsComments
-      - allowsDescriptionTitle
-      - allowsDescriptionText
-      - allowsActivities
-      - allowsLabels
-      - allowsAssignee
-      - allowsMembers
-      - allowsRequestedBy
-      - allowsAssignedBy
-      - allowsReceivedDate
-      - allowsStartDate
-      - allowsEndDate
-      - allowsDueDate
-      - type
-      - sort
-  BoardsLabels:
-    type: object
-    properties:
-      _id:
-        description: |
-           Unique id of a label
-        type: string
-      name:
-        description: |
-           Name of a label
-        type: string
-      color:
-        description: |
-           color of a label.
-
-           Can be amongst `green`, `yellow`, `orange`, `red`, `purple`,
-           `blue`, `sky`, `lime`, `pink`, `black`,
-           `silver`, `peachpuff`, `crimson`, `plum`, `darkgreen`,
-           `slateblue`, `magenta`, `gold`, `navy`, `gray`,
-           `saddlebrown`, `paleturquoise`, `mistyrose`, `indigo`
-        type: string
-        enum:
-          - green
-          - yellow
-          - orange
-          - red
-          - purple
-          - blue
-          - sky
-          - lime
-          - pink
-          - black
-          - silver
-          - peachpuff
-          - crimson
-          - plum
-          - darkgreen
-          - slateblue
-          - magenta
-          - gold
-          - navy
-          - gray
-          - saddlebrown
-          - paleturquoise
-          - mistyrose
-          - indigo
-    required:
-      - _id
-      - color
-  BoardsMembers:
-    type: object
-    properties:
-      userId:
-        description: |
-           The uniq ID of the member
-        type: string
-      isAdmin:
-        description: |
-           Is the member an admin of the board?
-        type: boolean
-      isActive:
-        description: |
-           Is the member active?
-        type: boolean
-      isNoComments:
-        description: |
-           Is the member not allowed to make comments
-        type: boolean
-      isCommentOnly:
-        description: |
-           Is the member only allowed to comment on the board
-        type: boolean
-      isWorker:
-        description: |
-           Is the member only allowed to move card, assign himself to card and comment
-        type: boolean
-    required:
-      - userId
-      - isAdmin
-      - isActive
-  CardComments:
-    type: object
-    description:  A comment on a card
-    properties:
-      boardId:
-        description: |
-           the board ID
-        type: string
-      cardId:
-        description: |
-           the card ID
-        type: string
-      text:
-        description: |
-           the text of the comment
-        type: string
-      createdAt:
-        description: |
-           when was the comment created
-        type: string
-      modifiedAt:
-        type: string
-      userId:
-        description: |
-           the author ID of the comment
-        type: string
-    required:
-      - boardId
-      - cardId
-      - text
-      - createdAt
-      - modifiedAt
-      - userId
-  Cards:
-    type: object
-    properties:
-      title:
-        description: |
-           the title of the card
-        type: string
-        x-nullable: true
-      archived:
-        description: |
-           is the card archived
-        type: boolean
-      archivedAt:
-        description: |
-           latest archiving date
-        type: string
-        x-nullable: true
-      parentId:
-        description: |
-           ID of the parent card
-        type: string
-        x-nullable: true
-      listId:
-        description: |
-           List ID where the card is
-        type: string
-        x-nullable: true
-      swimlaneId:
-        description: |
-           Swimlane ID where the card is
-        type: string
-      boardId:
-        description: |
-           Board ID of the card
-        type: string
-        x-nullable: true
-      coverId:
-        description: |
-           Cover ID of the card
-        type: string
-        x-nullable: true
-      color:
-        type: string
-        enum:
-          - white
-          - green
-          - yellow
-          - orange
-          - red
-          - purple
-          - blue
-          - sky
-          - lime
-          - pink
-          - black
-          - silver
-          - peachpuff
-          - crimson
-          - plum
-          - darkgreen
-          - slateblue
-          - magenta
-          - gold
-          - navy
-          - gray
-          - saddlebrown
-          - paleturquoise
-          - mistyrose
-          - indigo
-        x-nullable: true
-      createdAt:
-        description: |
-           creation date
-        type: string
-      modifiedAt:
-        type: string
-      customFields:
-        description: |
-           list of custom fields
-        type: array
-        items:
-          $ref: "#/definitions/CardsCustomfields"
-        x-nullable: true
-      dateLastActivity:
-        description: |
-           Date of last activity
-        type: string
-      description:
-        description: |
-           description of the card
-        type: string
-        x-nullable: true
-      requestedBy:
-        description: |
-           who requested the card (ID of the user)
-        type: string
-        x-nullable: true
-      assignedBy:
-        description: |
-           who assigned the card (ID of the user)
-        type: string
-        x-nullable: true
-      labelIds:
-        description: |
-           list of labels ID the card has
-        type: array
-        items:
-          type: string
-          x-nullable: true
-        x-nullable: true
-      members:
-        description: |
-           list of members (user IDs)
-        type: array
-        items:
-          type: string
-          x-nullable: true
-        x-nullable: true
-      assignees:
-        description: |
-           who is assignee of the card (user ID),
-           maximum one ID of assignee in array.
-        type: array
-        items:
-          type: string
-          x-nullable: true
-        x-nullable: true
-      receivedAt:
-        description: |
-           Date the card was received
-        type: string
-        x-nullable: true
-      startAt:
-        description: |
-           Date the card was started to be worked on
-        type: string
-        x-nullable: true
-      dueAt:
-        description: |
-           Date the card is due
-        type: string
-        x-nullable: true
-      endAt:
-        description: |
-           Date the card ended
-        type: string
-        x-nullable: true
-      spentTime:
-        description: |
-           How much time has been spent on this
-        type: number
-        x-nullable: true
-      isOvertime:
-        description: |
-           is the card over time?
-        type: boolean
-        x-nullable: true
-      userId:
-        description: |
-           user ID of the author of the card
-        type: string
-      sort:
-        description: |
-           Sort value
-        type: number
-      subtaskSort:
-        description: |
-           subtask sort value
-        type: number
-        x-nullable: true
-      type:
-        description: |
-           type of the card
-        type: string
-      linkedId:
-        description: |
-           ID of the linked card
-        type: string
-        x-nullable: true
-      vote:
-        description: |
-           vote object, see below
-        $ref: "#/definitions/CardsVote"
-        x-nullable: true
-    required:
-      - archived
-      - swimlaneId
-      - createdAt
-      - modifiedAt
-      - dateLastActivity
-      - userId
-      - sort
-      - type
-  CardsVote:
-    type: object
-    properties:
-      question:
-        type: string
-      positive:
-        description: |
-           list of members (user IDs)
-        type: array
-        items:
-          type: string
-          x-nullable: true
-      negative:
-        description: |
-           list of members (user IDs)
-        type: array
-        items:
-          type: string
-          x-nullable: true
-      end:
-        type: string
-      public:
-        type: boolean
-      allowNonBoardMembers:
-        type: boolean
-    required:
-      - question
-      - public
-      - allowNonBoardMembers
-  CardsCustomfields:
-    type: object
-  ChecklistItems:
-    type: object
-    description:  An item in a checklist
-    properties:
-      title:
-        description: |
-           the text of the item
-        type: string
-      sort:
-        description: |
-           the sorting field of the item
-        type: number
-      isFinished:
-        description: |
-           Is the item checked?
-        type: boolean
-      checklistId:
-        description: |
-           the checklist ID the item is attached to
-        type: string
-      cardId:
-        description: |
-           the card ID the item is attached to
-        type: string
-      createdAt:
-        type: string
-        x-nullable: true
-      modifiedAt:
-        type: string
-    required:
-      - title
-      - sort
-      - isFinished
-      - checklistId
-      - cardId
-      - modifiedAt
-  Checklists:
-    type: object
-    description:  A Checklist
-    properties:
-      cardId:
-        description: |
-           The ID of the card the checklist is in
-        type: string
-      title:
-        description: |
-           the title of the checklist
-        type: string
-      finishedAt:
-        description: |
-           When was the checklist finished
-        type: string
-        x-nullable: true
-      createdAt:
-        description: |
-           Creation date of the checklist
-        type: string
-      modifiedAt:
-        type: string
-      sort:
-        description: |
-           sorting value of the checklist
-        type: number
-    required:
-      - cardId
-      - title
-      - createdAt
-      - modifiedAt
-      - sort
-  CustomFields:
-    type: object
-    description:  A custom field on a card in the board
-    properties:
-      boardIds:
-        description: |
-           the ID of the board
-        type: array
-        items:
-          type: string
-      name:
-        description: |
-           name of the custom field
-        type: string
-      type:
-        description: |
-           type of the custom field
-        type: string
-        enum:
-          - text
-          - number
-          - date
-          - dropdown
-          - checkbox
-          - currency
-      settings:
-        description: |
-           settings of the custom field
-        $ref: "#/definitions/CustomFieldsSettings"
-      showOnCard:
-        description: |
-           should we show on the cards this custom field
-        type: boolean
-      automaticallyOnCard:
-        description: |
-           should the custom fields automatically be added on cards?
-        type: boolean
-      alwaysOnCard:
-        description: |
-           should the custom field be automatically added to all cards?
-        type: boolean
-      showLabelOnMiniCard:
-        description: |
-           should the label of the custom field be shown on minicards?
-        type: boolean
-      createdAt:
-        type: string
-        x-nullable: true
-      modifiedAt:
-        type: string
-    required:
-      - boardIds
-      - name
-      - type
-      - settings
-      - showOnCard
-      - automaticallyOnCard
-      - alwaysOnCard
-      - showLabelOnMiniCard
-      - modifiedAt
-  CustomFieldsSettings:
-    type: object
-    properties:
-      currencyCode:
-        type: string
-      dropdownItems:
-        description: |
-           list of drop down items objects
-        type: array
-        items:
-          $ref: "#/definitions/CustomFieldsSettingsDropdownitems"
-  CustomFieldsSettingsDropdownitems:
-    type: object
-  Integrations:
-    type: object
-    description:  Integration with third-party applications
-    properties:
-      enabled:
-        description: |
-           is the integration enabled?
-        type: boolean
-      title:
-        description: |
-           name of the integration
-        type: string
-        x-nullable: true
-      type:
-        description: |
-           type of the integratation (Default to 'outgoing-webhooks')
-        type: string
-      activities:
-        description: |
-           activities the integration gets triggered (list)
-        type: array
-        items:
-          type: string
-      url:
-        type: string
-      token:
-        description: |
-           token of the integration
-        type: string
-        x-nullable: true
-      boardId:
-        description: |
-           Board ID of the integration
-        type: string
-      createdAt:
-        description: |
-           Creation date of the integration
-        type: string
-      modifiedAt:
-        type: string
-      userId:
-        description: |
-           user ID who created the interation
-        type: string
-    required:
-      - enabled
-      - type
-      - activities
-      - url
-      - boardId
-      - createdAt
-      - modifiedAt
-      - userId
-  Lists:
-    type: object
-    description:  A list (column) in the Wekan board.
-    properties:
-      title:
-        description: |
-           the title of the list
-        type: string
-      starred:
-        description: |
-           if a list is stared
-           then we put it on the top
-        type: boolean
-        x-nullable: true
-      archived:
-        description: |
-           is the list archived
-        type: boolean
-      archivedAt:
-        description: |
-           latest archiving date
-        type: string
-        x-nullable: true
-      boardId:
-        description: |
-           the board associated to this list
-        type: string
-      swimlaneId:
-        description: |
-           the swimlane associated to this list. Used for templates
-        type: string
-      createdAt:
-        description: |
-           creation date
-        type: string
-      sort:
-        description: |
-           is the list sorted
-        type: number
-        x-nullable: true
-      updatedAt:
-        description: |
-           last update of the list
-        type: string
-        x-nullable: true
-      modifiedAt:
-        type: string
-      wipLimit:
-        description: |
-           WIP object, see below
-        $ref: "#/definitions/ListsWiplimit"
-        x-nullable: true
-      color:
-        description: |
-           the color of the list
-        type: string
-        enum:
-          - white
-          - green
-          - yellow
-          - orange
-          - red
-          - purple
-          - blue
-          - sky
-          - lime
-          - pink
-          - black
-          - peachpuff
-          - crimson
-          - plum
-          - darkgreen
-          - slateblue
-          - magenta
-          - gold
-          - navy
-          - gray
-          - saddlebrown
-          - paleturquoise
-          - mistyrose
-          - indigo
-        x-nullable: true
-      type:
-        description: |
-           The type of list
-        type: string
-    required:
-      - title
-      - archived
-      - boardId
-      - swimlaneId
-      - createdAt
-      - modifiedAt
-      - type
-  ListsWiplimit:
-    type: object
-    properties:
-      value:
-        description: |
-           value of the WIP
-        type: number
-      enabled:
-        description: |
-           is the WIP enabled
-        type: boolean
-      soft:
-        description: |
-           is the WIP a soft or hard requirement
-        type: boolean
-    required:
-      - value
-      - enabled
-      - soft
-  Swimlanes:
-    type: object
-    description:  A swimlane is an line in the kaban board.
-    properties:
-      title:
-        description: |
-           the title of the swimlane
-        type: string
-      archived:
-        description: |
-           is the swimlane archived?
-        type: boolean
-      archivedAt:
-        description: |
-           latest archiving date of the swimlane
-        type: string
-        x-nullable: true
-      boardId:
-        description: |
-           the ID of the board the swimlane is attached to
-        type: string
-      createdAt:
-        description: |
-           creation date of the swimlane
-        type: string
-      sort:
-        description: |
-           the sort value of the swimlane
-        type: number
-        x-nullable: true
-      color:
-        description: |
-           the color of the swimlane
-        type: string
-        enum:
-          - white
-          - green
-          - yellow
-          - orange
-          - red
-          - purple
-          - blue
-          - sky
-          - lime
-          - pink
-          - black
-          - peachpuff
-          - crimson
-          - plum
-          - darkgreen
-          - slateblue
-          - magenta
-          - gold
-          - navy
-          - gray
-          - saddlebrown
-          - paleturquoise
-          - mistyrose
-          - indigo
-        x-nullable: true
-      updatedAt:
-        description: |
-           when was the swimlane last edited
-        type: string
-        x-nullable: true
-      modifiedAt:
-        type: string
-      type:
-        description: |
-           The type of swimlane
-        type: string
-    required:
-      - title
-      - archived
-      - boardId
-      - createdAt
-      - modifiedAt
-      - type
-  Users:
-    type: object
-    description:  A User in wekan
-    properties:
-      username:
-        description: |
-           the username of the user
-        type: string
-        x-nullable: true
-      emails:
-        description: |
-           the list of emails attached to a user
-        type: array
-        items:
-          $ref: "#/definitions/UsersEmails"
-        x-nullable: true
-      createdAt:
-        description: |
-           creation date of the user
-        type: string
-      modifiedAt:
-        type: string
-      profile:
-        description: |
-           profile settings
-        $ref: "#/definitions/UsersProfile"
-        x-nullable: true
-      services:
-        description: |
-           services field of the user
-        type: object
-        x-nullable: true
-      heartbeat:
-        description: |
-           last time the user has been seen
-        type: string
-        x-nullable: true
-      isAdmin:
-        description: |
-           is the user an admin of the board?
-        type: boolean
-        x-nullable: true
-      createdThroughApi:
-        description: |
-           was the user created through the API?
-        type: boolean
-        x-nullable: true
-      loginDisabled:
-        description: |
-           loginDisabled field of the user
-        type: boolean
-        x-nullable: true
-      authenticationMethod:
-        description: |
-           authentication method of the user
-        type: string
-      sessionData:
-        description: |
-           profile settings
-        $ref: "#/definitions/UsersSessiondata"
-        x-nullable: true
-      importUsernames:
-        description: |
-           username for imported
-        type: array
-        items:
-          type: string
-          x-nullable: true
-        x-nullable: true
-    required:
-      - createdAt
-      - modifiedAt
-      - authenticationMethod
-  UsersEmails:
-    type: object
-    properties:
-      address:
-        description: |
-           The email address
-        type: string
-      verified:
-        description: |
-           Has the email been verified
-        type: boolean
-    required:
-      - address
-      - verified
-  UsersProfile:
-    type: object
-    properties:
-      avatarUrl:
-        description: |
-           URL of the avatar of the user
-        type: string
-      emailBuffer:
-        description: |
-           list of email buffers of the user
-        type: array
-        items:
-          type: string
-          x-nullable: true
-      fullname:
-        description: |
-           full name of the user
-        type: string
-      showDesktopDragHandles:
-        description: |
-           does the user want to hide system messages?
-        type: boolean
-      hideCheckedItems:
-        description: |
-           does the user want to hide checked checklist items?
-        type: boolean
-      hiddenSystemMessages:
-        description: |
-           does the user want to hide system messages?
-        type: boolean
-      hiddenMinicardLabelText:
-        description: |
-           does the user want to hide minicard label texts?
-        type: boolean
-      initials:
-        description: |
-           initials of the user
-        type: string
-      invitedBoards:
-        description: |
-           board IDs the user has been invited to
-        type: array
-        items:
-          type: string
-          x-nullable: true
-      language:
-        description: |
-           language of the user
-        type: string
-      notifications:
-        description: |
-           enabled notifications for the user
-        type: array
-        items:
-          $ref: "#/definitions/UsersProfileNotifications"
-      activity:
-        description: |
-           The id of the activity this notification references
-        type: string
-      read:
-        description: |
-           the date on which this notification was read
-        type: string
-      showCardsCountAt:
-        description: |
-           showCardCountAt field of the user
-        type: number
-      startDayOfWeek:
-        description: |
-           startDayOfWeek field of the user
-        type: number
-      starredBoards:
-        description: |
-           list of starred board IDs
-        type: array
-        items:
-          type: string
-          x-nullable: true
-      icode:
-        description: |
-           icode
-        type: string
-      boardView:
-        description: |
-           boardView field of the user
-        type: string
-        enum:
-          - board-view-swimlanes
-          - board-view-lists
-          - board-view-cal
-      listSortBy:
-        description: |
-           default sort list for user
-        type: string
-        enum:
-          - -modifiedat
-          - modifiedat
-          - -title
-          - title
-          - -sort
-          - sort
-      templatesBoardId:
-        description: |
-           Reference to the templates board
-        type: string
-      cardTemplatesSwimlaneId:
-        description: |
-           Reference to the card templates swimlane Id
-        type: string
-      listTemplatesSwimlaneId:
-        description: |
-           Reference to the list templates swimlane Id
-        type: string
-      boardTemplatesSwimlaneId:
-        description: |
-           Reference to the board templates swimlane Id
-        type: string
-    required:
-      - activity
-      - templatesBoardId
-      - cardTemplatesSwimlaneId
-      - listTemplatesSwimlaneId
-      - boardTemplatesSwimlaneId
-  UsersSessiondata:
-    type: object
-    properties:
-      totalHits:
-        description: |
-           Total hits from last search
-        type: number
-      lastHit:
-        description: |
-           last hit that was returned
-        type: number

+ 5 - 11
releases/rebuild-docs-install-deps.sh

@@ -1,21 +1,15 @@
-# Generate docs.
+# Extract the OpenAPI specification.
 
-# extract the OpenAPI specification
+# Install dependencies.
 sudo apt-get install python3-pip
 sudo pip3 install -U setuptools wheel
-sudo npm install -g api2html@0.3.3
-sudo npm install -g --unsafe-perm api2html@0.3.0
-sudo npm install -g --unsafe-perm mkdirp
-mkdir -p ~/python
-cd ~/python
-git clone --depth 1 -b master https://github.com/Kronuz/esprima-python
-cd ~/python/esprima-python
-sudo python3 setup.py install --record files.txt
+sudo npm install -g api2html
 cd ~/repos/wekan
 mkdir -p public/api
+
+# Generate docs.
 python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
 api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
 
 # Copy docs to bundle
 #cp -pR ./public/api ~/repos/wekan/.build/bundle/programs/web.browser/app/
-#cp -pR ./public/api ~/repos/wekan/.build/bundle/programs/web.browser.legacy/app/

+ 2 - 7
releases/release-bundle.sh

@@ -5,18 +5,13 @@ sudo apt-get -y install parallel
 cd ~/repos/wekan/.build
 zip -r wekan-$1.zip bundle
 
-# Can not build ppc64le version because
-# OpenPower Minicloud is having
-# emergency maintenance.
-#   scp wekan-$1.zip o:/home/ubuntu/
-#   echo "Bundle uploaded to x2/a/s/o."
-
 {
   scp wekan-$1.zip x2:/var/snap/wekan/common/releases.wekan.team/
   scp wekan-$1.zip a:/home/wekan/repos/
   scp wekan-$1.zip s:/home/linux1/
+  scp wekan-$1.zip o:/home/ubuntu/
 } | parallel -k
 
 cd ..
 
-echo "Bundle uploaded to x2/a/s."
+echo "Bundle uploaded to x2/a/s/o."

+ 3 - 0
releases/translations/pull-translations.sh

@@ -151,6 +151,9 @@ tx pull -f -l es_AR
 echo "Spanish (Chile):"
 tx pull -f -l es_CL
 
+echo "Spanish (Latin America)":
+tx pull -f -l es_419
+
 echo "Spanish (Mexico)":
 tx pull -f -l es_MX
 

+ 1 - 5
releases/up.sh

@@ -2,12 +2,8 @@
 
 sudo apt-get -y install parallel
 
-# Can not build ppc64le version because
-# OpenPower Minicloud is having
-# emergency maintenance.
-#  ~/repos/wekan/releases/up-o.sh $1
-
 {
   ~/repos/wekan/releases/up-a.sh $1
   ~/repos/wekan/releases/up-s.sh $1
+  ~/repos/wekan/releases/up-o.sh $1
 } | parallel -k

+ 2 - 2
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 = 503,
+    appVersion = 508,
     # Increment this for every release.
 
-    appMarketingVersion = (defaultText = "5.03.0~2021-03-03"),
+    appMarketingVersion = (defaultText = "5.08.0~2021-03-26"),
     # Human-readable presentation of the app version.
 
     minUpgradableAppVersion = 0,

+ 2 - 2
server/notifications/outgoing.js

@@ -63,7 +63,7 @@ if (Meteor.isServer) {
     'swimlaneId',
     'customField',
     'customFieldValue',
-    'attachmentId'
+    'attachmentId',
   ];
   const responseFunc = data => {
     const paramCommentId = data.commentId;
@@ -125,7 +125,7 @@ if (Meteor.isServer) {
           'oldSwimlane',
           'label',
           'attachment',
-          'attachmentId'
+          'attachmentId',
         ].forEach(key => {
           if (quoteParams[key]) quoteParams[key] = `"${params[key]}"`;
         });

Деякі файли не було показано, через те що забагато файлів було змінено