Browse Source

Merge branch 'lib-change' of https://github.com/PDIS/wekan into lib-change

Romulus Urakagi Tsai 5 years ago
parent
commit
af7c74b2d3
82 changed files with 3687 additions and 459 deletions
  1. 2 2
      .meteor/versions
  2. 1 1
      .tx/config
  3. 26 1
      CHANGELOG.md
  4. 1 2
      client/components/boards/boardsList.js
  5. 27 0
      client/components/cards/cardDate.js
  6. 50 31
      client/components/cards/cardDetails.jade
  7. 98 22
      client/components/cards/cardDetails.js
  8. 10 0
      client/components/cards/cardDetails.styl
  9. 2 0
      client/components/cards/minicard.jade
  10. 37 0
      client/components/import/csvMembersMapper.js
  11. 1 1
      client/components/import/import.jade
  12. 40 12
      client/components/import/import.js
  13. 3 6
      client/components/lists/listBody.js
  14. 29 2
      client/components/lists/listHeader.js
  15. 1 1
      client/components/main/editor.js
  16. 18 1
      client/components/sidebar/sidebar.jade
  17. 58 0
      client/components/sidebar/sidebar.js
  18. 2 0
      client/components/users/userAvatar.styl
  19. 28 6
      i18n/ar.i18n.json
  20. 27 5
      i18n/bg.i18n.json
  21. 27 5
      i18n/br.i18n.json
  22. 27 5
      i18n/ca.i18n.json
  23. 27 5
      i18n/cs.i18n.json
  24. 27 5
      i18n/da.i18n.json
  25. 27 5
      i18n/de.i18n.json
  26. 27 5
      i18n/el.i18n.json
  27. 27 5
      i18n/en-GB.i18n.json
  28. 26 7
      i18n/en.i18n.json
  29. 27 5
      i18n/eo.i18n.json
  30. 27 5
      i18n/es-AR.i18n.json
  31. 810 0
      i18n/es-CL.i18n.json
  32. 32 10
      i18n/es.i18n.json
  33. 27 5
      i18n/eu.i18n.json
  34. 48 26
      i18n/fa.i18n.json
  35. 27 5
      i18n/fi.i18n.json
  36. 27 5
      i18n/fr.i18n.json
  37. 27 5
      i18n/gl.i18n.json
  38. 27 5
      i18n/he.i18n.json
  39. 27 5
      i18n/hi.i18n.json
  40. 27 5
      i18n/hu.i18n.json
  41. 27 5
      i18n/hy.i18n.json
  42. 27 5
      i18n/id.i18n.json
  43. 27 5
      i18n/ig.i18n.json
  44. 27 5
      i18n/it.i18n.json
  45. 28 6
      i18n/ja.i18n.json
  46. 27 5
      i18n/ka.i18n.json
  47. 27 5
      i18n/km.i18n.json
  48. 27 5
      i18n/ko.i18n.json
  49. 27 5
      i18n/lv.i18n.json
  50. 27 5
      i18n/mk.i18n.json
  51. 27 5
      i18n/mn.i18n.json
  52. 27 5
      i18n/nb.i18n.json
  53. 27 5
      i18n/nl.i18n.json
  54. 27 5
      i18n/oc.i18n.json
  55. 27 5
      i18n/pl.i18n.json
  56. 27 5
      i18n/pt-BR.i18n.json
  57. 27 5
      i18n/pt.i18n.json
  58. 27 5
      i18n/ro.i18n.json
  59. 27 5
      i18n/ru.i18n.json
  60. 27 5
      i18n/sl.i18n.json
  61. 27 5
      i18n/sr.i18n.json
  62. 57 35
      i18n/sv.i18n.json
  63. 27 5
      i18n/sw.i18n.json
  64. 27 5
      i18n/ta.i18n.json
  65. 27 5
      i18n/th.i18n.json
  66. 27 5
      i18n/tr.i18n.json
  67. 27 5
      i18n/uk.i18n.json
  68. 27 5
      i18n/vi.i18n.json
  69. 27 5
      i18n/zh-CN.i18n.json
  70. 27 5
      i18n/zh-HK.i18n.json
  71. 27 5
      i18n/zh-TW.i18n.json
  72. 83 4
      models/cards.js
  73. 313 0
      models/csvCreator.js
  74. 344 0
      models/exporter.js
  75. 8 2
      models/import.js
  76. 40 1
      models/users.js
  77. 179 30
      package-lock.json
  78. 8 5
      package.json
  79. 31 13
      rebuild-wekan.sh
  80. 3 0
      releases/translations/pull-translations.sh
  81. 1 1
      sandstorm.js
  82. 0 1
      server/migrations.js

+ 2 - 2
.meteor/versions

@@ -109,7 +109,7 @@ mobile-status-bar@1.1.0
 modern-browsers@0.1.5
 modern-browsers@0.1.5
 modules@0.15.0
 modules@0.15.0
 modules-runtime@0.12.0
 modules-runtime@0.12.0
-momentjs:moment@2.24.0
+momentjs:moment@2.25.2
 mongo@1.10.0
 mongo@1.10.0
 mongo-decimal@0.1.1
 mongo-decimal@0.1.1
 mongo-dev-server@1.1.0
 mongo-dev-server@1.1.0
@@ -127,7 +127,7 @@ mquandalle:mousetrap-bindglobal@0.0.1
 mquandalle:perfect-scrollbar@0.6.5_2
 mquandalle:perfect-scrollbar@0.6.5_2
 msavin:usercache@1.8.0
 msavin:usercache@1.8.0
 npm-bcrypt@0.9.3
 npm-bcrypt@0.9.3
-npm-mongo@3.7.0
+npm-mongo@3.7.1
 oauth@1.3.0
 oauth@1.3.0
 oauth2@1.3.0
 oauth2@1.3.0
 observe-sequence@1.0.16
 observe-sequence@1.0.16

+ 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
 # 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
 # Transifex uses a `_` separator, without an option to customize it on one side
 # or the other, so we need to do a Manual mapping.
 # or the other, so we need to do a Manual mapping.
-lang_map = bg_BG:bg, en_GB:en-GB, es_AR:es-AR, el_GR:el, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
+lang_map = bg_BG:bg, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, el_GR:el, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
 
 
 [wekan.application]
 [wekan.application]
 file_filter = i18n/<lang>.i18n.json
 file_filter = i18n/<lang>.i18n.json

+ 26 - 1
CHANGELOG.md

@@ -8,17 +8,42 @@ This release adds the following server platforms:
 and adds the following features:
 and adds the following features:
 
 
 - [Install Wekan to mobile homescreen icon and use fullscreen
 - [Install Wekan to mobile homescreen icon and use fullscreen
-  PWA](https://github.com/commit/8d5adc04645e3e71423f16869f39b8d79969bccd).
+  PWA](https://github.com/wekan/wekan/commit/8d5adc04645e3e71423f16869f39b8d79969bccd).
   [Docs for iOS and Android at wiki PWA page](https://github.com/wekan/wekan/wiki/PWA).
   [Docs for iOS and Android at wiki PWA page](https://github.com/wekan/wekan/wiki/PWA).
   Thanks to xet7.
   Thanks to xet7.
+- [Add options to rebuild-wekan.sh to run Meteor in development mode where after
+  file change it rebuilds](https://github.com/wekan/wekan/commit/5f915ef966170ea7baca7ddeb11319bc08a26fef).
+  Thanks to xet7.
+
+and adds the following updates:
+
+- [Update dependencies](https://github.com/wekan/wekan/commit/75bdd33fda58ea0233f5b38c466bcb1a9b0406ab).
+  Thanks to xet7.
+
+and adds the following translations:
+
+- [Add Spanish (Chile)](https://github.com/wekan/wekan/commit/96507e6777ed77a324eaec9799c5b46b0d25ad26).
+  Thanks to isos, Transifex user.
 
 
 and fixes the following bugs:
 and fixes the following bugs:
 
 
+- [Fix Deleting linked card makes board not load](https://github.com/wekan/wekan/issues/2785).
+  Thanks to marc1006 and xet7.
 - [Fix getStartDayOfWeek once again](https://github.com/wekan/wekan/pull/3061).
 - [Fix getStartDayOfWeek once again](https://github.com/wekan/wekan/pull/3061).
   Thanks to marc1006.
   Thanks to marc1006.
 - [Fix shortcuts list and support card shortcuts when hovering
 - [Fix shortcuts list and support card shortcuts when hovering
   a card](https://github.com/wekan/wekan/pull/3066).
   a card](https://github.com/wekan/wekan/pull/3066).
   Thanks to marc1006.
   Thanks to marc1006.
+- [Add white-space:normal to copy-to-clipboard button in card
+  details](https://github.com/wekan/wekan/pull/3075).
+  Thanks to helioguardabaxo.
+- [Fix avatar-image class](https://github.com/wekan/wekan/pull/3083).
+  Thanks to krupupakku.
+- [Fix Swimlanes ID missing in new boards](https://github.com/wekan/wekan/pull/3088).
+  Thanks to krupupakku.
+- [Fix REST API so Create card does now allow an empty member
+  list](https://github.com/wekan/wekan/pull/3084).
+  Thanks to wackazong.
 
 
 Thanks to above GitHub users for their contributions and translators for their translations.
 Thanks to above GitHub users for their contributions and translators for their translations.
 
 

+ 1 - 2
client/components/boards/boardsList.js

@@ -25,7 +25,6 @@ BlazeComponent.extendComponent({
   },
   },
 
 
   onRendered() {
   onRendered() {
-    const self = this;
     function userIsAllowedToMove() {
     function userIsAllowedToMove() {
       return Meteor.user();
       return Meteor.user();
     }
     }
@@ -78,7 +77,7 @@ BlazeComponent.extendComponent({
   },
   },
 
 
   boards() {
   boards() {
-    let query = {
+    const query = {
       archived: false,
       archived: false,
       type: 'board',
       type: 'board',
     };
     };

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

@@ -386,3 +386,30 @@ CardEndDate.register('cardEndDate');
     return this.date.get().format('l');
     return this.date.get().format('l');
   }
   }
 }.register('minicardEndDate'));
 }.register('minicardEndDate'));
+
+class VoteEndDate extends CardDate {
+  onCreated() {
+    super.onCreated();
+    const self = this;
+    self.autorun(() => {
+      self.date.set(moment(self.data().getVoteEnd()));
+    });
+  }
+  classes() {
+    const classes = 'end-date' + ' ';
+    return classes;
+  }
+  showDate() {
+    return this.date.get().format('l LT');
+  }
+  showTitle() {
+    return `${TAPi18n.__('card-end-on')} ${this.date.get().format('LLLL')}`;
+  }
+
+  events() {
+    return super.events().concat({
+      'click .js-edit-date': Popup.open('editVoteEndDate'),
+    });
+  }
+}
+VoteEndDate.register('voteEndDate');

+ 50 - 31
client/components/cards/cardDetails.jade

@@ -202,9 +202,12 @@ template(name="cardDetails")
     if getVoteQuestion
     if getVoteQuestion
       hr
       hr
       .vote-title
       .vote-title
-        h3
-          i.fa.fa-thumbs-up
-          card-details-item-title {{_ 'vote-question'}}
+        div.flex
+          h3
+            i.fa.fa-thumbs-up
+            | {{_ 'vote-question'}}
+          if getVoteEnd
+            +voteEndDate
         .vote-result
         .vote-result
           if votePublic
           if votePublic
             a.card-label.card-label-green.js-show-positive-votes {{ voteCountPositive }}
             a.card-label.card-label-green.js-show-positive-votes {{ voteCountPositive }}
@@ -212,10 +215,13 @@ template(name="cardDetails")
           else
           else
             .card-label.card-label-green {{ voteCountPositive }}
             .card-label.card-label-green {{ voteCountPositive }}
             .card-label.card-label-red {{ voteCountNegative }}
             .card-label.card-label-red {{ voteCountNegative }}
+          unless ($and currentBoard.isPublic voteAllowNonBoardMembers )
+            .card-label.card-label-gray  {{ voteCount }} {{_ 'r-of' }} {{ currentBoard.activeMembers.length }}
       +viewer
       +viewer
         = getVoteQuestion
         = getVoteQuestion
-      button.card-details-green.js-vote.js-vote-positive(class="{{#if voteState}}voted{{/if}}") {{_ 'vote-for-it'}}
-      button.card-details-red.js-vote.js-vote-negative(class="{{#if $eq voteState false}}voted{{/if}}") {{_ 'vote-against'}}
+      if showVotingButtons
+        button.card-details-green.js-vote.js-vote-positive(class="{{#if voteState}}voted{{/if}}") {{_ 'vote-for-it'}}
+        button.card-details-red.js-vote.js-vote-negative(class="{{#if $eq voteState false}}voted{{/if}}") {{_ 'vote-against'}}
 
 
     //- XXX We should use "editable" to avoid repetiting ourselves
     //- XXX We should use "editable" to avoid repetiting ourselves
     if canModifyCard
     if canModifyCard
@@ -333,16 +339,10 @@ template(name="cardDetailsActionsPopup")
         //li: a.js-members {{_ 'card-edit-members'}}
         //li: a.js-members {{_ 'card-edit-members'}}
         //li: a.js-labels {{_ 'card-edit-labels'}}
         //li: a.js-labels {{_ 'card-edit-labels'}}
         //li: a.js-attachments {{_ 'card-edit-attachments'}}
         //li: a.js-attachments {{_ 'card-edit-attachments'}}
-        if getVoteQuestion
-          li
-            a.js-cancel-voting
-              i.fa.fa-thumbs-up
-              | {{_ 'card-cancel-voting'}}
-        else
-          li
-            a.js-start-voting
-              i.fa.fa-thumbs-up
-              | {{_ 'card-start-voting'}}
+        li
+          a.js-start-voting
+            i.fa.fa-thumbs-up
+            | {{_ 'card-edit-voting'}}
         li
         li
           a.js-custom-fields
           a.js-custom-fields
             i.fa.fa-list-alt
             i.fa.fa-list-alt
@@ -465,14 +465,14 @@ template(name="cardAssigneesPopup")
               i.fa.fa-check
               i.fa.fa-check
   if currentUser.isWorker
   if currentUser.isWorker
     ul.pop-over-list.js-card-assignee-list
     ul.pop-over-list.js-card-assignee-list
-        li.item(class="{{#if currentUser.isCardAssignee}}active{{/if}}")
-          a.name.js-select-assignee(href="#")
-            +userAvatar(userId=currentUser._id)
-            span.full-name
-              = currentUser.profile.fullname
-              | (<span class="username">{{ currentUser.username }}</span>)
-            if currentUser.isCardAssignee
-              i.fa.fa-check
+      li.item(class="{{#if currentUser.isCardAssignee}}active{{/if}}")
+        a.name.js-select-assignee(href="#")
+          +userAvatar(userId=currentUser._id)
+          span.full-name
+            = currentUser.profile.fullname
+            | (<span class="username">{{ currentUser.username }}</span>)
+          if currentUser.isCardAssignee
+            i.fa.fa-check
 
 
 template(name="userAvatarAssignee")
 template(name="userAvatarAssignee")
   a.assignee.js-assignee(title="{{userData.profile.fullname}} ({{userData.username}})")
   a.assignee.js-assignee(title="{{userData.profile.fullname}} ({{userData.username}})")
@@ -519,7 +519,7 @@ template(name="cardMorePopup")
       = ' '
       = ' '
       i.fa.colorful(class="{{#if board.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
       i.fa.colorful(class="{{#if board.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
       input.inline-input(type="text" id="cardURL" readonly value="{{ absoluteUrl }}" autofocus="autofocus")
       input.inline-input(type="text" id="cardURL" readonly value="{{ absoluteUrl }}" autofocus="autofocus")
-      button.js-copy-card-link-to-clipboard(class="btn") {{_ 'copy-card-link-to-clipboard'}}
+      button.js-copy-card-link-to-clipboard(class="btn" id="clipboard") {{_ 'copy-card-link-to-clipboard'}}
     span.clearfix
     span.clearfix
     br
     br
     h2 {{_ 'change-card-parent'}}
     h2 {{_ 'change-card-parent'}}
@@ -564,20 +564,39 @@ template(name="setCardColorPopup")
 template(name="cardDeletePopup")
 template(name="cardDeletePopup")
   p {{_ "card-delete-pop"}}
   p {{_ "card-delete-pop"}}
   unless archived
   unless archived
-   p {{_ "card-delete-suggest-archive"}}
+    p {{_ "card-delete-suggest-archive"}}
+  button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
+
+template(name="deleteVotePopup")
+  p {{_ "vote-delete-pop"}}
   button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
   button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
 
 
 template(name="cardStartVotingPopup")
 template(name="cardStartVotingPopup")
   form.edit-vote-question
   form.edit-vote-question
     .fields
     .fields
       label(for="vote") {{_ 'vote-question'}}
       label(for="vote") {{_ 'vote-question'}}
-      input.js-vote-field#vote(type="text" name="vote" value="{{card.getVoteQuestion}}" autofocus)
-      label(for="vote-public") {{_ 'vote-public'}}
-        a.js-toggle-vote-public
-          .materialCheckBox#vote-public(name="vote-public")
+      input.js-vote-field#vote(type="text" name="vote" value="{{getVoteQuestion}}" autofocus disabled="{{#if getVoteQuestion}}disabled{{/if}}")
+      .check-div
+        a.flex(class="{{#if getVoteQuestion}}is-disabled{{else}}js-toggle-vote-allow-non-members{{/if}}")
+          .materialCheckBox#vote-allow-non-members(name="vote-allow-non-members" class="{{#if voteAllowNonBoardMembers}}is-checked{{/if}}")
+          span {{_ 'allowNonBoardMembers'}}
+      .check-div
+        a.flex(class="{{#if getVoteQuestion}}is-disabled{{else}}js-toggle-vote-public{{/if}}")
+          .materialCheckBox#vote-public(name="vote-public" class="{{#if votePublic}}is-checked{{/if}}")
+          span {{_ 'vote-public'}}
+      .check-div.flex
+        i.fa.fa-hourglass-end
+        a.js-end-date
+          span
+            | {{_ 'card-end'}}
+            unless getVoteEnd
+              i.fa.fa-plus
+        if getVoteEnd
+          +voteEndDate
 
 
-    button.primary.confirm.js-submit {{_ 'save'}}
-    //- button.js-remove-color.negate.wide.right {{_ 'delete'}}
+    button.primary.js-submit {{_ 'save'}}
+    if getVoteQuestion
+      button.js-remove-vote.negate.wide.right {{_ 'delete'}}
 
 
 template(name="positiveVoteMembersPopup")
 template(name="positiveVoteMembersPopup")
   ul.pop-over-list.js-card-member-list
   ul.pop-over-list.js-card-member-list

+ 98 - 22
client/components/cards/cardDetails.js

@@ -54,21 +54,6 @@ BlazeComponent.extendComponent({
     }
     }
     return null;
     return null;
   },
   },
-  votePublic() {
-    const card = this.currentData();
-    if (card.vote) return card.vote.public;
-    return null;
-  },
-  voteCountPositive() {
-    const card = this.currentData();
-    if (card.vote && card.vote.positive) return card.vote.positive.length;
-    return null;
-  },
-  voteCountNegative() {
-    const card = this.currentData();
-    if (card.vote && card.vote.negative) return card.vote.negative.length;
-    return null;
-  },
   isWatching() {
   isWatching() {
     const card = this.currentData();
     const card = this.currentData();
     return card.findWatcher(Meteor.userId());
     return card.findWatcher(Meteor.userId());
@@ -148,6 +133,15 @@ BlazeComponent.extendComponent({
     return result;
     return result;
   },
   },
 
 
+  showVotingButtons() {
+    const card = this.currentData();
+    return (
+      (currentUser.isBoardMember() ||
+        (currentUser && card.voteAllowNonBoardMembers())) &&
+      !card.expiredVote()
+    );
+  },
+
   onRendered() {
   onRendered() {
     if (Meteor.settings.public.CARD_OPENED_WEBHOOK_ENABLED) {
     if (Meteor.settings.public.CARD_OPENED_WEBHOOK_ENABLED) {
       // Send Webhook but not create Activities records ---
       // Send Webhook but not create Activities records ---
@@ -611,11 +605,6 @@ Template.cardDetailsActionsPopup.events({
   'click .js-copy-card': Popup.open('copyCard'),
   'click .js-copy-card': Popup.open('copyCard'),
   'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'),
   'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'),
   'click .js-set-card-color': Popup.open('setCardColor'),
   'click .js-set-card-color': Popup.open('setCardColor'),
-  'click .js-cancel-voting'(event) {
-    event.preventDefault();
-    this.unsetVote();
-    Popup.close();
-  },
   'click .js-move-card-to-top'(event) {
   'click .js-move-card-to-top'(event) {
     event.preventDefault();
     event.preventDefault();
     const minOrder = _.min(
     const minOrder = _.min(
@@ -967,7 +956,23 @@ BlazeComponent.extendComponent({
         },
         },
         'click .js-delete': Popup.afterConfirm('cardDelete', function() {
         'click .js-delete': Popup.afterConfirm('cardDelete', function() {
           Popup.close();
           Popup.close();
-          Cards.remove(this._id);
+          // verify that there are no linked cards
+          if (Cards.find({ linkedId: this._id }).count() === 0) {
+            Cards.remove(this._id);
+          } else {
+            // TODO: Maybe later we can list where the linked cards are.
+            // Now here is popup with a hint that the card cannot be deleted
+            // as there are linked cards.
+            // Related:
+            //   client/components/lists/listHeader.js about line 248
+            //   https://github.com/wekan/wekan/issues/2785
+            const message = `${TAPi18n.__(
+              'delete-linked-card-before-this-card',
+            )} linkedId: ${
+              this._id
+            } at client/components/cards/cardDetails.js and https://github.com/wekan/wekan/issues/2785`;
+            alert(message);
+          }
           Utils.goBoardId(this.boardId);
           Utils.goBoardId(this.boardId);
         }),
         }),
         'change .js-field-parent-board'(event) {
         'change .js-field-parent-board'(event) {
@@ -1000,22 +1005,93 @@ BlazeComponent.extendComponent({
   events() {
   events() {
     return [
     return [
       {
       {
+        'click .js-end-date': Popup.open('editVoteEndDate'),
         'submit .edit-vote-question'(evt) {
         'submit .edit-vote-question'(evt) {
           evt.preventDefault();
           evt.preventDefault();
           const voteQuestion = evt.target.vote.value;
           const voteQuestion = evt.target.vote.value;
           const publicVote = $('#vote-public').hasClass('is-checked');
           const publicVote = $('#vote-public').hasClass('is-checked');
-          this.currentCard.setVoteQuestion(voteQuestion, publicVote);
+          const allowNonBoardMembers = $('#vote-allow-non-members').hasClass(
+            'is-checked',
+          );
+          const endString = this.currentCard.getVoteEnd();
+
+          this.currentCard.setVoteQuestion(
+            voteQuestion,
+            publicVote,
+            allowNonBoardMembers,
+          );
+          if (endString) {
+            this.currentCard.setVoteEnd(endString);
+          }
           Popup.close();
           Popup.close();
         },
         },
+        'click .js-remove-vote': Popup.afterConfirm('deleteVote', () => {
+          event.preventDefault();
+          this.currentCard.unsetVote();
+          Popup.close();
+        }),
         'click a.js-toggle-vote-public'(event) {
         'click a.js-toggle-vote-public'(event) {
           event.preventDefault();
           event.preventDefault();
           $('#vote-public').toggleClass('is-checked');
           $('#vote-public').toggleClass('is-checked');
         },
         },
+        'click a.js-toggle-vote-allow-non-members'(event) {
+          event.preventDefault();
+          $('#vote-allow-non-members').toggleClass('is-checked');
+        },
       },
       },
     ];
     ];
   },
   },
 }).register('cardStartVotingPopup');
 }).register('cardStartVotingPopup');
 
 
+// editVoteEndDatePopup
+(class extends DatePicker {
+  onCreated() {
+    super.onCreated(moment().format('YYYY-MM-DD HH:mm'));
+    this.data().getVoteEnd() && this.date.set(moment(this.data().getVoteEnd()));
+  }
+  events() {
+    return [
+      {
+        'submit .edit-date'(evt) {
+          evt.preventDefault();
+
+          // if no time was given, init with 12:00
+          const time =
+            evt.target.time.value ||
+            moment(new Date().setHours(12, 0, 0)).format('LT');
+
+          const dateString = `${evt.target.date.value} ${time}`;
+          const newDate = moment(dateString, 'L LT', true);
+          if (newDate.isValid()) {
+            // if active vote -  store it
+            if (this.currentData().getVoteQuestion()) {
+              this._storeDate(newDate.toDate());
+              Popup.close();
+            } else {
+              this.currentData().vote = { end: newDate.toDate() }; // set vote end temp
+              Popup.back();
+            }
+          } else {
+            this.error.set('invalid-date');
+            evt.target.date.focus();
+          }
+        },
+        'click .js-delete-date'(evt) {
+          evt.preventDefault();
+          this._deleteDate();
+          Popup.close();
+        },
+      },
+    ];
+  }
+  _storeDate(newDate) {
+    this.card.setVoteEnd(newDate);
+  }
+  _deleteDate() {
+    this.card.unsetVoteEnd();
+  }
+}.register('editVoteEndDatePopup'));
+
 // Close the card details pane by pressing escape
 // Close the card details pane by pressing escape
 EscapeActions.register(
 EscapeActions.register(
   'detailsPane',
   'detailsPane',

+ 10 - 0
client/components/cards/cardDetails.styl

@@ -10,6 +10,9 @@ avatar-radius = 50%
   left: -2000px
   left: -2000px
   top: 0px
   top: 0px
 
 
+#clipboard
+  white-space: normal
+
 .assignee
 .assignee
   border-radius: 3px
   border-radius: 3px
   display: block
   display: block
@@ -37,6 +40,8 @@ avatar-radius = 50%
       position: absolute
       position: absolute
 
 
     &.avatar-image
     &.avatar-image
+      object-fit: cover;
+      object-position: center;
       height: 100%
       height: 100%
       width: @height
       width: @height
 
 
@@ -337,6 +342,11 @@ card-details-color(background, color...)
 .vote-title
 .vote-title
   display: flex
   display: flex
   justify-content: space-between
   justify-content: space-between
+
+  .js-edit-date
+    align-self: baseline
+    margin-left: 5px
+
 .vote-result
 .vote-result
   display: flex
   display: flex
 .js-show-positive-votes
 .js-show-positive-votes

+ 2 - 0
client/components/cards/minicard.jade

@@ -103,7 +103,9 @@ template(name="minicard")
       if getVoteQuestion
       if getVoteQuestion
         .badge.badge-state-image-only(title=getVoteQuestion)
         .badge.badge-state-image-only(title=getVoteQuestion)
           span.badge-icon.fa.fa-thumbs-up
           span.badge-icon.fa.fa-thumbs-up
+          span.badge-text {{ voteCountPositive }}
           span.badge-icon.fa.fa-thumbs-down
           span.badge-icon.fa.fa-thumbs-down
+          span.badge-text {{ voteCountNegative }}
       if attachments.count
       if attachments.count
         .badge
         .badge
           span.badge-icon.fa.fa-paperclip
           span.badge-icon.fa.fa-paperclip

+ 37 - 0
client/components/import/csvMembersMapper.js

@@ -0,0 +1,37 @@
+export function getMembersToMap(data) {
+  // we will work on the list itself (an ordered array of objects) when a
+  // mapping is done, we add a 'wekan' field to the object representing the
+  // imported member
+
+  const membersToMap = [];
+  const importedMembers = [];
+  let membersIndex;
+
+  for (let i = 0; i < data[0].length; i++) {
+    if (data[0][i].toLowerCase() === 'members') {
+      membersIndex = i;
+    }
+  }
+
+  for (let i = 1; i < data.length; i++) {
+    if (data[i][membersIndex]) {
+      for (const importedMember of data[i][membersIndex].split(' ')) {
+        if (importedMember && importedMembers.indexOf(importedMember) === -1) {
+          importedMembers.push(importedMember);
+        }
+      }
+    }
+  }
+
+  for (let importedMember of importedMembers) {
+    importedMember = {
+      username: importedMember,
+      id: importedMember,
+    };
+    const wekanUser = Users.findOne({ username: importedMember.username });
+    if (wekanUser) importedMember.wekanId = wekanUser._id;
+    membersToMap.push(importedMember);
+  }
+
+  return membersToMap;
+}

+ 1 - 1
client/components/import/import.jade

@@ -13,7 +13,7 @@ template(name="import")
 template(name="importTextarea")
 template(name="importTextarea")
   form
   form
     p: label(for='import-textarea') {{_ instruction}} {{_ 'import-board-instruction-about-errors'}}
     p: label(for='import-textarea') {{_ instruction}} {{_ 'import-board-instruction-about-errors'}}
-    textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus)
+    textarea.js-import-json(placeholder="{{_ importPlaceHolder}}" autofocus)
       | {{jsonText}}
       | {{jsonText}}
     input.primary.wide(type="submit" value="{{_ 'import'}}")
     input.primary.wide(type="submit" value="{{_ 'import'}}")
 
 

+ 40 - 12
client/components/import/import.js

@@ -1,5 +1,8 @@
 import trelloMembersMapper from './trelloMembersMapper';
 import trelloMembersMapper from './trelloMembersMapper';
 import wekanMembersMapper from './wekanMembersMapper';
 import wekanMembersMapper from './wekanMembersMapper';
+import csvMembersMapper from './csvMembersMapper';
+
+const Papa = require('papaparse');
 
 
 BlazeComponent.extendComponent({
 BlazeComponent.extendComponent({
   title() {
   title() {
@@ -30,20 +33,30 @@ BlazeComponent.extendComponent({
     }
     }
   },
   },
 
 
-  importData(evt) {
+  importData(evt, dataSource) {
     evt.preventDefault();
     evt.preventDefault();
-    const dataJson = this.find('.js-import-json').value;
-    try {
-      const dataObject = JSON.parse(dataJson);
-      this.setError('');
-      this.importedData.set(dataObject);
-      const membersToMap = this._prepareAdditionalData(dataObject);
-      // store members data and mapping in Session
-      // (we go deep and 2-way, so storing in data context is not a viable option)
+    const input = this.find('.js-import-json').value;
+    if (dataSource === 'csv') {
+      const csv = input.indexOf('\t') > 0 ? input.replace(/(\t)/g, ',') : input;
+      const ret = Papa.parse(csv);
+      if (ret && ret.data && ret.data.length) this.importedData.set(ret.data);
+      else throw new Meteor.Error('error-csv-schema');
+      const membersToMap = this._prepareAdditionalData(ret.data);
       this.membersToMap.set(membersToMap);
       this.membersToMap.set(membersToMap);
       this.nextStep();
       this.nextStep();
-    } catch (e) {
-      this.setError('error-json-malformed');
+    } else {
+      try {
+        const dataObject = JSON.parse(input);
+        this.setError('');
+        this.importedData.set(dataObject);
+        const membersToMap = this._prepareAdditionalData(dataObject);
+        // store members data and mapping in Session
+        // (we go deep and 2-way, so storing in data context is not a viable option)
+        this.membersToMap.set(membersToMap);
+        this.nextStep();
+      } catch (e) {
+        this.setError('error-json-malformed');
+      }
     }
     }
   },
   },
 
 
@@ -91,6 +104,9 @@ BlazeComponent.extendComponent({
       case 'wekan':
       case 'wekan':
         membersToMap = wekanMembersMapper.getMembersToMap(dataObject);
         membersToMap = wekanMembersMapper.getMembersToMap(dataObject);
         break;
         break;
+      case 'csv':
+        membersToMap = csvMembersMapper.getMembersToMap(dataObject);
+        break;
     }
     }
     return membersToMap;
     return membersToMap;
   },
   },
@@ -109,11 +125,23 @@ BlazeComponent.extendComponent({
     return `import-board-instruction-${Session.get('importSource')}`;
     return `import-board-instruction-${Session.get('importSource')}`;
   },
   },
 
 
+  importPlaceHolder() {
+    const importSource = Session.get('importSource');
+    if (importSource === 'csv') {
+      return 'import-csv-placeholder';
+    } else {
+      return 'import-json-placeholder';
+    }
+  },
+
   events() {
   events() {
     return [
     return [
       {
       {
         submit(evt) {
         submit(evt) {
-          return this.parentComponent().importData(evt);
+          return this.parentComponent().importData(
+            evt,
+            Session.get('importSource'),
+          );
         },
         },
       },
       },
     ];
     ];

+ 3 - 6
client/components/lists/listBody.js

@@ -77,7 +77,7 @@ BlazeComponent.extendComponent({
       else if (
       else if (
         Utils.boardView() === 'board-view-lists' ||
         Utils.boardView() === 'board-view-lists' ||
         Utils.boardView() === 'board-view-cal' ||
         Utils.boardView() === 'board-view-cal' ||
-        !Utils.boardView
+        !Utils.boardView()
       )
       )
         swimlaneId = board.getDefaultSwimline()._id;
         swimlaneId = board.getDefaultSwimline()._id;
 
 
@@ -658,10 +658,7 @@ BlazeComponent.extendComponent({
               _id = element.copy(this.boardId, this.swimlaneId, this.listId);
               _id = element.copy(this.boardId, this.swimlaneId, this.listId);
               // 1.B Linked card
               // 1.B Linked card
             } else {
             } else {
-              delete element._id;
-              element.type = 'cardType-linkedCard';
-              element.linkedId = element.linkedId || element._id;
-              _id = Cards.insert(element);
+              _id = element.link(this.boardId, this.swimlaneId, this.listId);
             }
             }
             Filter.addException(_id);
             Filter.addException(_id);
             // List insertion
             // List insertion
@@ -675,7 +672,7 @@ BlazeComponent.extendComponent({
             element.sort = Boards.findOne(this.boardId)
             element.sort = Boards.findOne(this.boardId)
               .swimlanes()
               .swimlanes()
               .count();
               .count();
-            element.type = 'swimlalne';
+            element.type = 'swimlane';
             _id = element.copy(this.boardId);
             _id = element.copy(this.boardId);
           } else if (this.isBoardTemplateSearch) {
           } else if (this.isBoardTemplateSearch) {
             board = Boards.findOne(element.linkedId);
             board = Boards.findOne(element.linkedId);

+ 29 - 2
client/components/lists/listHeader.js

@@ -223,8 +223,35 @@ BlazeComponent.extendComponent({
 Template.listMorePopup.events({
 Template.listMorePopup.events({
   'click .js-delete': Popup.afterConfirm('listDelete', function() {
   'click .js-delete': Popup.afterConfirm('listDelete', function() {
     Popup.close();
     Popup.close();
-    this.allCards().map(card => Cards.remove(card._id));
-    Lists.remove(this._id);
+    // TODO how can we avoid the fetch call?
+    const allCards = this.allCards().fetch();
+    const allCardIds = _.pluck(allCards, '_id');
+    // it's okay if the linked cards are on the same list
+    if (
+      Cards.find({
+        $and: [
+          { listId: { $ne: this._id } },
+          { linkedId: { $in: allCardIds } },
+        ],
+      }).count() === 0
+    ) {
+      allCardIds.map(_id => Cards.remove(_id));
+      Lists.remove(this._id);
+    } else {
+      // TODO: Figure out more informative message.
+      // Popup with a hint that the list cannot be deleted as there are
+      // linked cards. We can adapt the query above so we can list the linked
+      // cards.
+      // Related:
+      //   client/components/cards/cardDetails.js about line 969
+      //   https://github.com/wekan/wekan/issues/2785
+      const message = `${TAPi18n.__(
+        'delete-linked-cards-before-this-list',
+      )} linkedId: ${
+        this._id
+      } at client/components/lists/listHeader.js and https://github.com/wekan/wekan/issues/2785`;
+      alert(message);
+    }
     Utils.goBoardId(this.boardId);
     Utils.goBoardId(this.boardId);
   }),
   }),
 });
 });

+ 1 - 1
client/components/main/editor.js

@@ -328,7 +328,7 @@ Template.viewer.events({
   // the corresponding text). Clicking a link shouldn't fire these actions, stop
   // the corresponding text). Clicking a link shouldn't fire these actions, stop
   // we stop these event at the viewer component level.
   // we stop these event at the viewer component level.
   'click a'(event, templateInstance) {
   'click a'(event, templateInstance) {
-    let prevent = true;
+    const prevent = true;
     const userId = event.currentTarget.dataset.userid;
     const userId = event.currentTarget.dataset.userid;
     if (userId) {
     if (userId) {
       Popup.open('member').call({ userId }, event, templateInstance);
       Popup.open('member').call({ userId }, event, templateInstance);

+ 18 - 1
client/components/sidebar/sidebar.jade

@@ -230,6 +230,8 @@ template(name="chooseBoardSource")
       a(href="{{pathFor '/import/trello'}}") {{_ 'from-trello'}}
       a(href="{{pathFor '/import/trello'}}") {{_ 'from-trello'}}
     li
     li
       a(href="{{pathFor '/import/wekan'}}") {{_ 'from-wekan'}}
       a(href="{{pathFor '/import/wekan'}}") {{_ 'from-wekan'}}
+    li
+      a(href="{{pathFor '/import/csv'}}") {{_ 'from-csv'}}
 
 
 template(name="archiveBoardPopup")
 template(name="archiveBoardPopup")
   p {{_ 'close-board-pop'}}
   p {{_ 'close-board-pop'}}
@@ -300,7 +302,7 @@ template(name="boardMenuPopup")
       ul.pop-over-list
       ul.pop-over-list
         if withApi
         if withApi
           li
           li
-            a(href="{{exportUrl}}", download="{{exportFilename}}")
+            a.js-export-board
               i.fa.fa-share-alt
               i.fa.fa-share-alt
               | {{_ 'export-board'}}
               | {{_ 'export-board'}}
         li
         li
@@ -360,6 +362,21 @@ template(name="boardMenuPopup")
           i.fa.fa-sitemap
           i.fa.fa-sitemap
           | {{_ 'subtask-settings'}}
           | {{_ 'subtask-settings'}}
 
 
+template(name="exportBoard")
+  ul.pop-over-list
+    li
+      a(href="{{exportUrl}}", download="{{exportJsonFilename}}")
+        i.fa.fa-share-alt
+        | {{_ 'export-board-json'}}
+    li
+      a(href="{{exportCsvUrl}}", download="{{exportCsvFilename}}")
+        i.fa.fa-share-alt
+        | {{_ 'export-board-csv'}}
+    li
+      a(href="{{exportTsvUrl}}", download="{{exportTsvFilename}}")
+        i.fa.fa-share-alt
+        | {{_ 'export-board-tsv'}}
+
 template(name="labelsWidget")
 template(name="labelsWidget")
   .board-widget.board-widget-labels
   .board-widget.board-widget-labels
     h3
     h3

+ 58 - 0
client/components/sidebar/sidebar.js

@@ -213,6 +213,7 @@ Template.boardMenuPopup.events({
   'click .js-import-board': Popup.open('chooseBoardSource'),
   'click .js-import-board': Popup.open('chooseBoardSource'),
   'click .js-subtask-settings': Popup.open('boardSubtaskSettings'),
   'click .js-subtask-settings': Popup.open('boardSubtaskSettings'),
   'click .js-card-settings': Popup.open('boardCardSettings'),
   'click .js-card-settings': Popup.open('boardCardSettings'),
+  'click .js-export-board': Popup.open('exportBoard'),
 });
 });
 
 
 Template.boardMenuPopup.onCreated(function() {
 Template.boardMenuPopup.onCreated(function() {
@@ -405,6 +406,63 @@ BlazeComponent.extendComponent({
   },
   },
 }).register('chooseBoardSourcePopup');
 }).register('chooseBoardSourcePopup');
 
 
+BlazeComponent.extendComponent({
+  template() {
+    return 'exportBoard';
+  },
+  withApi() {
+    return Template.instance().apiEnabled.get();
+  },
+  exportUrl() {
+    const params = {
+      boardId: Session.get('currentBoard'),
+    };
+    const queryParams = {
+      authToken: Accounts._storedLoginToken(),
+    };
+    return FlowRouter.path('/api/boards/:boardId/export', params, queryParams);
+  },
+  exportCsvUrl() {
+    const params = {
+      boardId: Session.get('currentBoard'),
+    };
+    const queryParams = {
+      authToken: Accounts._storedLoginToken(),
+    };
+    return FlowRouter.path(
+      '/api/boards/:boardId/export/csv',
+      params,
+      queryParams,
+    );
+  },
+  exportTsvUrl() {
+    const params = {
+      boardId: Session.get('currentBoard'),
+    };
+    const queryParams = {
+      authToken: Accounts._storedLoginToken(),
+      delimiter: '\t',
+    };
+    return FlowRouter.path(
+      '/api/boards/:boardId/export/csv',
+      params,
+      queryParams,
+    );
+  },
+  exportJsonFilename() {
+    const boardId = Session.get('currentBoard');
+    return `wekan-export-board-${boardId}.json`;
+  },
+  exportCsvFilename() {
+    const boardId = Session.get('currentBoard');
+    return `wekan-export-board-${boardId}.csv`;
+  },
+  exportTsvFilename() {
+    const boardId = Session.get('currentBoard');
+    return `wekan-export-board-${boardId}.tsv`;
+  },
+}).register('exportBoardPopup');
+
 Template.labelsWidget.events({
 Template.labelsWidget.events({
   'click .js-label': Popup.open('editLabel'),
   'click .js-label': Popup.open('editLabel'),
   'click .js-add-label': Popup.open('createLabel'),
   'click .js-add-label': Popup.open('createLabel'),

+ 2 - 0
client/components/users/userAvatar.styl

@@ -29,6 +29,8 @@ avatar-radius = 50%
       position: absolute
       position: absolute
 
 
     &.avatar-image
     &.avatar-image
+      object-fit: cover;
+      object-position: center;
       height: 100%
       height: 100%
       width: @height
       width: @height
 
 

+ 28 - 6
i18n/ar.i18n.json

@@ -1,6 +1,6 @@
 {
 {
   "accept": "قبول",
   "accept": "قبول",
-  "act-activity-notify": "اشعارات النشاط",
+  "act-activity-notify": "اشعار النشاط",
   "act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
   "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-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-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -152,8 +152,6 @@
   "card-spent": "امضى وقتا",
   "card-spent": "امضى وقتا",
   "card-edit-attachments": "تعديل المرفقات",
   "card-edit-attachments": "تعديل المرفقات",
   "card-edit-custom-fields": "تعديل الحقل المعدل",
   "card-edit-custom-fields": "تعديل الحقل المعدل",
-  "card-start-voting": "ابدأ التصويت",
-  "card-cancel-voting": "حذف التصويت وجميع الأصوات",
   "card-edit-labels": "تعديل العلامات",
   "card-edit-labels": "تعديل العلامات",
   "card-edit-members": "تعديل الأعضاء",
   "card-edit-members": "تعديل الأعضاء",
   "card-labels-title": "تعديل علامات البطاقة.",
   "card-labels-title": "تعديل علامات البطاقة.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "ابدأ تصويت",
   "cardStartVotingPopup-title": "ابدأ تصويت",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "مع",
   "vote-for-it": "مع",
   "vote-against": "ضد",
   "vote-against": "ضد",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "حذف البطاقة ?",
   "cardDeletePopup-title": "حذف البطاقة ?",
   "cardDetailsActionsPopup-title": "إجراءات على البطاقة",
   "cardDetailsActionsPopup-title": "إجراءات على البطاقة",
   "cardLabelsPopup-title": "علامات",
   "cardLabelsPopup-title": "علامات",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "لا يمكنك دعوة نفسك",
   "error-user-notAllowSelf": "لا يمكنك دعوة نفسك",
@@ -314,6 +317,11 @@
   "error-username-taken": "إسم المستخدم مأخوذ مسبقا",
   "error-username-taken": "إسم المستخدم مأخوذ مسبقا",
   "error-email-taken": "البريد الإلكتروني مأخوذ بالفعل",
   "error-email-taken": "البريد الإلكتروني مأخوذ بالفعل",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "استيراد لوحة",
   "import-board-c": "استيراد لوحة",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "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-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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "رسم خريطة الأعضاء",
   "import-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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "المزيد",
   "listMorePopup-title": "المزيد",
   "link-list": "رابط إلى هذه القائمة",
   "link-list": "رابط إلى هذه القائمة",
   "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
   "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/bg.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Изработено време",
   "card-spent": "Изработено време",
   "card-edit-attachments": "Промени прикачените файлове",
   "card-edit-attachments": "Промени прикачените файлове",
   "card-edit-custom-fields": "Промени собствените полета",
   "card-edit-custom-fields": "Промени собствените полета",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Промени етикетите",
   "card-edit-labels": "Промени етикетите",
   "card-edit-members": "Промени членовете",
   "card-edit-members": "Промени членовете",
   "card-labels-title": "Промени етикетите за картата.",
   "card-labels-title": "Промени етикетите за картата.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Желаете да изтриете картата?",
   "cardDeletePopup-title": "Желаете да изтриете картата?",
   "cardDetailsActionsPopup-title": "Опции",
   "cardDetailsActionsPopup-title": "Опции",
   "cardLabelsPopup-title": "Етикети",
   "cardLabelsPopup-title": "Етикети",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "За да направите това трябва да сте член на това табло",
   "error-board-notAMember": "За да направите това трябва да сте член на това табло",
   "error-json-malformed": "Текстът Ви не е валиден JSON",
   "error-json-malformed": "Текстът Ви не е валиден JSON",
   "error-json-schema": "JSON информацията Ви не съдържа информация във валиден формат",
   "error-json-schema": "JSON информацията Ви не съдържа информация във валиден формат",
+  "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": "Този списък не съществува",
   "error-list-doesNotExist": "Този списък не съществува",
   "error-user-doesNotExist": "Този потребител не съществува",
   "error-user-doesNotExist": "Този потребител не съществува",
   "error-user-notAllowSelf": "Не можете да поканите себе си",
   "error-user-notAllowSelf": "Не можете да поканите себе си",
@@ -314,6 +317,11 @@
   "error-username-taken": "Това потребителско име е вече заето",
   "error-username-taken": "Това потребителско име е вече заето",
   "error-email-taken": "Имейлът е вече зает",
   "error-email-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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Експортиране на Табло",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Импортирай Табло",
   "import-board-c": "Импортирай Табло",
   "import-board-title-trello": "Импорт на табло от Trello",
   "import-board-title-trello": "Импорт на табло от Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "От Trello",
   "from-trello": "От Trello",
   "from-wekan": "From previous export",
   "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-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-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-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": "Копирайте валидната Ви JSON информация тук",
   "import-json-placeholder": "Копирайте валидната Ви JSON информация тук",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Импорт на карта от Trello",
   "listImportCardPopup-title": "Импорт на карта от Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Още",
   "listMorePopup-title": "Още",
   "link-list": "Връзка към този списък",
   "link-list": "Връзка към този списък",
   "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
   "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Когато карта",
   "r-when-a-card": "Когато карта",
   "r-is": "е",
   "r-is": "е",
   "r-is-moved": "преместена",
   "r-is-moved": "преместена",
-  "r-added-to": "добавена в",
+  "r-added-to": "Added to",
   "r-removed-from": "премахната от",
   "r-removed-from": "премахната от",
   "r-the-board": "таблото",
   "r-the-board": "таблото",
   "r-list": "списък",
   "r-list": "списък",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/br.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Diverkañ ar gartenn ?",
   "cardDeletePopup-title": "Diverkañ ar gartenn ?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Muioc’h",
   "listMorePopup-title": "Muioc’h",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/ca.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Temps Dedicat",
   "card-spent": "Temps Dedicat",
   "card-edit-attachments": "Edita arxius adjunts",
   "card-edit-attachments": "Edita arxius adjunts",
   "card-edit-custom-fields": "Editar camps personalitzats",
   "card-edit-custom-fields": "Editar camps personalitzats",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edita etiquetes",
   "card-edit-labels": "Edita etiquetes",
   "card-edit-members": "Edita membres",
   "card-edit-members": "Edita membres",
   "card-labels-title": "Canvia les etiquetes de la fitxa",
   "card-labels-title": "Canvia les etiquetes de la fitxa",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Esborrar fitxa?",
   "cardDeletePopup-title": "Esborrar fitxa?",
   "cardDetailsActionsPopup-title": "Accions de fitxes",
   "cardDetailsActionsPopup-title": "Accions de fitxes",
   "cardLabelsPopup-title": "Etiquetes",
   "cardLabelsPopup-title": "Etiquetes",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Necessites ser membre d'aquest tauler per dur a terme aquesta acció",
   "error-board-notAMember": "Necessites ser membre d'aquest tauler per dur a terme aquesta acció",
   "error-json-malformed": "El text no és JSON vàlid",
   "error-json-malformed": "El text no és JSON vàlid",
   "error-json-schema": "La dades JSON no contenen la informació en el format correcte",
   "error-json-schema": "La dades JSON no contenen la informació en el format correcte",
+  "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": "La llista no existeix",
   "error-list-doesNotExist": "La llista no existeix",
   "error-user-doesNotExist": "L'usuari no existeix",
   "error-user-doesNotExist": "L'usuari no existeix",
   "error-user-notAllowSelf": "No et pots convidar a tu mateix",
   "error-user-notAllowSelf": "No et pots convidar a tu mateix",
@@ -314,6 +317,11 @@
   "error-username-taken": "Aquest usuari ja existeix",
   "error-username-taken": "Aquest usuari ja existeix",
   "error-email-taken": "L'adreça de correu electrònic ja és en ús",
   "error-email-taken": "L'adreça de correu electrònic ja és en ús",
   "export-board": "Exporta tauler",
   "export-board": "Exporta tauler",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Exporta tauler",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Importa tauler",
   "import-board-c": "Importa tauler",
   "import-board-title-trello": "Importa tauler des de Trello",
   "import-board-title-trello": "Importa tauler des de Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Des de Trello",
   "from-trello": "Des de Trello",
   "from-wekan": "From previous export",
   "from-wekan": "From previous export",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "En el teu tauler Trello, ves a 'Menú', 'Més'.' Imprimir i Exportar', 'Exportar JSON', i copia el text resultant.",
   "import-board-instruction-trello": "En el teu tauler Trello, ves a 'Menú', 'Més'.' Imprimir i Exportar', 'Exportar JSON', i copia el text resultant.",
+  "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-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-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": "Aferra codi JSON vàlid aquí",
   "import-json-placeholder": "Aferra codi JSON vàlid aquí",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Mapeja el membres",
   "import-map-members": "Mapeja el membres",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Revisa l'assignació de membres",
   "import-show-user-mapping": "Revisa l'assignació de membres",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Accions de Carril de Natació",
   "swimlaneActionPopup-title": "Accions de Carril de Natació",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "importa una fitxa de Trello",
   "listImportCardPopup-title": "importa una fitxa de Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Més",
   "listMorePopup-title": "Més",
   "link-list": "Enllaça a aquesta llista",
   "link-list": "Enllaça a aquesta llista",
   "list-delete-pop": "Totes les accions seran esborrades de la llista d'activitats i no serà possible recuperar la llista",
   "list-delete-pop": "Totes les accions seran esborrades de la llista d'activitats i no serà possible recuperar la llista",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/cs.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Strávený čas",
   "card-spent": "Strávený čas",
   "card-edit-attachments": "Upravit přílohy",
   "card-edit-attachments": "Upravit přílohy",
   "card-edit-custom-fields": "Upravit vlastní pole",
   "card-edit-custom-fields": "Upravit vlastní pole",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Upravit štítky",
   "card-edit-labels": "Upravit štítky",
   "card-edit-members": "Upravit členy",
   "card-edit-members": "Upravit členy",
   "card-labels-title": "Změnit štítky karty.",
   "card-labels-title": "Změnit štítky karty.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Smazat kartu?",
   "cardDeletePopup-title": "Smazat kartu?",
   "cardDetailsActionsPopup-title": "Akce karty",
   "cardDetailsActionsPopup-title": "Akce karty",
   "cardLabelsPopup-title": "Štítky",
   "cardLabelsPopup-title": "Štítky",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "K provedení změny musíš být členem tohoto tabla",
   "error-board-notAMember": "K provedení změny musíš být členem tohoto tabla",
   "error-json-malformed": "Tvůj text není validní JSON",
   "error-json-malformed": "Tvůj text není validní JSON",
   "error-json-schema": "Tato JSON data neobsahují správné informace v platném formátu",
   "error-json-schema": "Tato JSON data neobsahují správné informace v platném formátu",
+  "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": "Tento sloupec ;neexistuje",
   "error-list-doesNotExist": "Tento sloupec ;neexistuje",
   "error-user-doesNotExist": "Tento uživatel neexistuje",
   "error-user-doesNotExist": "Tento uživatel neexistuje",
   "error-user-notAllowSelf": "Nemůžeš pozvat sám sebe",
   "error-user-notAllowSelf": "Nemůžeš pozvat sám sebe",
@@ -314,6 +317,11 @@
   "error-username-taken": "Toto uživatelské jméno již existuje",
   "error-username-taken": "Toto uživatelské jméno již existuje",
   "error-email-taken": "Tento email byl již použit",
   "error-email-taken": "Tento email byl již použit",
   "export-board": "Exportovat tablo",
   "export-board": "Exportovat tablo",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Exportovat tablo",
   "sort": "řadit",
   "sort": "řadit",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "řadit seznam podle",
   "list-sort-by": "řadit seznam podle",
@@ -349,12 +357,16 @@
   "import-board-c": "Importovat tablo",
   "import-board-c": "Importovat tablo",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Importovat tablo z předchozího exportu",
   "import-board-title-wekan": "Importovat tablo z předchozího exportu",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Z Trella",
   "from-trello": "Z Trella",
   "from-wekan": "Z předchozího exportu",
   "from-wekan": "Z předchozího exportu",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "Na svém Trello tablu, otevři 'Menu', pak 'More', 'Print and Export', 'Export JSON', a zkopíruj výsledný text",
   "import-board-instruction-trello": "Na svém Trello tablu, otevři 'Menu', pak 'More', 'Print and Export', 'Export JSON', a zkopíruj výsledný text",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "Ve vašem tablu jděte do 'Menu', klikněte na 'Exportovat tablo' a zkopírujte text ze staženého souboru.",
   "import-board-instruction-wekan": "Ve vašem tablu jděte do 'Menu', klikněte na 'Exportovat tablo' a zkopírujte text ze staženého souboru.",
   "import-board-instruction-about-errors": "Někdy import funguje i přestože dostáváte chyby při importování tabla, které se zobrazí na stránce Všechna tabla.",
   "import-board-instruction-about-errors": "Někdy import funguje i přestože dostáváte chyby při importování tabla, které se zobrazí na stránce Všechna tabla.",
   "import-json-placeholder": "Sem vlož validní JSON data",
   "import-json-placeholder": "Sem vlož validní JSON data",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Mapovat členy",
   "import-map-members": "Mapovat členy",
   "import-members-map": "Toto importované tablo obsahuje několik osob. Prosím namapujte osoby z importu na místní uživatelské účty.",
   "import-members-map": "Toto importované tablo obsahuje několik osob. Prosím namapujte osoby z importu na místní uživatelské účty.",
   "import-show-user-mapping": "Zkontrolovat namapování členů",
   "import-show-user-mapping": "Zkontrolovat namapování členů",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Akce swimlane",
   "swimlaneActionPopup-title": "Akce swimlane",
   "swimlaneAddPopup-title": "Přidat swimlane dolů",
   "swimlaneAddPopup-title": "Přidat swimlane dolů",
   "listImportCardPopup-title": "Importovat Trello kartu",
   "listImportCardPopup-title": "Importovat Trello kartu",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Více",
   "listMorePopup-title": "Více",
   "link-list": "Odkaz na tento sloupec",
   "link-list": "Odkaz na tento sloupec",
   "list-delete-pop": "Všechny akce budou odstraněny z kanálu aktivity a nebude možné sloupec obnovit. Toto nelze vrátit zpět.",
   "list-delete-pop": "Všechny akce budou odstraněny z kanálu aktivity a nebude možné sloupec obnovit. Toto nelze vrátit zpět.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Pokud karta",
   "r-when-a-card": "Pokud karta",
   "r-is": "je",
   "r-is": "je",
   "r-is-moved": "je přesunuto",
   "r-is-moved": "je přesunuto",
-  "r-added-to": "přidáno do",
+  "r-added-to": "Added to",
   "r-removed-from": "Odstraněno z",
   "r-removed-from": "Odstraněno z",
   "r-the-board": "tablo",
   "r-the-board": "tablo",
   "r-list": "sloupce",
   "r-list": "sloupce",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/da.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Anvendt tid",
   "card-spent": "Anvendt tid",
   "card-edit-attachments": "Redigér vedhæftninger",
   "card-edit-attachments": "Redigér vedhæftninger",
   "card-edit-custom-fields": "Redigér brugerdefinerede felter",
   "card-edit-custom-fields": "Redigér brugerdefinerede felter",
-  "card-start-voting": "Start stemmegivning",
-  "card-cancel-voting": "Slet stemmegivning og alle stemmer",
   "card-edit-labels": "Redigér etiketter",
   "card-edit-labels": "Redigér etiketter",
   "card-edit-members": "Redigér medlemmer",
   "card-edit-members": "Redigér medlemmer",
   "card-labels-title": "Ændr etiketter for kortet.",
   "card-labels-title": "Ændr etiketter for kortet.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start en stemmeafgivning",
   "cardStartVotingPopup-title": "Start en stemmeafgivning",
   "positiveVoteMembersPopup-title": "Tilhængere",
   "positiveVoteMembersPopup-title": "Tilhængere",
   "negativeVoteMembersPopup-title": "Modstandere",
   "negativeVoteMembersPopup-title": "Modstandere",
-  "allowNonBoardMembers": "Tillad anonym stemmeafgivning på offentlige tavler",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Spørgsmål til afstemning",
   "vote-question": "Spørgsmål til afstemning",
   "vote-public": "Vis hvem som stemte hvad",
   "vote-public": "Vis hvem som stemte hvad",
   "vote-for-it": "går ind for",
   "vote-for-it": "går ind for",
   "vote-against": "går imod",
   "vote-against": "går imod",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Slet kort?",
   "cardDeletePopup-title": "Slet kort?",
   "cardDetailsActionsPopup-title": "Handlinger for kort",
   "cardDetailsActionsPopup-title": "Handlinger for kort",
   "cardLabelsPopup-title": "Etiketter",
   "cardLabelsPopup-title": "Etiketter",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Du skal være medlem af denne tavle for at gøre dette",
   "error-board-notAMember": "Du skal være medlem af denne tavle for at gøre dette",
   "error-json-malformed": "Din tekst er ikke gyldig JSON",
   "error-json-malformed": "Din tekst er ikke gyldig JSON",
   "error-json-schema": "Dine JSON-data indeholder ikke den rette information i det rette format",
   "error-json-schema": "Dine JSON-data indeholder ikke den rette information i det rette 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": "Listen findes ikke",
   "error-list-doesNotExist": "Listen findes ikke",
   "error-user-doesNotExist": "Brugeren findes ikke",
   "error-user-doesNotExist": "Brugeren findes ikke",
   "error-user-notAllowSelf": "Du kan ikke invitere dig selv",
   "error-user-notAllowSelf": "Du kan ikke invitere dig selv",
@@ -314,6 +317,11 @@
   "error-username-taken": "Brugernavnet er optaget",
   "error-username-taken": "Brugernavnet er optaget",
   "error-email-taken": "E-mailadressen er allerede optaget",
   "error-email-taken": "E-mailadressen er allerede optaget",
   "export-board": "Eksportér tavle",
   "export-board": "Eksportér tavle",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Eksportér tavle",
   "sort": "Sortér",
   "sort": "Sortér",
   "sort-desc": "Klik for at sortere listen",
   "sort-desc": "Klik for at sortere listen",
   "list-sort-by": "Sortér listen efter:",
   "list-sort-by": "Sortér listen efter:",
@@ -349,12 +357,16 @@
   "import-board-c": "Importér tavle",
   "import-board-c": "Importér tavle",
   "import-board-title-trello": "Importér tavle fra Trello",
   "import-board-title-trello": "Importér tavle fra Trello",
   "import-board-title-wekan": "Importér tavler fra tidligere eksport",
   "import-board-title-wekan": "Importér tavler fra tidligere eksport",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Fra Trello",
   "from-trello": "Fra Trello",
   "from-wekan": "Fra forrige eksport",
   "from-wekan": "Fra forrige eksport",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "I din Trello-tavle, gå til 'Menu', dernæst 'More', 'Print and Export', 'Export JSON', og kopiér den tekst som vises.",
   "import-board-instruction-trello": "I din Trello-tavle, gå til 'Menu', dernæst 'More', 'Print and Export', 'Export JSON', og kopiér den tekst som vises.",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "På din tavle, gå til 'Menu', dernæst 'Eksportér tavle', og kopiér teksten i den hentede fil.",
   "import-board-instruction-wekan": "På din tavle, gå til 'Menu', dernæst 'Eksportér tavle', og kopiér teksten i den hentede fil.",
   "import-board-instruction-about-errors": "Hvis du får fejl når der importeres en tavle, så vil importen undertiden stadig fungere, og tavlen vil være under side Alle tavler.",
   "import-board-instruction-about-errors": "Hvis du får fejl når der importeres en tavle, så vil importen undertiden stadig fungere, og tavlen vil være under side Alle tavler.",
   "import-json-placeholder": "Indsæt dine gyldige JSON-data her",
   "import-json-placeholder": "Indsæt dine gyldige JSON-data her",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Kortlæg medlemmer",
   "import-map-members": "Kortlæg medlemmer",
   "import-members-map": "Dine importerede tavler rummer medlemmer. Kortlæg venligst de medlemmer du ønsker at importere til dine brugere.",
   "import-members-map": "Dine importerede tavler rummer medlemmer. Kortlæg venligst de medlemmer du ønsker at importere til dine brugere.",
   "import-show-user-mapping": "Gennemse kortlægning af medlemmer",
   "import-show-user-mapping": "Gennemse kortlægning af medlemmer",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Handlinger for svømmebane",
   "swimlaneActionPopup-title": "Handlinger for svømmebane",
   "swimlaneAddPopup-title": "Tilføj en svømmebane nedenfor",
   "swimlaneAddPopup-title": "Tilføj en svømmebane nedenfor",
   "listImportCardPopup-title": "Importér et Trello-kort",
   "listImportCardPopup-title": "Importér et Trello-kort",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Mere",
   "listMorePopup-title": "Mere",
   "link-list": "Link til denne liste",
   "link-list": "Link til denne liste",
   "list-delete-pop": "Alle handlinger vil blive fjernet fra aktivitetsfeedet og du vil ikke have mulighed for at genskabe listen. Der er ingen måder at fortryde. ",
   "list-delete-pop": "Alle handlinger vil blive fjernet fra aktivitetsfeedet og du vil ikke have mulighed for at genskabe listen. Der er ingen måder at fortryde. ",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Når et kort",
   "r-when-a-card": "Når et kort",
   "r-is": "er",
   "r-is": "er",
   "r-is-moved": "flyttes",
   "r-is-moved": "flyttes",
-  "r-added-to": "tilføjes til",
+  "r-added-to": "Added to",
   "r-removed-from": "Fjernes fra",
   "r-removed-from": "Fjernes fra",
   "r-the-board": "tavlen",
   "r-the-board": "tavlen",
   "r-list": "liste",
   "r-list": "liste",
@@ -784,5 +797,14 @@
   "thursday": "Torsdag",
   "thursday": "Torsdag",
   "friday": "Fredag",
   "friday": "Fredag",
   "saturday": "Lørdag",
   "saturday": "Lørdag",
-  "sunday": "Søndag"
+  "sunday": "Søndag",
+  "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"
 }
 }

+ 27 - 5
i18n/de.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Aufgewendete Zeit",
   "card-spent": "Aufgewendete Zeit",
   "card-edit-attachments": "Anhänge ändern",
   "card-edit-attachments": "Anhänge ändern",
   "card-edit-custom-fields": "Benutzerdefinierte Felder editieren",
   "card-edit-custom-fields": "Benutzerdefinierte Felder editieren",
-  "card-start-voting": "Abstimmung starten",
-  "card-cancel-voting": "Abstimmung mit allen Stimmen löschen ",
   "card-edit-labels": "Labels ändern",
   "card-edit-labels": "Labels ändern",
   "card-edit-members": "Mitglieder ändern",
   "card-edit-members": "Mitglieder ändern",
   "card-labels-title": "Labels für diese Karte ändern.",
   "card-labels-title": "Labels für diese Karte ändern.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Abstimmung starten",
   "cardStartVotingPopup-title": "Abstimmung starten",
   "positiveVoteMembersPopup-title": "Befürworter",
   "positiveVoteMembersPopup-title": "Befürworter",
   "negativeVoteMembersPopup-title": "Gegner",
   "negativeVoteMembersPopup-title": "Gegner",
-  "allowNonBoardMembers": "Anonyme Abstimmung im öffentlichen Board zulassen",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Abstimmen über",
   "vote-question": "Abstimmen über",
   "vote-public": "Zeigen, wer was gewählt hat",
   "vote-public": "Zeigen, wer was gewählt hat",
   "vote-for-it": "Dafür",
   "vote-for-it": "Dafür",
   "vote-against": "Dagegen",
   "vote-against": "Dagegen",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Karte löschen?",
   "cardDeletePopup-title": "Karte löschen?",
   "cardDetailsActionsPopup-title": "Kartenaktionen",
   "cardDetailsActionsPopup-title": "Kartenaktionen",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Um das zu tun, müssen Sie Mitglied dieses Boards sein",
   "error-board-notAMember": "Um das zu tun, müssen Sie Mitglied dieses Boards sein",
   "error-json-malformed": "Ihre Eingabe ist kein gültiges JSON",
   "error-json-malformed": "Ihre Eingabe ist kein gültiges JSON",
   "error-json-schema": "Ihre JSON-Daten enthalten nicht die gewünschten Informationen im richtigen Format",
   "error-json-schema": "Ihre JSON-Daten enthalten nicht die gewünschten Informationen im richtigen 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": "Diese Liste existiert nicht",
   "error-list-doesNotExist": "Diese Liste existiert nicht",
   "error-user-doesNotExist": "Dieser Nutzer existiert nicht",
   "error-user-doesNotExist": "Dieser Nutzer existiert nicht",
   "error-user-notAllowSelf": "Sie können sich nicht selbst einladen.",
   "error-user-notAllowSelf": "Sie können sich nicht selbst einladen.",
@@ -314,6 +317,11 @@
   "error-username-taken": "Dieser Benutzername ist bereits vergeben",
   "error-username-taken": "Dieser Benutzername ist bereits vergeben",
   "error-email-taken": "E-Mail wird schon verwendet",
   "error-email-taken": "E-Mail wird schon verwendet",
   "export-board": "Board exportieren",
   "export-board": "Board exportieren",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Board exportieren",
   "sort": "Sortieren",
   "sort": "Sortieren",
   "sort-desc": "Zum Sortieren der Liste klicken",
   "sort-desc": "Zum Sortieren der Liste klicken",
   "list-sort-by": "Sortieren der Liste nach:",
   "list-sort-by": "Sortieren der Liste nach:",
@@ -349,12 +357,16 @@
   "import-board-c": "Board importieren",
   "import-board-c": "Board importieren",
   "import-board-title-trello": "Board von Trello importieren",
   "import-board-title-trello": "Board von Trello importieren",
   "import-board-title-wekan": "Board aus vorherigem Export importieren",
   "import-board-title-wekan": "Board aus vorherigem Export importieren",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Von Trello",
   "from-trello": "Von Trello",
   "from-wekan": "Aus vorherigem Export",
   "from-wekan": "Aus vorherigem Export",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "Gehen Sie in ihrem Trello-Board auf 'Menü', dann 'Mehr', 'Drucken und Exportieren', 'JSON-Export' und kopieren Sie den dort angezeigten Text",
   "import-board-instruction-trello": "Gehen Sie in ihrem Trello-Board auf 'Menü', dann 'Mehr', 'Drucken und Exportieren', 'JSON-Export' und kopieren Sie den dort angezeigten Text",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "Gehen Sie in Ihrem Board auf 'Menü', danach auf 'Board exportieren' und kopieren Sie den Text aus der heruntergeladenen Datei.",
   "import-board-instruction-wekan": "Gehen Sie in Ihrem Board auf 'Menü', danach auf 'Board exportieren' und kopieren Sie den Text aus der heruntergeladenen Datei.",
   "import-board-instruction-about-errors": "Treten beim importieren eines Board Fehler auf, so kann der Import dennoch erfolgreich abgeschlossen sein und das Board ist auf der Seite \"Alle Boards\" zusehen.",
   "import-board-instruction-about-errors": "Treten beim importieren eines Board Fehler auf, so kann der Import dennoch erfolgreich abgeschlossen sein und das Board ist auf der Seite \"Alle Boards\" zusehen.",
   "import-json-placeholder": "Fügen Sie die korrekten JSON-Daten hier ein",
   "import-json-placeholder": "Fügen Sie die korrekten JSON-Daten hier ein",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Mitglieder zuordnen",
   "import-map-members": "Mitglieder zuordnen",
   "import-members-map": "Das importierte Board hat einige Mitglieder. Bitte ordnen sie die Mitglieder, die Sie importieren wollen, Ihren Benutzern zu.",
   "import-members-map": "Das importierte Board hat einige Mitglieder. Bitte ordnen sie die Mitglieder, die Sie importieren wollen, Ihren Benutzern zu.",
   "import-show-user-mapping": "Mitgliederzuordnung überprüfen",
   "import-show-user-mapping": "Mitgliederzuordnung überprüfen",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlaneaktionen",
   "swimlaneActionPopup-title": "Swimlaneaktionen",
   "swimlaneAddPopup-title": "Swimlane unterhalb einfügen",
   "swimlaneAddPopup-title": "Swimlane unterhalb einfügen",
   "listImportCardPopup-title": "Eine Trello-Karte importieren",
   "listImportCardPopup-title": "Eine Trello-Karte importieren",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Mehr",
   "listMorePopup-title": "Mehr",
   "link-list": "Link zu dieser Liste",
   "link-list": "Link zu dieser Liste",
   "list-delete-pop": "Alle Aktionen werden aus dem Verlauf gelöscht und die Liste kann nicht wiederhergestellt werden.",
   "list-delete-pop": "Alle Aktionen werden aus dem Verlauf gelöscht und die Liste kann nicht wiederhergestellt werden.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Wenn Karte",
   "r-when-a-card": "Wenn Karte",
   "r-is": "wird",
   "r-is": "wird",
   "r-is-moved": "verschoben wird",
   "r-is-moved": "verschoben wird",
-  "r-added-to": "hinzugefügt zu",
+  "r-added-to": "Added to",
   "r-removed-from": "entfernt von",
   "r-removed-from": "entfernt von",
   "r-the-board": "das Board",
   "r-the-board": "das Board",
   "r-list": "Liste",
   "r-list": "Liste",
@@ -784,5 +797,14 @@
   "thursday": "Donnerstag",
   "thursday": "Donnerstag",
   "friday": "Freitag",
   "friday": "Freitag",
   "saturday": "Samstag",
   "saturday": "Samstag",
-  "sunday": "Sonntag"
+  "sunday": "Sonntag",
+  "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"
 }
 }

+ 27 - 5
i18n/el.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Διαγραφή Κάρτας;",
   "cardDeletePopup-title": "Διαγραφή Κάρτας;",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Ετικέτες",
   "cardLabelsPopup-title": "Ετικέτες",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member of this board to do that",
   "error-board-notAMember": "You need to be a member of this board to do that",
   "error-json-malformed": "Το κείμενο δεν είναι έγκυρο JSON",
   "error-json-malformed": "Το κείμενο δεν είναι έγκυρο JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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": "Η λίστα δεν υπάρχει",
   "error-list-doesNotExist": "Η λίστα δεν υπάρχει",
   "error-user-doesNotExist": "Ο χρήστης δεν υπάρχει",
   "error-user-doesNotExist": "Ο χρήστης δεν υπάρχει",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been 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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Εξαγωγή πίνακα",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Εισαγωγή πίνακα",
   "import-board-c": "Εισαγωγή πίνακα",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Από το Trello",
   "from-trello": "Από το Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Εισαγωγή μιας κάρτας Trello",
   "listImportCardPopup-title": "Εισαγωγή μιας κάρτας Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Περισσότερα",
   "listMorePopup-title": "Περισσότερα",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Όταν μία κάρτα",
   "r-when-a-card": "Όταν μία κάρτα",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

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

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 26 - 7
i18n/en.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -642,7 +655,6 @@
   "r-when-a-member": "When a member is",
   "r-when-a-member": "When a member is",
   "r-when-the-member": "When the member",
   "r-when-the-member": "When the member",
   "r-name": "name",
   "r-name": "name",
-  "r-is": "is",
   "r-when-a-attach": "When an attachment",
   "r-when-a-attach": "When an attachment",
   "r-when-a-checklist": "When a checklist is",
   "r-when-a-checklist": "When a checklist is",
   "r-when-the-checklist": "When the checklist",
   "r-when-the-checklist": "When the checklist",
@@ -656,7 +668,6 @@
   "r-top-of": "Top of",
   "r-top-of": "Top of",
   "r-bottom-of": "Bottom of",
   "r-bottom-of": "Bottom of",
   "r-its-list": "its list",
   "r-its-list": "its list",
-  "r-list": "list",
   "r-archive": "Move to Archive",
   "r-archive": "Move to Archive",
   "r-unarchive": "Restore from Archive",
   "r-unarchive": "Restore from Archive",
   "r-card": "card",
   "r-card": "card",
@@ -712,7 +723,6 @@
   "r-swimlane-name": "swimlane name",
   "r-swimlane-name": "swimlane name",
   "r-board-note": "Note: leave a field empty to match every possible value. ",
   "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-checklist-note": "Note: checklist's items have to be written as comma separated values.",
-  "r-added-to": "added to",
   "r-when-a-card-is-moved": "When a card is moved to another list",
   "r-when-a-card-is-moved": "When a card is moved to another list",
   "r-set": "Set",
   "r-set": "Set",
   "r-update": "Update",
   "r-update": "Update",
@@ -787,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/eo.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Redakti etikedojn",
   "card-edit-labels": "Redakti etikedojn",
   "card-edit-members": "Redakti membrojn",
   "card-edit-members": "Redakti membrojn",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Etikedoj",
   "cardLabelsPopup-title": "Etikedoj",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member of this board to do that",
   "error-board-notAMember": "You need to be a member of this board to do that",
   "error-json-malformed": "Via teksto estas nevalida JSON",
   "error-json-malformed": "Via teksto estas nevalida JSON",
   "error-json-schema": "Via JSON ne enhavas la ĝustajn informojn en ĝusta formato",
   "error-json-schema": "Via JSON ne enhavas la ĝustajn informojn en ĝusta formato",
+  "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": "Tio listo ne ekzistas",
   "error-list-doesNotExist": "Tio listo ne ekzistas",
   "error-user-doesNotExist": "Tio uzanto ne ekzistas",
   "error-user-doesNotExist": "Tio uzanto ne ekzistas",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "Uzantnomo jam prenita",
   "error-username-taken": "Uzantnomo jam prenita",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Pli",
   "listMorePopup-title": "Pli",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "listo",
   "r-list": "listo",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

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

@@ -152,8 +152,6 @@
   "card-spent": "Tiempo Empleado",
   "card-spent": "Tiempo Empleado",
   "card-edit-attachments": "Editar adjuntos",
   "card-edit-attachments": "Editar adjuntos",
   "card-edit-custom-fields": "Editar campos personalizados",
   "card-edit-custom-fields": "Editar campos personalizados",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Editar etiquetas",
   "card-edit-labels": "Editar etiquetas",
   "card-edit-members": "Editar miembros",
   "card-edit-members": "Editar miembros",
   "card-labels-title": "Cambiar las etiquetas de la tarjeta.",
   "card-labels-title": "Cambiar las etiquetas de la tarjeta.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "¿Borrar Tarjeta?",
   "cardDeletePopup-title": "¿Borrar Tarjeta?",
   "cardDetailsActionsPopup-title": "Acciones de la Tarjeta",
   "cardDetailsActionsPopup-title": "Acciones de la Tarjeta",
   "cardLabelsPopup-title": "Etiquetas",
   "cardLabelsPopup-title": "Etiquetas",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Necesitás ser miembro de este tablero para hacer eso",
   "error-board-notAMember": "Necesitás ser miembro de este tablero para hacer eso",
   "error-json-malformed": "Tu texto no es JSON válido",
   "error-json-malformed": "Tu texto no es JSON válido",
   "error-json-schema": "Tus datos JSON no incluyen la información correcta en el formato adecuado",
   "error-json-schema": "Tus datos JSON no incluyen la información correcta en el formato adecuado",
+  "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": "Esta lista no existe",
   "error-list-doesNotExist": "Esta lista no existe",
   "error-user-doesNotExist": "Este usuario no existe",
   "error-user-doesNotExist": "Este usuario no existe",
   "error-user-notAllowSelf": "No podés invitarte a vos mismo",
   "error-user-notAllowSelf": "No podés invitarte a vos mismo",
@@ -314,6 +317,11 @@
   "error-username-taken": "El nombre de usuario ya existe",
   "error-username-taken": "El nombre de usuario ya existe",
   "error-email-taken": "El email ya existe",
   "error-email-taken": "El email ya existe",
   "export-board": "Exportar tablero",
   "export-board": "Exportar tablero",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Exportar tablero",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Importar tablero",
   "import-board-c": "Importar tablero",
   "import-board-title-trello": "Importar tablero de Trello",
   "import-board-title-trello": "Importar tablero de Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "De Trello",
   "from-trello": "De Trello",
   "from-wekan": "From previous export",
   "from-wekan": "From previous export",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego a 'Más', 'Imprimir y Exportar', 'Exportar JSON', y copia el texto resultante.",
   "import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego a 'Más', 'Imprimir y Exportar', 'Exportar JSON', y copia el texto resultante.",
+  "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-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-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": "Pegá tus datos JSON válidos acá",
   "import-json-placeholder": "Pegá tus datos JSON válidos acá",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Mapear Miembros",
   "import-map-members": "Mapear Miembros",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Revisar mapeo de miembros",
   "import-show-user-mapping": "Revisar mapeo de miembros",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Acciones de la Calle",
   "swimlaneActionPopup-title": "Acciones de la Calle",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Importar una tarjeta Trello",
   "listImportCardPopup-title": "Importar una tarjeta Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Mas",
   "listMorePopup-title": "Mas",
   "link-list": "Enlace a esta lista",
   "link-list": "Enlace a esta lista",
   "list-delete-pop": "Todas las acciones van a ser eliminadas del agregador de actividad y no podás recuperar la lista. No se puede deshacer.",
   "list-delete-pop": "Todas las acciones van a ser eliminadas del agregador de actividad y no podás recuperar la lista. No se puede deshacer.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 810 - 0
i18n/es-CL.i18n.json

@@ -0,0 +1,810 @@
+{
+  "accept": "Aceptar",
+  "act-activity-notify": "Notificación de actividad",
+  "act-addAttachment": "añadido el adjunto __attachment__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-deleteAttachment": "eliminado el adjunto __attachment__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-addSubtask": "añadida la subtarea __subtask__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-addLabel": "añadida la etiqueta __label__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-addedLabel": "añadida la etiqueta __label__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-removeLabel": "eliminada la etiqueta __label__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-removedLabel": "eliminada la etiqueta __label__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-addChecklist": "añadida la lista de verificación __checklist__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-addChecklistItem": "añadido el elemento __checklistItem__ a la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-removeChecklist": "eliminada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-removeChecklistItem": "eliminado el elemento __checklistItem__ de la lista de verificación __checkList__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-checkedItem": "marcado el elemento __checklistItem__ de la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-uncheckedItem": "desmarcado el elemento __checklistItem__ de la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-completeChecklist": "completada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-uncompleteChecklist": "no completada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-addComment": "comentario en la tarjeta__card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-editComment": "comentario editado en la tarjeta __card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-deleteComment": "comentario eliminado en la tarjeta __card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-createBoard": "creó el tablero __board__",
+  "act-createSwimlane": "creó el carril de flujo __swimlane__ en el tablero __board__",
+  "act-createCard": "creada la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-createCustomField": "creado el campo personalizado __customField__ en el tablero __board__",
+  "act-deleteCustomField": "eliminado el campo personalizado __customField__ del tablero __board__",
+  "act-setCustomField": "editado el campo personalizado __customField__: __customFieldValue__ en la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-createList": "añadida la lista __list__ al tablero __board__",
+  "act-addBoardMember": "añadido el mimbro __member__ al tablero __board__",
+  "act-archivedBoard": "El tablero __board__ se ha archivado",
+  "act-archivedCard": "La tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__ se ha archivado",
+  "act-archivedList": "La lista __list__ del carril __swimlane__ del tablero __board__ se ha archivado",
+  "act-archivedSwimlane": "El carril __swimlane__ del tablero __board__ se ha archivado",
+  "act-importBoard": "importado el tablero __board__",
+  "act-importCard": "importada la tarjeta __card__ a la lista __list__ del carrril __swimlane__ del tablero __board__",
+  "act-importList": "importada la lista __list__ al carril __swimlane__ del tablero __board__",
+  "act-joinMember": "añadido el miembro __member__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-moveCard": "movida la tarjeta __card__ del tablero __board__ de la lista __oldList__ del carril __oldSwimlane__ a la lista __list__ del carril __swimlane__",
+  "act-moveCardToOtherBoard": "movida la tarjeta __card__ de la lista __oldList__ del carril __oldSwimlane__ del tablero __oldBoard__ a la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-removeBoardMember": "eliminado el miembro __member__ del tablero __board__",
+  "act-restoredCard": "restaurada la tarjeta __card__ a la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-unjoinMember": "eliminado el miembro __member__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "act-withBoardTitle": "__board__",
+  "act-withCardTitle": "[__board__] __card__",
+  "actions": "Acciones",
+  "activities": "Actividades",
+  "activity": "Actividad",
+  "activity-added": "ha añadido %s a %s",
+  "activity-archived": "%s se ha archivado",
+  "activity-attached": "ha adjuntado %s a %s",
+  "activity-created": "ha creado %s",
+  "activity-customfield-created": "creó el campo personalizado %s",
+  "activity-excluded": "ha excluido %s de %s",
+  "activity-imported": "ha importado %s a %s desde %s",
+  "activity-imported-board": "ha importado %s desde %s",
+  "activity-joined": "se ha unido a %s",
+  "activity-moved": "ha movido %s de %s a %s",
+  "activity-on": "en %s",
+  "activity-removed": "ha eliminado %s de %s",
+  "activity-sent": "ha enviado %s a %s",
+  "activity-unjoined": "se ha desvinculado de %s",
+  "activity-subtask-added": "ha añadido la subtarea a %s",
+  "activity-checked-item": "marcado %s en la lista de verificación %s de %s",
+  "activity-unchecked-item": "desmarcado %s en lista  %s de %s",
+  "activity-checklist-added": "ha añadido una lista de verificación a %s",
+  "activity-checklist-removed": "eliminada una lista de verificación desde %s",
+  "activity-checklist-completed": "lista de verificación completada %s de %s",
+  "activity-checklist-uncompleted": "no completado la lista %s de %s",
+  "activity-checklist-item-added": "ha añadido el elemento de la lista de verificación a '%s' en %s",
+  "activity-checklist-item-removed": "eliminado un elemento de la lista de verificación desde '%s' en %s",
+  "add": "Añadir",
+  "activity-checked-item-card": "marcado %s en la lista de verificación %s",
+  "activity-unchecked-item-card": "desmarcado %s en la lista de verificación %s",
+  "activity-checklist-completed-card": "completada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
+  "activity-checklist-uncompleted-card": "no completó la lista de verificación %s",
+  "activity-editComment": "comentario editado",
+  "activity-deleteComment": "comentario eliminado",
+  "add-attachment": "Añadir adjunto",
+  "add-board": "Añadir tablero",
+  "add-card": "Añadir una tarjeta",
+  "add-swimlane": "Añadir un carril de flujo",
+  "add-subtask": "Añadir subtarea",
+  "add-checklist": "Añadir una lista de verificación",
+  "add-checklist-item": "Añadir un elemento a la lista de verificación",
+  "add-cover": "Añadir portada",
+  "add-label": "Añadir una etiqueta",
+  "add-list": "Añadir una lista",
+  "add-members": "Añadir miembros",
+  "added": "Añadida el",
+  "addMemberPopup-title": "Miembros",
+  "admin": "Administrador",
+  "admin-desc": "Puedes ver y editar tarjetas, eliminar miembros, y cambiar las preferencias del tablero",
+  "admin-announcement": "Aviso",
+  "admin-announcement-active": "Activar el aviso para todo el sistema",
+  "admin-announcement-title": "Aviso del administrador",
+  "all-boards": "Tableros",
+  "and-n-other-card": "y __count__ tarjeta más",
+  "and-n-other-card_plural": "y otras __count__ tarjetas",
+  "apply": "Aplicar",
+  "app-is-offline": "Cargando, espera por favor. Refrescar esta página causará pérdida de datos. Si la carga no funciona, por favor comprueba que el servidor no se ha parado.",
+  "archive": "Archivar",
+  "archive-all": "Archivar todo",
+  "archive-board": "Archivar este tablero",
+  "archive-card": "Archivar esta tarjeta",
+  "archive-list": "Archivar esta lista",
+  "archive-swimlane": "Archivar este carril",
+  "archive-selection": "Archivar esta selección",
+  "archiveBoardPopup-title": "¿Archivar este tablero?",
+  "archived-items": "Archivo",
+  "archived-boards": "Tableros en el Archivo",
+  "restore-board": "Restaurar el tablero",
+  "no-archived-boards": "No hay Tableros en el Archivo",
+  "archives": "Archivo",
+  "template": "Plantilla",
+  "templates": "Plantillas",
+  "assign-member": "Asignar miembros",
+  "attached": "adjuntado",
+  "attachment": "Adjunto",
+  "attachment-delete-pop": "La eliminación de un fichero adjunto es permanente. Esta acción no puede deshacerse.",
+  "attachmentDeletePopup-title": "¿Eliminar el adjunto?",
+  "attachments": "Adjuntos",
+  "auto-watch": "Suscribirse automáticamente a los tableros cuando son creados",
+  "avatar-too-big": "El avatar es muy grande (70KB máx.)",
+  "back": "Atrás",
+  "board-change-color": "Cambiar el color",
+  "board-nb-stars": "%s destacados",
+  "board-not-found": "Tablero no encontrado",
+  "board-private-info": "Este tablero será <strong>privado</strong>.",
+  "board-public-info": "Este tablero será <strong>público</strong>.",
+  "boardChangeColorPopup-title": "Cambiar el fondo del tablero",
+  "boardChangeTitlePopup-title": "Renombrar el tablero",
+  "boardChangeVisibilityPopup-title": "Cambiar visibilidad",
+  "boardChangeWatchPopup-title": "Cambiar vigilancia",
+  "boardMenuPopup-title": "Preferencias del tablero",
+  "boardChangeViewPopup-title": "Vista del tablero",
+  "boards": "Tableros",
+  "board-view": "Vista del tablero",
+  "board-view-cal": "Calendario",
+  "board-view-swimlanes": "Carriles",
+  "board-view-collapse": "Contraer",
+  "board-view-lists": "Listas",
+  "bucket-example": "Como “Cosas por hacer” por ejemplo",
+  "cancel": "Cancelar",
+  "card-archived": "Se archivó esta tarjeta",
+  "board-archived": "Se archivó este tablero",
+  "card-comments-title": "Esta tarjeta tiene %s comentarios.",
+  "card-delete-notice": "la eliminación es permanente. Perderás todas las acciones asociadas a esta tarjeta.",
+  "card-delete-pop": "Se eliminarán todas las acciones del historial de actividades y no se podrá volver a abrir la tarjeta. Esta acción no puede deshacerse.",
+  "card-delete-suggest-archive": "Puedes mover una tarjeta al Archivo para quitarla del tablero y preservar la actividad.",
+  "card-due": "Vence",
+  "card-due-on": "Vence el",
+  "card-spent": "Tiempo consumido",
+  "card-edit-attachments": "Editar los adjuntos",
+  "card-edit-custom-fields": "Editar los campos personalizados",
+  "card-edit-labels": "Editar las etiquetas",
+  "card-edit-members": "Editar los miembros",
+  "card-labels-title": "Cambia las etiquetas de la tarjeta",
+  "card-members-title": "Añadir o eliminar miembros del tablero desde la tarjeta.",
+  "card-start": "Comienza",
+  "card-start-on": "Comienza el",
+  "cardAttachmentsPopup-title": "Adjuntar desde",
+  "cardCustomField-datePopup-title": "Cambiar la fecha",
+  "cardCustomFieldsPopup-title": "Editar los campos personalizados",
+  "cardStartVotingPopup-title": "Comience a votar",
+  "positiveVoteMembersPopup-title": "Favorables",
+  "negativeVoteMembersPopup-title": "Contrarios",
+  "card-edit-voting": "Editar votación",
+  "editVoteEndDatePopup-title": "Cambie fecha de termino del voto",
+  "allowNonBoardMembers": "Permitir todos los usuarios autentificados",
+  "vote-question": "Pregunta de votación",
+  "vote-public": "Mostrar quien voto que",
+  "vote-for-it": "por esto",
+  "vote-against": "contrarios",
+  "deleteVotePopup-title": "¿Borrar voto?",
+  "vote-delete-pop": "El Borrado es permanente. Perderá todas las acciones asociadas con este voto.",
+  "cardDeletePopup-title": "¿Eliminar la tarjeta?",
+  "cardDetailsActionsPopup-title": "Acciones de la tarjeta",
+  "cardLabelsPopup-title": "Etiquetas",
+  "cardMembersPopup-title": "Miembros",
+  "cardMorePopup-title": "Más",
+  "cardTemplatePopup-title": "Crear plantilla",
+  "cards": "Tarjetas",
+  "cards-count": "Tarjetas",
+  "casSignIn": "Iniciar sesión con CAS",
+  "cardType-card": "Tarjeta",
+  "cardType-linkedCard": "Tarjeta enlazada",
+  "cardType-linkedBoard": "Tablero enlazado",
+  "change": "Cambiar",
+  "change-avatar": "Cambiar el avatar",
+  "change-password": "Cambiar la contraseña",
+  "change-permissions": "Cambiar los permisos",
+  "change-settings": "Cambiar las preferencias",
+  "changeAvatarPopup-title": "Cambiar el avatar",
+  "changeLanguagePopup-title": "Cambiar el idioma",
+  "changePasswordPopup-title": "Cambiar la contraseña",
+  "changePermissionsPopup-title": "Cambiar los permisos",
+  "changeSettingsPopup-title": "Cambiar las preferencias",
+  "subtasks": "Subtareas",
+  "checklists": "Lista de verificación",
+  "click-to-star": "Haz clic para destacar este tablero.",
+  "click-to-unstar": "Haz clic para dejar de destacar este tablero.",
+  "clipboard": "el portapapeles o con arrastrar y soltar",
+  "close": "Cerrar",
+  "close-board": "Cerrar el tablero",
+  "close-board-pop": "Podrás restaurar el tablero haciendo clic en el botón \"Archivo\" del encabezado de la pantalla inicial.",
+  "color-black": "negra",
+  "color-blue": "azul",
+  "color-crimson": "carmesí",
+  "color-darkgreen": "verde oscuro",
+  "color-gold": "oro",
+  "color-gray": "gris",
+  "color-green": "verde",
+  "color-indigo": "añil",
+  "color-lime": "lima",
+  "color-magenta": "magenta",
+  "color-mistyrose": "rosa claro",
+  "color-navy": "azul marino",
+  "color-orange": "naranja",
+  "color-paleturquoise": "turquesa",
+  "color-peachpuff": "melocotón",
+  "color-pink": "rosa",
+  "color-plum": "púrpura",
+  "color-purple": "violeta",
+  "color-red": "roja",
+  "color-saddlebrown": "marrón",
+  "color-silver": "plata",
+  "color-sky": "celeste",
+  "color-slateblue": "azul",
+  "color-white": "blanco",
+  "color-yellow": "amarilla",
+  "unset-color": "Desmarcar",
+  "comment": "Comentar",
+  "comment-placeholder": "Escribir comentario",
+  "comment-only": "Sólo comentarios",
+  "comment-only-desc": "Solo puedes comentar en las tarjetas.",
+  "no-comments": "No hay comentarios",
+  "no-comments-desc": "No se pueden mostrar comentarios ni actividades.",
+  "worker": "Trabajador",
+  "worker-desc": "Solo puede mover tarjetas, asignarse a la tarjeta y comentar.",
+  "computer": "el ordenador",
+  "confirm-subtask-delete-dialog": "¿Seguro que quieres eliminar la subtarea?",
+  "confirm-checklist-delete-dialog": "¿Seguro que quieres eliminar la lista de verificación?",
+  "copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
+  "linkCardPopup-title": "Enlazar tarjeta",
+  "searchElementPopup-title": "Buscar",
+  "copyCardPopup-title": "Copiar la tarjeta",
+  "copyChecklistToManyCardsPopup-title": "Copiar la plantilla de la lista de verificación en varias tarjetas",
+  "copyChecklistToManyCardsPopup-instructions": "Títulos y descripciones de las tarjetas de destino en formato JSON",
+  "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Título de la primera tarjeta\", \"description\":\"Descripción de la primera tarjeta\"}, {\"title\":\"Título de la segunda tarjeta\",\"description\":\"Descripción de la segunda tarjeta\"},{\"title\":\"Título de la última tarjeta\",\"description\":\"Descripción de la última tarjeta\"} ]",
+  "create": "Crear",
+  "createBoardPopup-title": "Crear tablero",
+  "chooseBoardSourcePopup-title": "Importar un tablero",
+  "createLabelPopup-title": "Crear etiqueta",
+  "createCustomField": "Crear un campo",
+  "createCustomFieldPopup-title": "Crear un campo",
+  "current": "actual",
+  "custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
+  "custom-field-checkbox": "Casilla de verificación",
+  "custom-field-date": "Fecha",
+  "custom-field-dropdown": "Lista desplegable",
+  "custom-field-dropdown-none": "(nada)",
+  "custom-field-dropdown-options": "Opciones de la lista",
+  "custom-field-dropdown-options-placeholder": "Pulsa Intro para añadir más opciones",
+  "custom-field-dropdown-unknown": "(desconocido)",
+  "custom-field-number": "Número",
+  "custom-field-text": "Texto",
+  "custom-fields": "Campos personalizados",
+  "date": "Fecha",
+  "decline": "Declinar",
+  "default-avatar": "Avatar por defecto",
+  "delete": "Eliminar",
+  "deleteCustomFieldPopup-title": "¿Eliminar el campo personalizado?",
+  "deleteLabelPopup-title": "¿Eliminar la etiqueta?",
+  "description": "Descripción",
+  "disambiguateMultiLabelPopup-title": "Desambiguar la acción de etiqueta",
+  "disambiguateMultiMemberPopup-title": "Desambiguar la acción de miembro",
+  "discard": "Descartarla",
+  "done": "Hecho",
+  "download": "Descargar",
+  "edit": "Editar",
+  "edit-avatar": "Cambiar el avatar",
+  "edit-profile": "Editar el perfil",
+  "edit-wip-limit": "Cambiar el límite del trabajo en proceso",
+  "soft-wip-limit": "Límite del trabajo en proceso flexible",
+  "editCardStartDatePopup-title": "Cambiar la fecha de comienzo",
+  "editCardDueDatePopup-title": "Cambiar la fecha de vencimiento",
+  "editCustomFieldPopup-title": "Editar el campo",
+  "editCardSpentTimePopup-title": "Cambiar el tiempo consumido",
+  "editLabelPopup-title": "Cambiar la etiqueta",
+  "editNotificationPopup-title": "Editar las notificaciones",
+  "editProfilePopup-title": "Editar el perfil",
+  "email": "Correo electrónico",
+  "email-enrollAccount-subject": "Cuenta creada en __siteName__",
+  "email-enrollAccount-text": "Hola __user__,\n\nPara empezar a utilizar el servicio, simplemente haz clic en el siguiente enlace.\n\n__url__\n\nGracias.",
+  "email-fail": "Error al enviar el correo",
+  "email-fail-text": "Error al intentar enviar el correo",
+  "email-invalid": "Correo no válido",
+  "email-invite": "Invitar vía correo electrónico",
+  "email-invite-subject": "__inviter__ ha enviado una invitación",
+  "email-invite-text": "Estimado __user__,\n\n__inviter__ te invita a unirte al tablero '__board__' para colaborar.\n\nPor favor, haz clic en el siguiente enlace:\n\n__url__\n\nGracias.",
+  "email-resetPassword-subject": "Restablecer tu contraseña en __siteName__",
+  "email-resetPassword-text": "Hola __user__,\n\nPara restablecer tu contraseña, haz clic en el siguiente enlace.\n\n__url__\n\nGracias.",
+  "email-sent": "Correo enviado",
+  "email-verifyEmail-subject": "Verifica tu dirección de correo en __siteName__",
+  "email-verifyEmail-text": "Hola __user__,\n\nPara verificar tu cuenta de correo electrónico, haz clic en el siguiente enlace.\n\n__url__\n\nGracias.",
+  "enable-wip-limit": "Habilitar el límite del trabajo en proceso",
+  "error-board-doesNotExist": "El tablero no existe",
+  "error-board-notAdmin": "Es necesario ser administrador de este tablero para hacer eso",
+  "error-board-notAMember": "Es necesario ser miembro de este tablero para hacer eso",
+  "error-json-malformed": "El texto no es un JSON válido",
+  "error-json-schema": "Sus datos JSON no incluyen la información apropiada en el formato correcto",
+  "error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
+  "error-list-doesNotExist": "La lista no existe",
+  "error-user-doesNotExist": "El usuario no existe",
+  "error-user-notAllowSelf": "No puedes invitarte a ti mismo",
+  "error-user-notCreated": "El usuario no ha sido creado",
+  "error-username-taken": "Este nombre de usuario ya está en uso",
+  "error-email-taken": "Esta dirección de correo ya está en uso",
+  "export-board": "Exportar el tablero",
+  "export-board-json": "Exportar tablero a JSON",
+  "export-board-csv": "Exportar tablero a CSV",
+  "export-board-tsv": "Exportar tablero a TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Exportar el tablero",
+  "sort": "Ordenar",
+  "sort-desc": "Click para ordenar la lista",
+  "list-sort-by": "Ordenar la lista por:",
+  "list-label-modifiedAt": "Hora de último acceso",
+  "list-label-title": "Nombre de la lista",
+  "list-label-sort": "Tu orden manual",
+  "list-label-short-modifiedAt": "(L)",
+  "list-label-short-title": "(N)",
+  "list-label-short-sort": "(M)",
+  "filter": "Filtrar",
+  "filter-cards": "Filtrar tarjetas o listas",
+  "list-filter-label": "Filtrar listas por título",
+  "filter-clear": "Limpiar el filtro",
+  "filter-no-label": "Sin etiqueta",
+  "filter-no-member": "Sin miembro",
+  "filter-no-assignee": "No asignado",
+  "filter-no-custom-fields": "Sin campos personalizados",
+  "filter-show-archive": "Mostrar las listas archivadas",
+  "filter-hide-empty": "Ocultar las listas vacías",
+  "filter-on": "Filtrado activado",
+  "filter-on-desc": "Estás filtrando tarjetas en este tablero. Haz clic aquí para editar el filtro.",
+  "filter-to-selection": "Filtrar la selección",
+  "advanced-filter-label": "Filtrado avanzado",
+  "advanced-filter-description": "El filtrado avanzado permite escribir una cadena que contiene los siguientes operadores: == != <= >= && || ( ) Se utiliza un espacio como separador entre los operadores. Se pueden filtrar todos los campos personalizados escribiendo sus nombres y valores. Por ejemplo: Campo1 == Valor1. Nota: Si los campos o valores contienen espacios, deben encapsularse entre comillas simples. Por ejemplo: 'Campo 1' == 'Valor 1'. Para omitir los caracteres de control único (' \\/), se usa \\. Por ejemplo: Campo1 = I\\'m. También se pueden combinar múltiples condiciones. Por ejemplo: C1 == V1 || C1 == V2. Normalmente todos los operadores se interpretan de izquierda a derecha. Se puede cambiar el orden colocando paréntesis. Por ejemplo: C1 == V1 && ( C2 == V2 || C2 == V3 ). También se puede buscar en campos de texto usando expresiones regulares: C1 == /Tes.*/i",
+  "fullname": "Nombre completo",
+  "header-logo-title": "Volver a tu página de tableros",
+  "hide-system-messages": "Ocultar las notificaciones de actividad",
+  "headerBarCreateBoardPopup-title": "Crear tablero",
+  "home": "Inicio",
+  "import": "Importar",
+  "link": "Enlace",
+  "import-board": "importar un tablero",
+  "import-board-c": "Importar un tablero",
+  "import-board-title-trello": "Importar un tablero desde Trello",
+  "import-board-title-wekan": "Importar tablero desde una exportación previa",
+  "import-board-title-csv": "Importar tablero desde CSV/TSV",
+  "from-trello": "Desde Trello",
+  "from-wekan": "Desde exportación previa",
+  "from-csv": "Desde CSV/TSV",
+  "import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego 'Más' > 'Imprimir y exportar' > 'Exportar JSON', y copia el texto resultante.",
+  "import-board-instruction-csv": "Pegue en sus Valores separados por coma(CSV)/Valores separados por tab(TSV).",
+  "import-board-instruction-wekan": "En tu tablero, vete a 'Menú', luego 'Exportar tablero', y copia el texto en el archivo descargado.",
+  "import-board-instruction-about-errors": "Aunque obtengas errores cuando importes el tablero, a veces la importación funciona igualmente, y el tablero se encontrará en la página de tableros.",
+  "import-json-placeholder": "Pega tus datos JSON válidos aquí",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
+  "import-map-members": "Mapa de miembros",
+  "import-members-map": "Tu tablero importado tiene algunos miembros. Por favor, mapea los miembros que quieres importar con tus usuarios.",
+  "import-show-user-mapping": "Revisión de la asignación de miembros",
+  "import-user-select": "Selecciona el miembro existe que quieres usar como este miembro.",
+  "importMapMembersAddPopup-title": "Seleccionar miembro",
+  "info": "Versión",
+  "initials": "Iniciales",
+  "invalid-date": "Fecha no válida",
+  "invalid-time": "Tiempo no válido",
+  "invalid-user": "Usuario no válido",
+  "joined": "se ha unido",
+  "just-invited": "Has sido invitado a este tablero",
+  "keyboard-shortcuts": "Atajos de teclado",
+  "label-create": "Crear una etiqueta",
+  "label-default": "etiqueta %s (por defecto)",
+  "label-delete-pop": "Se eliminará esta etiqueta de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
+  "labels": "Etiquetas",
+  "language": "Cambiar el idioma",
+  "last-admin-desc": "No puedes cambiar roles porque debe haber al menos un administrador.",
+  "leave-board": "Abandonar el tablero",
+  "leave-board-pop": "¿Seguro que quieres abandonar __boardTitle__? Serás desvinculado de todas las tarjetas en este tablero.",
+  "leaveBoardPopup-title": "¿Abandonar el tablero?",
+  "link-card": "Enlazar a esta tarjeta",
+  "list-archive-cards": "Archivar todas las tarjetas de esta lista",
+  "list-archive-cards-pop": "Esto eliminará del tablero todas las tarjetas en esta lista. Para ver las tarjetas en el Archivo y recuperarlas al tablero haga click en \"Menu\" > \"Archivo\"",
+  "list-move-cards": "Mover todas las tarjetas de esta lista",
+  "list-select-cards": "Seleccionar todas las tarjetas de esta lista",
+  "set-color-list": "Cambiar el color",
+  "listActionPopup-title": "Acciones de la lista",
+  "swimlaneActionPopup-title": "Acciones del carril de flujo",
+  "swimlaneAddPopup-title": "Añadir un carril de flujo debajo",
+  "listImportCardPopup-title": "Importar una tarjeta de Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
+  "listMorePopup-title": "Más",
+  "link-list": "Enlazar a esta lista",
+  "list-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar la lista. Esta acción no puede deshacerse.",
+  "list-delete-suggest-archive": "Puedes mover una lista al Archivo para quitarla del tablero y preservar la actividad.",
+  "lists": "Listas",
+  "swimlanes": "Carriles",
+  "log-out": "Finalizar la sesión",
+  "log-in": "Iniciar sesión",
+  "loginPopup-title": "Iniciar sesión",
+  "memberMenuPopup-title": "Preferencias de miembro",
+  "members": "Miembros",
+  "menu": "Menú",
+  "move-selection": "Mover la selección",
+  "moveCardPopup-title": "Mover la tarjeta",
+  "moveCardToBottom-title": "Mover al final",
+  "moveCardToTop-title": "Mover al principio",
+  "moveSelectionPopup-title": "Mover la selección",
+  "multi-selection": "Selección múltiple",
+  "multi-selection-on": "Selección múltiple activada",
+  "muted": "Silenciado",
+  "muted-info": "No serás notificado de ningún cambio en este tablero",
+  "my-boards": "Mis tableros",
+  "name": "Nombre",
+  "no-archived-cards": "No hay tarjetas archivadas.",
+  "no-archived-lists": "No hay listas archivadas.",
+  "no-archived-swimlanes": "No hay carriles archivados.",
+  "no-results": "Sin resultados",
+  "normal": "Normal",
+  "normal-desc": "Puedes ver y editar tarjetas. No puedes cambiar la configuración.",
+  "not-accepted-yet": "La invitación no ha sido aceptada aún",
+  "notify-participate": "Recibir actualizaciones de cualquier tarjeta en la que participas como creador o miembro",
+  "notify-watch": "Recibir actuaizaciones de cualquier tablero, lista o tarjeta que estés vigilando",
+  "optional": "opcional",
+  "or": "o",
+  "page-maybe-private": "Esta página puede ser privada. Es posible que puedas verla al <a href='%s'>iniciar sesión</a>.",
+  "page-not-found": "Página no encontrada.",
+  "password": "Contraseña",
+  "paste-or-dragdrop": "pegar o arrastrar y soltar un fichero de imagen (sólo imagen)",
+  "participating": "Participando",
+  "preview": "Previsualizar",
+  "previewAttachedImagePopup-title": "Previsualizar",
+  "previewClipboardImagePopup-title": "Previsualizar",
+  "private": "Privado",
+  "private-desc": "Este tablero es privado. Sólo las personas añadidas al tablero pueden verlo y editarlo.",
+  "profile": "Perfil",
+  "public": "Público",
+  "public-desc": "Este tablero es público. Es visible para cualquiera a través del enlace, y se mostrará en los buscadores como Google. Sólo las personas añadidas al tablero pueden editarlo.",
+  "quick-access-description": "Destaca un tablero para añadir un acceso directo en esta barra.",
+  "remove-cover": "Eliminar portada",
+  "remove-from-board": "Desvincular del tablero",
+  "remove-label": "Eliminar la etiqueta",
+  "listDeletePopup-title": "¿Eliminar la lista?",
+  "remove-member": "Eliminar miembro",
+  "remove-member-from-card": "Eliminar de la tarjeta",
+  "remove-member-pop": "¿Eliminar __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero. En ellas se mostrará una notificación.",
+  "removeMemberPopup-title": "¿Eliminar miembro?",
+  "rename": "Renombrar",
+  "rename-board": "Renombrar el tablero",
+  "restore": "Restaurar",
+  "save": "Añadir",
+  "search": "Buscar",
+  "rules": "Reglas",
+  "search-cards": "Buscar entre los títulos, las descripciones de las tarjetas/listas y los campos personalizados en este tablero.",
+  "search-example": "¿Texto a buscar?",
+  "select-color": "Seleccionar el color",
+  "set-wip-limit-value": "Cambiar el límite para el número máximo de tareas en esta lista.",
+  "setWipLimitPopup-title": "Cambiar el límite del trabajo en proceso",
+  "shortcut-assign-self": "Asignarte a ti mismo a la tarjeta actual",
+  "shortcut-autocomplete-emoji": "Autocompletar emoji",
+  "shortcut-autocomplete-members": "Autocompletar miembros",
+  "shortcut-clear-filters": "Limpiar todos los filtros",
+  "shortcut-close-dialog": "Cerrar el cuadro de diálogo",
+  "shortcut-filter-my-cards": "Filtrar mis tarjetas",
+  "shortcut-show-shortcuts": "Mostrar esta lista de atajos",
+  "shortcut-toggle-filterbar": "Conmutar la barra lateral del filtro",
+  "shortcut-toggle-sidebar": "Conmutar la barra lateral del tablero",
+  "show-cards-minimum-count": "Mostrar recuento de tarjetas si la lista contiene más de",
+  "sidebar-open": "Abrir la barra lateral",
+  "sidebar-close": "Cerrar la barra lateral",
+  "signupPopup-title": "Crear una cuenta",
+  "star-board-title": "Haz clic para destacar este tablero. Se mostrará en la parte superior de tu lista de tableros.",
+  "starred-boards": "Tableros destacados",
+  "starred-boards-description": "Los tableros destacados se mostrarán en la parte superior de tu lista de tableros.",
+  "subscribe": "Suscribirse",
+  "team": "Equipo",
+  "this-board": "este tablero",
+  "this-card": "esta tarjeta",
+  "spent-time-hours": "Tiempo consumido (horas)",
+  "overtime-hours": "Tiempo excesivo (horas)",
+  "overtime": "Tiempo excesivo",
+  "has-overtime-cards": "Hay tarjetas con el tiempo excedido",
+  "has-spenttime-cards": "Se ha excedido el tiempo de las tarjetas",
+  "time": "Hora",
+  "title": "Título",
+  "tracking": "Siguiendo",
+  "tracking-info": "Serás notificado de cualquier cambio en las tarjetas en las que participas como creador o miembro.",
+  "type": "Tipo",
+  "unassign-member": "Desvincular al miembro",
+  "unsaved-description": "Tienes una descripción por añadir.",
+  "unwatch": "Dejar de vigilar",
+  "upload": "Cargar",
+  "upload-avatar": "Cargar un avatar",
+  "uploaded-avatar": "Avatar cargado",
+  "username": "Nombre de usuario",
+  "view-it": "Verla",
+  "warn-list-archived": "advertencia: esta tarjeta está en una lista en el Archivo",
+  "watch": "Vigilar",
+  "watching": "Vigilando",
+  "watching-info": "Serás notificado de cualquier cambio en este tablero",
+  "welcome-board": "Tablero de bienvenida",
+  "welcome-swimlane": "Hito 1",
+  "welcome-list1": "Básicos",
+  "welcome-list2": "Avanzados",
+  "card-templates-swimlane": "Plantilla de tarjeta",
+  "list-templates-swimlane": "Listar plantillas",
+  "board-templates-swimlane": "Plantilla de tablero",
+  "what-to-do": "¿Qué quieres hacer?",
+  "wipLimitErrorPopup-title": "El límite del trabajo en proceso no es válido.",
+  "wipLimitErrorPopup-dialog-pt1": "El número de tareas en esta lista es mayor que el límite del trabajo en proceso que has definido.",
+  "wipLimitErrorPopup-dialog-pt2": "Por favor, mueve algunas tareas fuera de esta lista, o fija un límite del trabajo en proceso más alto.",
+  "admin-panel": "Panel del administrador",
+  "settings": "Preferencias",
+  "people": "Personas",
+  "registration": "Registro",
+  "disable-self-registration": "Deshabilitar autoregistro",
+  "invite": "Invitar",
+  "invite-people": "Invitar a personas",
+  "to-boards": "A el(los) tablero(s)",
+  "email-addresses": "Direcciones de correo electrónico",
+  "smtp-host-description": "Dirección del servidor SMTP para gestionar tus correos",
+  "smtp-port-description": "Puerto usado por el servidor SMTP para mandar correos",
+  "smtp-tls-description": "Habilitar el soporte TLS para el servidor SMTP",
+  "smtp-host": "Servidor SMTP",
+  "smtp-port": "Puerto SMTP",
+  "smtp-username": "Nombre de usuario",
+  "smtp-password": "Contraseña",
+  "smtp-tls": "Soporte TLS",
+  "send-from": "Desde",
+  "send-smtp-test": "Enviarte un correo de prueba a ti mismo",
+  "invitation-code": "Código de Invitación",
+  "email-invite-register-subject": "__inviter__ te ha enviado una invitación",
+  "email-invite-register-text": "Querido __user__,\n__inviter__ le invita al tablero kanban para colaborar.\n\nPor favor, siga el siguiente enlace:\n__url__\n\nY tu código de invitación es:  __icode__\n\nGracias.",
+  "email-smtp-test-subject": "Prueba de email SMTP",
+  "email-smtp-test-text": "El correo se ha enviado correctamente",
+  "error-invitation-code-not-exist": "El código de invitación no existe",
+  "error-notAuthorized": "No estás autorizado a ver esta página.",
+  "webhook-title": "Nombre del Webhook",
+  "webhook-token": "Token (opcional para la autenticación)",
+  "outgoing-webhooks": "Webhooks salientes",
+  "bidirectional-webhooks": "Webhooks de doble sentido",
+  "outgoingWebhooksPopup-title": "Webhooks salientes",
+  "boardCardTitlePopup-title": "Filtro de títulos de tarjeta",
+  "disable-webhook": "Deshabilitar este Webhook",
+  "global-webhook": "Webhooks globales",
+  "new-outgoing-webhook": "Nuevo webhook saliente",
+  "no-name": "(Desconocido)",
+  "Node_version": "Versión de Node",
+  "Meteor_version": "Versión de Meteor",
+  "MongoDB_version": "Versión de MongoDB",
+  "MongoDB_storage_engine": "Motor de almacenamiento de MongoDB",
+  "MongoDB_Oplog_enabled": "Oplog de MongoDB habilitado",
+  "OS_Arch": "Arquitectura del sistema",
+  "OS_Cpus": "Número de CPUs del sistema",
+  "OS_Freemem": "Memoria libre del sistema",
+  "OS_Loadavg": "Carga media del sistema",
+  "OS_Platform": "Plataforma del sistema",
+  "OS_Release": "Publicación del sistema",
+  "OS_Totalmem": "Memoria total del sistema",
+  "OS_Type": "Tipo de sistema",
+  "OS_Uptime": "Tiempo activo del sistema",
+  "days": "días",
+  "hours": "horas",
+  "minutes": "minutos",
+  "seconds": "segundos",
+  "show-field-on-card": "Mostrar este campo en la tarjeta",
+  "automatically-field-on-card": "Crear campos automáticamente para todas las tarjetas.",
+  "showLabel-field-on-card": "Mostrar etiquetas de campos en la minitarjeta.",
+  "yes": "Sí",
+  "no": "No",
+  "accounts": "Cuentas",
+  "accounts-allowEmailChange": "Permitir cambiar el correo electrónico",
+  "accounts-allowUserNameChange": "Permitir cambiar el nombre de usuario",
+  "createdAt": "Fecha de alta",
+  "verified": "Verificado",
+  "active": "Activo",
+  "card-received": "Recibido",
+  "card-received-on": "Recibido el",
+  "card-end": "Finalizado",
+  "card-end-on": "Finalizado el",
+  "editCardReceivedDatePopup-title": "Cambiar la fecha de recepción",
+  "editCardEndDatePopup-title": "Cambiar la fecha de finalización",
+  "setCardColorPopup-title": "Cambiar el color",
+  "setCardActionsColorPopup-title": "Elegir un color",
+  "setSwimlaneColorPopup-title": "Elegir un color",
+  "setListColorPopup-title": "Elegir un color",
+  "assigned-by": "Asignado por",
+  "requested-by": "Solicitado por",
+  "board-delete-notice": "Se eliminarán todas las listas, tarjetas y acciones asociadas a este tablero. Esta acción no puede deshacerse.",
+  "delete-board-confirm-popup": "Se eliminarán todas las listas, tarjetas, etiquetas y actividades, y no podrás recuperar los contenidos del tablero. Esta acción no puede deshacerse.",
+  "boardDeletePopup-title": "¿Eliminar el tablero?",
+  "delete-board": "Eliminar el tablero",
+  "default-subtasks-board": "Subtareas para el tablero __board__",
+  "default": "Por defecto",
+  "queue": "Cola",
+  "subtask-settings": "Preferencias de las subtareas",
+  "card-settings": "Preferencias de la tarjeta",
+  "boardSubtaskSettingsPopup-title": "Preferencias de las subtareas del tablero",
+  "boardCardSettingsPopup-title": "Preferencias de la tarjeta",
+  "deposit-subtasks-board": "Depositar subtareas en este tablero:",
+  "deposit-subtasks-list": "Lista de destino para subtareas depositadas aquí:",
+  "show-parent-in-minicard": "Mostrar el padre en una minitarjeta:",
+  "prefix-with-full-path": "Prefijo con ruta completa",
+  "prefix-with-parent": "Prefijo con el padre",
+  "subtext-with-full-path": "Subtexto con ruta completa",
+  "subtext-with-parent": "Subtexto con el padre",
+  "change-card-parent": "Cambiar la tarjeta padre",
+  "parent-card": "Tarjeta padre",
+  "source-board": "Tablero de origen",
+  "no-parent": "No mostrar la tarjeta padre",
+  "activity-added-label": "añadida etiqueta %s a %s",
+  "activity-removed-label": "eliminada etiqueta '%s' desde %s",
+  "activity-delete-attach": "eliminado un adjunto desde %s",
+  "activity-added-label-card": "añadida etiqueta '%s'",
+  "activity-removed-label-card": "eliminada etiqueta '%s'",
+  "activity-delete-attach-card": "eliminado un adjunto",
+  "activity-set-customfield": "Cambiar el campo personalizado '%s' a '%s' en %s",
+  "activity-unset-customfield": "Desmarcar el campo personalizado '%s' en %s",
+  "r-rule": "Regla",
+  "r-add-trigger": "Añadir disparador",
+  "r-add-action": "Añadir acción",
+  "r-board-rules": "Reglas del tablero",
+  "r-add-rule": "Añadir regla",
+  "r-view-rule": "Ver regla",
+  "r-delete-rule": "Eliminar regla",
+  "r-new-rule-name": "Nueva título de regla",
+  "r-no-rules": "No hay reglas",
+  "r-when-a-card": "Cuando una tarjeta",
+  "r-is": "es",
+  "r-is-moved": "es movida",
+  "r-added-to": "Added to",
+  "r-removed-from": "eliminado de",
+  "r-the-board": "el tablero",
+  "r-list": "la lista",
+  "set-filter": "Filtrar",
+  "r-moved-to": "Movido a",
+  "r-moved-from": "Movido desde",
+  "r-archived": "Se archivó",
+  "r-unarchived": "Restaurado del archivo",
+  "r-a-card": "una tarjeta",
+  "r-when-a-label-is": "Cuando una etiqueta es",
+  "r-when-the-label": "Cuando la etiqueta es",
+  "r-list-name": "Nombre de lista",
+  "r-when-a-member": "Cuando un miembro es",
+  "r-when-the-member": "Cuando el miembro",
+  "r-name": "nombre",
+  "r-when-a-attach": "Cuando un adjunto",
+  "r-when-a-checklist": "Cuando una lista de verificación es",
+  "r-when-the-checklist": "Cuando la lista de verificación",
+  "r-completed": "Completada",
+  "r-made-incomplete": "Hecha incompleta",
+  "r-when-a-item": "Cuando un elemento de la lista de verificación es",
+  "r-when-the-item": "Cuando el elemento de la lista de verificación es",
+  "r-checked": "Marcado",
+  "r-unchecked": "Desmarcado",
+  "r-move-card-to": "Mover la tarjeta",
+  "r-top-of": "Arriba de",
+  "r-bottom-of": "Abajo de",
+  "r-its-list": "su lista",
+  "r-archive": "Archivar",
+  "r-unarchive": "Restaurar del Archivo",
+  "r-card": "la tarjeta",
+  "r-add": "Añadir",
+  "r-remove": "Eliminar",
+  "r-label": "etiqueta",
+  "r-member": "miembro",
+  "r-remove-all": "Eliminar todos los miembros de la tarjeta",
+  "r-set-color": "Cambiar el color a",
+  "r-checklist": "lista de verificación",
+  "r-check-all": "Marcar todo",
+  "r-uncheck-all": "Desmarcar todo",
+  "r-items-check": "elementos de la lista de verificación",
+  "r-check": "Marcar",
+  "r-uncheck": "Desmarcar",
+  "r-item": "elemento",
+  "r-of-checklist": "de la lista de verificación",
+  "r-send-email": "Enviar un email",
+  "r-to": "a",
+  "r-of": "of",
+  "r-subject": "asunto",
+  "r-rule-details": "Detalle de la regla",
+  "r-d-move-to-top-gen": "Mover la tarjeta al inicio de su lista",
+  "r-d-move-to-top-spec": "Mover la tarjeta al inicio de la lista",
+  "r-d-move-to-bottom-gen": "Mover la tarjeta al final de su lista",
+  "r-d-move-to-bottom-spec": "Mover la tarjeta al final de la lista",
+  "r-d-send-email": "Enviar email",
+  "r-d-send-email-to": "a",
+  "r-d-send-email-subject": "asunto",
+  "r-d-send-email-message": "mensaje",
+  "r-d-archive": "Archivar la tarjeta",
+  "r-d-unarchive": "Restaurar tarjeta del Archivo",
+  "r-d-add-label": "Añadir etiqueta",
+  "r-d-remove-label": "Eliminar etiqueta",
+  "r-create-card": "Crear una nueva tarjeta",
+  "r-in-list": "en la lista",
+  "r-in-swimlane": "en el carril",
+  "r-d-add-member": "Añadir miembro",
+  "r-d-remove-member": "Eliminar miembro",
+  "r-d-remove-all-member": "Eliminar todos los miembros",
+  "r-d-check-all": "Marcar todos los elementos de una lista",
+  "r-d-uncheck-all": "Desmarcar todos los elementos de una lista",
+  "r-d-check-one": "Marcar elemento",
+  "r-d-uncheck-one": "Desmarcar elemento",
+  "r-d-check-of-list": "de la lista de verificación",
+  "r-d-add-checklist": "Añadir una lista de verificación",
+  "r-d-remove-checklist": "Eliminar lista de verificación",
+  "r-by": "por",
+  "r-add-checklist": "Añadir una lista de verificación",
+  "r-with-items": "con items",
+  "r-items-list": "item1,item2,item3",
+  "r-add-swimlane": "Agregar el carril",
+  "r-swimlane-name": "nombre del carril",
+  "r-board-note": "Nota: deje un campo vacío para que coincida con todos los valores posibles",
+  "r-checklist-note": "Nota: los ítems de la lista tienen que escribirse como valores separados por coma.",
+  "r-when-a-card-is-moved": "Cuando una tarjeta es movida a otra lista",
+  "r-set": "Cambiar",
+  "r-update": "Actualizar",
+  "r-datefield": "campo de fecha",
+  "r-df-start-at": "comienza",
+  "r-df-due-at": "vencimiento",
+  "r-df-end-at": "finalizado",
+  "r-df-received-at": "recibido",
+  "r-to-current-datetime": "a la fecha/hora actual",
+  "r-remove-value-from": "Eliminar el valor de",
+  "ldap": "LDAP",
+  "oauth2": "OAuth2",
+  "cas": "CAS",
+  "authentication-method": "Método de autenticación",
+  "authentication-type": "Tipo de autenticación",
+  "custom-product-name": "Nombre de producto personalizado",
+  "layout": "Diseño",
+  "hide-logo": "Ocultar el logo",
+  "add-custom-html-after-body-start": "Añade HTML personalizado después de <body>",
+  "add-custom-html-before-body-end": "Añade HTML personalizado después de </body>",
+  "error-undefined": "Algo no está bien",
+  "error-ldap-login": "Ocurrió un error al intentar acceder",
+  "display-authentication-method": "Mostrar el método de autenticación",
+  "default-authentication-method": "Método de autenticación por defecto",
+  "duplicate-board": "Duplicar tablero",
+  "people-number": "El número de personas es:",
+  "swimlaneDeletePopup-title": "¿Eliminar el carril de flujo?",
+  "swimlane-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar el carril de flujo. Esta acción no puede deshacerse.",
+  "restore-all": "Restaurar todas",
+  "delete-all": "Borrar todas",
+  "loading": "Cargando. Por favor, espere.",
+  "previous_as": "el último tiempo fue",
+  "act-a-dueAt": "cambiada la hora de vencimiento a \nCuándo: __timeValue__\nDónde: __card__\n el vencimiento anterior fue __timeOldValue__",
+  "act-a-endAt": "cambiada la hora de finalización a __timeValue__ Fecha anterior: (__timeOldValue__)",
+  "act-a-startAt": "cambiada la hora de comienzo a __timeValue__ Fecha anterior: (__timeOldValue__)",
+  "act-a-receivedAt": "cambiada la fecha de recepción a __timeValue__ Fecha anterior: (__timeOldValue__)",
+  "a-dueAt": "cambiada la hora de vencimiento a",
+  "a-endAt": "cambiada la hora de finalización a",
+  "a-startAt": "cambiada la hora de comienzo a",
+  "a-receivedAt": "cambiada la hora de recepción a",
+  "almostdue": "está próxima la hora de vencimiento actual %s",
+  "pastdue": "se sobrepasó la hora de vencimiento actual%s",
+  "duenow": "la hora de vencimiento actual %s es hoy",
+  "act-newDue": "__list__/__card__ tiene una 1ra notificación de vencimiento [__board__]",
+  "act-withDue": "__list__/__card__ notificaciones de vencimiento [__board__]",
+  "act-almostdue": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ está próximo",
+  "act-pastdue": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ se sobrepasó",
+  "act-duenow": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ es ahora",
+  "act-atUserComment": "Se te mencionó en [__board__] __list__/__card__",
+  "delete-user-confirm-popup": "¿Seguro que quieres eliminar esta cuenta? Esta acción no puede deshacerse.",
+  "accounts-allowUserDelete": "Permitir a los usuarios eliminar su cuenta",
+  "hide-minicard-label-text": "Ocultar el texto de la etiqueta de la minitarjeta",
+  "show-desktop-drag-handles": "Mostrar los controles de arrastre del escritorio",
+  "assignee": "Asignado",
+  "cardAssigneesPopup-title": "Asignado",
+  "addmore-detail": "Añadir una descripción detallada",
+  "show-on-card": "Mostrar en la tarjeta",
+  "new": "Nuevo",
+  "editUserPopup-title": "Editar el usuario",
+  "newUserPopup-title": "Nuevo usuario",
+  "notifications": "Notificaciones",
+  "view-all": "Ver todo",
+  "filter-by-unread": "Filtrar por no leído",
+  "mark-all-as-read": "Marcar todo como leido",
+  "remove-all-read": "Remove all read",
+  "allow-rename": "Permitir renombrar",
+  "allowRenamePopup-title": "Permitir renombrar",
+  "start-day-of-week": "Set day of the week start",
+  "monday": "Lunes",
+  "tuesday": "Martes",
+  "wednesday": "Miércoles",
+  "thursday": "Jueves",
+  "friday": "Viernes",
+  "saturday": "Sábado",
+  "sunday": "Domingo",
+  "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"
+}

+ 32 - 10
i18n/es.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Tiempo consumido",
   "card-spent": "Tiempo consumido",
   "card-edit-attachments": "Editar los adjuntos",
   "card-edit-attachments": "Editar los adjuntos",
   "card-edit-custom-fields": "Editar los campos personalizados",
   "card-edit-custom-fields": "Editar los campos personalizados",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Editar las etiquetas",
   "card-edit-labels": "Editar las etiquetas",
   "card-edit-members": "Editar los miembros",
   "card-edit-members": "Editar los miembros",
   "card-labels-title": "Cambia las etiquetas de la tarjeta",
   "card-labels-title": "Cambia las etiquetas de la tarjeta",
@@ -163,14 +161,18 @@
   "cardAttachmentsPopup-title": "Adjuntar desde",
   "cardAttachmentsPopup-title": "Adjuntar desde",
   "cardCustomField-datePopup-title": "Cambiar la fecha",
   "cardCustomField-datePopup-title": "Cambiar la fecha",
   "cardCustomFieldsPopup-title": "Editar los campos personalizados",
   "cardCustomFieldsPopup-title": "Editar los campos personalizados",
-  "cardStartVotingPopup-title": "Start a vote",
+  "cardStartVotingPopup-title": "Comience a votar",
   "positiveVoteMembersPopup-title": "Favorables",
   "positiveVoteMembersPopup-title": "Favorables",
   "negativeVoteMembersPopup-title": "Contrarios",
   "negativeVoteMembersPopup-title": "Contrarios",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
-  "vote-question": "Voting question",
-  "vote-public": "Show who voted what",
-  "vote-for-it": "for it",
+  "card-edit-voting": "Editar votación",
+  "editVoteEndDatePopup-title": "Cambie fecha de termino del voto",
+  "allowNonBoardMembers": "Permitir todos los usuarios autentificados",
+  "vote-question": "Pregunta de votación",
+  "vote-public": "Mostrar quien voto que",
+  "vote-for-it": "por esto",
   "vote-against": "contrarios",
   "vote-against": "contrarios",
+  "deleteVotePopup-title": "¿Borrar voto?",
+  "vote-delete-pop": "El Borrado es permanente. Perderá todas las acciones asociadas con este voto.",
   "cardDeletePopup-title": "¿Eliminar la tarjeta?",
   "cardDeletePopup-title": "¿Eliminar la tarjeta?",
   "cardDetailsActionsPopup-title": "Acciones de la tarjeta",
   "cardDetailsActionsPopup-title": "Acciones de la tarjeta",
   "cardLabelsPopup-title": "Etiquetas",
   "cardLabelsPopup-title": "Etiquetas",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Es necesario ser miembro de este tablero para hacer eso",
   "error-board-notAMember": "Es necesario ser miembro de este tablero para hacer eso",
   "error-json-malformed": "El texto no es un JSON válido",
   "error-json-malformed": "El texto no es un JSON válido",
   "error-json-schema": "Sus datos JSON no incluyen la información apropiada en el formato correcto",
   "error-json-schema": "Sus datos JSON no incluyen la información apropiada en el formato correcto",
+  "error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
   "error-list-doesNotExist": "La lista no existe",
   "error-list-doesNotExist": "La lista no existe",
   "error-user-doesNotExist": "El usuario no existe",
   "error-user-doesNotExist": "El usuario no existe",
   "error-user-notAllowSelf": "No puedes invitarte a ti mismo",
   "error-user-notAllowSelf": "No puedes invitarte a ti mismo",
@@ -314,6 +317,11 @@
   "error-username-taken": "Este nombre de usuario ya está en uso",
   "error-username-taken": "Este nombre de usuario ya está en uso",
   "error-email-taken": "Esta dirección de correo ya está en uso",
   "error-email-taken": "Esta dirección de correo ya está en uso",
   "export-board": "Exportar el tablero",
   "export-board": "Exportar el tablero",
+  "export-board-json": "Exportar tablero a JSON",
+  "export-board-csv": "Exportar tablero a CSV",
+  "export-board-tsv": "Exportar tablero a TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Exportar el tablero",
   "sort": "Ordenar",
   "sort": "Ordenar",
   "sort-desc": "Click para ordenar la lista",
   "sort-desc": "Click para ordenar la lista",
   "list-sort-by": "Ordenar la lista por:",
   "list-sort-by": "Ordenar la lista por:",
@@ -329,7 +337,7 @@
   "filter-clear": "Limpiar el filtro",
   "filter-clear": "Limpiar el filtro",
   "filter-no-label": "Sin etiqueta",
   "filter-no-label": "Sin etiqueta",
   "filter-no-member": "Sin miembro",
   "filter-no-member": "Sin miembro",
-  "filter-no-assignee": "No assignee",
+  "filter-no-assignee": "No asignado",
   "filter-no-custom-fields": "Sin campos personalizados",
   "filter-no-custom-fields": "Sin campos personalizados",
   "filter-show-archive": "Mostrar las listas archivadas",
   "filter-show-archive": "Mostrar las listas archivadas",
   "filter-hide-empty": "Ocultar las listas vacías",
   "filter-hide-empty": "Ocultar las listas vacías",
@@ -349,12 +357,16 @@
   "import-board-c": "Importar un tablero",
   "import-board-c": "Importar un tablero",
   "import-board-title-trello": "Importar un tablero desde Trello",
   "import-board-title-trello": "Importar un tablero desde Trello",
   "import-board-title-wekan": "Importar tablero desde una exportación previa",
   "import-board-title-wekan": "Importar tablero desde una exportación previa",
+  "import-board-title-csv": "Importar tablero desde CSV/TSV",
   "from-trello": "Desde Trello",
   "from-trello": "Desde Trello",
   "from-wekan": "Desde exportación previa",
   "from-wekan": "Desde exportación previa",
+  "from-csv": "Desde CSV/TSV",
   "import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego 'Más' > 'Imprimir y exportar' > 'Exportar JSON', y copia el texto resultante.",
   "import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego 'Más' > 'Imprimir y exportar' > 'Exportar JSON', y copia el texto resultante.",
+  "import-board-instruction-csv": "Pegue en sus Valores separados por coma(CSV)/Valores separados por tab(TSV).",
   "import-board-instruction-wekan": "En tu tablero, vete a 'Menú', luego 'Exportar tablero', y copia el texto en el archivo descargado.",
   "import-board-instruction-wekan": "En tu tablero, vete a 'Menú', luego 'Exportar tablero', y copia el texto en el archivo descargado.",
   "import-board-instruction-about-errors": "Aunque obtengas errores cuando importes el tablero, a veces la importación funciona igualmente, y el tablero se encontrará en la página de tableros.",
   "import-board-instruction-about-errors": "Aunque obtengas errores cuando importes el tablero, a veces la importación funciona igualmente, y el tablero se encontrará en la página de tableros.",
   "import-json-placeholder": "Pega tus datos JSON válidos aquí",
   "import-json-placeholder": "Pega tus datos JSON válidos aquí",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Mapa de miembros",
   "import-map-members": "Mapa de miembros",
   "import-members-map": "Tu tablero importado tiene algunos miembros. Por favor, mapea los miembros que quieres importar con tus usuarios.",
   "import-members-map": "Tu tablero importado tiene algunos miembros. Por favor, mapea los miembros que quieres importar con tus usuarios.",
   "import-show-user-mapping": "Revisión de la asignación de miembros",
   "import-show-user-mapping": "Revisión de la asignación de miembros",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Acciones del carril de flujo",
   "swimlaneActionPopup-title": "Acciones del carril de flujo",
   "swimlaneAddPopup-title": "Añadir un carril de flujo debajo",
   "swimlaneAddPopup-title": "Añadir un carril de flujo debajo",
   "listImportCardPopup-title": "Importar una tarjeta de Trello",
   "listImportCardPopup-title": "Importar una tarjeta de Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Más",
   "listMorePopup-title": "Más",
   "link-list": "Enlazar a esta lista",
   "link-list": "Enlazar a esta lista",
   "list-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar la lista. Esta acción no puede deshacerse.",
   "list-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar la lista. Esta acción no puede deshacerse.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Cuando una tarjeta",
   "r-when-a-card": "Cuando una tarjeta",
   "r-is": "es",
   "r-is": "es",
   "r-is-moved": "es movida",
   "r-is-moved": "es movida",
-  "r-added-to": "agregada a",
+  "r-added-to": "Added to",
   "r-removed-from": "eliminado de",
   "r-removed-from": "eliminado de",
   "r-the-board": "el tablero",
   "r-the-board": "el tablero",
   "r-list": "la lista",
   "r-list": "la lista",
@@ -784,5 +797,14 @@
   "thursday": "Jueves",
   "thursday": "Jueves",
   "friday": "Viernes",
   "friday": "Viernes",
   "saturday": "Sábado",
   "saturday": "Sábado",
-  "sunday": "Domingo"
+  "sunday": "Domingo",
+  "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"
 }
 }

+ 27 - 5
i18n/eu.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Erabilitako denbora",
   "card-spent": "Erabilitako denbora",
   "card-edit-attachments": "Editatu eranskinak",
   "card-edit-attachments": "Editatu eranskinak",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Editatu etiketak",
   "card-edit-labels": "Editatu etiketak",
   "card-edit-members": "Editatu kideak",
   "card-edit-members": "Editatu kideak",
   "card-labels-title": "Aldatu txartelaren etiketak",
   "card-labels-title": "Aldatu txartelaren etiketak",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Ezabatu txartela?",
   "cardDeletePopup-title": "Ezabatu txartela?",
   "cardDetailsActionsPopup-title": "Txartel-ekintzak",
   "cardDetailsActionsPopup-title": "Txartel-ekintzak",
   "cardLabelsPopup-title": "Etiketak",
   "cardLabelsPopup-title": "Etiketak",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Arbel honetako kidea izan behar zara hori egin ahal izateko",
   "error-board-notAMember": "Arbel honetako kidea izan behar zara hori egin ahal izateko",
   "error-json-malformed": "Zure testua ez da baliozko JSON",
   "error-json-malformed": "Zure testua ez da baliozko JSON",
   "error-json-schema": "Zure JSON datuek ez dute formatu zuzenaren informazio egokia",
   "error-json-schema": "Zure JSON datuek ez dute formatu zuzenaren informazio egokia",
+  "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": "Zerrenda hau ez da existitzen",
   "error-list-doesNotExist": "Zerrenda hau ez da existitzen",
   "error-user-doesNotExist": "Erabiltzaile hau ez da existitzen",
   "error-user-doesNotExist": "Erabiltzaile hau ez da existitzen",
   "error-user-notAllowSelf": "Ezin duzu zure burua gonbidatu",
   "error-user-notAllowSelf": "Ezin duzu zure burua gonbidatu",
@@ -314,6 +317,11 @@
   "error-username-taken": "Erabiltzaile-izen hori hartuta dago",
   "error-username-taken": "Erabiltzaile-izen hori hartuta dago",
   "error-email-taken": "E-mail hori hartuta dago",
   "error-email-taken": "E-mail hori hartuta dago",
   "export-board": "Esportatu arbela",
   "export-board": "Esportatu arbela",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Esportatu arbela",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Inportatu arbela",
   "import-board-c": "Inportatu arbela",
   "import-board-title-trello": "Inportatu arbela Trellotik",
   "import-board-title-trello": "Inportatu arbela Trellotik",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Trellotik",
   "from-trello": "Trellotik",
   "from-wekan": "From previous export",
   "from-wekan": "From previous export",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "Zure Trello arbelean, aukeratu 'Menu\", 'More', 'Print and Export', 'Export JSON', eta kopiatu jasotako testua hemen.",
   "import-board-instruction-trello": "Zure Trello arbelean, aukeratu 'Menu\", 'More', 'Print and Export', 'Export JSON', eta kopiatu jasotako testua hemen.",
+  "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-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-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": "Isatsi baliozko JSON datuak hemen",
   "import-json-placeholder": "Isatsi baliozko JSON datuak hemen",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Kideen mapa",
   "import-map-members": "Kideen mapa",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Berrikusi kideen mapa",
   "import-show-user-mapping": "Berrikusi kideen mapa",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Inportatu Trello txartel bat",
   "listImportCardPopup-title": "Inportatu Trello txartel bat",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Gehiago",
   "listMorePopup-title": "Gehiago",
   "link-list": "Lotura zerrenda honetara",
   "link-list": "Lotura zerrenda honetara",
   "list-delete-pop": "Ekintza guztiak ekintza jariotik kenduko dira eta ezin izango duzu zerrenda berreskuratu. Ez dago desegiterik.",
   "list-delete-pop": "Ekintza guztiak ekintza jariotik kenduko dira eta ezin izango duzu zerrenda berreskuratu. Ez dago desegiterik.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 48 - 26
i18n/fa.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "زمان صرف شده",
   "card-spent": "زمان صرف شده",
   "card-edit-attachments": "ویرایش ضمائم",
   "card-edit-attachments": "ویرایش ضمائم",
   "card-edit-custom-fields": "ویرایش فیلدهای شخصی",
   "card-edit-custom-fields": "ویرایش فیلدهای شخصی",
-  "card-start-voting": "شروع رای گیری",
-  "card-cancel-voting": "حذف رای گیری و همه آرا",
   "card-edit-labels": "ویرایش برچسب",
   "card-edit-labels": "ویرایش برچسب",
   "card-edit-members": "ویرایش اعضا",
   "card-edit-members": "ویرایش اعضا",
   "card-labels-title": "تغییر برچسب کارت",
   "card-labels-title": "تغییر برچسب کارت",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "شروع به رای",
   "cardStartVotingPopup-title": "شروع به رای",
   "positiveVoteMembersPopup-title": "طرفداران",
   "positiveVoteMembersPopup-title": "طرفداران",
   "negativeVoteMembersPopup-title": "مخالفان",
   "negativeVoteMembersPopup-title": "مخالفان",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "سوال رای گیری",
   "vote-question": "سوال رای گیری",
-  "vote-public": "Show who voted what",
+  "vote-public": "نمایش چه کسی به چه رای داده است",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
-  "vote-against": "against",
+  "vote-against": "بر خلاف",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "آیا می خواهید کارت را حذف کنید؟",
   "cardDeletePopup-title": "آیا می خواهید کارت را حذف کنید؟",
   "cardDetailsActionsPopup-title": "اعمال کارت",
   "cardDetailsActionsPopup-title": "اعمال کارت",
   "cardLabelsPopup-title": "برچسب ها",
   "cardLabelsPopup-title": "برچسب ها",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "شما برای انجام آن، باید عضو این برد باشید",
   "error-board-notAMember": "شما برای انجام آن، باید عضو این برد باشید",
   "error-json-malformed": "متن درغالب صحیح Json نمی باشد.",
   "error-json-malformed": "متن درغالب صحیح Json نمی باشد.",
   "error-json-schema": "داده های Json شما، شامل اطلاعات صحیح در غالب درستی نمی باشد.",
   "error-json-schema": "داده های Json شما، شامل اطلاعات صحیح در غالب درستی نمی باشد.",
+  "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": "این لیست موجود نیست",
   "error-list-doesNotExist": "این لیست موجود نیست",
   "error-user-doesNotExist": "این کاربر وجود ندارد",
   "error-user-doesNotExist": "این کاربر وجود ندارد",
   "error-user-notAllowSelf": "عدم امکان دعوت خود",
   "error-user-notAllowSelf": "عدم امکان دعوت خود",
@@ -314,6 +317,11 @@
   "error-username-taken": "این نام کاربری استفاده شده است",
   "error-username-taken": "این نام کاربری استفاده شده است",
   "error-email-taken": "رایانامه توسط گیرنده دریافت شده است",
   "error-email-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-html": "Export board to HTML",
+  "exportBoardPopup-title": "انتقال به بیرون برد",
   "sort": "مرتب سازی",
   "sort": "مرتب سازی",
   "sort-desc": "برای مرتب سازی لیست کلیک کنید",
   "sort-desc": "برای مرتب سازی لیست کلیک کنید",
   "list-sort-by": "مرتب سازی لیست بر اساس:",
   "list-sort-by": "مرتب سازی لیست بر اساس:",
@@ -329,7 +337,7 @@
   "filter-clear": "حذف صافی ـ فیلتر ـ",
   "filter-clear": "حذف صافی ـ فیلتر ـ",
   "filter-no-label": "بدون برچسب",
   "filter-no-label": "بدون برچسب",
   "filter-no-member": "بدون عضو",
   "filter-no-member": "بدون عضو",
-  "filter-no-assignee": "No assignee",
+  "filter-no-assignee": "الحاق نشده",
   "filter-no-custom-fields": "هیچ فیلدشخصی ای وجود ندارد",
   "filter-no-custom-fields": "هیچ فیلدشخصی ای وجود ندارد",
   "filter-show-archive": "نمایش لیست‌های آرشیو شده",
   "filter-show-archive": "نمایش لیست‌های آرشیو شده",
   "filter-hide-empty": "مخفی کردن لیست‌های خالی",
   "filter-hide-empty": "مخفی کردن لیست‌های خالی",
@@ -349,12 +357,16 @@
   "import-board-c": "وارد کردن برد",
   "import-board-c": "وارد کردن برد",
   "import-board-title-trello": "وارد کردن برد از Trello",
   "import-board-title-trello": "وارد کردن برد از Trello",
   "import-board-title-wekan": "بارگذاری برد ها از آخرین خروجی",
   "import-board-title-wekan": "بارگذاری برد ها از آخرین خروجی",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "از Trello",
   "from-trello": "از Trello",
   "from-wekan": "از آخرین خروجی",
   "from-wekan": "از آخرین خروجی",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "در Trello-ی خود  به 'Menu'، 'More'، 'Print'، 'Export to JSON رفته و متن نهایی را دراینجا وارد نمایید.",
   "import-board-instruction-trello": "در Trello-ی خود  به 'Menu'، 'More'، 'Print'، 'Export to JSON رفته و متن نهایی را دراینجا وارد نمایید.",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "در هیئت مدیره خود، به 'Menu' بروید، سپس 'Export Board'، و متن را در فایل دانلود شده کپی کنید.",
   "import-board-instruction-wekan": "در هیئت مدیره خود، به 'Menu' بروید، سپس 'Export Board'، و متن را در فایل دانلود شده کپی کنید.",
   "import-board-instruction-about-errors": "اگر هنگام بازگردانی با خطا مواجه شدید بعضی اوقات بازگردانی انجام می شود و تمامی برد ها در داخل صفحه All Boards هستند",
   "import-board-instruction-about-errors": "اگر هنگام بازگردانی با خطا مواجه شدید بعضی اوقات بازگردانی انجام می شود و تمامی برد ها در داخل صفحه All Boards هستند",
   "import-json-placeholder": "اطلاعات Json معتبر خود را اینجا وارد کنید.",
   "import-json-placeholder": "اطلاعات Json معتبر خود را اینجا وارد کنید.",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "نگاشت اعضا",
   "import-map-members": "نگاشت اعضا",
   "import-members-map": "برد ها بازگردانده شده تعدادی کاربر دارند . لطفا کاربر های که می خواهید را انتخاب نمایید",
   "import-members-map": "برد ها بازگردانده شده تعدادی کاربر دارند . لطفا کاربر های که می خواهید را انتخاب نمایید",
   "import-show-user-mapping": "بررسی نقشه کاربران",
   "import-show-user-mapping": "بررسی نقشه کاربران",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "اضافه کردن مسیر شناور",
   "swimlaneAddPopup-title": "اضافه کردن مسیر شناور",
   "listImportCardPopup-title": "وارد کردن کارت Trello",
   "listImportCardPopup-title": "وارد کردن کارت Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "بیشتر",
   "listMorePopup-title": "بیشتر",
   "link-list": "پیوند به این فهرست",
   "link-list": "پیوند به این فهرست",
   "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
   "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -544,7 +557,7 @@
   "new-outgoing-webhook": "New Outgoing Webhook",
   "new-outgoing-webhook": "New Outgoing Webhook",
   "no-name": "(ناشناخته)",
   "no-name": "(ناشناخته)",
   "Node_version": "نسخه Node",
   "Node_version": "نسخه Node",
-  "Meteor_version": "Meteor version",
+  "Meteor_version": "نسخه متئور",
   "MongoDB_version": "ورژن MongoDB",
   "MongoDB_version": "ورژن MongoDB",
   "MongoDB_storage_engine": "موتور ذخیره سازی MongoDB",
   "MongoDB_storage_engine": "موتور ذخیره سازی MongoDB",
   "MongoDB_Oplog_enabled": "MongoDB Oplog فعال",
   "MongoDB_Oplog_enabled": "MongoDB Oplog فعال",
@@ -592,9 +605,9 @@
   "default": "پیش‌فرض",
   "default": "پیش‌فرض",
   "queue": "صف",
   "queue": "صف",
   "subtask-settings": "تنظیمات ریزکارها",
   "subtask-settings": "تنظیمات ریزکارها",
-  "card-settings": "Card Settings",
+  "card-settings": "تنظیمات کارت",
   "boardSubtaskSettingsPopup-title": "تنظیمات ریزکار های برد",
   "boardSubtaskSettingsPopup-title": "تنظیمات ریزکار های برد",
-  "boardCardSettingsPopup-title": "Card Settings",
+  "boardCardSettingsPopup-title": "تنظیمات کارت",
   "deposit-subtasks-board": "افزودن ریزکار به برد:",
   "deposit-subtasks-board": "افزودن ریزکار به برد:",
   "deposit-subtasks-list": "لیست برای ریزکار های افزوده شده",
   "deposit-subtasks-list": "لیست برای ریزکار های افزوده شده",
   "show-parent-in-minicard": "نمایش خانواده در ریز کارت",
   "show-parent-in-minicard": "نمایش خانواده در ریز کارت",
@@ -626,7 +639,7 @@
   "r-when-a-card": "زمانی که کارت",
   "r-when-a-card": "زمانی که کارت",
   "r-is": "هست",
   "r-is": "هست",
   "r-is-moved": "جابه‌جا شده",
   "r-is-moved": "جابه‌جا شده",
-  "r-added-to": "اضافه شد به",
+  "r-added-to": "Added to",
   "r-removed-from": "حذف از",
   "r-removed-from": "حذف از",
   "r-the-board": "برد",
   "r-the-board": "برد",
   "r-list": "لیست",
   "r-list": "لیست",
@@ -711,7 +724,7 @@
   "r-board-note": "نکته: برای نمایش موارد ممکن کادر را خالی بگذارید.",
   "r-board-note": "نکته: برای نمایش موارد ممکن کادر را خالی بگذارید.",
   "r-checklist-note": "نکته: چک‌لیست‌ها باید توسط کاما از یک‌دیگر جدا شوند.",
   "r-checklist-note": "نکته: چک‌لیست‌ها باید توسط کاما از یک‌دیگر جدا شوند.",
   "r-when-a-card-is-moved": "زمانی که یک کارت به لیست دیگری منتقل شد",
   "r-when-a-card-is-moved": "زمانی که یک کارت به لیست دیگری منتقل شد",
-  "r-set": "Set",
+  "r-set": "تنظیم",
   "r-update": "به روز رسانی",
   "r-update": "به روز رسانی",
   "r-datefield": "تاریخ",
   "r-datefield": "تاریخ",
   "r-df-start-at": "شروع",
   "r-df-start-at": "شروع",
@@ -761,12 +774,12 @@
   "act-atUserComment": "You were mentioned in [__board__] __list__/__card__",
   "act-atUserComment": "You were mentioned in [__board__] __list__/__card__",
   "delete-user-confirm-popup": "Are you sure you want to delete this account? There is no undo.",
   "delete-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",
   "accounts-allowUserDelete": "Allow users to self delete their account",
-  "hide-minicard-label-text": "Hide minicard label text",
+  "hide-minicard-label-text": "مخفی کردن اسم برچسب مینی کارت",
   "show-desktop-drag-handles": "Show desktop drag handles",
   "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",
+  "assignee": "الحاق شده",
+  "cardAssigneesPopup-title": "الحاق شده",
+  "addmore-detail": "افزودن توضیحات کامل تر",
+  "show-on-card": "نمایش در کارت",
   "new": "جدید",
   "new": "جدید",
   "editUserPopup-title": "ویرایش کاربر",
   "editUserPopup-title": "ویرایش کاربر",
   "newUserPopup-title": "کاربر جدید",
   "newUserPopup-title": "کاربر جدید",
@@ -775,14 +788,23 @@
   "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"
+  "allow-rename": "اجازه تغییر نام",
+  "allowRenamePopup-title": "اجازه تغییر نام",
+  "start-day-of-week": "تنظیم روز شروع هفته",
+  "monday": "دوشنبه",
+  "tuesday": "سه شنبه",
+  "wednesday": "چهارشنبه",
+  "thursday": "پنجشنبه",
+  "friday": "جمعه",
+  "saturday": "شنبه",
+  "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"
 }
 }

+ 27 - 5
i18n/fi.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Käytetty aika",
   "card-spent": "Käytetty aika",
   "card-edit-attachments": "Muokkaa liitetiedostoja",
   "card-edit-attachments": "Muokkaa liitetiedostoja",
   "card-edit-custom-fields": "Muokkaa mukautettuja kenttiä",
   "card-edit-custom-fields": "Muokkaa mukautettuja kenttiä",
-  "card-start-voting": "Aloita äänestys",
-  "card-cancel-voting": "Poista äänestys ja kaikki äänet",
   "card-edit-labels": "Muokkaa nimilappuja",
   "card-edit-labels": "Muokkaa nimilappuja",
   "card-edit-members": "Muokkaa jäseniä",
   "card-edit-members": "Muokkaa jäseniä",
   "card-labels-title": "Muokkaa kortin nimilappuja.",
   "card-labels-title": "Muokkaa kortin nimilappuja.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Äänestä",
   "cardStartVotingPopup-title": "Äänestä",
   "positiveVoteMembersPopup-title": "Kannattajat",
   "positiveVoteMembersPopup-title": "Kannattajat",
   "negativeVoteMembersPopup-title": "Vastustajat",
   "negativeVoteMembersPopup-title": "Vastustajat",
-  "allowNonBoardMembers": "Salli anonyymi äänestys julkisella taululla",
+  "card-edit-voting": "Muokkaa äänestystä",
+  "editVoteEndDatePopup-title": "Muokkaa äänestyksen loppumispäivää",
+  "allowNonBoardMembers": "Salli kaikki kirjautuneet käyttäjät",
   "vote-question": "Äänestys kysymys",
   "vote-question": "Äänestys kysymys",
   "vote-public": "Näytä kuka äänesti mitäkin",
   "vote-public": "Näytä kuka äänesti mitäkin",
   "vote-for-it": "puolesta",
   "vote-for-it": "puolesta",
   "vote-against": "vastaan",
   "vote-against": "vastaan",
+  "deleteVotePopup-title": "Poista ääni?",
+  "vote-delete-pop": "Poistaminen on lopullista. Menetät kaikki tähän äänestykseen liitetyt toimet.",
   "cardDeletePopup-title": "Poista kortti?",
   "cardDeletePopup-title": "Poista kortti?",
   "cardDetailsActionsPopup-title": "Korttitoimet",
   "cardDetailsActionsPopup-title": "Korttitoimet",
   "cardLabelsPopup-title": "Nimilaput",
   "cardLabelsPopup-title": "Nimilaput",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Tehdäksesi tämän sinun täytyy olla tämän taulun jäsen",
   "error-board-notAMember": "Tehdäksesi tämän sinun täytyy olla tämän taulun jäsen",
   "error-json-malformed": "Tekstisi ei ole kelvollisessa JSON-muodossa",
   "error-json-malformed": "Tekstisi ei ole kelvollisessa JSON-muodossa",
   "error-json-schema": "JSON-tietosi ei sisällä oikeaa tietoa oikeassa muodossa",
   "error-json-schema": "JSON-tietosi ei sisällä oikeaa tietoa oikeassa muodossa",
+  "error-csv-schema": "CSV tietosi (pilkulla erotetut arvot)/TSV (tabilla erotetut arvot) ei sisällä oikeaa tietoa oikeassa muodossa",
   "error-list-doesNotExist": "Tätä listaa ei ole olemassa",
   "error-list-doesNotExist": "Tätä listaa ei ole olemassa",
   "error-user-doesNotExist": "Tätä käyttäjää ei ole olemassa",
   "error-user-doesNotExist": "Tätä käyttäjää ei ole olemassa",
   "error-user-notAllowSelf": "Et voi kutsua itseäsi",
   "error-user-notAllowSelf": "Et voi kutsua itseäsi",
@@ -314,6 +317,11 @@
   "error-username-taken": "Tämä käyttäjätunnus on jo käytössä",
   "error-username-taken": "Tämä käyttäjätunnus on jo käytössä",
   "error-email-taken": "Sähköpostiosoite on jo käytössä",
   "error-email-taken": "Sähköpostiosoite on jo käytössä",
   "export-board": "Vie taulu",
   "export-board": "Vie taulu",
+  "export-board-json": "Vie taulu JSON",
+  "export-board-csv": "Vie taulu CSV",
+  "export-board-tsv": "Vie taulu TSV",
+  "export-board-html": "Vie taulu HTML",
+  "exportBoardPopup-title": "Vie taulu",
   "sort": "Lajittele",
   "sort": "Lajittele",
   "sort-desc": "Klikkaa lajitellaksesi listan",
   "sort-desc": "Klikkaa lajitellaksesi listan",
   "list-sort-by": "Lajittele lista:",
   "list-sort-by": "Lajittele lista:",
@@ -349,12 +357,16 @@
   "import-board-c": "Tuo taulu",
   "import-board-c": "Tuo taulu",
   "import-board-title-trello": "Tuo taulu Trellosta",
   "import-board-title-trello": "Tuo taulu Trellosta",
   "import-board-title-wekan": "Tuo taulu edellisestä viennistä",
   "import-board-title-wekan": "Tuo taulu edellisestä viennistä",
+  "import-board-title-csv": "Tuo taulu CSV/TSV",
   "from-trello": "Trellosta",
   "from-trello": "Trellosta",
   "from-wekan": "Edellisestä viennistä",
   "from-wekan": "Edellisestä viennistä",
+  "from-csv": "CSV/TSV muodosta",
   "import-board-instruction-trello": "Mene Trello-taulullasi 'Menu', sitten 'More', 'Print and Export', 'Export JSON', ja kopioi tuloksena saamasi teksti",
   "import-board-instruction-trello": "Mene Trello-taulullasi 'Menu', sitten 'More', 'Print and Export', 'Export JSON', ja kopioi tuloksena saamasi teksti",
+  "import-board-instruction-csv": "Liitä pilkulla erotellut arvot (CSV)/ tabilla erotetut arvot (TSV).",
   "import-board-instruction-wekan": "Taulullasi, mene 'Valikko', sitten 'Vie taulu', ja kopioi teksti ladatusta tiedostosta.",
   "import-board-instruction-wekan": "Taulullasi, mene 'Valikko', sitten 'Vie taulu', ja kopioi teksti ladatusta tiedostosta.",
   "import-board-instruction-about-errors": "Jos virheitä tulee taulua tuotaessa, joskus tuonti silti toimii, ja taulu on Kaikki taulut sivulla.",
   "import-board-instruction-about-errors": "Jos virheitä tulee taulua tuotaessa, joskus tuonti silti toimii, ja taulu on Kaikki taulut sivulla.",
   "import-json-placeholder": "Liitä kelvollinen JSON-tietosi tähän",
   "import-json-placeholder": "Liitä kelvollinen JSON-tietosi tähän",
+  "import-csv-placeholder": "Liitä kelvollinen CSV/TSV tietosi tähän",
   "import-map-members": "Vastaavat jäsenet",
   "import-map-members": "Vastaavat jäsenet",
   "import-members-map": "Tuomallasi taululla on muutamia jäseniä. Ole hyvä ja valitse tuomiasi jäseniä vastaavat käyttäjäsi",
   "import-members-map": "Tuomallasi taululla on muutamia jäseniä. Ole hyvä ja valitse tuomiasi jäseniä vastaavat käyttäjäsi",
   "import-show-user-mapping": "Tarkasta vastaavat jäsenet",
   "import-show-user-mapping": "Tarkasta vastaavat jäsenet",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane-toimet",
   "swimlaneActionPopup-title": "Swimlane-toimet",
   "swimlaneAddPopup-title": "Lisää Swimlane alle",
   "swimlaneAddPopup-title": "Lisää Swimlane alle",
   "listImportCardPopup-title": "Tuo Trello-kortti",
   "listImportCardPopup-title": "Tuo Trello-kortti",
+  "listImportCardsTsvPopup-title": "Tuo Excel CSV/TSV",
   "listMorePopup-title": "Lisää",
   "listMorePopup-title": "Lisää",
   "link-list": "Linkki tähän listaan",
   "link-list": "Linkki tähän listaan",
   "list-delete-pop": "Kaikki toimet poistetaan toimintasyötteestä ja listan poistaminen on lopullista. Tätä ei pysty peruuttamaan.",
   "list-delete-pop": "Kaikki toimet poistetaan toimintasyötteestä ja listan poistaminen on lopullista. Tätä ei pysty peruuttamaan.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Kun kortti",
   "r-when-a-card": "Kun kortti",
   "r-is": "on",
   "r-is": "on",
   "r-is-moved": "on siirretty",
   "r-is-moved": "on siirretty",
-  "r-added-to": "lisätty kohteeseen",
+  "r-added-to": "Lisätty kohteeseen",
   "r-removed-from": "Poistettu kohteesta",
   "r-removed-from": "Poistettu kohteesta",
   "r-the-board": "taulu",
   "r-the-board": "taulu",
   "r-list": "lista",
   "r-list": "lista",
@@ -784,5 +797,14 @@
   "thursday": "Torstai",
   "thursday": "Torstai",
   "friday": "Perjantai",
   "friday": "Perjantai",
   "saturday": "Lauantai",
   "saturday": "Lauantai",
-  "sunday": "Sunnuntai"
+  "sunday": "Sunnuntai",
+  "status": "Tilanne",
+  "swimlane": "Swimlane",
+  "owner": "Omistaja",
+  "last-modified-at": "Viimeksi muokattu",
+  "last-activity": "Viimeisin toiminta",
+  "voting": "Äänestys",
+  "archived": "Arkistoitu",
+  "delete-linked-card-before-this-card": "Et voi poistaa tätä korttia ennenkuin ensin poistat linkitetyn kortin jolla on",
+  "delete-linked-cards-before-this-list": "Et voi poistaa tätä listaa ennenkuin poistat linkitetyt kortit jotka osoittavat kortteihin tässä listassa"
 }
 }

+ 27 - 5
i18n/fr.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Temps passé",
   "card-spent": "Temps passé",
   "card-edit-attachments": "Modifier les pièces jointes",
   "card-edit-attachments": "Modifier les pièces jointes",
   "card-edit-custom-fields": "Éditer les champs personnalisés",
   "card-edit-custom-fields": "Éditer les champs personnalisés",
-  "card-start-voting": "Commencer le vote",
-  "card-cancel-voting": "Supprimer le vote",
   "card-edit-labels": "Gérer les étiquettes",
   "card-edit-labels": "Gérer les étiquettes",
   "card-edit-members": "Gérer les participants",
   "card-edit-members": "Gérer les participants",
   "card-labels-title": "Modifier les étiquettes de la carte.",
   "card-labels-title": "Modifier les étiquettes de la carte.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Commencer un vote",
   "cardStartVotingPopup-title": "Commencer un vote",
   "positiveVoteMembersPopup-title": "Pour",
   "positiveVoteMembersPopup-title": "Pour",
   "negativeVoteMembersPopup-title": "Contre",
   "negativeVoteMembersPopup-title": "Contre",
-  "allowNonBoardMembers": "Autoriser le vote anonyme sur le tableau public",
+  "card-edit-voting": "Éditer le vote",
+  "editVoteEndDatePopup-title": "Modifier la date de fin de vote",
+  "allowNonBoardMembers": "Autoriser tous les utilisateurs authentifiés",
   "vote-question": "Question du vote",
   "vote-question": "Question du vote",
   "vote-public": "Montrer qui a voté quoi",
   "vote-public": "Montrer qui a voté quoi",
   "vote-for-it": "pour",
   "vote-for-it": "pour",
   "vote-against": "contre",
   "vote-against": "contre",
+  "deleteVotePopup-title": "Supprimer le vote ?",
+  "vote-delete-pop": "La suppression est permanente. Vous perdrez toute action associée à ce vote.",
   "cardDeletePopup-title": "Supprimer la carte ?",
   "cardDeletePopup-title": "Supprimer la carte ?",
   "cardDetailsActionsPopup-title": "Actions sur la carte",
   "cardDetailsActionsPopup-title": "Actions sur la carte",
   "cardLabelsPopup-title": "Étiquettes",
   "cardLabelsPopup-title": "Étiquettes",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Vous devez être participant de ce tableau pour faire cela",
   "error-board-notAMember": "Vous devez être participant de ce tableau pour faire cela",
   "error-json-malformed": "Votre texte JSON n'est pas valide",
   "error-json-malformed": "Votre texte JSON n'est pas valide",
   "error-json-schema": "Vos données JSON ne contiennent pas l'information appropriée dans un format correct",
   "error-json-schema": "Vos données JSON ne contiennent pas l'information appropriée dans un format correct",
+  "error-csv-schema": "Votre fichier CSV (valeurs séparées par des virgules) / TSV (valeurs séparées par des tabulations) ne contient pas d'informations au bon format",
   "error-list-doesNotExist": "Cette liste n'existe pas",
   "error-list-doesNotExist": "Cette liste n'existe pas",
   "error-user-doesNotExist": "Cet utilisateur n'existe pas",
   "error-user-doesNotExist": "Cet utilisateur n'existe pas",
   "error-user-notAllowSelf": "Vous ne pouvez pas vous inviter vous-même",
   "error-user-notAllowSelf": "Vous ne pouvez pas vous inviter vous-même",
@@ -314,6 +317,11 @@
   "error-username-taken": "Ce nom d'utilisateur est déjà utilisé",
   "error-username-taken": "Ce nom d'utilisateur est déjà utilisé",
   "error-email-taken": "Cette adresse mail est déjà utilisée",
   "error-email-taken": "Cette adresse mail est déjà utilisée",
   "export-board": "Exporter le tableau",
   "export-board": "Exporter le tableau",
+  "export-board-json": "Exporter le tableau en JSON",
+  "export-board-csv": "Exporter le tableau en CSV",
+  "export-board-tsv": "Exporter le tableau en TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Exporter le tableau",
   "sort": "Tri",
   "sort": "Tri",
   "sort-desc": "Cliquez pour trier la liste",
   "sort-desc": "Cliquez pour trier la liste",
   "list-sort-by": "Trier la liste par:",
   "list-sort-by": "Trier la liste par:",
@@ -349,12 +357,16 @@
   "import-board-c": "Importer un tableau",
   "import-board-c": "Importer un tableau",
   "import-board-title-trello": "Importer un tableau depuis Trello",
   "import-board-title-trello": "Importer un tableau depuis Trello",
   "import-board-title-wekan": "Importer un tableau depuis un export précédent",
   "import-board-title-wekan": "Importer un tableau depuis un export précédent",
+  "import-board-title-csv": "Importer un tableau depuis CSV/TSV",
   "from-trello": "Depuis Trello",
   "from-trello": "Depuis Trello",
   "from-wekan": "Depuis un export précédent",
   "from-wekan": "Depuis un export précédent",
+  "from-csv": "Depuis CSV/TSV",
   "import-board-instruction-trello": "Dans votre tableau Trello, allez sur 'Menu', puis sur 'Plus', 'Imprimer et exporter', 'Exporter en JSON' et copiez le texte du résultat",
   "import-board-instruction-trello": "Dans votre tableau Trello, allez sur 'Menu', puis sur 'Plus', 'Imprimer et exporter', 'Exporter en JSON' et copiez le texte du résultat",
+  "import-board-instruction-csv": "Déposez vos données en CSV (valeurs séparées par des virgules) ou TSV (valeurs séparées par des tabulations).",
   "import-board-instruction-wekan": "Dans votre tableau, allez dans 'Menu', puis 'Exporter un tableau', et copier le texte du fichier téléchargé.",
   "import-board-instruction-wekan": "Dans votre tableau, allez dans 'Menu', puis 'Exporter un tableau', et copier le texte du fichier téléchargé.",
   "import-board-instruction-about-errors": "Si une erreur survient en important le tableau, il se peut que l'import ait fonctionné, et que le tableau se trouve sur la page \"Tous les tableaux\".",
   "import-board-instruction-about-errors": "Si une erreur survient en important le tableau, il se peut que l'import ait fonctionné, et que le tableau se trouve sur la page \"Tous les tableaux\".",
   "import-json-placeholder": "Collez ici les données JSON valides",
   "import-json-placeholder": "Collez ici les données JSON valides",
+  "import-csv-placeholder": "Déposez ici vos données valides CSV/TSV",
   "import-map-members": "Assigner des participants",
   "import-map-members": "Assigner des participants",
   "import-members-map": "Le tableau que vous venez d'importer contient des participants. Veuillez assigner les participants que vous souhaitez importer à vos utilisateurs.",
   "import-members-map": "Le tableau que vous venez d'importer contient des participants. Veuillez assigner les participants que vous souhaitez importer à vos utilisateurs.",
   "import-show-user-mapping": "Contrôler l'assignation des participants",
   "import-show-user-mapping": "Contrôler l'assignation des participants",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Actions du couloir",
   "swimlaneActionPopup-title": "Actions du couloir",
   "swimlaneAddPopup-title": "Ajouter un couloir en dessous",
   "swimlaneAddPopup-title": "Ajouter un couloir en dessous",
   "listImportCardPopup-title": "Importer une carte Trello",
   "listImportCardPopup-title": "Importer une carte Trello",
+  "listImportCardsTsvPopup-title": "Importer un fichier Excel CSV/TSV",
   "listMorePopup-title": "Plus",
   "listMorePopup-title": "Plus",
   "link-list": "Lien vers cette liste",
   "link-list": "Lien vers cette liste",
   "list-delete-pop": "Toutes les actions seront supprimées du fil d'activité et il ne sera plus possible de les récupérer. Cette action est irréversible.",
   "list-delete-pop": "Toutes les actions seront supprimées du fil d'activité et il ne sera plus possible de les récupérer. Cette action est irréversible.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Quand une carte",
   "r-when-a-card": "Quand une carte",
   "r-is": "est",
   "r-is": "est",
   "r-is-moved": "est déplacée",
   "r-is-moved": "est déplacée",
-  "r-added-to": "est ajoutée à",
+  "r-added-to": "Ajouté à",
   "r-removed-from": "Supprimé de",
   "r-removed-from": "Supprimé de",
   "r-the-board": "tableau",
   "r-the-board": "tableau",
   "r-list": "liste",
   "r-list": "liste",
@@ -784,5 +797,14 @@
   "thursday": "Jeudi",
   "thursday": "Jeudi",
   "friday": "Vendredi",
   "friday": "Vendredi",
   "saturday": "Samedi",
   "saturday": "Samedi",
-  "sunday": "Dimanche"
+  "sunday": "Dimanche",
+  "status": "Statut",
+  "swimlane": "Couloir",
+  "owner": "Propriétaire",
+  "last-modified-at": "Dernière modification le",
+  "last-activity": "Dernière activité",
+  "voting": "Vote",
+  "archived": "Archivé",
+  "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"
 }
 }

+ 27 - 5
i18n/gl.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Editar anexos",
   "card-edit-attachments": "Editar anexos",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Editar etiquetas",
   "card-edit-labels": "Editar etiquetas",
   "card-edit-members": "Editar membros",
   "card-edit-members": "Editar membros",
   "card-labels-title": "Cambiar as etiquetas da tarxeta.",
   "card-labels-title": "Cambiar as etiquetas da tarxeta.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Etiquetas",
   "cardLabelsPopup-title": "Etiquetas",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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": "Esta lista non existe",
   "error-list-doesNotExist": "Esta lista non existe",
   "error-user-doesNotExist": "Este usuario non existe",
   "error-user-doesNotExist": "Este usuario non existe",
   "error-user-notAllowSelf": "Non é posíbel convidarse a un mesmo",
   "error-user-notAllowSelf": "Non é posíbel convidarse a un mesmo",
@@ -314,6 +317,11 @@
   "error-username-taken": "Este nome de usuario xa está collido",
   "error-username-taken": "Este nome de usuario xa está collido",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Exportar taboleiro",
   "export-board": "Exportar taboleiro",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Exportar taboleiro",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Importar taboleiro",
   "import-board-c": "Importar taboleiro",
   "import-board-title-trello": "Importar taboleiro de Trello",
   "import-board-title-trello": "Importar taboleiro de Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "De Trello",
   "from-trello": "De Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Máis",
   "listMorePopup-title": "Máis",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/he.i18n.json

@@ -144,7 +144,7 @@
   "card-archived": "כרטיס זה שמור בארכיון.",
   "card-archived": "כרטיס זה שמור בארכיון.",
   "board-archived": "הלוח עבר לארכיון",
   "board-archived": "הלוח עבר לארכיון",
   "card-comments-title": "לכרטיס זה %s תגובות.",
   "card-comments-title": "לכרטיס זה %s תגובות.",
-  "card-delete-notice": "מחיקה היא סופית. כל הפעולות המשויכות לכרטיס זה תלכנה לאיוד.",
+  "card-delete-notice": "מחיקה היא סופית. כל הפעולות המשויכות לכרטיס זה תלכנה לאיבוד.",
   "card-delete-pop": "כל הפעולות יוסרו מלוח הפעילות ולא תהיה אפשרות לפתוח מחדש את הכרטיס. אין דרך חזרה.",
   "card-delete-pop": "כל הפעולות יוסרו מלוח הפעילות ולא תהיה אפשרות לפתוח מחדש את הכרטיס. אין דרך חזרה.",
   "card-delete-suggest-archive": "על מנת להסיר כרטיסים מהלוח מבלי לאבד את היסטוריית הפעילות שלהם, ניתן לשמור אותם בארכיון.",
   "card-delete-suggest-archive": "על מנת להסיר כרטיסים מהלוח מבלי לאבד את היסטוריית הפעילות שלהם, ניתן לשמור אותם בארכיון.",
   "card-due": "תאריך יעד",
   "card-due": "תאריך יעד",
@@ -152,8 +152,6 @@
   "card-spent": "זמן שהושקע",
   "card-spent": "זמן שהושקע",
   "card-edit-attachments": "עריכת קבצים מצורפים",
   "card-edit-attachments": "עריכת קבצים מצורפים",
   "card-edit-custom-fields": "עריכת שדות בהתאמה אישית",
   "card-edit-custom-fields": "עריכת שדות בהתאמה אישית",
-  "card-start-voting": "ניתן להצביע",
-  "card-cancel-voting": "מחיקת אפשרות ההצבעה ואת כל הקולות",
   "card-edit-labels": "עריכת תוויות",
   "card-edit-labels": "עריכת תוויות",
   "card-edit-members": "עריכת חברים",
   "card-edit-members": "עריכת חברים",
   "card-labels-title": "שינוי תוויות לכרטיס.",
   "card-labels-title": "שינוי תוויות לכרטיס.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "התחלת הצבעה",
   "cardStartVotingPopup-title": "התחלת הצבעה",
   "positiveVoteMembersPopup-title": "תומכים",
   "positiveVoteMembersPopup-title": "תומכים",
   "negativeVoteMembersPopup-title": "יריבים",
   "negativeVoteMembersPopup-title": "יריבים",
-  "allowNonBoardMembers": "לאפשר הצבעות אלמוניות בלוח ציבורי",
+  "card-edit-voting": "שינוי הצבעה",
+  "editVoteEndDatePopup-title": "החלפת מועד סיום הצבעה",
+  "allowNonBoardMembers": "לאפשר לכל המשתמשים הרשומים",
   "vote-question": "שאלת הסקר",
   "vote-question": "שאלת הסקר",
   "vote-public": "להציג מי הצביע למה",
   "vote-public": "להציג מי הצביע למה",
   "vote-for-it": "בעד",
   "vote-for-it": "בעד",
   "vote-against": "נגד",
   "vote-against": "נגד",
+  "deleteVotePopup-title": "למחוק הצבעה?",
+  "vote-delete-pop": "מחיקה היא לצמיתות. כל הפעולות המשויכות להצבעה זו תלכנה לאיבוד.",
   "cardDeletePopup-title": "למחוק כרטיס?",
   "cardDeletePopup-title": "למחוק כרטיס?",
   "cardDetailsActionsPopup-title": "פעולות על הכרטיס",
   "cardDetailsActionsPopup-title": "פעולות על הכרטיס",
   "cardLabelsPopup-title": "תוויות",
   "cardLabelsPopup-title": "תוויות",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "עליך לקבל חברות בלוח זה כדי לעשות זאת",
   "error-board-notAMember": "עליך לקבל חברות בלוח זה כדי לעשות זאת",
   "error-json-malformed": "הטקסט שלך אינו JSON תקין",
   "error-json-malformed": "הטקסט שלך אינו JSON תקין",
   "error-json-schema": "נתוני ה־JSON שלך לא כוללים את המידע הנכון בתבנית הנכונה",
   "error-json-schema": "נתוני ה־JSON שלך לא כוללים את המידע הנכון בתבנית הנכונה",
+  "error-csv-schema": "ה־CSV (ערכים מופרדים בפסיקים)/‏TSV (ערכים מופרדים בטאבים) שלך לא כולל את המידע הנכון בצורה הנכונה.",
   "error-list-doesNotExist": "רשימה זו לא קיימת",
   "error-list-doesNotExist": "רשימה זו לא קיימת",
   "error-user-doesNotExist": "משתמש זה לא קיים",
   "error-user-doesNotExist": "משתמש זה לא קיים",
   "error-user-notAllowSelf": "אינך יכול להזמין את עצמך",
   "error-user-notAllowSelf": "אינך יכול להזמין את עצמך",
@@ -314,6 +317,11 @@
   "error-username-taken": "המשתמש כבר קיים במערכת",
   "error-username-taken": "המשתמש כבר קיים במערכת",
   "error-email-taken": "כתובת הדוא״ל כבר נמצאת בשימוש",
   "error-email-taken": "כתובת הדוא״ל כבר נמצאת בשימוש",
   "export-board": "ייצוא לוח",
   "export-board": "ייצוא לוח",
+  "export-board-json": "ייצוא לוח ל־JSON",
+  "export-board-csv": "ייצוא לוח ל־CSV",
+  "export-board-tsv": "ייצוא לוח ל־TSV",
+  "export-board-html": "ייצוא לוח ל־HTML",
+  "exportBoardPopup-title": "ייצוא לוח",
   "sort": "מיון",
   "sort": "מיון",
   "sort-desc": "לחיצה למיון הרשימה",
   "sort-desc": "לחיצה למיון הרשימה",
   "list-sort-by": "מיון הרשימה לפי:",
   "list-sort-by": "מיון הרשימה לפי:",
@@ -349,12 +357,16 @@
   "import-board-c": "יבוא לוח",
   "import-board-c": "יבוא לוח",
   "import-board-title-trello": "ייבוא לוח מטרלו",
   "import-board-title-trello": "ייבוא לוח מטרלו",
   "import-board-title-wekan": "ייבוא לוח מייצוא קודם",
   "import-board-title-wekan": "ייבוא לוח מייצוא קודם",
+  "import-board-title-csv": "ייבוא לוח מ־CSV/TSV",
   "from-trello": "מ־Trello",
   "from-trello": "מ־Trello",
   "from-wekan": "מייצוא קודם",
   "from-wekan": "מייצוא קודם",
+  "from-csv": "מ־CSV/TSV",
   "import-board-instruction-trello": "בלוח הטרלו שלך, עליך ללחוץ על ‚תפריט‘, ואז על ‚עוד‘, ‚הדפסה וייצוא‘, ‚יצוא JSON‘ ולהעתיק את הטקסט שנוצר.",
   "import-board-instruction-trello": "בלוח הטרלו שלך, עליך ללחוץ על ‚תפריט‘, ואז על ‚עוד‘, ‚הדפסה וייצוא‘, ‚יצוא JSON‘ ולהעתיק את הטקסט שנוצר.",
+  "import-board-instruction-csv": "נא להדביק את הערכים מופרדים בפסיקים (CSV)/ערכים מופרדים בטאבים (TSV) שלך.",
   "import-board-instruction-wekan": "בלוח שלך עליך לגשת אל ‚תפריט’, לאחר מכן ‚ייצוא לוח’ ואז להעתיק את הטקסט מהקובץ שהתקבל.",
   "import-board-instruction-wekan": "בלוח שלך עליך לגשת אל ‚תפריט’, לאחר מכן ‚ייצוא לוח’ ואז להעתיק את הטקסט מהקובץ שהתקבל.",
   "import-board-instruction-about-errors": "גם אם התקבלו שגיאות בעת יבוא לוח, ייתכן שהייבוא עבד. כדי לבדוק זאת, יש להיכנס ל„כל הלוחות”.",
   "import-board-instruction-about-errors": "גם אם התקבלו שגיאות בעת יבוא לוח, ייתכן שהייבוא עבד. כדי לבדוק זאת, יש להיכנס ל„כל הלוחות”.",
   "import-json-placeholder": "יש להדביק את נתוני ה־JSON התקינים לכאן",
   "import-json-placeholder": "יש להדביק את נתוני ה־JSON התקינים לכאן",
+  "import-csv-placeholder": "נא להדביק את נתוני ה־CSV/TSV התקינים שלך כאן",
   "import-map-members": "מיפוי חברים",
   "import-map-members": "מיפוי חברים",
   "import-members-map": "הלוחות המיובאים שלך מכילים חברים. נא למפות את החברים שברצונך לייבא למשתמשים שלך",
   "import-members-map": "הלוחות המיובאים שלך מכילים חברים. נא למפות את החברים שברצונך לייבא למשתמשים שלך",
   "import-show-user-mapping": "סקירת מיפוי חברים",
   "import-show-user-mapping": "סקירת מיפוי חברים",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "פעולות על מסלול",
   "swimlaneActionPopup-title": "פעולות על מסלול",
   "swimlaneAddPopup-title": "הוספת מסלול מתחת",
   "swimlaneAddPopup-title": "הוספת מסלול מתחת",
   "listImportCardPopup-title": "יבוא כרטיס מ־Trello",
   "listImportCardPopup-title": "יבוא כרטיס מ־Trello",
+  "listImportCardsTsvPopup-title": "ייבוא CSV/TSV מסוג Excel",
   "listMorePopup-title": "עוד",
   "listMorePopup-title": "עוד",
   "link-list": "קישור לרשימה זו",
   "link-list": "קישור לרשימה זו",
   "list-delete-pop": "כל הפעולות תוסרנה מרצף הפעילות ולא תהיה לך אפשרות לשחזר את הרשימה. אין ביטול.",
   "list-delete-pop": "כל הפעולות תוסרנה מרצף הפעילות ולא תהיה לך אפשרות לשחזר את הרשימה. אין ביטול.",
@@ -784,5 +797,14 @@
   "thursday": "יום חמישי",
   "thursday": "יום חמישי",
   "friday": "יום שישי",
   "friday": "יום שישי",
   "saturday": "שבת",
   "saturday": "שבת",
-  "sunday": "יום ראשון"
+  "sunday": "יום ראשון",
+  "status": "מצב",
+  "swimlane": "מסלול",
+  "owner": "בעלות",
+  "last-modified-at": "שינוי אחרון ב־",
+  "last-activity": "פעילות אחרונה",
+  "voting": "הצבעה",
+  "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"
 }
 }

+ 27 - 5
i18n/hi.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "समय बिताया",
   "card-spent": "समय बिताया",
   "card-edit-attachments": "संपादित संलग्नक",
   "card-edit-attachments": "संपादित संलग्नक",
   "card-edit-custom-fields": "संपादित  प्रचलन  क्षेत्र",
   "card-edit-custom-fields": "संपादित  प्रचलन  क्षेत्र",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "संपादित नामपत्र",
   "card-edit-labels": "संपादित नामपत्र",
   "card-edit-members": "संपादित सदस्य",
   "card-edit-members": "संपादित सदस्य",
   "card-labels-title": "कार्ड के लिए नामपत्र परिवर्तित करें ।",
   "card-labels-title": "कार्ड के लिए नामपत्र परिवर्तित करें ।",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "मिटाएँ कार्ड?",
   "cardDeletePopup-title": "मिटाएँ कार्ड?",
   "cardDetailsActionsPopup-title": "कार्ड क्रियाएँ",
   "cardDetailsActionsPopup-title": "कार्ड क्रियाएँ",
   "cardLabelsPopup-title": "नामपत्र",
   "cardLabelsPopup-title": "नामपत्र",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need तक be एक सदस्य of  यह बोर्ड तक do that",
   "error-board-notAMember": "You need तक be एक सदस्य of  यह बोर्ड तक do that",
   "error-json-malformed": "Your text is not valid JSON",
   "error-json-malformed": "Your text is not valid JSON",
   "error-json-schema": "आपके JSON डेटा में सही प्रारूप में सही जानकारी शामिल नहीं है",
   "error-json-schema": "आपके JSON डेटा में सही प्रारूप में सही जानकारी शामिल नहीं है",
+  "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": "यह सूची does not exist",
   "error-list-doesNotExist": "यह सूची does not exist",
   "error-user-doesNotExist": "यह user does not exist",
   "error-user-doesNotExist": "यह user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "यह username is already taken",
   "error-username-taken": "यह username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export बोर्ड",
   "export-board": "Export बोर्ड",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export बोर्ड",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import बोर्ड",
   "import-board-c": "Import बोर्ड",
   "import-board-title-trello": "Import बोर्ड से Trello",
   "import-board-title-trello": "Import बोर्ड से Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "from-wekan": "From previous export",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "In your Trello बोर्ड, go तक 'Menu', then 'More', 'Print और Export', 'Export JSON', और copy the resulting text.",
   "import-board-instruction-trello": "In your Trello बोर्ड, go तक 'Menu', then 'More', 'Print और Export', 'Export JSON', और 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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map सदस्य",
   "import-map-members": "Map सदस्य",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Re आलोकन सदस्य mapping",
   "import-show-user-mapping": "Re आलोकन सदस्य mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "तैरन Actions",
   "swimlaneActionPopup-title": "तैरन Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import एक Trello कार्ड",
   "listImportCardPopup-title": "Import एक Trello कार्ड",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link तक  यह list",
   "link-list": "Link तक  यह list",
   "list-delete-pop": "All actions हो जाएगा हटा दिया से the activity feed और you won't be able तक recover the list. There is no undo.",
   "list-delete-pop": "All actions हो जाएगा हटा दिया से the activity feed और you won't be able तक recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "हटा दिया from",
   "r-removed-from": "हटा दिया from",
   "r-the-board": "the बोर्ड",
   "r-the-board": "the बोर्ड",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/hu.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Eltöltött idő",
   "card-spent": "Eltöltött idő",
   "card-edit-attachments": "Mellékletek szerkesztése",
   "card-edit-attachments": "Mellékletek szerkesztése",
   "card-edit-custom-fields": "Egyéni mezők szerkesztése",
   "card-edit-custom-fields": "Egyéni mezők szerkesztése",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Címkék szerkesztése",
   "card-edit-labels": "Címkék szerkesztése",
   "card-edit-members": "Tagok szerkesztése",
   "card-edit-members": "Tagok szerkesztése",
   "card-labels-title": "A kártya címkéinek megváltoztatása.",
   "card-labels-title": "A kártya címkéinek megváltoztatása.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Törli a kártyát?",
   "cardDeletePopup-title": "Törli a kártyát?",
   "cardDetailsActionsPopup-title": "Kártyaműveletek",
   "cardDetailsActionsPopup-title": "Kártyaműveletek",
   "cardLabelsPopup-title": "Címkék",
   "cardLabelsPopup-title": "Címkék",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "A tábla tagjának kell lennie, hogy ezt megtehesse",
   "error-board-notAMember": "A tábla tagjának kell lennie, hogy ezt megtehesse",
   "error-json-malformed": "A szöveg nem érvényes JSON",
   "error-json-malformed": "A szöveg nem érvényes JSON",
   "error-json-schema": "A JSON adatok nem a helyes formátumban tartalmazzák a megfelelő információkat",
   "error-json-schema": "A JSON adatok nem a helyes formátumban tartalmazzák a megfelelő információkat",
+  "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": "Ez a lista nem létezik",
   "error-list-doesNotExist": "Ez a lista nem létezik",
   "error-user-doesNotExist": "Ez a felhasználó nem létezik",
   "error-user-doesNotExist": "Ez a felhasználó nem létezik",
   "error-user-notAllowSelf": "Nem hívhatja meg saját magát",
   "error-user-notAllowSelf": "Nem hívhatja meg saját magát",
@@ -314,6 +317,11 @@
   "error-username-taken": "Ez a felhasználónév már foglalt",
   "error-username-taken": "Ez a felhasználónév már foglalt",
   "error-email-taken": "Az e-mail már foglalt",
   "error-email-taken": "Az e-mail már foglalt",
   "export-board": "Tábla exportálása",
   "export-board": "Tábla exportálása",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Tábla exportálása",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Tábla importálása",
   "import-board-c": "Tábla importálása",
   "import-board-title-trello": "Tábla importálása a Trello oldalról",
   "import-board-title-trello": "Tábla importálása a Trello oldalról",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "A Trello oldalról",
   "from-trello": "A Trello oldalról",
   "from-wekan": "From previous export",
   "from-wekan": "From previous export",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "A Trello tábláján menjen a „Menü”, majd a „Több”, „Nyomtatás és exportálás”, „JSON exportálása” menüpontokra, és másolja ki az eredményül kapott szöveget.",
   "import-board-instruction-trello": "A Trello tábláján menjen a „Menü”, majd a „Több”, „Nyomtatás és exportálás”, „JSON exportálása” menüpontokra, és másolja ki az eredményül kapott szöveget.",
+  "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-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-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": "Illessze be ide az érvényes JSON adatokat",
   "import-json-placeholder": "Illessze be ide az érvényes JSON adatokat",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Tagok leképezése",
   "import-map-members": "Tagok leképezése",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Tagok leképezésének vizsgálata",
   "import-show-user-mapping": "Tagok leképezésének vizsgálata",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Trello kártya importálása",
   "listImportCardPopup-title": "Trello kártya importálása",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Több",
   "listMorePopup-title": "Több",
   "link-list": "Összekapcsolás ezzel a listával",
   "link-list": "Összekapcsolás ezzel a listával",
   "list-delete-pop": "Az összes művelet el lesz távolítva a tevékenységlistából, és nem lesz lehetősége visszaállítani a listát. Nincs visszavonás.",
   "list-delete-pop": "Az összes művelet el lesz távolítva a tevékenységlistából, és nem lesz lehetősége visszaállítani a listát. Nincs visszavonás.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/hy.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/id.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Sunting lampiran",
   "card-edit-attachments": "Sunting lampiran",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Sunting label",
   "card-edit-labels": "Sunting label",
   "card-edit-members": "Sunting anggota",
   "card-edit-members": "Sunting anggota",
   "card-labels-title": "Ubah label kartu",
   "card-labels-title": "Ubah label kartu",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Hapus kartu",
   "cardDeletePopup-title": "Hapus kartu",
   "cardDetailsActionsPopup-title": "Aksi Kartu",
   "cardDetailsActionsPopup-title": "Aksi Kartu",
   "cardLabelsPopup-title": "Daftar Label",
   "cardLabelsPopup-title": "Daftar Label",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Anda harus jadi member panel ini untuk melakukannya",
   "error-board-notAMember": "Anda harus jadi member panel ini untuk melakukannya",
   "error-json-malformed": "Teks Anda bukan JSON yang sah",
   "error-json-malformed": "Teks Anda bukan JSON yang sah",
   "error-json-schema": "Data JSON Anda tidak mengikutsertakan informasi yang sesuai format",
   "error-json-schema": "Data JSON Anda tidak mengikutsertakan informasi yang sesuai 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": "Daftar ini tidak ada",
   "error-list-doesNotExist": "Daftar ini tidak ada",
   "error-user-doesNotExist": "Nama pengguna ini tidak ada",
   "error-user-doesNotExist": "Nama pengguna ini tidak ada",
   "error-user-notAllowSelf": "Anda tidak bisa mengundang diri sendiri",
   "error-user-notAllowSelf": "Anda tidak bisa mengundang diri sendiri",
@@ -314,6 +317,11 @@
   "error-username-taken": "Nama pengguna ini sudah dipakai",
   "error-username-taken": "Nama pengguna ini sudah dipakai",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Exspor Panel",
   "export-board": "Exspor Panel",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Exspor Panel",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Impor panel dari Trello",
   "import-board-title-trello": "Impor panel dari Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "from-wekan": "From previous export",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "Di panel Trello anda, ke 'Menu', terus 'More', 'Print and Export','Export JSON', dan salin hasilnya",
   "import-board-instruction-trello": "Di panel Trello anda, ke 'Menu', terus 'More', 'Print and Export','Export JSON', dan salin hasilnya",
+  "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-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-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": "Tempelkan data JSON yang sah disini",
   "import-json-placeholder": "Tempelkan data JSON yang sah disini",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Petakan partisipan",
   "import-map-members": "Petakan partisipan",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review pemetaan partisipan",
   "import-show-user-mapping": "Review pemetaan partisipan",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Impor dari Kartu Trello",
   "listImportCardPopup-title": "Impor dari Kartu Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Lainnya",
   "listMorePopup-title": "Lainnya",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/ig.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Aha",
   "cardLabelsPopup-title": "Aha",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/it.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Tempo trascorso",
   "card-spent": "Tempo trascorso",
   "card-edit-attachments": "Modifica allegati",
   "card-edit-attachments": "Modifica allegati",
   "card-edit-custom-fields": "Modifica campo personalizzato",
   "card-edit-custom-fields": "Modifica campo personalizzato",
-  "card-start-voting": "Inizia a votare",
-  "card-cancel-voting": "Cancella votazione e tutti i voti",
   "card-edit-labels": "Modifica etichette",
   "card-edit-labels": "Modifica etichette",
   "card-edit-members": "Modifica membri",
   "card-edit-members": "Modifica membri",
   "card-labels-title": "Cambia le etichette per questa scheda.",
   "card-labels-title": "Cambia le etichette per questa scheda.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Inizia una votazione",
   "cardStartVotingPopup-title": "Inizia una votazione",
   "positiveVoteMembersPopup-title": "Favorevoli",
   "positiveVoteMembersPopup-title": "Favorevoli",
   "negativeVoteMembersPopup-title": "Contrari",
   "negativeVoteMembersPopup-title": "Contrari",
-  "allowNonBoardMembers": "Consentire voto anonimo su bacheca pubblica",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Domanda di votazione",
   "vote-question": "Domanda di votazione",
   "vote-public": "Mostrare chi ha votato cosa",
   "vote-public": "Mostrare chi ha votato cosa",
   "vote-for-it": "a favore",
   "vote-for-it": "a favore",
   "vote-against": "contro",
   "vote-against": "contro",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Elimina scheda?",
   "cardDeletePopup-title": "Elimina scheda?",
   "cardDetailsActionsPopup-title": "Azioni scheda",
   "cardDetailsActionsPopup-title": "Azioni scheda",
   "cardLabelsPopup-title": "Etichette",
   "cardLabelsPopup-title": "Etichette",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Devi essere un membro di questa bacheca per poterlo fare",
   "error-board-notAMember": "Devi essere un membro di questa bacheca per poterlo fare",
   "error-json-malformed": "Il tuo testo non è un JSON valido",
   "error-json-malformed": "Il tuo testo non è un JSON valido",
   "error-json-schema": "Il tuo file JSON non contiene le giuste informazioni nel formato corretto",
   "error-json-schema": "Il tuo file JSON non contiene le giuste informazioni nel formato corretto",
+  "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": "Questa lista non esiste",
   "error-list-doesNotExist": "Questa lista non esiste",
   "error-user-doesNotExist": "Questo utente non esiste",
   "error-user-doesNotExist": "Questo utente non esiste",
   "error-user-notAllowSelf": "Non puoi invitare te stesso",
   "error-user-notAllowSelf": "Non puoi invitare te stesso",
@@ -314,6 +317,11 @@
   "error-username-taken": "Questo username è già utilizzato",
   "error-username-taken": "Questo username è già utilizzato",
   "error-email-taken": "L'email è già stata presa",
   "error-email-taken": "L'email è già stata presa",
   "export-board": "Esporta bacheca",
   "export-board": "Esporta bacheca",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Esporta bacheca",
   "sort": "Ordina",
   "sort": "Ordina",
   "sort-desc": "Clicca per ordinare la lista",
   "sort-desc": "Clicca per ordinare la lista",
   "list-sort-by": "Ordina la lista per:",
   "list-sort-by": "Ordina la lista per:",
@@ -349,12 +357,16 @@
   "import-board-c": "Importa bacheca",
   "import-board-c": "Importa bacheca",
   "import-board-title-trello": "Importa una bacheca da Trello",
   "import-board-title-trello": "Importa una bacheca da Trello",
   "import-board-title-wekan": "Importa bacheca dall'esportazione precedente",
   "import-board-title-wekan": "Importa bacheca dall'esportazione precedente",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Da Trello",
   "from-trello": "Da Trello",
   "from-wekan": "Dall'esportazione precedente",
   "from-wekan": "Dall'esportazione precedente",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "Nella tua bacheca Trello vai a 'Menu', poi 'Altro', 'Stampa ed esporta', 'Esporta JSON', e copia il testo che compare.",
   "import-board-instruction-trello": "Nella tua bacheca Trello vai a 'Menu', poi 'Altro', 'Stampa ed esporta', 'Esporta JSON', e copia il testo che compare.",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "Nella tua bacheca vai su \"Menu\", poi \"Esporta la bacheca\", e copia il testo nel file scaricato",
   "import-board-instruction-wekan": "Nella tua bacheca vai su \"Menu\", poi \"Esporta la bacheca\", e copia il testo nel file scaricato",
   "import-board-instruction-about-errors": "Se hai degli errori quando importi una bacheca, qualche volta l'importazione funziona comunque, e la bacheca si trova nella pagina \"Tutte le bacheche\"",
   "import-board-instruction-about-errors": "Se hai degli errori quando importi una bacheca, qualche volta l'importazione funziona comunque, e la bacheca si trova nella pagina \"Tutte le bacheche\"",
   "import-json-placeholder": "Incolla un JSON valido qui",
   "import-json-placeholder": "Incolla un JSON valido qui",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Mappatura dei membri",
   "import-map-members": "Mappatura dei membri",
   "import-members-map": "La bacheca che hai importato contiene alcuni membri. Per favore scegli i membri che vuoi importare tra i tuoi utenti",
   "import-members-map": "La bacheca che hai importato contiene alcuni membri. Per favore scegli i membri che vuoi importare tra i tuoi utenti",
   "import-show-user-mapping": "Rivedi la mappatura dei membri",
   "import-show-user-mapping": "Rivedi la mappatura dei membri",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Azioni diagramma Swimlane",
   "swimlaneActionPopup-title": "Azioni diagramma Swimlane",
   "swimlaneAddPopup-title": "Aggiungi un diagramma Swimlane di seguito",
   "swimlaneAddPopup-title": "Aggiungi un diagramma Swimlane di seguito",
   "listImportCardPopup-title": "Importa una scheda di Trello",
   "listImportCardPopup-title": "Importa una scheda di Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Altro",
   "listMorePopup-title": "Altro",
   "link-list": "Link a questa lista",
   "link-list": "Link a questa lista",
   "list-delete-pop": "Tutte le azioni saranno rimosse dal flusso attività e non sarai in grado di recuperare la lista. Non potrai tornare indietro.",
   "list-delete-pop": "Tutte le azioni saranno rimosse dal flusso attività e non sarai in grado di recuperare la lista. Non potrai tornare indietro.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Quando una scheda",
   "r-when-a-card": "Quando una scheda",
   "r-is": "è",
   "r-is": "è",
   "r-is-moved": "viene spostata",
   "r-is-moved": "viene spostata",
-  "r-added-to": "Aggiunto/a a",
+  "r-added-to": "Added to",
   "r-removed-from": "Rimosso da",
   "r-removed-from": "Rimosso da",
   "r-the-board": "La bacheca",
   "r-the-board": "La bacheca",
   "r-list": "lista",
   "r-list": "lista",
@@ -784,5 +797,14 @@
   "thursday": "Giovedi",
   "thursday": "Giovedi",
   "friday": "Venerdi",
   "friday": "Venerdi",
   "saturday": "Sabato",
   "saturday": "Sabato",
-  "sunday": "Domenica"
+  "sunday": "Domenica",
+  "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"
 }
 }

+ 28 - 6
i18n/ja.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "作業時間",
   "card-spent": "作業時間",
   "card-edit-attachments": "添付ファイルの編集",
   "card-edit-attachments": "添付ファイルの編集",
   "card-edit-custom-fields": "カスタムフィールドの編集",
   "card-edit-custom-fields": "カスタムフィールドの編集",
-  "card-start-voting": "投票を開始",
-  "card-cancel-voting": "投票と全ての結果を削除",
   "card-edit-labels": "ラベルの編集",
   "card-edit-labels": "ラベルの編集",
   "card-edit-members": "メンバーの編集",
   "card-edit-members": "メンバーの編集",
   "card-labels-title": "カードのラベルを変更する",
   "card-labels-title": "カードのラベルを変更する",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "投票を開始",
   "cardStartVotingPopup-title": "投票を開始",
   "positiveVoteMembersPopup-title": "支持者",
   "positiveVoteMembersPopup-title": "支持者",
   "negativeVoteMembersPopup-title": "反対者",
   "negativeVoteMembersPopup-title": "反対者",
-  "allowNonBoardMembers": "公開ボードでの匿名投票を許可",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "投票の質問事項",
   "vote-question": "投票の質問事項",
   "vote-public": "誰が何に投票したか表示",
   "vote-public": "誰が何に投票したか表示",
   "vote-for-it": "賛成",
   "vote-for-it": "賛成",
   "vote-against": "反対",
   "vote-against": "反対",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "カードを削除しますか?",
   "cardDeletePopup-title": "カードを削除しますか?",
   "cardDetailsActionsPopup-title": "カード操作",
   "cardDetailsActionsPopup-title": "カード操作",
   "cardLabelsPopup-title": "ラベル",
   "cardLabelsPopup-title": "ラベル",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "操作にはボードメンバーである必要があります",
   "error-board-notAMember": "操作にはボードメンバーである必要があります",
   "error-json-malformed": "このテキストは、有効なJSON形式ではありません",
   "error-json-malformed": "このテキストは、有効なJSON形式ではありません",
   "error-json-schema": "JSONデータが不正な値を含んでいます",
   "error-json-schema": "JSONデータが不正な値を含んでいます",
+  "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": "このリストは存在しません",
   "error-list-doesNotExist": "このリストは存在しません",
   "error-user-doesNotExist": "ユーザーが存在しません",
   "error-user-doesNotExist": "ユーザーが存在しません",
   "error-user-notAllowSelf": "自分を招待することはできません。",
   "error-user-notAllowSelf": "自分を招待することはできません。",
@@ -314,6 +317,11 @@
   "error-username-taken": "このユーザ名は既に使用されています",
   "error-username-taken": "このユーザ名は既に使用されています",
   "error-email-taken": "メールは既に受け取られています",
   "error-email-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-html": "Export board to HTML",
+  "exportBoardPopup-title": "ボードのエクスポート",
   "sort": "並べ替え",
   "sort": "並べ替え",
   "sort-desc": "クリックでリストをソート",
   "sort-desc": "クリックでリストをソート",
   "list-sort-by": "次によりリストを並べ替え:",
   "list-sort-by": "次によりリストを並べ替え:",
@@ -349,12 +357,16 @@
   "import-board-c": "ボードをインポート",
   "import-board-c": "ボードをインポート",
   "import-board-title-trello": "Trelloからボードをインポート",
   "import-board-title-trello": "Trelloからボードをインポート",
   "import-board-title-wekan": "以前のエクスポートからボードをインポート",
   "import-board-title-wekan": "以前のエクスポートからボードをインポート",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Trelloから",
   "from-trello": "Trelloから",
   "from-wekan": "以前のエクスポートから",
   "from-wekan": "以前のエクスポートから",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "Trelloボードの、 'Menu' → 'More' → 'Print and Export' → 'Export JSON'を選択し、テキストをコピーしてください。",
   "import-board-instruction-trello": "Trelloボードの、 'Menu' → 'More' → 'Print and Export' → 'Export JSON'を選択し、テキストをコピーしてください。",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "ボードの、 'メニュー' → 'ボードのエクスポート'を選択し、ダウンロードされたファイルの中のテキストをコピーしてください。",
   "import-board-instruction-wekan": "ボードの、 'メニュー' → 'ボードのエクスポート'を選択し、ダウンロードされたファイルの中のテキストをコピーしてください。",
   "import-board-instruction-about-errors": "ボードのインポート中にエラーが発生した場合、インポートがまだ進行中のまま、全てのボードページに表示されている場合があります。",
   "import-board-instruction-about-errors": "ボードのインポート中にエラーが発生した場合、インポートがまだ進行中のまま、全てのボードページに表示されている場合があります。",
   "import-json-placeholder": "JSONデータをここに貼り付けする",
   "import-json-placeholder": "JSONデータをここに貼り付けする",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "メンバーを紐付け",
   "import-map-members": "メンバーを紐付け",
   "import-members-map": "インポートしたボードにはいくつかのメンバーが含まれています。インポートしたいメンバーをユーザーにマッピングしてください",
   "import-members-map": "インポートしたボードにはいくつかのメンバーが含まれています。インポートしたいメンバーをユーザーにマッピングしてください",
   "import-show-user-mapping": "メンバー紐付けの確認",
   "import-show-user-mapping": "メンバー紐付けの確認",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "スイムレーン操作",
   "swimlaneActionPopup-title": "スイムレーン操作",
   "swimlaneAddPopup-title": "直下にスイムレーンを追加",
   "swimlaneAddPopup-title": "直下にスイムレーンを追加",
   "listImportCardPopup-title": "Trelloのカードをインポート",
   "listImportCardPopup-title": "Trelloのカードをインポート",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "さらに見る",
   "listMorePopup-title": "さらに見る",
   "link-list": "このリストへのリンク",
   "link-list": "このリストへのリンク",
   "list-delete-pop": "すべての内容がアクティビティから削除されます。この削除は元に戻すことができません。",
   "list-delete-pop": "すべての内容がアクティビティから削除されます。この削除は元に戻すことができません。",
@@ -626,7 +639,7 @@
   "r-when-a-card": "カード:",
   "r-when-a-card": "カード:",
   "r-is": "が",
   "r-is": "が",
   "r-is-moved": "が移動された時",
   "r-is-moved": "が移動された時",
-  "r-added-to": "次に追加された時",
+  "r-added-to": "Added to",
   "r-removed-from": "次から削除された時",
   "r-removed-from": "次から削除された時",
   "r-the-board": "ボード:",
   "r-the-board": "ボード:",
   "r-list": "リスト:",
   "r-list": "リスト:",
@@ -674,7 +687,7 @@
   "r-of-checklist": "チェックリスト",
   "r-of-checklist": "チェックリスト",
   "r-send-email": "メールを送る",
   "r-send-email": "メールを送る",
   "r-to": "宛先",
   "r-to": "宛先",
-  "r-of": "of",
+  "r-of": "/",
   "r-subject": "件名",
   "r-subject": "件名",
   "r-rule-details": "ルール詳細",
   "r-rule-details": "ルール詳細",
   "r-d-move-to-top-gen": "カードを自身のリストの先頭に移動",
   "r-d-move-to-top-gen": "カードを自身のリストの先頭に移動",
@@ -784,5 +797,14 @@
   "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"
 }
 }

+ 27 - 5
i18n/ka.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "დახარჯული დრო",
   "card-spent": "დახარჯული დრო",
   "card-edit-attachments": "მიბმული ფაილის შესწორება",
   "card-edit-attachments": "მიბმული ფაილის შესწორება",
   "card-edit-custom-fields": "მომხმარებლის ველის შესწორება",
   "card-edit-custom-fields": "მომხმარებლის ველის შესწორება",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "ნიშნის შესწორება",
   "card-edit-labels": "ნიშნის შესწორება",
   "card-edit-members": "მომხმარებლების შესწორება",
   "card-edit-members": "მომხმარებლების შესწორება",
   "card-labels-title": "ნიშნის შეცვლა ბარათისთვის.",
   "card-labels-title": "ნიშნის შეცვლა ბარათისთვის.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "წავშალოთ ბარათი? ",
   "cardDeletePopup-title": "წავშალოთ ბარათი? ",
   "cardDetailsActionsPopup-title": "ბარათის მოქმედებები",
   "cardDetailsActionsPopup-title": "ბარათის მოქმედებები",
   "cardLabelsPopup-title": "ნიშნები",
   "cardLabelsPopup-title": "ნიშნები",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "ამის გასაკეთებლად საჭიროა იყოთ დაფის წევრი",
   "error-board-notAMember": "ამის გასაკეთებლად საჭიროა იყოთ დაფის წევრი",
   "error-json-malformed": "შენი ტექსტი არ არის ვალიდური JSON",
   "error-json-malformed": "შენი ტექსტი არ არის ვალიდური JSON",
   "error-json-schema": "თქვენი JSON  მონაცემები არ შეიცავს ზუსტ ინფორმაციას სწორ ფორმატში ",
   "error-json-schema": "თქვენი JSON  მონაცემები არ შეიცავს ზუსტ ინფორმაციას სწორ ფორმატში ",
+  "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": "ეს ცხრილი არ არსებობს",
   "error-list-doesNotExist": "ეს ცხრილი არ არსებობს",
   "error-user-doesNotExist": "მსგავსი მომხმარებელი არ არსებობს",
   "error-user-doesNotExist": "მსგავსი მომხმარებელი არ არსებობს",
   "error-user-notAllowSelf": "თქვენ არ შეგიძლიათ საკუთარი თავის მოწვევა",
   "error-user-notAllowSelf": "თქვენ არ შეგიძლიათ საკუთარი თავის მოწვევა",
@@ -314,6 +317,11 @@
   "error-username-taken": "არსებობს მსგავსი მომხმარებელი",
   "error-username-taken": "არსებობს მსგავსი მომხმარებელი",
   "error-email-taken": "უკვე არსებობს მსგავსი ელ.ფოსტა",
   "error-email-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-html": "Export board to HTML",
+  "exportBoardPopup-title": "დაფის ექსპორტი",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "დაფის იმპორტი",
   "import-board-c": "დაფის იმპორტი",
   "import-board-title-trello": "დაფის იმპორტი  Trello-დან",
   "import-board-title-trello": "დაფის იმპორტი  Trello-დან",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Trello-დან",
   "from-trello": "Trello-დან",
   "from-wekan": "From previous export",
   "from-wekan": "From previous export",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "თქვენს Trello დაფაზე, შედით \"მენიუ\"-ში, შემდეგ დააკლიკეთ \"მეტი\", \"ამოპრინტერება და ექსპორტი\",  \"JSON-ის ექსპორტი\" და დააკოპირეთ შედეგი.  ",
   "import-board-instruction-trello": "თქვენს Trello დაფაზე, შედით \"მენიუ\"-ში, შემდეგ დააკლიკეთ \"მეტი\", \"ამოპრინტერება და ექსპორტი\",  \"JSON-ის ექსპორტი\" და დააკოპირეთ შედეგი.  ",
+  "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-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-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": "მოათავსეთ თქვენი ვალიდური JSON მონაცემები აქ.  ",
   "import-json-placeholder": "მოათავსეთ თქვენი ვალიდური JSON მონაცემები აქ.  ",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "რუკის წევრები",
   "import-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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "მომხმარებლის რუკების განხილვა",
   "import-show-user-mapping": "მომხმარებლის რუკების განხილვა",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "ბილიკის მოქმედებები",
   "swimlaneActionPopup-title": "ბილიკის მოქმედებები",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Trello ბარათის იმპორტი",
   "listImportCardPopup-title": "Trello ბარათის იმპორტი",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "მეტი",
   "listMorePopup-title": "მეტი",
   "link-list": "დააკავშირეთ ამ ჩამონათვალთან",
   "link-list": "დააკავშირეთ ამ ჩამონათვალთან",
   "list-delete-pop": "ყველა მოქმედება  წაიშლება აქტივობების ველიდან და თქვენ ვეღარ შეძლებთ მის აღდგენას ჩამონათვალში",
   "list-delete-pop": "ყველა მოქმედება  წაიშლება აქტივობების ველიდან და თქვენ ვეღარ შეძლებთ მის აღდგენას ჩამონათვალში",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/km.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/ko.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "첨부 파일 수정",
   "card-edit-attachments": "첨부 파일 수정",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "라벨 수정",
   "card-edit-labels": "라벨 수정",
   "card-edit-members": "멤버 수정",
   "card-edit-members": "멤버 수정",
   "card-labels-title": "카드의 라벨 변경.",
   "card-labels-title": "카드의 라벨 변경.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "카드를 삭제합니까?",
   "cardDeletePopup-title": "카드를 삭제합니까?",
   "cardDetailsActionsPopup-title": "카드 액션",
   "cardDetailsActionsPopup-title": "카드 액션",
   "cardLabelsPopup-title": "라벨",
   "cardLabelsPopup-title": "라벨",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "이 작업은 보드의 멤버만 실행할 수 있습니다.",
   "error-board-notAMember": "이 작업은 보드의 멤버만 실행할 수 있습니다.",
   "error-json-malformed": "텍스트가 JSON 형식에 유효하지 않습니다.",
   "error-json-malformed": "텍스트가 JSON 형식에 유효하지 않습니다.",
   "error-json-schema": "JSON 데이터에 정보가 올바른 형식으로 포함되어 있지 않습니다.",
   "error-json-schema": "JSON 데이터에 정보가 올바른 형식으로 포함되어 있지 않습니다.",
+  "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": "목록이 없습니다.",
   "error-list-doesNotExist": "목록이 없습니다.",
   "error-user-doesNotExist": "멤버의 정보가 없습니다.",
   "error-user-doesNotExist": "멤버의 정보가 없습니다.",
   "error-user-notAllowSelf": "자기 자신을 초대할 수 없습니다.",
   "error-user-notAllowSelf": "자기 자신을 초대할 수 없습니다.",
@@ -314,6 +317,11 @@
   "error-username-taken": "중복된 아이디 입니다.",
   "error-username-taken": "중복된 아이디 입니다.",
   "error-email-taken": "Email has already been 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-html": "Export board to HTML",
+  "exportBoardPopup-title": "보드 내보내기",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "보드 가져오기",
   "import-board-c": "보드 가져오기",
   "import-board-title-trello": "Trello에서 보드 가져오기",
   "import-board-title-trello": "Trello에서 보드 가져오기",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "from-wekan": "From previous export",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "Trello 게시판에서 'Menu' -> 'More' -> 'Print and Export', 'Export JSON' 선택하여 텍스트 결과값 복사",
   "import-board-instruction-trello": "Trello 게시판에서 'Menu' -> 'More' -> 'Print and Export', 'Export JSON' 선택하여 텍스트 결과값 복사",
+  "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-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-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": "유효한 JSON 데이터를 여기에 붙여 넣으십시오.",
   "import-json-placeholder": "유효한 JSON 데이터를 여기에 붙여 넣으십시오.",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "보드 멤버들",
   "import-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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "멤버 매핑 미리보기",
   "import-show-user-mapping": "멤버 매핑 미리보기",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Trello 카드 가져 오기",
   "listImportCardPopup-title": "Trello 카드 가져 오기",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "더보기",
   "listMorePopup-title": "더보기",
   "link-list": "이 리스트에 링크",
   "link-list": "이 리스트에 링크",
   "list-delete-pop": "모든 작업이 활동내역에서 제거되며 리스트를 복구 할 수 없습니다. 실행 취소는 불가능 합니다.",
   "list-delete-pop": "모든 작업이 활동내역에서 제거되며 리스트를 복구 할 수 없습니다. 실행 취소는 불가능 합니다.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/lv.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/mk.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Изработено време",
   "card-spent": "Изработено време",
   "card-edit-attachments": "Промени прикачените датотеки",
   "card-edit-attachments": "Промени прикачените датотеки",
   "card-edit-custom-fields": "Промени собствените полета",
   "card-edit-custom-fields": "Промени собствените полета",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Промени етикетите",
   "card-edit-labels": "Промени етикетите",
   "card-edit-members": "Промени членовете",
   "card-edit-members": "Промени членовете",
   "card-labels-title": "Промени етикетите за картата.",
   "card-labels-title": "Промени етикетите за картата.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Желаете да изтриете картата?",
   "cardDeletePopup-title": "Желаете да изтриете картата?",
   "cardDetailsActionsPopup-title": "Опции",
   "cardDetailsActionsPopup-title": "Опции",
   "cardLabelsPopup-title": "Етикети",
   "cardLabelsPopup-title": "Етикети",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "За да направите това трябва да сте член на това табло",
   "error-board-notAMember": "За да направите това трябва да сте член на това табло",
   "error-json-malformed": "Текстът Ви не е валиден JSON",
   "error-json-malformed": "Текстът Ви не е валиден JSON",
   "error-json-schema": "JSON информацията Ви не съдържа информация във валиден формат",
   "error-json-schema": "JSON информацията Ви не съдържа информация във валиден формат",
+  "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": "Този списък не съществува",
   "error-list-doesNotExist": "Този списък не съществува",
   "error-user-doesNotExist": "Този потребител не съществува",
   "error-user-doesNotExist": "Този потребител не съществува",
   "error-user-notAllowSelf": "Не можете да поканите себе си",
   "error-user-notAllowSelf": "Не можете да поканите себе си",
@@ -314,6 +317,11 @@
   "error-username-taken": "Това потребителско име е вече заето",
   "error-username-taken": "Това потребителско име е вече заето",
   "error-email-taken": "Имейлът е вече зает",
   "error-email-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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Експортиране на Табло",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Импортирай Табло",
   "import-board-c": "Импортирай Табло",
   "import-board-title-trello": "Импорт на табло от Trello",
   "import-board-title-trello": "Импорт на табло от Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "От Trello",
   "from-trello": "От Trello",
   "from-wekan": "From previous export",
   "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-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-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-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": "Копирайте валидната Ви JSON информация тук",
   "import-json-placeholder": "Копирайте валидната Ви JSON информация тук",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Импорт на карта от Trello",
   "listImportCardPopup-title": "Импорт на карта от Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Още",
   "listMorePopup-title": "Още",
   "link-list": "Връзка към този списък",
   "link-list": "Връзка към този списък",
   "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
   "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Когато карта",
   "r-when-a-card": "Когато карта",
   "r-is": "е",
   "r-is": "е",
   "r-is-moved": "преместена",
   "r-is-moved": "преместена",
-  "r-added-to": "добавена в",
+  "r-added-to": "Added to",
   "r-removed-from": "премахната от",
   "r-removed-from": "премахната от",
   "r-the-board": "таблото",
   "r-the-board": "таблото",
   "r-list": "списък",
   "r-list": "списък",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/mn.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/nb.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Rediger vedlegg",
   "card-edit-attachments": "Rediger vedlegg",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Rediger etiketter",
   "card-edit-labels": "Rediger etiketter",
   "card-edit-members": "Endre medlemmer",
   "card-edit-members": "Endre medlemmer",
   "card-labels-title": "Endre etiketter for kortet.",
   "card-labels-title": "Endre etiketter for kortet.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Slett kort?",
   "cardDeletePopup-title": "Slett kort?",
   "cardDetailsActionsPopup-title": "Kort-handlinger",
   "cardDetailsActionsPopup-title": "Kort-handlinger",
   "cardLabelsPopup-title": "Etiketter",
   "cardLabelsPopup-title": "Etiketter",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Du må være medlem av denne tavlen for å gjøre dette",
   "error-board-notAMember": "Du må være medlem av denne tavlen for å gjøre dette",
   "error-json-malformed": "Denne teksten er ikke gyldig JSON",
   "error-json-malformed": "Denne teksten er ikke gyldig JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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": "Denne listen finnes ikke",
   "error-list-doesNotExist": "Denne listen finnes ikke",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Mer",
   "listMorePopup-title": "Mer",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/nl.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Gespendeerde tijd",
   "card-spent": "Gespendeerde tijd",
   "card-edit-attachments": "Wijzig bijlagen",
   "card-edit-attachments": "Wijzig bijlagen",
   "card-edit-custom-fields": "Wijzig maatwerkvelden",
   "card-edit-custom-fields": "Wijzig maatwerkvelden",
-  "card-start-voting": "Start stemming",
-  "card-cancel-voting": "Verwijder stemming en verwijder stemmen",
   "card-edit-labels": "Wijzig labels",
   "card-edit-labels": "Wijzig labels",
   "card-edit-members": "Wijzig leden",
   "card-edit-members": "Wijzig leden",
   "card-labels-title": "Wijzig de labels van de kaart.",
   "card-labels-title": "Wijzig de labels van de kaart.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start een stemming",
   "cardStartVotingPopup-title": "Start een stemming",
   "positiveVoteMembersPopup-title": "Voorstanders",
   "positiveVoteMembersPopup-title": "Voorstanders",
   "negativeVoteMembersPopup-title": "Tegenstanders",
   "negativeVoteMembersPopup-title": "Tegenstanders",
-  "allowNonBoardMembers": "Sta anoniem stemmen toe op openbaar bord",
+  "card-edit-voting": "Wijzig stemming",
+  "editVoteEndDatePopup-title": "Wijzig einddatum stemming",
+  "allowNonBoardMembers": "Sta alle ingelogde gebruikers toe",
   "vote-question": "Stemvraag",
   "vote-question": "Stemvraag",
   "vote-public": "Toon wie wat gestemd heeft",
   "vote-public": "Toon wie wat gestemd heeft",
   "vote-for-it": "Voor",
   "vote-for-it": "Voor",
   "vote-against": "tegen",
   "vote-against": "tegen",
+  "deleteVotePopup-title": "Stemming verwijderen?",
+  "vote-delete-pop": "Verwijdering is permanent. Je raakt alle acties die gekoppeld zijn aan deze stemming kwijt.",
   "cardDeletePopup-title": "Kaart verwijderen?",
   "cardDeletePopup-title": "Kaart verwijderen?",
   "cardDetailsActionsPopup-title": "Kaart actie ondernemen",
   "cardDetailsActionsPopup-title": "Kaart actie ondernemen",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Je moet een lid zijn van dit bord om dat te doen.",
   "error-board-notAMember": "Je moet een lid zijn van dit bord om dat te doen.",
   "error-json-malformed": "JSON format klopt niet",
   "error-json-malformed": "JSON format klopt niet",
   "error-json-schema": "De JSON data bevat niet de juiste informatie in de juiste format",
   "error-json-schema": "De JSON data bevat niet de juiste informatie in de juiste format",
+  "error-csv-schema": "Je CSV(Comma Separated Values)/TSV (Tab Separated Values) bevat niet de juiste informatie in het juiste fomaat.",
   "error-list-doesNotExist": "Deze lijst bestaat niet",
   "error-list-doesNotExist": "Deze lijst bestaat niet",
   "error-user-doesNotExist": "Deze gebruiker bestaat niet",
   "error-user-doesNotExist": "Deze gebruiker bestaat niet",
   "error-user-notAllowSelf": "Je kan jezelf niet uitnodigen",
   "error-user-notAllowSelf": "Je kan jezelf niet uitnodigen",
@@ -314,6 +317,11 @@
   "error-username-taken": "Deze gebruikersnaam is al in gebruik",
   "error-username-taken": "Deze gebruikersnaam is al in gebruik",
   "error-email-taken": "Dit e-mailadres is al in gebruik",
   "error-email-taken": "Dit e-mailadres is al in gebruik",
   "export-board": "Exporteer bord",
   "export-board": "Exporteer bord",
+  "export-board-json": "Exporteer bord naar JSON",
+  "export-board-csv": "Exporteer bord naar CSV",
+  "export-board-tsv": "Exporteer bord naar TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Exporteer bord",
   "sort": "Sorteer",
   "sort": "Sorteer",
   "sort-desc": "Klik om lijst te sorteren",
   "sort-desc": "Klik om lijst te sorteren",
   "list-sort-by": "Sorteer lijst op",
   "list-sort-by": "Sorteer lijst op",
@@ -349,12 +357,16 @@
   "import-board-c": "Importeer bord",
   "import-board-c": "Importeer bord",
   "import-board-title-trello": "Importeer bord vanuit Trello",
   "import-board-title-trello": "Importeer bord vanuit Trello",
   "import-board-title-wekan": "Importeer bord vanuit eerdere export",
   "import-board-title-wekan": "Importeer bord vanuit eerdere export",
+  "import-board-title-csv": "Importeer bord van CSV/TSV",
   "from-trello": "Vanuit Trello",
   "from-trello": "Vanuit Trello",
   "from-wekan": "Vanuit eerdere export",
   "from-wekan": "Vanuit eerdere export",
+  "from-csv": "Van CSV/TSV",
   "import-board-instruction-trello": "Op jouw Trello bord, ga naar 'Menu', dan naar 'Meer', 'Print en Exporteer', 'Exporteer JSON', en kopieer de tekst.",
   "import-board-instruction-trello": "Op jouw Trello bord, ga naar 'Menu', dan naar 'Meer', 'Print en Exporteer', 'Exporteer JSON', en kopieer de tekst.",
+  "import-board-instruction-csv": "Plak hier je Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "Ga op je bord naar 'Menu' en klik dan 'Export board' en kopieer de tekst in het gedownloade bestand.",
   "import-board-instruction-wekan": "Ga op je bord naar 'Menu' en klik dan 'Export board' en kopieer de tekst in het gedownloade bestand.",
   "import-board-instruction-about-errors": "Als je tijdens de import van het bord foutmeldingen krijgt is de import soms toch gelukt en vind je het bord terug op de 'Alle borden' scherm.",
   "import-board-instruction-about-errors": "Als je tijdens de import van het bord foutmeldingen krijgt is de import soms toch gelukt en vind je het bord terug op de 'Alle borden' scherm.",
   "import-json-placeholder": "Plak geldige JSON data hier",
   "import-json-placeholder": "Plak geldige JSON data hier",
+  "import-csv-placeholder": "Plak hier je geldige CSV/TSV data",
   "import-map-members": "Breng leden in kaart",
   "import-map-members": "Breng leden in kaart",
   "import-members-map": "Je geïmporteerde bord heeft een aantal leden. Koppel de leden die je wilt importeren aan je gebruikers.",
   "import-members-map": "Je geïmporteerde bord heeft een aantal leden. Koppel de leden die je wilt importeren aan je gebruikers.",
   "import-show-user-mapping": "Breng leden overzicht tevoorschijn",
   "import-show-user-mapping": "Breng leden overzicht tevoorschijn",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane handelingen",
   "swimlaneActionPopup-title": "Swimlane handelingen",
   "swimlaneAddPopup-title": "Voeg hieronder een Swimlane toe",
   "swimlaneAddPopup-title": "Voeg hieronder een Swimlane toe",
   "listImportCardPopup-title": "Importeer een Trello kaart",
   "listImportCardPopup-title": "Importeer een Trello kaart",
+  "listImportCardsTsvPopup-title": "Importeer Excel CSV/TSV",
   "listMorePopup-title": "Meer",
   "listMorePopup-title": "Meer",
   "link-list": "Link naar deze lijst",
   "link-list": "Link naar deze lijst",
   "list-delete-pop": "Alle acties zullen verwijderd worden van de activiteiten feed, en je zult deze niet meer kunnen herstellen. Er is geen herstelmogelijkheid.",
   "list-delete-pop": "Alle acties zullen verwijderd worden van de activiteiten feed, en je zult deze niet meer kunnen herstellen. Er is geen herstelmogelijkheid.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Als een kaart",
   "r-when-a-card": "Als een kaart",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is verplaatst",
   "r-is-moved": "is verplaatst",
-  "r-added-to": "toegevoegd aan",
+  "r-added-to": "Toegevoegd aan",
   "r-removed-from": "verwijderd van",
   "r-removed-from": "verwijderd van",
   "r-the-board": "het bord",
   "r-the-board": "het bord",
   "r-list": "lijst",
   "r-list": "lijst",
@@ -784,5 +797,14 @@
   "thursday": "Donderdag",
   "thursday": "Donderdag",
   "friday": "Vrijdag",
   "friday": "Vrijdag",
   "saturday": "Zaterdag",
   "saturday": "Zaterdag",
-  "sunday": "Zondag"
+  "sunday": "Zondag",
+  "status": "Status",
+  "swimlane": "Swimlane",
+  "owner": "Eigenaar",
+  "last-modified-at": "Laatste aanpassing op",
+  "last-activity": "Laatste activiteit",
+  "voting": "Stemmen",
+  "archived": "Gearchiveerd",
+  "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"
 }
 }

+ 27 - 5
i18n/oc.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Temps passat",
   "card-spent": "Temps passat",
   "card-edit-attachments": "Cambiar las pèças jonchas",
   "card-edit-attachments": "Cambiar las pèças jonchas",
   "card-edit-custom-fields": "Cambiar los camps personalizats",
   "card-edit-custom-fields": "Cambiar los camps personalizats",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Cambiar los labèls",
   "card-edit-labels": "Cambiar los labèls",
   "card-edit-members": "Cambiar los participants",
   "card-edit-members": "Cambiar los participants",
   "card-labels-title": "Cambiar l'etiqueta de la carta.",
   "card-labels-title": "Cambiar l'etiqueta de la carta.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Suprimir la carta?",
   "cardDeletePopup-title": "Suprimir la carta?",
   "cardDetailsActionsPopup-title": "Accions sus la carta",
   "cardDetailsActionsPopup-title": "Accions sus la carta",
   "cardLabelsPopup-title": "Etiquetas",
   "cardLabelsPopup-title": "Etiquetas",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Devètz èsser un participant del tablèu per far aquò",
   "error-board-notAMember": "Devètz èsser un participant del tablèu per far aquò",
   "error-json-malformed": "Vòstre tèxte es pas valid JSON",
   "error-json-malformed": "Vòstre tèxte es pas valid JSON",
   "error-json-schema": "Vòstre JSON es pas al format correct ",
   "error-json-schema": "Vòstre JSON es pas al format correct ",
+  "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": "Aqueste tièra existís pas",
   "error-list-doesNotExist": "Aqueste tièra existís pas",
   "error-user-doesNotExist": "Aqueste utilizator existís pas",
   "error-user-doesNotExist": "Aqueste utilizator existís pas",
   "error-user-notAllowSelf": "Vos podètz pas convidar vautres meteisses",
   "error-user-notAllowSelf": "Vos podètz pas convidar vautres meteisses",
@@ -314,6 +317,11 @@
   "error-username-taken": "Lo nom es ja pres",
   "error-username-taken": "Lo nom es ja pres",
   "error-email-taken": "Lo corrièl es ja pres ",
   "error-email-taken": "Lo corrièl es ja pres ",
   "export-board": "Exportar lo tablèu",
   "export-board": "Exportar lo tablèu",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Exportar lo tablèu",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Importar un tablèu",
   "import-board-c": "Importar un tablèu",
   "import-board-title-trello": "Importar un tablèu dempuèi Trello",
   "import-board-title-trello": "Importar un tablèu dempuèi Trello",
   "import-board-title-wekan": "Importar un tablèu dempuèi un export passat",
   "import-board-title-wekan": "Importar un tablèu dempuèi un export passat",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Dempuèi Trello",
   "from-trello": "Dempuèi Trello",
   "from-wekan": "Dempuèi un export passat",
   "from-wekan": "Dempuèi un export passat",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "Dins vòstre tablèu Trello, vos cal anar dins \"Menut\", puèi \"Mai\", \"Export\", \"Export JSON\", e copiar lo tèxte balhat.",
   "import-board-instruction-trello": "Dins vòstre tablèu Trello, vos cal anar dins \"Menut\", puèi \"Mai\", \"Export\", \"Export JSON\", e copiar lo tèxte balhat.",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "Dins vòstre tablèu, vos cal anar dins \"Menut\", puèi \"Exportar lo tablèu\", e de copiar lo tèxte del fichièr telecargat.",
   "import-board-instruction-wekan": "Dins vòstre tablèu, vos cal anar dins \"Menut\", puèi \"Exportar lo tablèu\", e de copiar lo tèxte del fichièr telecargat.",
   "import-board-instruction-about-errors": "Se avètz de errors al moment d'importar un tablèu, es possible que l'importacion as fonccionat, lo tablèu es belèu a la pagina \"Totes los tablèus\".",
   "import-board-instruction-about-errors": "Se avètz de errors al moment d'importar un tablèu, es possible que l'importacion as fonccionat, lo tablèu es belèu a la pagina \"Totes los tablèus\".",
   "import-json-placeholder": "Pegar las donadas del fichièr JSON aicí",
   "import-json-placeholder": "Pegar las donadas del fichièr JSON aicí",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Mapa dels participants",
   "import-map-members": "Mapa dels participants",
   "import-members-map": "Lo tablèu qu'avètz importat as ja de participants, vos cal far la migracion amb los utilizators actual",
   "import-members-map": "Lo tablèu qu'avètz importat as ja de participants, vos cal far la migracion amb los utilizators actual",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Importar una carta de Trello",
   "listImportCardPopup-title": "Importar una carta de Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Mai",
   "listMorePopup-title": "Mai",
   "link-list": "Ligam d'aquesta tièra",
   "link-list": "Ligam d'aquesta tièra",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/pl.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spędzony czas",
   "card-spent": "Spędzony czas",
   "card-edit-attachments": "Edytuj załączniki",
   "card-edit-attachments": "Edytuj załączniki",
   "card-edit-custom-fields": "Edytuj niestandardowe pola",
   "card-edit-custom-fields": "Edytuj niestandardowe pola",
-  "card-start-voting": "Rozpocznij głosowanie",
-  "card-cancel-voting": "Usuń głosowanie i wszystkie głosy",
   "card-edit-labels": "Edytuj etykiety",
   "card-edit-labels": "Edytuj etykiety",
   "card-edit-members": "Edytuj członków",
   "card-edit-members": "Edytuj członków",
   "card-labels-title": "Zmień etykiety karty",
   "card-labels-title": "Zmień etykiety karty",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Zacznij głosowanie",
   "cardStartVotingPopup-title": "Zacznij głosowanie",
   "positiveVoteMembersPopup-title": "Zwolennicy",
   "positiveVoteMembersPopup-title": "Zwolennicy",
   "negativeVoteMembersPopup-title": "Przeciwnicy",
   "negativeVoteMembersPopup-title": "Przeciwnicy",
-  "allowNonBoardMembers": "Pozwól na oddawanie anonimowych głosów na publicznej tablicy",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Pytanie do głosowania",
   "vote-question": "Pytanie do głosowania",
   "vote-public": "Pokaż, kto głosował na wybrane opcje",
   "vote-public": "Pokaż, kto głosował na wybrane opcje",
   "vote-for-it": "za",
   "vote-for-it": "za",
   "vote-against": "przeciwko",
   "vote-against": "przeciwko",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Usunąć kartę?",
   "cardDeletePopup-title": "Usunąć kartę?",
   "cardDetailsActionsPopup-title": "Czynności kart",
   "cardDetailsActionsPopup-title": "Czynności kart",
   "cardLabelsPopup-title": "Etykiety",
   "cardLabelsPopup-title": "Etykiety",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Musisz być członkiem tej tablicy, żeby wykonać tę czynność",
   "error-board-notAMember": "Musisz być członkiem tej tablicy, żeby wykonać tę czynność",
   "error-json-malformed": "Twoja fraza nie jest w formacie JSON",
   "error-json-malformed": "Twoja fraza nie jest w formacie JSON",
   "error-json-schema": "Twoje dane JSON nie zawierają prawidłowych informacji w poprawnym formacie",
   "error-json-schema": "Twoje dane JSON nie zawierają prawidłowych informacji w poprawnym formacie",
+  "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": "Ta lista nie isnieje",
   "error-list-doesNotExist": "Ta lista nie isnieje",
   "error-user-doesNotExist": "Ten użytkownik nie istnieje",
   "error-user-doesNotExist": "Ten użytkownik nie istnieje",
   "error-user-notAllowSelf": "Nie możesz zaprosić samego siebie",
   "error-user-notAllowSelf": "Nie możesz zaprosić samego siebie",
@@ -314,6 +317,11 @@
   "error-username-taken": "Ta nazwa jest już zajęta",
   "error-username-taken": "Ta nazwa jest już zajęta",
   "error-email-taken": "Adres email jest już zarezerwowany",
   "error-email-taken": "Adres email jest już zarezerwowany",
   "export-board": "Eksportuj tablicę",
   "export-board": "Eksportuj tablicę",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Eksportuj tablicę",
   "sort": "Sortuj",
   "sort": "Sortuj",
   "sort-desc": "Kliknij by sortować listę",
   "sort-desc": "Kliknij by sortować listę",
   "list-sort-by": "Sortuj listę przez:",
   "list-sort-by": "Sortuj listę przez:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import tablicy",
   "import-board-c": "Import tablicy",
   "import-board-title-trello": "Importuj tablicę z Trello",
   "import-board-title-trello": "Importuj tablicę z Trello",
   "import-board-title-wekan": "Importuj tablicę z poprzedniego eksportu",
   "import-board-title-wekan": "Importuj tablicę z poprzedniego eksportu",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Z Trello",
   "from-trello": "Z Trello",
   "from-wekan": "Z poprzedniego eksportu",
   "from-wekan": "Z poprzedniego eksportu",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "W twojej tablicy na Trello przejdź do 'Menu', następnie 'Więcej', 'Drukuj i eksportuj', 'Eksportuj jako JSON' i skopiuj wynik",
   "import-board-instruction-trello": "W twojej tablicy na Trello przejdź do 'Menu', następnie 'Więcej', 'Drukuj i eksportuj', 'Eksportuj jako JSON' i skopiuj wynik",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "Na Twojej tablicy przejdź do 'Menu', a następnie wybierz 'Eksportuj tablicę' i skopiuj tekst w pobranym pliku.",
   "import-board-instruction-wekan": "Na Twojej tablicy przejdź do 'Menu', a następnie wybierz 'Eksportuj tablicę' i skopiuj tekst w pobranym pliku.",
   "import-board-instruction-about-errors": "W przypadku, gdy otrzymujesz błędy importowania tablicy, czasami importowanie pomimo wszystko działa poprawnie i tablica znajduje się w oknie Wszystkie tablice.",
   "import-board-instruction-about-errors": "W przypadku, gdy otrzymujesz błędy importowania tablicy, czasami importowanie pomimo wszystko działa poprawnie i tablica znajduje się w oknie Wszystkie tablice.",
   "import-json-placeholder": "Wklej Twoje dane JSON tutaj",
   "import-json-placeholder": "Wklej Twoje dane JSON tutaj",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Przypisz członków",
   "import-map-members": "Przypisz członków",
   "import-members-map": "Twoje zaimportowane tablice mają kilku członków. Proszę wybierz członków których chcesz zaimportować dla Twoich użytkowników",
   "import-members-map": "Twoje zaimportowane tablice mają kilku członków. Proszę wybierz członków których chcesz zaimportować dla Twoich użytkowników",
   "import-show-user-mapping": "Przejrzyj wybranych członków",
   "import-show-user-mapping": "Przejrzyj wybranych członków",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Opcje diagramu czynności",
   "swimlaneActionPopup-title": "Opcje diagramu czynności",
   "swimlaneAddPopup-title": "Dodaj diagram czynności poniżej",
   "swimlaneAddPopup-title": "Dodaj diagram czynności poniżej",
   "listImportCardPopup-title": "Zaimportuj kartę z Trello",
   "listImportCardPopup-title": "Zaimportuj kartę z Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Więcej",
   "listMorePopup-title": "Więcej",
   "link-list": "Podepnij do tej listy",
   "link-list": "Podepnij do tej listy",
   "list-delete-pop": "Wszystkie czynności zostaną usunięte z Aktywności i nie będziesz w stanie przywrócić listy. Nie ma możliwości cofnięcia tej operacji.",
   "list-delete-pop": "Wszystkie czynności zostaną usunięte z Aktywności i nie będziesz w stanie przywrócić listy. Nie ma możliwości cofnięcia tej operacji.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Gdy karta",
   "r-when-a-card": "Gdy karta",
   "r-is": "jest",
   "r-is": "jest",
   "r-is-moved": "jest przenoszona",
   "r-is-moved": "jest przenoszona",
-  "r-added-to": "dodana do",
+  "r-added-to": "Added to",
   "r-removed-from": "usunął z",
   "r-removed-from": "usunął z",
   "r-the-board": "tablicy",
   "r-the-board": "tablicy",
   "r-list": "lista",
   "r-list": "lista",
@@ -784,5 +797,14 @@
   "thursday": "Czwartek",
   "thursday": "Czwartek",
   "friday": "Piątek",
   "friday": "Piątek",
   "saturday": "Sobota",
   "saturday": "Sobota",
-  "sunday": "Niedziela"
+  "sunday": "Niedziela",
+  "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"
 }
 }

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

@@ -152,8 +152,6 @@
   "card-spent": "Tempo Gasto",
   "card-spent": "Tempo Gasto",
   "card-edit-attachments": "Editar anexos",
   "card-edit-attachments": "Editar anexos",
   "card-edit-custom-fields": "Editar campos customizados",
   "card-edit-custom-fields": "Editar campos customizados",
-  "card-start-voting": "Iniciar votação",
-  "card-cancel-voting": "Excluir votação e todos os votos",
   "card-edit-labels": "Editar etiquetas",
   "card-edit-labels": "Editar etiquetas",
   "card-edit-members": "Editar membros",
   "card-edit-members": "Editar membros",
   "card-labels-title": "Alterar etiquetas do cartão.",
   "card-labels-title": "Alterar etiquetas do cartão.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Iniciar uma votação",
   "cardStartVotingPopup-title": "Iniciar uma votação",
   "positiveVoteMembersPopup-title": "Proponentes",
   "positiveVoteMembersPopup-title": "Proponentes",
   "negativeVoteMembersPopup-title": "Oponentes",
   "negativeVoteMembersPopup-title": "Oponentes",
-  "allowNonBoardMembers": "Permitir voto anônimo em quadro público",
+  "card-edit-voting": "Editar votação",
+  "editVoteEndDatePopup-title": "Mudar votação e data",
+  "allowNonBoardMembers": "Permitir todos os usuários logados",
   "vote-question": "Questão em votação",
   "vote-question": "Questão em votação",
   "vote-public": "Mostrar quem votou no quê",
   "vote-public": "Mostrar quem votou no quê",
   "vote-for-it": "a favor",
   "vote-for-it": "a favor",
   "vote-against": "contra",
   "vote-against": "contra",
+  "deleteVotePopup-title": "Excluir votação?",
+  "vote-delete-pop": "A exclusão é permanente. Você perderá todas as ações associadas a esta votação.",
   "cardDeletePopup-title": "Excluir Cartão?",
   "cardDeletePopup-title": "Excluir Cartão?",
   "cardDetailsActionsPopup-title": "Ações do cartão",
   "cardDetailsActionsPopup-title": "Ações do cartão",
   "cardLabelsPopup-title": "Etiquetas",
   "cardLabelsPopup-title": "Etiquetas",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Você precisa ser um membro desse quadro para fazer isto",
   "error-board-notAMember": "Você precisa ser um membro desse quadro para fazer isto",
   "error-json-malformed": "Seu texto não é um JSON válido",
   "error-json-malformed": "Seu texto não é um JSON válido",
   "error-json-schema": "Seu JSON não inclui as informações no formato correto",
   "error-json-schema": "Seu JSON não inclui as informações no formato correto",
+  "error-csv-schema": "Seu CSV(Comma Separated Values)/TSV (Tab Separated Values) não inclui a informação adequada no formato correto",
   "error-list-doesNotExist": "Esta lista não existe",
   "error-list-doesNotExist": "Esta lista não existe",
   "error-user-doesNotExist": "Este usuário não existe",
   "error-user-doesNotExist": "Este usuário não existe",
   "error-user-notAllowSelf": "Você não pode convidar a si mesmo",
   "error-user-notAllowSelf": "Você não pode convidar a si mesmo",
@@ -314,6 +317,11 @@
   "error-username-taken": "Esse username já existe",
   "error-username-taken": "Esse username já existe",
   "error-email-taken": "E-mail já está em uso",
   "error-email-taken": "E-mail já está em uso",
   "export-board": "Exportar quadro",
   "export-board": "Exportar quadro",
+  "export-board-json": "Exportar quadro para JSON",
+  "export-board-csv": "Exportar quadro para CSV",
+  "export-board-tsv": "Exportar quadro para TSV",
+  "export-board-html": "Exportar quadro para HTML",
+  "exportBoardPopup-title": "Exportar quadro",
   "sort": "Ordenar",
   "sort": "Ordenar",
   "sort-desc": "Clique para Ordenar Lista",
   "sort-desc": "Clique para Ordenar Lista",
   "list-sort-by": "Ordenar a Lista por:",
   "list-sort-by": "Ordenar a Lista por:",
@@ -349,12 +357,16 @@
   "import-board-c": "Importar quadro",
   "import-board-c": "Importar quadro",
   "import-board-title-trello": "Importar quadro do Trello",
   "import-board-title-trello": "Importar quadro do Trello",
   "import-board-title-wekan": "Importar quadro a partir de exportação prévia",
   "import-board-title-wekan": "Importar quadro a partir de exportação prévia",
+  "import-board-title-csv": "Importar quadro de CSV/TSV",
   "from-trello": "Do Trello",
   "from-trello": "Do Trello",
   "from-wekan": "A partir de exportação prévia",
   "from-wekan": "A partir de exportação prévia",
+  "from-csv": "De CSV/TSV",
   "import-board-instruction-trello": "No seu quadro do Trello, vá em 'Menu', depois em 'Mais', 'Imprimir e Exportar', 'Exportar JSON', então copie o texto emitido",
   "import-board-instruction-trello": "No seu quadro do Trello, vá em 'Menu', depois em 'Mais', 'Imprimir e Exportar', 'Exportar JSON', então copie o texto emitido",
+  "import-board-instruction-csv": "Cole seu Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "Em seu quadro vá para 'Menu', depois 'Exportar quadro' e copie o texto no arquivo baixado.",
   "import-board-instruction-wekan": "Em seu quadro vá para 'Menu', depois 'Exportar quadro' e copie o texto no arquivo baixado.",
   "import-board-instruction-about-errors": "Se você receber erros ao importar o quadro, às vezes a importação ainda funciona e o quadro está na página Todos os Quadros.",
   "import-board-instruction-about-errors": "Se você receber erros ao importar o quadro, às vezes a importação ainda funciona e o quadro está na página Todos os Quadros.",
   "import-json-placeholder": "Cole seus dados JSON válidos aqui",
   "import-json-placeholder": "Cole seus dados JSON válidos aqui",
+  "import-csv-placeholder": "Cole aqui os dados válidos de seu CSV/TSV",
   "import-map-members": "Mapear membros",
   "import-map-members": "Mapear membros",
   "import-members-map": "Seu quadro importado possui alguns membros. Por favor, mapeie os membros que você deseja importar para seus usuários",
   "import-members-map": "Seu quadro importado possui alguns membros. Por favor, mapeie os membros que você deseja importar para seus usuários",
   "import-show-user-mapping": "Revisar mapeamento dos membros",
   "import-show-user-mapping": "Revisar mapeamento dos membros",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Ações de Raia",
   "swimlaneActionPopup-title": "Ações de Raia",
   "swimlaneAddPopup-title": "Adicionar uma Raia abaixo",
   "swimlaneAddPopup-title": "Adicionar uma Raia abaixo",
   "listImportCardPopup-title": "Importe um cartão do Trello",
   "listImportCardPopup-title": "Importe um cartão do Trello",
+  "listImportCardsTsvPopup-title": "Importar Excel CSV/TSV",
   "listMorePopup-title": "Mais",
   "listMorePopup-title": "Mais",
   "link-list": "Vincular a esta lista",
   "link-list": "Vincular a esta lista",
   "list-delete-pop": "Todas as ações serão excluidas da lista de atividades e você não poderá recuperar a lista. Não há como desfazer.",
   "list-delete-pop": "Todas as ações serão excluidas da lista de atividades e você não poderá recuperar a lista. Não há como desfazer.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Quando um cartão",
   "r-when-a-card": "Quando um cartão",
   "r-is": "é",
   "r-is": "é",
   "r-is-moved": "é movido",
   "r-is-moved": "é movido",
-  "r-added-to": "adicionado à",
+  "r-added-to": "adicionado a",
   "r-removed-from": "Removido de",
   "r-removed-from": "Removido de",
   "r-the-board": "o quadro",
   "r-the-board": "o quadro",
   "r-list": "lista",
   "r-list": "lista",
@@ -784,5 +797,14 @@
   "thursday": "Quinta",
   "thursday": "Quinta",
   "friday": "Sexta",
   "friday": "Sexta",
   "saturday": "Sábado",
   "saturday": "Sábado",
-  "sunday": "Domingo"
+  "sunday": "Domingo",
+  "status": "Status",
+  "swimlane": "Raia",
+  "owner": "Proprietário",
+  "last-modified-at": "Última modificação em",
+  "last-activity": "Última atividade",
+  "voting": "Votação",
+  "archived": "Arquivado",
+  "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"
 }
 }

+ 27 - 5
i18n/pt.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Tempo Gasto",
   "card-spent": "Tempo Gasto",
   "card-edit-attachments": "Editar anexos",
   "card-edit-attachments": "Editar anexos",
   "card-edit-custom-fields": "Editar campos personalizados",
   "card-edit-custom-fields": "Editar campos personalizados",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Editar etiquetas",
   "card-edit-labels": "Editar etiquetas",
   "card-edit-members": "Editar membros",
   "card-edit-members": "Editar membros",
   "card-labels-title": "Alterar as etiquetas do cartão.",
   "card-labels-title": "Alterar as etiquetas do cartão.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Apagar Cartão?",
   "cardDeletePopup-title": "Apagar Cartão?",
   "cardDetailsActionsPopup-title": "Acções do Cartão",
   "cardDetailsActionsPopup-title": "Acções do Cartão",
   "cardLabelsPopup-title": "Etiquetas",
   "cardLabelsPopup-title": "Etiquetas",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Precisa de ser um membro deste quadro para fazer isso",
   "error-board-notAMember": "Precisa de ser um membro deste quadro para fazer isso",
   "error-json-malformed": "O seu texto não é um JSON válido",
   "error-json-malformed": "O seu texto não é um JSON válido",
   "error-json-schema": "O seu JSON não inclui as informações apropriadas no formato correto",
   "error-json-schema": "O seu JSON não inclui as informações apropriadas no formato correto",
+  "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": "Esta lista não existe",
   "error-list-doesNotExist": "Esta lista não existe",
   "error-user-doesNotExist": "Este utilizador não existe",
   "error-user-doesNotExist": "Este utilizador não existe",
   "error-user-notAllowSelf": "Não se pode convidar a si mesmo",
   "error-user-notAllowSelf": "Não se pode convidar a si mesmo",
@@ -314,6 +317,11 @@
   "error-username-taken": "Esse nome de utilizador já existe",
   "error-username-taken": "Esse nome de utilizador já existe",
   "error-email-taken": "Endereço de e-mail já está em uso",
   "error-email-taken": "Endereço de e-mail já está em uso",
   "export-board": "Exportar quadro",
   "export-board": "Exportar quadro",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Exportar quadro",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Importar quadro",
   "import-board-c": "Importar quadro",
   "import-board-title-trello": "Importar quadro do Trello",
   "import-board-title-trello": "Importar quadro do Trello",
   "import-board-title-wekan": "Importar quadro a partir de exportação prévia",
   "import-board-title-wekan": "Importar quadro a partir de exportação prévia",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Do Trello",
   "from-trello": "Do Trello",
   "from-wekan": "A partir de exportação prévia",
   "from-wekan": "A partir de exportação prévia",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "No seu quadro do Trello, vá em 'Menu', depois em 'Mais', 'Imprimir e Exportar', 'Exportar JSON', e copie o texto resultante.",
   "import-board-instruction-trello": "No seu quadro do Trello, vá em 'Menu', depois em 'Mais', 'Imprimir e Exportar', 'Exportar JSON', e copie o texto resultante.",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "No seu quadro vá para 'Menu', depois 'Exportar quadro' e copie o texto no ficheiro descarregado.",
   "import-board-instruction-wekan": "No seu quadro vá para 'Menu', depois 'Exportar quadro' e copie o texto no ficheiro descarregado.",
   "import-board-instruction-about-errors": "Se receber erros ao importar o quadro, às vezes a importação ainda funciona e o quadro está na página Todos os Quadros.",
   "import-board-instruction-about-errors": "Se receber erros ao importar o quadro, às vezes a importação ainda funciona e o quadro está na página Todos os Quadros.",
   "import-json-placeholder": "Cole seus dados JSON válidos aqui",
   "import-json-placeholder": "Cole seus dados JSON válidos aqui",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Mapear membros",
   "import-map-members": "Mapear membros",
   "import-members-map": "O seu quadro importado possui alguns membros. Por favor, mapeie os membros que deseja importar para seus utilizadores",
   "import-members-map": "O seu quadro importado possui alguns membros. Por favor, mapeie os membros que deseja importar para seus utilizadores",
   "import-show-user-mapping": "Rever mapeamento dos membros",
   "import-show-user-mapping": "Rever mapeamento dos membros",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Acções de Pista",
   "swimlaneActionPopup-title": "Acções de Pista",
   "swimlaneAddPopup-title": "Adicionar uma Pista abaixo",
   "swimlaneAddPopup-title": "Adicionar uma Pista abaixo",
   "listImportCardPopup-title": "Importe um cartão do Trello",
   "listImportCardPopup-title": "Importe um cartão do Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Mais",
   "listMorePopup-title": "Mais",
   "link-list": "Ligar a esta lista",
   "link-list": "Ligar a esta lista",
   "list-delete-pop": "Todas as acções serão removidas do feed de actividade e não poderá recuperar a lista. Não há como desfazer.",
   "list-delete-pop": "Todas as acções serão removidas do feed de actividade e não poderá recuperar a lista. Não há como desfazer.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Quando um cartão",
   "r-when-a-card": "Quando um cartão",
   "r-is": "é",
   "r-is": "é",
   "r-is-moved": "é movido",
   "r-is-moved": "é movido",
-  "r-added-to": "adicionado a",
+  "r-added-to": "Added to",
   "r-removed-from": "Removido de",
   "r-removed-from": "Removido de",
   "r-the-board": "o quadro",
   "r-the-board": "o quadro",
   "r-list": "lista",
   "r-list": "lista",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/ro.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Editează atașamente",
   "card-edit-attachments": "Editează atașamente",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Editează etichete",
   "card-edit-labels": "Editează etichete",
   "card-edit-members": "Editează membrii",
   "card-edit-members": "Editează membrii",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/ru.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Затраченное время",
   "card-spent": "Затраченное время",
   "card-edit-attachments": "Изменить вложения",
   "card-edit-attachments": "Изменить вложения",
   "card-edit-custom-fields": "Редактировать настраиваемые поля",
   "card-edit-custom-fields": "Редактировать настраиваемые поля",
-  "card-start-voting": "Запустить голосование",
-  "card-cancel-voting": "Отменить голосование и удалить голоса",
   "card-edit-labels": "Изменить метку",
   "card-edit-labels": "Изменить метку",
   "card-edit-members": "Изменить участников",
   "card-edit-members": "Изменить участников",
   "card-labels-title": "Изменить метки для этой карточки.",
   "card-labels-title": "Изменить метки для этой карточки.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Голосовать",
   "cardStartVotingPopup-title": "Голосовать",
   "positiveVoteMembersPopup-title": "Сторонники",
   "positiveVoteMembersPopup-title": "Сторонники",
   "negativeVoteMembersPopup-title": "Противники",
   "negativeVoteMembersPopup-title": "Противники",
-  "allowNonBoardMembers": "Разрешить анонимное голосование на доступной всем доске",
+  "card-edit-voting": "Редактировать голосование",
+  "editVoteEndDatePopup-title": "Изменить дату окончания голосования",
+  "allowNonBoardMembers": "Разрешить всем авторизованным пользователям ",
   "vote-question": "Вопрос для голосования",
   "vote-question": "Вопрос для голосования",
   "vote-public": "Показать кто как голосовал",
   "vote-public": "Показать кто как голосовал",
   "vote-for-it": "за",
   "vote-for-it": "за",
   "vote-against": "против",
   "vote-against": "против",
+  "deleteVotePopup-title": "Удалить голосование?",
+  "vote-delete-pop": "Это действие невозможно будет отменить. Все связанные с голосованием действия будут потеряны.",
   "cardDeletePopup-title": "Удалить карточку?",
   "cardDeletePopup-title": "Удалить карточку?",
   "cardDetailsActionsPopup-title": "Действия в карточке",
   "cardDetailsActionsPopup-title": "Действия в карточке",
   "cardLabelsPopup-title": "Метки",
   "cardLabelsPopup-title": "Метки",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Вы должны быть участником доски, чтобы сделать это",
   "error-board-notAMember": "Вы должны быть участником доски, чтобы сделать это",
   "error-json-malformed": "Ваше текст не является правильным JSON",
   "error-json-malformed": "Ваше текст не является правильным JSON",
   "error-json-schema": "Содержимое вашего JSON не содержит информацию в корректном формате",
   "error-json-schema": "Содержимое вашего JSON не содержит информацию в корректном формате",
+  "error-csv-schema": "Ваши данные CSV (с разделителями запятой)/TSV (с разделителями табулятором) не содержат информации в корректном формате",
   "error-list-doesNotExist": "Список не найден",
   "error-list-doesNotExist": "Список не найден",
   "error-user-doesNotExist": "Пользователь не найден",
   "error-user-doesNotExist": "Пользователь не найден",
   "error-user-notAllowSelf": "Вы не можете пригласить себя",
   "error-user-notAllowSelf": "Вы не можете пригласить себя",
@@ -314,6 +317,11 @@
   "error-username-taken": "Это имя пользователя уже занято",
   "error-username-taken": "Это имя пользователя уже занято",
   "error-email-taken": "Этот адрес уже занят",
   "error-email-taken": "Этот адрес уже занят",
   "export-board": "Экспортировать доску",
   "export-board": "Экспортировать доску",
+  "export-board-json": "Экспортировать доску в JSON",
+  "export-board-csv": "Экспортировать доску в CSV",
+  "export-board-tsv": "Экспортировать доску в TSV",
+  "export-board-html": "Экспортировать доску в HTML",
+  "exportBoardPopup-title": "Экспортировать доску",
   "sort": "Сортировать",
   "sort": "Сортировать",
   "sort-desc": "Нажмите, чтобы отсортировать список",
   "sort-desc": "Нажмите, чтобы отсортировать список",
   "list-sort-by": "Сортировать список по:",
   "list-sort-by": "Сортировать список по:",
@@ -349,12 +357,16 @@
   "import-board-c": "Импортировать доску",
   "import-board-c": "Импортировать доску",
   "import-board-title-trello": "Импортировать доску из Trello",
   "import-board-title-trello": "Импортировать доску из Trello",
   "import-board-title-wekan": "Импортировать доску, сохраненную ранее.",
   "import-board-title-wekan": "Импортировать доску, сохраненную ранее.",
+  "import-board-title-csv": "Импортировать доску из CSV/TSV",
   "from-trello": "Из Trello",
   "from-trello": "Из Trello",
   "from-wekan": "Сохраненную ранее",
   "from-wekan": "Сохраненную ранее",
+  "from-csv": "Из CSV/TSV",
   "import-board-instruction-trello": "На вашей Trello доске нажмите “Menu” - “More” - “Print and export - “Export JSON” и скопируйте полученный текст",
   "import-board-instruction-trello": "На вашей Trello доске нажмите “Menu” - “More” - “Print and export - “Export JSON” и скопируйте полученный текст",
+  "import-board-instruction-csv": "Вставка CSV/TSV данных",
   "import-board-instruction-wekan": "На вашей доске перейдите в “Меню”, далее “Экспортировать доску” и скопируйте текст из скачаного файла",
   "import-board-instruction-wekan": "На вашей доске перейдите в “Меню”, далее “Экспортировать доску” и скопируйте текст из скачаного файла",
   "import-board-instruction-about-errors": "Даже если при импорте возникли ошибки, иногда импортирование проходит успешно – тогда доска появится на странице «Все доски».",
   "import-board-instruction-about-errors": "Даже если при импорте возникли ошибки, иногда импортирование проходит успешно – тогда доска появится на странице «Все доски».",
   "import-json-placeholder": "Вставьте JSON сюда",
   "import-json-placeholder": "Вставьте JSON сюда",
+  "import-csv-placeholder": "Вставьте CSV/TSV сюда",
   "import-map-members": "Составить карту участников",
   "import-map-members": "Составить карту участников",
   "import-members-map": "Вы импортировали доску с участниками. Пожалуйста, отметьте участников, которых вы хотите импортировать в качестве пользователей",
   "import-members-map": "Вы импортировали доску с участниками. Пожалуйста, отметьте участников, которых вы хотите импортировать в качестве пользователей",
   "import-show-user-mapping": "Проверить карту участников",
   "import-show-user-mapping": "Проверить карту участников",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Действия с дорожкой",
   "swimlaneActionPopup-title": "Действия с дорожкой",
   "swimlaneAddPopup-title": "Добавить дорожку ниже",
   "swimlaneAddPopup-title": "Добавить дорожку ниже",
   "listImportCardPopup-title": "Импортировать Trello карточку",
   "listImportCardPopup-title": "Импортировать Trello карточку",
+  "listImportCardsTsvPopup-title": "Импорт CSV/TSV из Excel",
   "listMorePopup-title": "Поделиться",
   "listMorePopup-title": "Поделиться",
   "link-list": "Ссылка на список",
   "link-list": "Ссылка на список",
   "list-delete-pop": "Все действия будут удалены из ленты активности участников, и вы не сможете восстановить список. Данное действие необратимо.",
   "list-delete-pop": "Все действия будут удалены из ленты активности участников, и вы не сможете восстановить список. Данное действие необратимо.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Когда карточка",
   "r-when-a-card": "Когда карточка",
   "r-is": " ",
   "r-is": " ",
   "r-is-moved": "перемещается",
   "r-is-moved": "перемещается",
-  "r-added-to": "добавляется в",
+  "r-added-to": "Добавлено в",
   "r-removed-from": "Покидает",
   "r-removed-from": "Покидает",
   "r-the-board": "доску",
   "r-the-board": "доску",
   "r-list": "список",
   "r-list": "список",
@@ -784,5 +797,14 @@
   "thursday": "Четверг",
   "thursday": "Четверг",
   "friday": "Пятница",
   "friday": "Пятница",
   "saturday": "Суббота",
   "saturday": "Суббота",
-  "sunday": "Воскресенье"
+  "sunday": "Воскресенье",
+  "status": "Статус",
+  "swimlane": "Дорожка",
+  "owner": "Владелец",
+  "last-modified-at": "Последний раз изменено",
+  "last-activity": "Последние действия",
+  "voting": "Голосование",
+  "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"
 }
 }

+ 27 - 5
i18n/sl.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Porabljen čas",
   "card-spent": "Porabljen čas",
   "card-edit-attachments": "Uredi priponke",
   "card-edit-attachments": "Uredi priponke",
   "card-edit-custom-fields": "Uredi poljubna polja",
   "card-edit-custom-fields": "Uredi poljubna polja",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Uredi oznake",
   "card-edit-labels": "Uredi oznake",
   "card-edit-members": "Uredi člane",
   "card-edit-members": "Uredi člane",
   "card-labels-title": "Spremeni oznake za kartico.",
   "card-labels-title": "Spremeni oznake za kartico.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Briši kartico?",
   "cardDeletePopup-title": "Briši kartico?",
   "cardDetailsActionsPopup-title": "Dejanja kartice",
   "cardDetailsActionsPopup-title": "Dejanja kartice",
   "cardLabelsPopup-title": "Oznake",
   "cardLabelsPopup-title": "Oznake",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Niste član table.",
   "error-board-notAMember": "Niste član table.",
   "error-json-malformed": "Vaše besedilo ni veljaven JSON",
   "error-json-malformed": "Vaše besedilo ni veljaven JSON",
   "error-json-schema": "Vaši JSON podatki ne vsebujejo pravilnih informacij v ustreznem formatu",
   "error-json-schema": "Vaši JSON podatki ne vsebujejo pravilnih informacij v ustreznem formatu",
+  "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": "Seznam ne obstaja",
   "error-list-doesNotExist": "Seznam ne obstaja",
   "error-user-doesNotExist": "Uporabnik ne obstaja",
   "error-user-doesNotExist": "Uporabnik ne obstaja",
   "error-user-notAllowSelf": "Ne morete povabiti sebe",
   "error-user-notAllowSelf": "Ne morete povabiti sebe",
@@ -314,6 +317,11 @@
   "error-username-taken": "To up. ime že obstaja",
   "error-username-taken": "To up. ime že obstaja",
   "error-email-taken": "E-poštni naslov je že zaseden",
   "error-email-taken": "E-poštni naslov je že zaseden",
   "export-board": "Izvozi tablo",
   "export-board": "Izvozi tablo",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Izvozi tablo",
   "sort": "Sortiraj",
   "sort": "Sortiraj",
   "sort-desc": "Klikni za sortiranje seznama",
   "sort-desc": "Klikni za sortiranje seznama",
   "list-sort-by": "Sortiraj po:",
   "list-sort-by": "Sortiraj po:",
@@ -349,12 +357,16 @@
   "import-board-c": "Uvozi tablo",
   "import-board-c": "Uvozi tablo",
   "import-board-title-trello": "Uvozi tablo iz orodja Trello",
   "import-board-title-trello": "Uvozi tablo iz orodja Trello",
   "import-board-title-wekan": "Uvozi tablo iz prejšnjega izvoza",
   "import-board-title-wekan": "Uvozi tablo iz prejšnjega izvoza",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Iz orodja Trello",
   "from-trello": "Iz orodja Trello",
   "from-wekan": "Od prejšnjega izvoza",
   "from-wekan": "Od prejšnjega izvoza",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "V vaši Trello tabli pojdite na 'Meni', 'Več', 'Natisni in Izvozi', 'Izvozi JSON', in kopirajte prikazano besedilo.",
   "import-board-instruction-trello": "V vaši Trello tabli pojdite na 'Meni', 'Več', 'Natisni in Izvozi', 'Izvozi JSON', in kopirajte prikazano besedilo.",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "V vaši tabli pojdite na 'Meni', 'Izvozi tablo' in kopirajte besedilo iz prenesene datoteke.",
   "import-board-instruction-wekan": "V vaši tabli pojdite na 'Meni', 'Izvozi tablo' in kopirajte besedilo iz prenesene datoteke.",
   "import-board-instruction-about-errors": "Pri napakah med uvozom table v nekaterih primerih uvažanje še deluje, uvožena tabla pa je na strani Vse Table.",
   "import-board-instruction-about-errors": "Pri napakah med uvozom table v nekaterih primerih uvažanje še deluje, uvožena tabla pa je na strani Vse Table.",
   "import-json-placeholder": "Tukaj prilepite veljavne JSON podatke",
   "import-json-placeholder": "Tukaj prilepite veljavne JSON podatke",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Mapiraj člane",
   "import-map-members": "Mapiraj člane",
   "import-members-map": "Vaša uvožena tabla vsebuje nekaj članov. Prosimo mapirajte člane, ki jih želite uvoziti, z vašimi uporabniki.",
   "import-members-map": "Vaša uvožena tabla vsebuje nekaj članov. Prosimo mapirajte člane, ki jih želite uvoziti, z vašimi uporabniki.",
   "import-show-user-mapping": "Preglejte povezane člane",
   "import-show-user-mapping": "Preglejte povezane člane",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Dejanja plavalnih stez",
   "swimlaneActionPopup-title": "Dejanja plavalnih stez",
   "swimlaneAddPopup-title": "Dodaj plavalno stezo spodaj",
   "swimlaneAddPopup-title": "Dodaj plavalno stezo spodaj",
   "listImportCardPopup-title": "Uvozi Trello kartico",
   "listImportCardPopup-title": "Uvozi Trello kartico",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Več",
   "listMorePopup-title": "Več",
   "link-list": "Poveži s seznamom",
   "link-list": "Poveži s seznamom",
   "list-delete-pop": "Vsa dejanja bodo odstranjena iz vira dejavnosti in seznama ne boste mogli obnoviti. Razveljavitve ni.",
   "list-delete-pop": "Vsa dejanja bodo odstranjena iz vira dejavnosti in seznama ne boste mogli obnoviti. Razveljavitve ni.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Ko je kartica",
   "r-when-a-card": "Ko je kartica",
   "r-is": " ",
   "r-is": " ",
   "r-is-moved": "premaknjena",
   "r-is-moved": "premaknjena",
-  "r-added-to": "dodan na",
+  "r-added-to": "Added to",
   "r-removed-from": "izbrisan iz",
   "r-removed-from": "izbrisan iz",
   "r-the-board": "tabla",
   "r-the-board": "tabla",
   "r-list": "seznam",
   "r-list": "seznam",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/sr.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Uredi priloge",
   "card-edit-attachments": "Uredi priloge",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Započni glasanje",
-  "card-cancel-voting": "Obriši glasanje i sve glasove",
   "card-edit-labels": "Uredi natpise",
   "card-edit-labels": "Uredi natpise",
   "card-edit-members": "Uredi članove",
   "card-edit-members": "Uredi članove",
   "card-labels-title": "Promeni natpis na kartici.",
   "card-labels-title": "Promeni natpis na kartici.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Novo glasanje",
   "cardStartVotingPopup-title": "Novo glasanje",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Pitanje za glasanje",
   "vote-question": "Pitanje za glasanje",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "za",
   "vote-for-it": "za",
   "vote-against": "protiv",
   "vote-against": "protiv",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Obrisati karticu?",
   "cardDeletePopup-title": "Obrisati karticu?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Oznake",
   "cardLabelsPopup-title": "Oznake",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "Korisnik ne postoji",
   "error-user-doesNotExist": "Korisnik ne postoji",
   "error-user-notAllowSelf": "Ne možeš pozvati samog sebe",
   "error-user-notAllowSelf": "Ne možeš pozvati samog sebe",
@@ -314,6 +317,11 @@
   "error-username-taken": "Korisničko ime je već zauzeto",
   "error-username-taken": "Korisničko ime je već zauzeto",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sortiraj",
   "sort": "Sortiraj",
   "sort-desc": "Kliknite da biste sortirali listu",
   "sort-desc": "Kliknite da biste sortirali listu",
   "list-sort-by": "Poredaj listu po:",
   "list-sort-by": "Poredaj listu po:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Uvezi tablu iz Trella",
   "import-board-title-trello": "Uvezi tablu iz Trella",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Mapiraj članove",
   "import-map-members": "Mapiraj članove",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Više",
   "listMorePopup-title": "Više",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Kada kartica",
   "r-when-a-card": "Kada kartica",
   "r-is": "je",
   "r-is": "je",
   "r-is-moved": "je premeštena",
   "r-is-moved": "je premeštena",
-  "r-added-to": "dodata u",
+  "r-added-to": "Added to",
   "r-removed-from": "Uklonjena iz",
   "r-removed-from": "Uklonjena iz",
   "r-the-board": "table",
   "r-the-board": "table",
   "r-list": "liste",
   "r-list": "liste",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 57 - 35
i18n/sv.i18n.json

@@ -64,7 +64,7 @@
   "activity-unchecked-item": "okryssad %s i checklistan %s av %s",
   "activity-unchecked-item": "okryssad %s i checklistan %s av %s",
   "activity-checklist-added": "lade kontrollista till %s",
   "activity-checklist-added": "lade kontrollista till %s",
   "activity-checklist-removed": "tog bort en checklista från %s",
   "activity-checklist-removed": "tog bort en checklista från %s",
-  "activity-checklist-completed": "completed checklist %s of %s",
+  "activity-checklist-completed": "slutförde checklista %s av %s",
   "activity-checklist-uncompleted": "inte slutfört checklistan %s av %s",
   "activity-checklist-uncompleted": "inte slutfört checklistan %s av %s",
   "activity-checklist-item-added": "lade checklista objekt till '%s' i %s",
   "activity-checklist-item-added": "lade checklista objekt till '%s' i %s",
   "activity-checklist-item-removed": "tog bort en checklista objekt från \"%s\" i %s",
   "activity-checklist-item-removed": "tog bort en checklista objekt från \"%s\" i %s",
@@ -126,7 +126,7 @@
   "board-nb-stars": "%s stjärnor",
   "board-nb-stars": "%s stjärnor",
   "board-not-found": "Anslagstavla hittades inte",
   "board-not-found": "Anslagstavla hittades inte",
   "board-private-info": "Denna anslagstavla kommer att vara <strong>privat</strong>.",
   "board-private-info": "Denna anslagstavla kommer att vara <strong>privat</strong>.",
-  "board-public-info": "Denna anslagstavla kommer att vara <strong>officiell</strong>.",
+  "board-public-info": "Denna anslagstavla kommer att vara <strong>publik</strong>.",
   "boardChangeColorPopup-title": "Ändra bakgrund på anslagstavla",
   "boardChangeColorPopup-title": "Ändra bakgrund på anslagstavla",
   "boardChangeTitlePopup-title": "Byt namn på anslagstavla",
   "boardChangeTitlePopup-title": "Byt namn på anslagstavla",
   "boardChangeVisibilityPopup-title": "Ändra synlighet",
   "boardChangeVisibilityPopup-title": "Ändra synlighet",
@@ -152,8 +152,6 @@
   "card-spent": "Spenderad tid",
   "card-spent": "Spenderad tid",
   "card-edit-attachments": "Redigera bilaga",
   "card-edit-attachments": "Redigera bilaga",
   "card-edit-custom-fields": "Redigera anpassade fält",
   "card-edit-custom-fields": "Redigera anpassade fält",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Redigera etiketter",
   "card-edit-labels": "Redigera etiketter",
   "card-edit-members": "Redigera medlemmar",
   "card-edit-members": "Redigera medlemmar",
   "card-labels-title": "Ändra etiketter för kortet.",
   "card-labels-title": "Ändra etiketter för kortet.",
@@ -163,14 +161,18 @@
   "cardAttachmentsPopup-title": "Bifoga från",
   "cardAttachmentsPopup-title": "Bifoga från",
   "cardCustomField-datePopup-title": "Ändra datum",
   "cardCustomField-datePopup-title": "Ändra datum",
   "cardCustomFieldsPopup-title": "Redigera anpassade fält",
   "cardCustomFieldsPopup-title": "Redigera anpassade fält",
-  "cardStartVotingPopup-title": "Start a vote",
-  "positiveVoteMembersPopup-title": "Proponents",
-  "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
-  "vote-question": "Voting question",
-  "vote-public": "Show who voted what",
-  "vote-for-it": "for it",
-  "vote-against": "against",
+  "cardStartVotingPopup-title": "Påbörja en omröstning",
+  "positiveVoteMembersPopup-title": "Förespråkare",
+  "negativeVoteMembersPopup-title": "Opponenter",
+  "card-edit-voting": "Redigera röstning",
+  "editVoteEndDatePopup-title": "Ändra slutdatum för röstning",
+  "allowNonBoardMembers": "Tillåt alla inloggade användare",
+  "vote-question": "Omröstningsfråga",
+  "vote-public": "Visa vem som röstade på vad",
+  "vote-for-it": "för",
+  "vote-against": "emot",
+  "deleteVotePopup-title": "Radera röstning?",
+  "vote-delete-pop": "Radering är permanent. Du kommer förlora alla aktiviteter som hör till denna röstning.",
   "cardDeletePopup-title": "Ta bort kort?",
   "cardDeletePopup-title": "Ta bort kort?",
   "cardDetailsActionsPopup-title": "Kortåtgärder",
   "cardDetailsActionsPopup-title": "Kortåtgärder",
   "cardLabelsPopup-title": "Etiketter",
   "cardLabelsPopup-title": "Etiketter",
@@ -234,7 +236,7 @@
   "no-comments": "Inga kommentarer",
   "no-comments": "Inga kommentarer",
   "no-comments-desc": "Kan inte se kommentarer och aktiviteter.",
   "no-comments-desc": "Kan inte se kommentarer och aktiviteter.",
   "worker": "Worker",
   "worker": "Worker",
-  "worker-desc": "Can only move cards, assign itself to card and comment.",
+  "worker-desc": "Kan endast flytta kort, tilldela sig kort och kommentera.",
   "computer": "Dator",
   "computer": "Dator",
   "confirm-subtask-delete-dialog": "Är du säker på att du vill radera deluppgift?",
   "confirm-subtask-delete-dialog": "Är du säker på att du vill radera deluppgift?",
   "confirm-checklist-delete-dialog": "Är du säker på att du vill radera checklista?",
   "confirm-checklist-delete-dialog": "Är du säker på att du vill radera checklista?",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Du måste vara medlem i denna anslagstavla för att göra det",
   "error-board-notAMember": "Du måste vara medlem i denna anslagstavla för att göra det",
   "error-json-malformed": "Din text är inte giltigt JSON",
   "error-json-malformed": "Din text är inte giltigt JSON",
   "error-json-schema": "Din JSON data inkluderar inte korrekt information i rätt format",
   "error-json-schema": "Din JSON data inkluderar inte korrekt information i rätt format",
+  "error-csv-schema": "Din CSV(Comma Separated Values)/TSV (Tab Separated Values) innehåller inte korrekt information i rätt format.",
   "error-list-doesNotExist": "Denna lista finns inte",
   "error-list-doesNotExist": "Denna lista finns inte",
   "error-user-doesNotExist": "Denna användare finns inte",
   "error-user-doesNotExist": "Denna användare finns inte",
   "error-user-notAllowSelf": "Du kan inte bjuda in dig själv",
   "error-user-notAllowSelf": "Du kan inte bjuda in dig själv",
@@ -314,13 +317,18 @@
   "error-username-taken": "Detta användarnamn är redan taget",
   "error-username-taken": "Detta användarnamn är redan taget",
   "error-email-taken": "E-post har redan tagits",
   "error-email-taken": "E-post har redan tagits",
   "export-board": "Exportera anslagstavla",
   "export-board": "Exportera anslagstavla",
+  "export-board-json": "Exportera tavla till JSON",
+  "export-board-csv": "Expoertera tavla till CSV",
+  "export-board-tsv": "Exportera tavla till TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Exportera anslagstavla",
   "sort": "Sortera",
   "sort": "Sortera",
   "sort-desc": "Klicka för att sortera listan",
   "sort-desc": "Klicka för att sortera listan",
   "list-sort-by": "Sortera listan efter:",
   "list-sort-by": "Sortera listan efter:",
   "list-label-modifiedAt": "Sista åtkomsttid",
   "list-label-modifiedAt": "Sista åtkomsttid",
   "list-label-title": "Namn på listan",
   "list-label-title": "Namn på listan",
-  "list-label-sort": "Your Manual Order",
-  "list-label-short-modifiedAt": "(L)",
+  "list-label-sort": "Din Manuella Ordning",
+  "list-label-short-modifiedAt": "(S)",
   "list-label-short-title": "(N)",
   "list-label-short-title": "(N)",
   "list-label-short-sort": "(M)",
   "list-label-short-sort": "(M)",
   "filter": "Filtrera",
   "filter": "Filtrera",
@@ -329,7 +337,7 @@
   "filter-clear": "Rensa filter",
   "filter-clear": "Rensa filter",
   "filter-no-label": "Ingen etikett",
   "filter-no-label": "Ingen etikett",
   "filter-no-member": "Ingen medlem",
   "filter-no-member": "Ingen medlem",
-  "filter-no-assignee": "No assignee",
+  "filter-no-assignee": "Inte tilldelad någon",
   "filter-no-custom-fields": "Inga anpassade fält",
   "filter-no-custom-fields": "Inga anpassade fält",
   "filter-show-archive": "Visa arkiverade listor",
   "filter-show-archive": "Visa arkiverade listor",
   "filter-hide-empty": "Dölj tomma listor",
   "filter-hide-empty": "Dölj tomma listor",
@@ -349,12 +357,16 @@
   "import-board-c": "Importera anslagstavla",
   "import-board-c": "Importera anslagstavla",
   "import-board-title-trello": "Importera anslagstavla från Trello",
   "import-board-title-trello": "Importera anslagstavla från Trello",
   "import-board-title-wekan": "Importera anslagstavla från tidigare export",
   "import-board-title-wekan": "Importera anslagstavla från tidigare export",
+  "import-board-title-csv": "Importera tavla från CSV/TSV",
   "from-trello": "Från Trello",
   "from-trello": "Från Trello",
   "from-wekan": "Från tidigare export",
   "from-wekan": "Från tidigare export",
+  "from-csv": "Från CSV/TSV",
   "import-board-instruction-trello": "I din Trello-anslagstavla, gå till 'Meny', sedan 'Mera', 'Skriv ut och exportera', 'Exportera JSON' och kopiera den resulterande text.",
   "import-board-instruction-trello": "I din Trello-anslagstavla, gå till 'Meny', sedan 'Mera', 'Skriv ut och exportera', 'Exportera JSON' och kopiera den resulterande text.",
+  "import-board-instruction-csv": "Klistra in Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "På din anslagstavla, gå till \"Meny\", sedan \"Exportera anslagstavla\" och kopiera texten i den hämtade filen.",
   "import-board-instruction-wekan": "På din anslagstavla, gå till \"Meny\", sedan \"Exportera anslagstavla\" och kopiera texten i den hämtade filen.",
   "import-board-instruction-about-errors": "Om du får fel vid import av anslagstavla, ibland importerar fortfarande fungerar, och styrelsen är på alla sidor för anslagstavlor.",
   "import-board-instruction-about-errors": "Om du får fel vid import av anslagstavla, ibland importerar fortfarande fungerar, och styrelsen är på alla sidor för anslagstavlor.",
   "import-json-placeholder": "Klistra in giltigt JSON data här",
   "import-json-placeholder": "Klistra in giltigt JSON data här",
+  "import-csv-placeholder": "Klistra in CSV/TSV-data här",
   "import-map-members": "Kartlägg medlemmar",
   "import-map-members": "Kartlägg medlemmar",
   "import-members-map": "Din importerade anslagstavla har några medlemmar. Vänligen kartlägg medlemmarna du vill importera till dina användare",
   "import-members-map": "Din importerade anslagstavla har några medlemmar. Vänligen kartlägg medlemmarna du vill importera till dina användare",
   "import-show-user-mapping": "Granska medlemskartläggning",
   "import-show-user-mapping": "Granska medlemskartläggning",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Simbana-åtgärder",
   "swimlaneActionPopup-title": "Simbana-åtgärder",
   "swimlaneAddPopup-title": "Lägg till en simbana nedan",
   "swimlaneAddPopup-title": "Lägg till en simbana nedan",
   "listImportCardPopup-title": "Importera ett Trello kort",
   "listImportCardPopup-title": "Importera ett Trello kort",
+  "listImportCardsTsvPopup-title": "Importera Excel CSV/TSV",
   "listMorePopup-title": "Mera",
   "listMorePopup-title": "Mera",
   "link-list": "Länk till den här listan",
   "link-list": "Länk till den här listan",
   "list-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsmatningen och du kommer inte att kunna återställa listan. Det går inte att ångra.",
   "list-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsmatningen och du kommer inte att kunna återställa listan. Det går inte att ångra.",
@@ -449,7 +462,7 @@
   "save": "Spara",
   "save": "Spara",
   "search": "Sök",
   "search": "Sök",
   "rules": "Regler",
   "rules": "Regler",
-  "search-cards": "Search from card/list titles, descriptions and custom fields on this board",
+  "search-cards": "Sök i kort- och listtitlar, beskrivningar och anpassade fält på denna anslagstavla",
   "search-example": "Text att söka efter?",
   "search-example": "Text att söka efter?",
   "select-color": "Välj färg",
   "select-color": "Välj färg",
   "set-wip-limit-value": "Ange en gräns för det maximala antalet uppgifter i den här listan",
   "set-wip-limit-value": "Ange en gräns för det maximala antalet uppgifter i den här listan",
@@ -536,7 +549,7 @@
   "webhook-title": "Namn på webhook",
   "webhook-title": "Namn på webhook",
   "webhook-token": "Token (valfritt för autentisering)",
   "webhook-token": "Token (valfritt för autentisering)",
   "outgoing-webhooks": "Utgående Webhookar",
   "outgoing-webhooks": "Utgående Webhookar",
-  "bidirectional-webhooks": "Two-Way Webhooks",
+  "bidirectional-webhooks": "Dubbelriktade Webhookar",
   "outgoingWebhooksPopup-title": "Utgående Webhookar",
   "outgoingWebhooksPopup-title": "Utgående Webhookar",
   "boardCardTitlePopup-title": "Korttitelfiler",
   "boardCardTitlePopup-title": "Korttitelfiler",
   "disable-webhook": "Avaktivera denna webhook",
   "disable-webhook": "Avaktivera denna webhook",
@@ -626,7 +639,7 @@
   "r-when-a-card": "När ett kort",
   "r-when-a-card": "När ett kort",
   "r-is": "är",
   "r-is": "är",
   "r-is-moved": "är flyttad",
   "r-is-moved": "är flyttad",
-  "r-added-to": "tillagd till",
+  "r-added-to": "Tillagd till",
   "r-removed-from": "Borttagen från",
   "r-removed-from": "Borttagen från",
   "r-the-board": "anslagstavlan",
   "r-the-board": "anslagstavlan",
   "r-list": "lista",
   "r-list": "lista",
@@ -674,7 +687,7 @@
   "r-of-checklist": "av checklistan",
   "r-of-checklist": "av checklistan",
   "r-send-email": "Skicka ett e-postmeddelande",
   "r-send-email": "Skicka ett e-postmeddelande",
   "r-to": "till",
   "r-to": "till",
-  "r-of": "of",
+  "r-of": "av",
   "r-subject": "änme",
   "r-subject": "änme",
   "r-rule-details": "Regeldetaljer",
   "r-rule-details": "Regeldetaljer",
   "r-d-move-to-top-gen": "Flytta kort till toppen av sin lista",
   "r-d-move-to-top-gen": "Flytta kort till toppen av sin lista",
@@ -770,19 +783,28 @@
   "new": "Ny",
   "new": "Ny",
   "editUserPopup-title": "Redigera användare",
   "editUserPopup-title": "Redigera användare",
   "newUserPopup-title": "Ny användare",
   "newUserPopup-title": "Ny användare",
-  "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"
+  "notifications": "Notifieringar",
+  "view-all": "Visa Allt",
+  "filter-by-unread": "Filtrera efter Oläst",
+  "mark-all-as-read": "Markera alla som lästa",
+  "remove-all-read": "Ta bort alla lästa",
+  "allow-rename": "Tillåt Namnändring",
+  "allowRenamePopup-title": "Tillåt Namnändring",
+  "start-day-of-week": "Ange veckans första dag",
+  "monday": "Måndag",
+  "tuesday": "Tisdag",
+  "wednesday": "Onsdag",
+  "thursday": "Torsdag",
+  "friday": "Fredag",
+  "saturday": "Lördag",
+  "sunday": "Söndag",
+  "status": "Status",
+  "swimlane": "Simbana",
+  "owner": "Ägare",
+  "last-modified-at": "Senast ändrad",
+  "last-activity": "Senaste aktivitet",
+  "voting": "Röstning",
+  "archived": "Arkiverad",
+  "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"
 }
 }

+ 27 - 5
i18n/sw.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Muda uliotumika",
   "card-spent": "Muda uliotumika",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/ta.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Trello ல் இருந்து ",
   "from-trello": "Trello ல் இருந்து ",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "மேலும் ",
   "listMorePopup-title": "மேலும் ",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/th.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "แก้ไขสิ่งที่แนบมา",
   "card-edit-attachments": "แก้ไขสิ่งที่แนบมา",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "แก้ไขป้ายกำกับ",
   "card-edit-labels": "แก้ไขป้ายกำกับ",
   "card-edit-members": "แก้ไขสมาชิก",
   "card-edit-members": "แก้ไขสมาชิก",
   "card-labels-title": "เปลี่ยนป้ายกำกับของการ์ด",
   "card-labels-title": "เปลี่ยนป้ายกำกับของการ์ด",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "ลบการ์ดนี้หรือไม่",
   "cardDeletePopup-title": "ลบการ์ดนี้หรือไม่",
   "cardDetailsActionsPopup-title": "การดำเนินการการ์ด",
   "cardDetailsActionsPopup-title": "การดำเนินการการ์ด",
   "cardLabelsPopup-title": "ป้ายกำกับ",
   "cardLabelsPopup-title": "ป้ายกำกับ",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "คุณต้องเป็นสมาชิกของบอร์ดนี้ถึงจะทำได้",
   "error-board-notAMember": "คุณต้องเป็นสมาชิกของบอร์ดนี้ถึงจะทำได้",
   "error-json-malformed": "ข้อความของคุณไม่ใช่ JSON",
   "error-json-malformed": "ข้อความของคุณไม่ใช่ JSON",
   "error-json-schema": "รูปแบบข้้้อมูล JSON ของคุณไม่ถูกต้อง",
   "error-json-schema": "รูปแบบข้้้อมูล JSON ของคุณไม่ถูกต้อง",
+  "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": "รายการนี้ไม่มีอยู่",
   "error-list-doesNotExist": "รายการนี้ไม่มีอยู่",
   "error-user-doesNotExist": "ผู้ใช้นี้ไม่มีอยู่",
   "error-user-doesNotExist": "ผู้ใช้นี้ไม่มีอยู่",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "ชื่อนี้ถูกใช้งานแล้ว",
   "error-username-taken": "ชื่อนี้ถูกใช้งานแล้ว",
   "error-email-taken": "Email has already been 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-html": "Export board to HTML",
+  "exportBoardPopup-title": "ส่งออกกระดาน",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "นำเข้าบอร์ดจาก Trello",
   "import-board-title-trello": "นำเข้าบอร์ดจาก Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "from-wekan": "From previous export",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "ใน Trello ของคุณให้ไปที่ 'Menu' และไปที่ More -> Print and Export -> Export JSON และคัดลอกข้อความจากนั้น",
   "import-board-instruction-trello": "ใน Trello ของคุณให้ไปที่ 'Menu' และไปที่ More -> Print and Export -> Export JSON และคัดลอกข้อความจากนั้น",
+  "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-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-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": "วางข้อมูล JSON ที่ถูกต้องของคุณที่นี่",
   "import-json-placeholder": "วางข้อมูล JSON ที่ถูกต้องของคุณที่นี่",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "แผนที่สมาชิก",
   "import-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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review การทำแผนที่สมาชิก",
   "import-show-user-mapping": "Review การทำแผนที่สมาชิก",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "นำเข้าการ์ด Trello",
   "listImportCardPopup-title": "นำเข้าการ์ด Trello",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "เพิ่มเติม",
   "listMorePopup-title": "เพิ่มเติม",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/tr.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Harcanan Zaman",
   "card-spent": "Harcanan Zaman",
   "card-edit-attachments": "Ek dosyasını düzenle",
   "card-edit-attachments": "Ek dosyasını düzenle",
   "card-edit-custom-fields": "Özel alanları düzenle",
   "card-edit-custom-fields": "Özel alanları düzenle",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Etiketleri düzenle",
   "card-edit-labels": "Etiketleri düzenle",
   "card-edit-members": "Üyeleri düzenle",
   "card-edit-members": "Üyeleri düzenle",
   "card-labels-title": "Bu kart için etiketleri düzenle",
   "card-labels-title": "Bu kart için etiketleri düzenle",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Kart Silinsin mi?",
   "cardDeletePopup-title": "Kart Silinsin mi?",
   "cardDetailsActionsPopup-title": "Kart işlemleri",
   "cardDetailsActionsPopup-title": "Kart işlemleri",
   "cardLabelsPopup-title": "Etiketler",
   "cardLabelsPopup-title": "Etiketler",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "Bu işlemi yapmak için panoya üye olmalısın.",
   "error-board-notAMember": "Bu işlemi yapmak için panoya üye olmalısın.",
   "error-json-malformed": "Girilen metin geçerli bir JSON formatında değil",
   "error-json-malformed": "Girilen metin geçerli bir JSON formatında değil",
   "error-json-schema": "Girdiğin JSON metni tüm bilgileri doğru biçimde barındırmıyor",
   "error-json-schema": "Girdiğin JSON metni tüm bilgileri doğru biçimde barındırmıyor",
+  "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": "Liste bulunamadı",
   "error-list-doesNotExist": "Liste bulunamadı",
   "error-user-doesNotExist": "Kullanıcı bulunamadı",
   "error-user-doesNotExist": "Kullanıcı bulunamadı",
   "error-user-notAllowSelf": "Kendi kendini davet edemezsin",
   "error-user-notAllowSelf": "Kendi kendini davet edemezsin",
@@ -314,6 +317,11 @@
   "error-username-taken": "Kullanıcı adı zaten alınmış",
   "error-username-taken": "Kullanıcı adı zaten alınmış",
   "error-email-taken": "Bu e-posta adresi daha önceden alınmış",
   "error-email-taken": "Bu e-posta adresi daha önceden alınmış",
   "export-board": "Panoyu dışarı aktar",
   "export-board": "Panoyu dışarı aktar",
+  "export-board-json": "Export board to JSON",
+  "export-board-csv": "Export board to CSV",
+  "export-board-tsv": "Export board to TSV",
+  "export-board-html": "Export board to HTML",
+  "exportBoardPopup-title": "Panoyu dışarı aktar",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Panoyu içe aktar",
   "import-board-c": "Panoyu içe aktar",
   "import-board-title-trello": "Trello'dan panoyu içeri aktar",
   "import-board-title-trello": "Trello'dan panoyu içeri aktar",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "Trello'dan",
   "from-trello": "Trello'dan",
   "from-wekan": "From previous export",
   "from-wekan": "From previous export",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "Trello panonuzda 'Menü'ye gidip 'Daha fazlası'na tıklayın, ardından 'Yazdır ve Çıktı Al'ı seçip 'JSON biçiminde çıktı al' diyerek çıkan metni buraya kopyalayın.",
   "import-board-instruction-trello": "Trello panonuzda 'Menü'ye gidip 'Daha fazlası'na tıklayın, ardından 'Yazdır ve Çıktı Al'ı seçip 'JSON biçiminde çıktı al' diyerek çıkan metni buraya kopyalayın.",
+  "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-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-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": "Geçerli JSON verisini buraya yapıştırın",
   "import-json-placeholder": "Geçerli JSON verisini buraya yapıştırın",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Üyeleri eşleştirme",
   "import-map-members": "Üyeleri eşleştirme",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Üye eşleştirmesini kontrol et",
   "import-show-user-mapping": "Üye eşleştirmesini kontrol et",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Kulvar İşlemleri",
   "swimlaneActionPopup-title": "Kulvar İşlemleri",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Bir Trello kartını içeri aktar",
   "listImportCardPopup-title": "Bir Trello kartını içeri aktar",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "Daha",
   "listMorePopup-title": "Daha",
   "link-list": "Listeye doğrudan bağlantı",
   "link-list": "Listeye doğrudan bağlantı",
   "list-delete-pop": "Etkinlik akışınızdaki tüm eylemler geri kurtarılamaz şekilde kaldırılacak. Bu işlem geri alınamaz.",
   "list-delete-pop": "Etkinlik akışınızdaki tüm eylemler geri kurtarılamaz şekilde kaldırılacak. Bu işlem geri alınamaz.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "Kart eklendiğinde",
   "r-when-a-card": "Kart eklendiğinde",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "taşındı",
   "r-is-moved": "taşındı",
-  "r-added-to": "eklendi",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "pano",
   "r-the-board": "pano",
   "r-list": "liste",
   "r-list": "liste",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/uk.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Витрачено часу",
   "card-spent": "Витрачено часу",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Редагувати мітки",
   "card-edit-labels": "Редагувати мітки",
   "card-edit-members": "Редагувати учасників",
   "card-edit-members": "Редагувати учасників",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "vote-against": "against",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "Видалити картку?",
   "cardDeletePopup-title": "Видалити картку?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Видалити з",
   "r-removed-from": "Видалити з",
   "r-the-board": "Дошка",
   "r-the-board": "Дошка",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/vi.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

+ 27 - 5
i18n/zh-CN.i18n.json

@@ -152,8 +152,6 @@
   "card-spent": "耗时",
   "card-spent": "耗时",
   "card-edit-attachments": "编辑附件",
   "card-edit-attachments": "编辑附件",
   "card-edit-custom-fields": "编辑自定义字段",
   "card-edit-custom-fields": "编辑自定义字段",
-  "card-start-voting": "开始投票",
-  "card-cancel-voting": "移除投票",
   "card-edit-labels": "编辑标签",
   "card-edit-labels": "编辑标签",
   "card-edit-members": "编辑成员",
   "card-edit-members": "编辑成员",
   "card-labels-title": "更改该卡片上的标签",
   "card-labels-title": "更改该卡片上的标签",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "建立投票",
   "cardStartVotingPopup-title": "建立投票",
   "positiveVoteMembersPopup-title": "支持",
   "positiveVoteMembersPopup-title": "支持",
   "negativeVoteMembersPopup-title": "反对",
   "negativeVoteMembersPopup-title": "反对",
-  "allowNonBoardMembers": "允许任何人在公开看板投票",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "投票题目",
   "vote-question": "投票题目",
   "vote-public": "查看投票结果",
   "vote-public": "查看投票结果",
   "vote-for-it": "同意",
   "vote-for-it": "同意",
   "vote-against": "反对",
   "vote-against": "反对",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "彻底删除卡片?",
   "cardDeletePopup-title": "彻底删除卡片?",
   "cardDetailsActionsPopup-title": "卡片操作",
   "cardDetailsActionsPopup-title": "卡片操作",
   "cardLabelsPopup-title": "标签",
   "cardLabelsPopup-title": "标签",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "需要成为看板成员才能执行此操作",
   "error-board-notAMember": "需要成为看板成员才能执行此操作",
   "error-json-malformed": "文本不是合法的 JSON",
   "error-json-malformed": "文本不是合法的 JSON",
   "error-json-schema": "JSON 数据没有用正确的格式包含合适的信息",
   "error-json-schema": "JSON 数据没有用正确的格式包含合适的信息",
+  "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": "不存在此列表",
   "error-list-doesNotExist": "不存在此列表",
   "error-user-doesNotExist": "该用户不存在",
   "error-user-doesNotExist": "该用户不存在",
   "error-user-notAllowSelf": "无法邀请自己",
   "error-user-notAllowSelf": "无法邀请自己",
@@ -314,6 +317,11 @@
   "error-username-taken": "此用户名已存在",
   "error-username-taken": "此用户名已存在",
   "error-email-taken": "此EMail已存在",
   "error-email-taken": "此EMail已存在",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "导出看板",
   "sort": "排序",
   "sort": "排序",
   "sort-desc": "点此来将列表排序",
   "sort-desc": "点此来将列表排序",
   "list-sort-by": "按此来将列表排序:",
   "list-sort-by": "按此来将列表排序:",
@@ -349,12 +357,16 @@
   "import-board-c": "导入看板",
   "import-board-c": "导入看板",
   "import-board-title-trello": "从Trello导入看板",
   "import-board-title-trello": "从Trello导入看板",
   "import-board-title-wekan": "从以前的导出数据导入看板",
   "import-board-title-wekan": "从以前的导出数据导入看板",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "自 Trello",
   "from-trello": "自 Trello",
   "from-wekan": "自以前的导出",
   "from-wekan": "自以前的导出",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "在你的Trello看板中,点击“菜单”,然后选择“更多”,“打印与导出”,“导出为 JSON” 并拷贝结果文本",
   "import-board-instruction-trello": "在你的Trello看板中,点击“菜单”,然后选择“更多”,“打印与导出”,“导出为 JSON” 并拷贝结果文本",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "在您的看板,点击“菜单”,然后“导出看板”,复制下载文件中的文本。",
   "import-board-instruction-wekan": "在您的看板,点击“菜单”,然后“导出看板”,复制下载文件中的文本。",
   "import-board-instruction-about-errors": "如果在导入看板时出现错误,导入工作可能仍然在进行中,并且看板已经出现在全部看板页。",
   "import-board-instruction-about-errors": "如果在导入看板时出现错误,导入工作可能仍然在进行中,并且看板已经出现在全部看板页。",
   "import-json-placeholder": "粘贴您有效的 JSON 数据至此",
   "import-json-placeholder": "粘贴您有效的 JSON 数据至此",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "映射成员",
   "import-map-members": "映射成员",
   "import-members-map": "您导入的看板有一些成员,请映射这些成员到您导入的用户。",
   "import-members-map": "您导入的看板有一些成员,请映射这些成员到您导入的用户。",
   "import-show-user-mapping": "核对成员映射",
   "import-show-user-mapping": "核对成员映射",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "泳道图操作",
   "swimlaneActionPopup-title": "泳道图操作",
   "swimlaneAddPopup-title": "在下面添加一个泳道",
   "swimlaneAddPopup-title": "在下面添加一个泳道",
   "listImportCardPopup-title": "导入 Trello 卡片",
   "listImportCardPopup-title": "导入 Trello 卡片",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "更多",
   "listMorePopup-title": "更多",
   "link-list": "关联到这个列表",
   "link-list": "关联到这个列表",
   "list-delete-pop": "所有活动将被从活动动态中删除并且你无法恢复他们,此操作无法撤销。",
   "list-delete-pop": "所有活动将被从活动动态中删除并且你无法恢复他们,此操作无法撤销。",
@@ -626,7 +639,7 @@
   "r-when-a-card": "当一张卡片",
   "r-when-a-card": "当一张卡片",
   "r-is": "是",
   "r-is": "是",
   "r-is-moved": "已经移动",
   "r-is-moved": "已经移动",
-  "r-added-to": "添加到",
+  "r-added-to": "Added to",
   "r-removed-from": "已移除",
   "r-removed-from": "已移除",
   "r-the-board": "该看板",
   "r-the-board": "该看板",
   "r-list": "列表",
   "r-list": "列表",
@@ -784,5 +797,14 @@
   "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"
 }
 }

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

@@ -152,8 +152,6 @@
   "card-spent": "Spent Time",
   "card-spent": "Spent Time",
   "card-edit-attachments": "Edit attachments",
   "card-edit-attachments": "Edit attachments",
   "card-edit-custom-fields": "Edit custom fields",
   "card-edit-custom-fields": "Edit custom fields",
-  "card-start-voting": "Start voting",
-  "card-cancel-voting": "Delete voting and all votes",
   "card-edit-labels": "Edit labels",
   "card-edit-labels": "Edit labels",
   "card-edit-members": "Edit members",
   "card-edit-members": "Edit members",
   "card-labels-title": "Change the labels for the card.",
   "card-labels-title": "Change the labels for the card.",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "Start a vote",
   "cardStartVotingPopup-title": "Start a vote",
   "positiveVoteMembersPopup-title": "Proponents",
   "positiveVoteMembersPopup-title": "Proponents",
   "negativeVoteMembersPopup-title": "Opponents",
   "negativeVoteMembersPopup-title": "Opponents",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "Voting question",
   "vote-question": "Voting question",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "for it",
   "vote-for-it": "for it",
   "vote-against": "against",
   "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?",
   "cardDeletePopup-title": "Delete Card?",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardDetailsActionsPopup-title": "Card Actions",
   "cardLabelsPopup-title": "Labels",
   "cardLabelsPopup-title": "Labels",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "You need to be a member 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-malformed": "Your text is not valid JSON",
   "error-json-schema": "Your JSON data does not include the proper information in the correct format",
   "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-list-doesNotExist": "This list does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-doesNotExist": "This user does not exist",
   "error-user-notAllowSelf": "You can not invite yourself",
   "error-user-notAllowSelf": "You can not invite yourself",
@@ -314,6 +317,11 @@
   "error-username-taken": "This username is already taken",
   "error-username-taken": "This username is already taken",
   "error-email-taken": "Email has already been taken",
   "error-email-taken": "Email has already been taken",
   "export-board": "Export board",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "Export board",
   "sort": "Sort",
   "sort": "Sort",
   "sort-desc": "Click to Sort List",
   "sort-desc": "Click to Sort List",
   "list-sort-by": "Sort the List By:",
   "list-sort-by": "Sort the List By:",
@@ -349,12 +357,16 @@
   "import-board-c": "Import board",
   "import-board-c": "Import board",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-trello": "Import board from Trello",
   "import-board-title-wekan": "Import board from previous export",
   "import-board-title-wekan": "Import board from previous export",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "From Trello",
   "from-trello": "From Trello",
   "from-wekan": "From previous export",
   "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-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-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-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-json-placeholder": "Paste your valid JSON data here",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "Map members",
   "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": "Your imported board has some members. Please map the members you want to import to your users",
   "import-show-user-mapping": "Review members mapping",
   "import-show-user-mapping": "Review members mapping",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneActionPopup-title": "Swimlane Actions",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "swimlaneAddPopup-title": "Add a Swimlane below",
   "listImportCardPopup-title": "Import a Trello card",
   "listImportCardPopup-title": "Import a Trello card",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "More",
   "listMorePopup-title": "More",
   "link-list": "Link to this list",
   "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-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
@@ -626,7 +639,7 @@
   "r-when-a-card": "When a card",
   "r-when-a-card": "When a card",
   "r-is": "is",
   "r-is": "is",
   "r-is-moved": "is moved",
   "r-is-moved": "is moved",
-  "r-added-to": "added to",
+  "r-added-to": "Added to",
   "r-removed-from": "Removed from",
   "r-removed-from": "Removed from",
   "r-the-board": "the board",
   "r-the-board": "the board",
   "r-list": "list",
   "r-list": "list",
@@ -784,5 +797,14 @@
   "thursday": "Thursday",
   "thursday": "Thursday",
   "friday": "Friday",
   "friday": "Friday",
   "saturday": "Saturday",
   "saturday": "Saturday",
-  "sunday": "Sunday"
+  "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"
 }
 }

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

@@ -152,8 +152,6 @@
   "card-spent": "耗時",
   "card-spent": "耗時",
   "card-edit-attachments": "編輯附件",
   "card-edit-attachments": "編輯附件",
   "card-edit-custom-fields": "編輯自訂欄位",
   "card-edit-custom-fields": "編輯自訂欄位",
-  "card-start-voting": "開始投票",
-  "card-cancel-voting": "移除投票",
   "card-edit-labels": "編輯標籤",
   "card-edit-labels": "編輯標籤",
   "card-edit-members": "編輯成員",
   "card-edit-members": "編輯成員",
   "card-labels-title": "更改該卡片上的標籤",
   "card-labels-title": "更改該卡片上的標籤",
@@ -166,11 +164,15 @@
   "cardStartVotingPopup-title": "建立投票",
   "cardStartVotingPopup-title": "建立投票",
   "positiveVoteMembersPopup-title": "支持",
   "positiveVoteMembersPopup-title": "支持",
   "negativeVoteMembersPopup-title": "反對",
   "negativeVoteMembersPopup-title": "反對",
-  "allowNonBoardMembers": "Allow anonymous vote on public board",
+  "card-edit-voting": "Edit voting",
+  "editVoteEndDatePopup-title": "Change vote end date",
+  "allowNonBoardMembers": "Allow all logged in users",
   "vote-question": "投票題目",
   "vote-question": "投票題目",
   "vote-public": "Show who voted what",
   "vote-public": "Show who voted what",
   "vote-for-it": "同意",
   "vote-for-it": "同意",
   "vote-against": "反對",
   "vote-against": "反對",
+  "deleteVotePopup-title": "Delete vote?",
+  "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
   "cardDeletePopup-title": "徹底刪除卡片?",
   "cardDeletePopup-title": "徹底刪除卡片?",
   "cardDetailsActionsPopup-title": "卡片操作",
   "cardDetailsActionsPopup-title": "卡片操作",
   "cardLabelsPopup-title": "標籤",
   "cardLabelsPopup-title": "標籤",
@@ -307,6 +309,7 @@
   "error-board-notAMember": "需要成為看板成員才能執行此操作",
   "error-board-notAMember": "需要成為看板成員才能執行此操作",
   "error-json-malformed": "不是有效的 JSON",
   "error-json-malformed": "不是有效的 JSON",
   "error-json-schema": "JSON 資料沒有用正確的格式包含合適的資訊",
   "error-json-schema": "JSON 資料沒有用正確的格式包含合適的資訊",
+  "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": "不存在此列表",
   "error-list-doesNotExist": "不存在此列表",
   "error-user-doesNotExist": "該使用者不存在",
   "error-user-doesNotExist": "該使用者不存在",
   "error-user-notAllowSelf": "不允許對自己執行此操作",
   "error-user-notAllowSelf": "不允許對自己執行此操作",
@@ -314,6 +317,11 @@
   "error-username-taken": "這個使用者名稱已被使用",
   "error-username-taken": "這個使用者名稱已被使用",
   "error-email-taken": "Email 已被使用",
   "error-email-taken": "Email 已被使用",
   "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-html": "Export board to HTML",
+  "exportBoardPopup-title": "匯出看板",
   "sort": "排序",
   "sort": "排序",
   "sort-desc": "點選排序清單",
   "sort-desc": "點選排序清單",
   "list-sort-by": "清單排序依照:",
   "list-sort-by": "清單排序依照:",
@@ -349,12 +357,16 @@
   "import-board-c": "匯入看板",
   "import-board-c": "匯入看板",
   "import-board-title-trello": "匯入在 Trello 的看板",
   "import-board-title-trello": "匯入在 Trello 的看板",
   "import-board-title-wekan": "從上次的匯出檔匯入看板",
   "import-board-title-wekan": "從上次的匯出檔匯入看板",
+  "import-board-title-csv": "Import board from CSV/TSV",
   "from-trello": "來自 Trello",
   "from-trello": "來自 Trello",
   "from-wekan": "從上次的匯出檔",
   "from-wekan": "從上次的匯出檔",
+  "from-csv": "From CSV/TSV",
   "import-board-instruction-trello": "在你的Trello看板中,點選“功能表”,然後選擇“更多”,“列印與匯出”,“匯出為 JSON” 並拷貝結果文本",
   "import-board-instruction-trello": "在你的Trello看板中,點選“功能表”,然後選擇“更多”,“列印與匯出”,“匯出為 JSON” 並拷貝結果文本",
+  "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
   "import-board-instruction-wekan": "在您的看板,點擊“選單”,然後“匯出看板”,複製下載文件中的文本。",
   "import-board-instruction-wekan": "在您的看板,點擊“選單”,然後“匯出看板”,複製下載文件中的文本。",
   "import-board-instruction-about-errors": "如果在匯入看板時出現錯誤,匯入工作可能仍然在進行中,並且看板已經出現在全部看板頁。",
   "import-board-instruction-about-errors": "如果在匯入看板時出現錯誤,匯入工作可能仍然在進行中,並且看板已經出現在全部看板頁。",
   "import-json-placeholder": "貼上您有效的 JSON 資料至此",
   "import-json-placeholder": "貼上您有效的 JSON 資料至此",
+  "import-csv-placeholder": "Paste your valid CSV/TSV data here",
   "import-map-members": "複製成員",
   "import-map-members": "複製成員",
   "import-members-map": "您匯入的看板有一些成員,請複製這些成員到您匯入的用戶。",
   "import-members-map": "您匯入的看板有一些成員,請複製這些成員到您匯入的用戶。",
   "import-show-user-mapping": "核對複製的成員",
   "import-show-user-mapping": "核對複製的成員",
@@ -387,6 +399,7 @@
   "swimlaneActionPopup-title": "泳道動作",
   "swimlaneActionPopup-title": "泳道動作",
   "swimlaneAddPopup-title": "在下面新增泳道",
   "swimlaneAddPopup-title": "在下面新增泳道",
   "listImportCardPopup-title": "匯入 Trello 卡片",
   "listImportCardPopup-title": "匯入 Trello 卡片",
+  "listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
   "listMorePopup-title": "更多",
   "listMorePopup-title": "更多",
   "link-list": "連結到這個清單",
   "link-list": "連結到這個清單",
   "list-delete-pop": "所有的動作都將從活動動態中被移除且您將無法再開啟該清單\b。此操作無法復原。",
   "list-delete-pop": "所有的動作都將從活動動態中被移除且您將無法再開啟該清單\b。此操作無法復原。",
@@ -626,7 +639,7 @@
   "r-when-a-card": "當一張卡片",
   "r-when-a-card": "當一張卡片",
   "r-is": "是",
   "r-is": "是",
   "r-is-moved": "已經移動",
   "r-is-moved": "已經移動",
-  "r-added-to": "新增到",
+  "r-added-to": "Added to",
   "r-removed-from": "已移除",
   "r-removed-from": "已移除",
   "r-the-board": "該看板",
   "r-the-board": "該看板",
   "r-list": "清單",
   "r-list": "清單",
@@ -784,5 +797,14 @@
   "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"
 }
 }

+ 83 - 4
models/cards.js

@@ -340,6 +340,10 @@ Cards.attachSchema(
       type: Boolean,
       type: Boolean,
       defaultValue: false,
       defaultValue: false,
     },
     },
+    'vote.allowNonBoardMembers': {
+      type: Boolean,
+      defaultValue: false,
+    },
   }),
   }),
 );
 );
 
 
@@ -347,8 +351,14 @@ Cards.allow({
   insert(userId, doc) {
   insert(userId, doc) {
     return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
     return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
   },
   },
-  update(userId, doc) {
-    return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
+
+  update(userId, doc, fields) {
+    // Allow board members or logged in users if only vote get's changed
+    return (
+      allowIsBoardMember(userId, Boards.findOne(doc.boardId)) ||
+      (_.isEqual(fields, ['vote', 'modifiedAt', 'dateLastActivity']) &&
+        !!userId)
+    );
   },
   },
   remove(userId, doc) {
   remove(userId, doc) {
     return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
     return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
@@ -432,6 +442,21 @@ Cards.helpers({
     return _id;
     return _id;
   },
   },
 
 
+  link(boardId, swimlaneId, listId) {
+    // TODO is there a better method to create a deepcopy?
+    linkCard = JSON.parse(JSON.stringify(this));
+    // TODO is this how it is meant to be?
+    linkCard.linkedId = linkCard.linkedId || linkCard._id;
+    linkCard.boardId = boardId;
+    linkCard.swimlaneId = swimlaneId;
+    linkCard.listId = listId;
+    linkCard.type = 'cardType-linkedCard';
+    delete linkCard._id;
+    // TODO shall we copy the labels for a linked card?!
+    delete linkCard.labelIds;
+    return Cards.insert(linkCard);
+  },
+
   list() {
   list() {
     return Lists.findOne(this.listId);
     return Lists.findOne(this.listId);
   },
   },
@@ -1053,6 +1078,29 @@ Cards.helpers({
     }
     }
   },
   },
 
 
+  getVoteEnd() {
+    if (this.isLinkedCard()) {
+      const card = Cards.findOne({ _id: this.linkedId });
+      if (card && card.vote) return card.vote.end;
+      else return null;
+    } else if (this.isLinkedBoard()) {
+      const board = Boards.findOne({ _id: this.linkedId });
+      if (board && board.vote) return board.vote.end;
+      else return null;
+    } else if (this.vote) {
+      return this.vote.end;
+    } else {
+      return null;
+    }
+  },
+  expiredVote() {
+    let end = this.getVoteEnd();
+    if (end) {
+      end = moment(end);
+      return end.isBefore(new Date());
+    }
+    return false;
+  },
   voteMemberPositive() {
   voteMemberPositive() {
     if (this.vote && this.vote.positive)
     if (this.vote && this.vote.positive)
       return Users.find({ _id: { $in: this.vote.positive } });
       return Users.find({ _id: { $in: this.vote.positive } });
@@ -1158,6 +1206,26 @@ Cards.helpers({
   isTemplateCard() {
   isTemplateCard() {
     return this.type === 'template-card';
     return this.type === 'template-card';
   },
   },
+
+  votePublic() {
+    if (this.vote) return this.vote.public;
+    return null;
+  },
+  voteAllowNonBoardMembers() {
+    if (this.vote) return this.vote.allowNonBoardMembers;
+    return null;
+  },
+  voteCountNegative() {
+    if (this.vote && this.vote.negative) return this.vote.negative.length;
+    return null;
+  },
+  voteCountPositive() {
+    if (this.vote && this.vote.positive) return this.vote.positive.length;
+    return null;
+  },
+  voteCount() {
+    return this.voteCountPositive() + this.voteCountNegative();
+  },
 });
 });
 
 
 Cards.mutations({
 Cards.mutations({
@@ -1481,12 +1549,13 @@ Cards.mutations({
       },
       },
     };
     };
   },
   },
-  setVoteQuestion(question, publicVote) {
+  setVoteQuestion(question, publicVote, allowNonBoardMembers) {
     return {
     return {
       $set: {
       $set: {
         vote: {
         vote: {
           question,
           question,
           public: publicVote,
           public: publicVote,
+          allowNonBoardMembers,
           positive: [],
           positive: [],
           negative: [],
           negative: [],
         },
         },
@@ -1500,6 +1569,16 @@ Cards.mutations({
       },
       },
     };
     };
   },
   },
+  setVoteEnd(end) {
+    return {
+      $set: { 'vote.end': end },
+    };
+  },
+  unsetVoteEnd() {
+    return {
+      $unset: { 'vote.end': '' },
+    };
+  },
   setVote(userId, forIt) {
   setVote(userId, forIt) {
     switch (forIt) {
     switch (forIt) {
       case true:
       case true:
@@ -2161,7 +2240,7 @@ if (Meteor.isServer) {
     const check = Users.findOne({
     const check = Users.findOne({
       _id: req.body.authorId,
       _id: req.body.authorId,
     });
     });
-    const members = req.body.members || [req.body.authorId];
+    const members = req.body.members;
     const assignees = req.body.assignees;
     const assignees = req.body.assignees;
     if (typeof check !== 'undefined') {
     if (typeof check !== 'undefined') {
       const id = Cards.direct.insert({
       const id = Cards.direct.insert({

+ 313 - 0
models/csvCreator.js

@@ -0,0 +1,313 @@
+import Boards from './boards';
+
+export class CsvCreator {
+  constructor(data) {
+    // date to be used for timestamps during import
+    this._nowDate = new Date();
+    // index to help keep track of what information a column stores
+    // each row represents a card
+    this.fieldIndex = {};
+    this.lists = {};
+    // Map of members using username => wekanid
+    this.members = data.membersMapping ? data.membersMapping : {};
+    this.swimlane = null;
+  }
+
+  /**
+   * If dateString is provided,
+   * return the Date it represents.
+   * If not, will return the date when it was first called.
+   * This is useful for us, as we want all import operations to
+   * have the exact same date for easier later retrieval.
+   *
+   * @param {String} dateString a properly formatted Date
+   */
+  _now(dateString) {
+    if (dateString) {
+      return new Date(dateString);
+    }
+    if (!this._nowDate) {
+      this._nowDate = new Date();
+    }
+    return this._nowDate;
+  }
+
+  _user(wekanUserId) {
+    if (wekanUserId && this.members[wekanUserId]) {
+      return this.members[wekanUserId];
+    }
+    return Meteor.userId();
+  }
+
+  /**
+   * Map the header row titles to an index to help assign proper values to the cards' fields
+   * Valid headers (name of card fields):
+   * title, description, status, owner, member, label, due date, start date, finish date, created at, updated at
+   * Some header aliases can also be accepted.
+   * Headers are NOT case-sensitive.
+   *
+   * @param {Array} headerRow array from row of headers of imported CSV/TSV for cards
+   */
+  mapHeadertoCardFieldIndex(headerRow) {
+    const index = {};
+    for (let i = 0; i < headerRow.length; i++) {
+      switch (headerRow[i].trim().toLowerCase()) {
+        case 'title':
+          index.title = i;
+          break;
+        case 'description':
+          index.description = i;
+          break;
+        case 'stage':
+        case 'status':
+        case 'state':
+          index.stage = i;
+          break;
+        case 'owner':
+          index.owner = i;
+          break;
+        case 'members':
+        case 'member':
+          index.members = i;
+          break;
+        case 'labels':
+        case 'label':
+          index.labels = i;
+          break;
+        case 'due date':
+        case 'deadline':
+        case 'due at':
+          index.dueAt = i;
+          break;
+        case 'start date':
+        case 'start at':
+          index.startAt = i;
+          break;
+        case 'finish date':
+        case 'end at':
+          index.endAt = i;
+          break;
+        case 'creation date':
+        case 'created at':
+          index.createdAt = i;
+          break;
+        case 'update date':
+        case 'updated at':
+        case 'modified at':
+        case 'modified on':
+          index.modifiedAt = i;
+          break;
+      }
+    }
+    this.fieldIndex = index;
+  }
+
+  createBoard(csvData) {
+    const boardToCreate = {
+      archived: false,
+      color: 'belize',
+      createdAt: this._now(),
+      labels: [],
+      members: [
+        {
+          userId: Meteor.userId(),
+          wekanId: Meteor.userId(),
+          isActive: true,
+          isAdmin: true,
+          isNoComments: false,
+          isCommentOnly: false,
+          swimlaneId: false,
+        },
+      ],
+      modifiedAt: this._now(),
+      //default is private, should inform user.
+      permission: 'private',
+      slug: 'board',
+      stars: 0,
+      title: `Imported Board ${this._now()}`,
+    };
+
+    // create labels
+    const labelsToCreate = new Set();
+    for (let i = 1; i < csvData.length; i++) {
+      if (csvData[i][this.fieldIndex.labels]) {
+        for (const importedLabel of csvData[i][this.fieldIndex.labels].split(
+          ' ',
+        )) {
+          if (importedLabel && importedLabel.length > 0) {
+            labelsToCreate.add(importedLabel);
+          }
+        }
+      }
+    }
+    for (const label of labelsToCreate) {
+      let labelName, labelColor;
+      if (label.indexOf('-') > -1) {
+        labelName = label.split('-')[0];
+        labelColor = label.split('-')[1];
+      } else {
+        labelName = label;
+      }
+      const labelToCreate = {
+        _id: Random.id(6),
+        color: labelColor ? labelColor : 'black',
+        name: labelName,
+      };
+      boardToCreate.labels.push(labelToCreate);
+    }
+
+    const boardId = Boards.direct.insert(boardToCreate);
+    Boards.direct.update(boardId, {
+      $set: {
+        modifiedAt: this._now(),
+      },
+    });
+    // log activity
+    Activities.direct.insert({
+      activityType: 'importBoard',
+      boardId,
+      createdAt: this._now(),
+      source: {
+        id: boardId,
+        system: 'CSV/TSV',
+      },
+      // We attribute the import to current user,
+      // not the author from the original object.
+      userId: this._user(),
+    });
+    return boardId;
+  }
+
+  createSwimlanes(boardId) {
+    const swimlaneToCreate = {
+      archived: false,
+      boardId,
+      createdAt: this._now(),
+      title: 'Default',
+      sort: 1,
+    };
+    const swimlaneId = Swimlanes.direct.insert(swimlaneToCreate);
+    Swimlanes.direct.update(swimlaneId, { $set: { updatedAt: this._now() } });
+    this.swimlane = swimlaneId;
+  }
+
+  createLists(csvData, boardId) {
+    let numOfCreatedLists = 0;
+    for (let i = 1; i < csvData.length; i++) {
+      const listToCreate = {
+        archived: false,
+        boardId,
+        createdAt: this._now(),
+      };
+      if (csvData[i][this.fieldIndex.stage]) {
+        const existingList = Lists.find({
+          title: csvData[i][this.fieldIndex.stage],
+          boardId,
+        }).fetch();
+        if (existingList.length > 0) {
+          continue;
+        } else {
+          listToCreate.title = csvData[i][this.fieldIndex.stage];
+        }
+      } else listToCreate.title = `Imported List ${this._now()}`;
+
+      const listId = Lists.direct.insert(listToCreate);
+      this.lists[csvData[i][this.fieldIndex.stage]] = listId;
+      numOfCreatedLists++;
+      Lists.direct.update(listId, {
+        $set: {
+          updatedAt: this._now(),
+          sort: numOfCreatedLists,
+        },
+      });
+    }
+  }
+
+  createCards(csvData, boardId) {
+    for (let i = 1; i < csvData.length; i++) {
+      const cardToCreate = {
+        archived: false,
+        boardId,
+        createdAt: csvData[i][this.fieldIndex.createdAt]
+          ? this._now(new Date(csvData[i][this.fieldIndex.createdAt]))
+          : null,
+        dateLastActivity: this._now(),
+        description: csvData[i][this.fieldIndex.description],
+        listId: this.lists[csvData[i][this.fieldIndex.stage]],
+        swimlaneId: this.swimlane,
+        sort: -1,
+        title: csvData[i][this.fieldIndex.title],
+        userId: this._user(),
+        startAt: csvData[i][this.fieldIndex.startAt]
+          ? this._now(new Date(csvData[i][this.fieldIndex.startAt]))
+          : null,
+        dueAt: csvData[i][this.fieldIndex.dueAt]
+          ? this._now(new Date(csvData[i][this.fieldIndex.dueAt]))
+          : null,
+        endAt: csvData[i][this.fieldIndex.endAt]
+          ? this._now(new Date(csvData[i][this.fieldIndex.endAt]))
+          : null,
+        spentTime: null,
+        labelIds: [],
+        modifiedAt: csvData[i][this.fieldIndex.modifiedAt]
+          ? this._now(new Date(csvData[i][this.fieldIndex.modifiedAt]))
+          : null,
+      };
+      // add the labels
+      if (csvData[i][this.fieldIndex.labels]) {
+        const board = Boards.findOne(boardId);
+        for (const importedLabel of csvData[i][this.fieldIndex.labels].split(
+          ' ',
+        )) {
+          if (importedLabel && importedLabel.length > 0) {
+            let labelToApply;
+            if (importedLabel.indexOf('-') === -1) {
+              labelToApply = board.getLabel(importedLabel, 'black');
+            } else {
+              labelToApply = board.getLabel(
+                importedLabel.split('-')[0],
+                importedLabel.split('-')[1],
+              );
+            }
+            cardToCreate.labelIds.push(labelToApply._id);
+          }
+        }
+      }
+      // add the members
+      if (csvData[i][this.fieldIndex.members]) {
+        const wekanMembers = [];
+        for (const importedMember of csvData[i][this.fieldIndex.members].split(
+          ' ',
+        )) {
+          if (this.members[importedMember]) {
+            const wekanId = this.members[importedMember];
+            if (!wekanMembers.find(wId => wId === wekanId)) {
+              wekanMembers.push(wekanId);
+            }
+          }
+        }
+        if (wekanMembers.length > 0) {
+          cardToCreate.members = wekanMembers;
+        }
+      }
+      Cards.direct.insert(cardToCreate);
+    }
+  }
+
+  create(board, currentBoardId) {
+    const isSandstorm =
+      Meteor.settings &&
+      Meteor.settings.public &&
+      Meteor.settings.public.sandstorm;
+    if (isSandstorm && currentBoardId) {
+      const currentBoard = Boards.findOne(currentBoardId);
+      currentBoard.archive();
+    }
+    this.mapHeadertoCardFieldIndex(board[0]);
+    const boardId = this.createBoard(board);
+    this.createLists(board, boardId);
+    this.createSwimlanes(boardId);
+    this.createCards(board, boardId);
+    return boardId;
+  }
+}

+ 344 - 0
models/exporter.js

@@ -0,0 +1,344 @@
+const stringify = require('csv-stringify');
+
+// exporter maybe is broken since Gridfs introduced, add fs and path
+export class Exporter {
+  constructor(boardId) {
+    this._boardId = boardId;
+  }
+
+  build() {
+    const fs = Npm.require('fs');
+    const os = Npm.require('os');
+    const path = Npm.require('path');
+
+    const byBoard = { boardId: this._boardId };
+    const byBoardNoLinked = {
+      boardId: this._boardId,
+      linkedId: { $in: ['', null] },
+    };
+    // we do not want to retrieve boardId in related elements
+    const noBoardId = {
+      fields: {
+        boardId: 0,
+      },
+    };
+    const result = {
+      _format: 'wekan-board-1.0.0',
+    };
+    _.extend(
+      result,
+      Boards.findOne(this._boardId, {
+        fields: {
+          stars: 0,
+        },
+      }),
+    );
+    result.lists = Lists.find(byBoard, noBoardId).fetch();
+    result.cards = Cards.find(byBoardNoLinked, noBoardId).fetch();
+    result.swimlanes = Swimlanes.find(byBoard, noBoardId).fetch();
+    result.customFields = CustomFields.find(
+      { boardIds: { $in: [this.boardId] } },
+      { fields: { boardId: 0 } },
+    ).fetch();
+    result.comments = CardComments.find(byBoard, noBoardId).fetch();
+    result.activities = Activities.find(byBoard, noBoardId).fetch();
+    result.rules = Rules.find(byBoard, noBoardId).fetch();
+    result.checklists = [];
+    result.checklistItems = [];
+    result.subtaskItems = [];
+    result.triggers = [];
+    result.actions = [];
+    result.cards.forEach(card => {
+      result.checklists.push(
+        ...Checklists.find({
+          cardId: card._id,
+        }).fetch(),
+      );
+      result.checklistItems.push(
+        ...ChecklistItems.find({
+          cardId: card._id,
+        }).fetch(),
+      );
+      result.subtaskItems.push(
+        ...Cards.find({
+          parentId: card._id,
+        }).fetch(),
+      );
+    });
+    result.rules.forEach(rule => {
+      result.triggers.push(
+        ...Triggers.find(
+          {
+            _id: rule.triggerId,
+          },
+          noBoardId,
+        ).fetch(),
+      );
+      result.actions.push(
+        ...Actions.find(
+          {
+            _id: rule.actionId,
+          },
+          noBoardId,
+        ).fetch(),
+      );
+    });
+
+    // [Old] for attachments we only export IDs and absolute url to original doc
+    // [New] Encode attachment to base64
+
+    const getBase64Data = function(doc, callback) {
+      let buffer = Buffer.allocUnsafe(0);
+      buffer.fill(0);
+
+      // callback has the form function (err, res) {}
+      const tmpFile = path.join(
+        os.tmpdir(),
+        `tmpexport${process.pid}${Math.random()}`,
+      );
+      const tmpWriteable = fs.createWriteStream(tmpFile);
+      const readStream = doc.createReadStream();
+      readStream.on('data', function(chunk) {
+        buffer = Buffer.concat([buffer, chunk]);
+      });
+
+      readStream.on('error', function() {
+        callback(null, null);
+      });
+      readStream.on('end', function() {
+        // done
+        fs.unlink(tmpFile, () => {
+          //ignored
+        });
+
+        callback(null, buffer.toString('base64'));
+      });
+      readStream.pipe(tmpWriteable);
+    };
+    const getBase64DataSync = Meteor.wrapAsync(getBase64Data);
+    result.attachments = Attachments.find(byBoard)
+      .fetch()
+      .map(attachment => {
+        let filebase64 = null;
+        filebase64 = getBase64DataSync(attachment);
+
+        return {
+          _id: attachment._id,
+          cardId: attachment.cardId,
+          //url: FlowRouter.url(attachment.url()),
+          file: filebase64,
+          name: attachment.original.name,
+          type: attachment.original.type,
+        };
+      });
+
+    // we also have to export some user data - as the other elements only
+    // include id but we have to be careful:
+    // 1- only exports users that are linked somehow to that board
+    // 2- do not export any sensitive information
+    const users = {};
+    result.members.forEach(member => {
+      users[member.userId] = true;
+    });
+    result.lists.forEach(list => {
+      users[list.userId] = true;
+    });
+    result.cards.forEach(card => {
+      users[card.userId] = true;
+      if (card.members) {
+        card.members.forEach(memberId => {
+          users[memberId] = true;
+        });
+      }
+    });
+    result.comments.forEach(comment => {
+      users[comment.userId] = true;
+    });
+    result.activities.forEach(activity => {
+      users[activity.userId] = true;
+    });
+    result.checklists.forEach(checklist => {
+      users[checklist.userId] = true;
+    });
+    const byUserIds = {
+      _id: {
+        $in: Object.getOwnPropertyNames(users),
+      },
+    };
+    // we use whitelist to be sure we do not expose inadvertently
+    // some secret fields that gets added to User later.
+    const userFields = {
+      fields: {
+        _id: 1,
+        username: 1,
+        'profile.fullname': 1,
+        'profile.initials': 1,
+        'profile.avatarUrl': 1,
+      },
+    };
+    result.users = Users.find(byUserIds, userFields)
+      .fetch()
+      .map(user => {
+        // user avatar is stored as a relative url, we export absolute
+        if ((user.profile || {}).avatarUrl) {
+          user.profile.avatarUrl = FlowRouter.url(user.profile.avatarUrl);
+        }
+        return user;
+      });
+    return result;
+  }
+
+  buildCsv(delimiter = ',') {
+    const result = this.build();
+    const columnHeaders = [];
+    const cardRows = [];
+    columnHeaders.push(
+      'Title',
+      'Description',
+      'Status',
+      'Swimlane',
+      'Owner',
+      'Requested by',
+      'Assigned by',
+      'Members',
+      'Assignees',
+      'Labels',
+      'Start at',
+      'Due at',
+      'End at',
+      'Over time',
+      'Spent time (hours)',
+      'Created at',
+      'Last modified at',
+      'Last activity',
+      'Vote',
+      'Archived',
+    );
+
+    /* TODO: Try to get translations working.
+             These currently only bring English translations.
+    TAPi18n.__('title'),
+    TAPi18n.__('description'),
+    TAPi18n.__('status'),
+    TAPi18n.__('swimlane'),
+    TAPi18n.__('owner'),
+    TAPi18n.__('requested-by'),
+    TAPi18n.__('assigned-by'),
+    TAPi18n.__('members'),
+    TAPi18n.__('assignee'),
+    TAPi18n.__('labels'),
+    TAPi18n.__('card-start'),
+    TAPi18n.__('card-due'),
+    TAPi18n.__('card-end'),
+    TAPi18n.__('overtime-hours'),
+    TAPi18n.__('spent-time-hours'),
+    TAPi18n.__('createdAt'),
+    TAPi18n.__('last-modified-at'),
+    TAPi18n.__('last-activity'),
+    TAPi18n.__('voting'),
+    TAPi18n.__('archived'),
+    */
+
+    const stringifier = stringify({
+      header: true,
+      delimiter,
+      columns: columnHeaders,
+    });
+
+    stringifier.on('readable', function() {
+      let row;
+      while ((row = stringifier.read())) {
+        cardRows.push(row);
+      }
+    });
+
+    stringifier.on('error', function(err) {
+      // eslint-disable-next-line no-console
+      console.error(err.message);
+    });
+
+    result.cards.forEach(card => {
+      const currentRow = [];
+      currentRow.push(card.title);
+      currentRow.push(card.description);
+      currentRow.push(
+        result.lists.find(({ _id }) => _id === card.listId).title,
+      );
+      currentRow.push(
+        result.swimlanes.find(({ _id }) => _id === card.swimlaneId).title,
+      );
+      currentRow.push(
+        result.users.find(({ _id }) => _id === card.userId).username,
+      );
+      currentRow.push(card.requestedBy ? card.requestedBy : ' ');
+      currentRow.push(card.assignedBy ? card.assignedBy : ' ');
+      let usernames = '';
+      card.members.forEach(memberId => {
+        const user = result.users.find(({ _id }) => _id === memberId);
+        usernames = `${usernames + user.username} `;
+      });
+      currentRow.push(usernames.trim());
+      let assignees = '';
+      card.assignees.forEach(assigneeId => {
+        const user = result.users.find(({ _id }) => _id === assigneeId);
+        assignees = `${assignees + user.username} `;
+      });
+      currentRow.push(assignees.trim());
+      let labels = '';
+      card.labelIds.forEach(labelId => {
+        const label = result.labels.find(({ _id }) => _id === labelId);
+        labels = `${labels + label.name}-${label.color} `;
+      });
+      currentRow.push(labels.trim());
+      currentRow.push(card.startAt ? moment(card.startAt).format('LLLL') : ' ');
+      currentRow.push(card.dueAt ? moment(card.dueAt).format('LLLL') : ' ');
+      currentRow.push(card.endAt ? moment(card.endAt).format('LLLL') : ' ');
+      currentRow.push(card.isOvertime ? 'true' : 'false');
+      currentRow.push(card.spentTime);
+      currentRow.push(
+        card.createdAt ? moment(card.createdAt).format('LLLL') : ' ',
+      );
+      currentRow.push(
+        card.modifiedAt ? moment(card.modifiedAt).format('LLLL') : ' ',
+      );
+      currentRow.push(
+        card.dateLastActivity
+          ? moment(card.dateLastActivity).format('LLLL')
+          : ' ',
+      );
+      if (card.vote.question) {
+        let positiveVoters = '';
+        let negativeVoters = '';
+        card.vote.positive.forEach(userId => {
+          const user = result.users.find(({ _id }) => _id === userId);
+          positiveVoters = `${positiveVoters + user.username} `;
+        });
+        card.vote.negative.forEach(userId => {
+          const user = result.users.find(({ _id }) => _id === userId);
+          negativeVoters = `${negativeVoters + user.username} `;
+        });
+        const votingResult = `${
+          card.vote.public
+            ? `yes-${
+                card.vote.positive.length
+              }-${positiveVoters.trimRight()}-no-${
+                card.vote.negative.length
+              }-${negativeVoters.trimRight()}`
+            : `yes-${card.vote.positive.length}-no-${card.vote.negative.length}`
+        }`;
+        currentRow.push(`${card.vote.question}-${votingResult}`);
+      } else {
+        currentRow.push(' ');
+      }
+      currentRow.push(card.archived ? 'true' : 'false');
+      stringifier.write(currentRow);
+    });
+    stringifier.end();
+    return cardRows;
+  }
+
+  canExport(user) {
+    const board = Boards.findOne(this._boardId);
+    return board && board.isVisibleBy(user);
+  }
+}

+ 8 - 2
models/import.js

@@ -1,22 +1,28 @@
 import { TrelloCreator } from './trelloCreator';
 import { TrelloCreator } from './trelloCreator';
 import { WekanCreator } from './wekanCreator';
 import { WekanCreator } from './wekanCreator';
-import { Exporter } from './export';
+import { CsvCreator } from './csvCreator';
+import { Exporter } from './exporter';
 import wekanMembersMapper from './wekanmapper';
 import wekanMembersMapper from './wekanmapper';
 
 
 Meteor.methods({
 Meteor.methods({
   importBoard(board, data, importSource, currentBoard) {
   importBoard(board, data, importSource, currentBoard) {
-    check(board, Object);
     check(data, Object);
     check(data, Object);
     check(importSource, String);
     check(importSource, String);
     check(currentBoard, Match.Maybe(String));
     check(currentBoard, Match.Maybe(String));
     let creator;
     let creator;
     switch (importSource) {
     switch (importSource) {
       case 'trello':
       case 'trello':
+        check(board, Object);
         creator = new TrelloCreator(data);
         creator = new TrelloCreator(data);
         break;
         break;
       case 'wekan':
       case 'wekan':
+        check(board, Object);
         creator = new WekanCreator(data);
         creator = new WekanCreator(data);
         break;
         break;
+      case 'csv':
+        check(board, Array);
+        creator = new CsvCreator(data);
+        break;
     }
     }
 
 
     // 1. check all parameters are ok from a syntax point of view
     // 1. check all parameters are ok from a syntax point of view

+ 40 - 1
models/users.js

@@ -1240,6 +1240,25 @@ if (Meteor.isServer) {
       Authentication.checkLoggedIn(req.userId);
       Authentication.checkLoggedIn(req.userId);
       const data = Meteor.users.findOne({ _id: req.userId });
       const data = Meteor.users.findOne({ _id: req.userId });
       delete data.services;
       delete data.services;
+
+      // get all boards where the user is member of
+      let boards = Boards.find(
+        {
+          type: 'board',
+          'members.userId': req.userId,
+        },
+        {
+          fields: { _id: 1, members: 1 },
+        },
+      );
+      boards = boards.map(b => {
+        const u = b.members.find(m => m.userId === req.userId);
+        delete u.userId;
+        u.boardId = b._id;
+        return u;
+      });
+
+      data.boards = boards;
       JsonRoutes.sendResult(res, {
       JsonRoutes.sendResult(res, {
         code: 200,
         code: 200,
         data,
         data,
@@ -1292,9 +1311,29 @@ if (Meteor.isServer) {
     try {
     try {
       Authentication.checkUserId(req.userId);
       Authentication.checkUserId(req.userId);
       const id = req.params.userId;
       const id = req.params.userId;
+
+      // get all boards where the user is member of
+      let boards = Boards.find(
+        {
+          type: 'board',
+          'members.userId': id,
+        },
+        {
+          fields: { _id: 1, members: 1 },
+        },
+      );
+      boards = boards.map(b => {
+        const u = b.members.find(m => m.userId === id);
+        delete u.userId;
+        u.boardId = b._id;
+        return u;
+      });
+
+      const user = Meteor.users.findOne({ _id: id });
+      user.boards = boards;
       JsonRoutes.sendResult(res, {
       JsonRoutes.sendResult(res, {
         code: 200,
         code: 200,
-        data: Meteor.users.findOne({ _id: id }),
+        data: user,
       });
       });
     } catch (error) {
     } catch (error) {
       JsonRoutes.sendResult(res, {
       JsonRoutes.sendResult(res, {

+ 179 - 30
package-lock.json

@@ -13,18 +13,18 @@
       }
       }
     },
     },
     "@babel/core": {
     "@babel/core": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz",
-      "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==",
+      "version": "7.9.6",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz",
+      "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==",
       "requires": {
       "requires": {
         "@babel/code-frame": "^7.8.3",
         "@babel/code-frame": "^7.8.3",
-        "@babel/generator": "^7.9.0",
+        "@babel/generator": "^7.9.6",
         "@babel/helper-module-transforms": "^7.9.0",
         "@babel/helper-module-transforms": "^7.9.0",
-        "@babel/helpers": "^7.9.0",
-        "@babel/parser": "^7.9.0",
+        "@babel/helpers": "^7.9.6",
+        "@babel/parser": "^7.9.6",
         "@babel/template": "^7.8.6",
         "@babel/template": "^7.8.6",
-        "@babel/traverse": "^7.9.0",
-        "@babel/types": "^7.9.0",
+        "@babel/traverse": "^7.9.6",
+        "@babel/types": "^7.9.6",
         "convert-source-map": "^1.7.0",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
         "debug": "^4.1.0",
         "gensync": "^1.0.0-beta.1",
         "gensync": "^1.0.0-beta.1",
@@ -33,12 +33,57 @@
         "resolve": "^1.3.2",
         "resolve": "^1.3.2",
         "semver": "^5.4.1",
         "semver": "^5.4.1",
         "source-map": "^0.5.0"
         "source-map": "^0.5.0"
+      },
+      "dependencies": {
+        "@babel/generator": {
+          "version": "7.9.6",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz",
+          "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==",
+          "requires": {
+            "@babel/types": "^7.9.6",
+            "jsesc": "^2.5.1",
+            "lodash": "^4.17.13",
+            "source-map": "^0.5.0"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.9.6",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz",
+          "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q=="
+        },
+        "@babel/traverse": {
+          "version": "7.9.6",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz",
+          "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==",
+          "requires": {
+            "@babel/code-frame": "^7.8.3",
+            "@babel/generator": "^7.9.6",
+            "@babel/helper-function-name": "^7.9.5",
+            "@babel/helper-split-export-declaration": "^7.8.3",
+            "@babel/parser": "^7.9.6",
+            "@babel/types": "^7.9.6",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0",
+            "lodash": "^4.17.13"
+          }
+        },
+        "@babel/types": {
+          "version": "7.9.6",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz",
+          "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.9.5",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
       }
     },
     },
     "@babel/generator": {
     "@babel/generator": {
       "version": "7.9.5",
       "version": "7.9.5",
       "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
       "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
       "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
       "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
+      "dev": true,
       "requires": {
       "requires": {
         "@babel/types": "^7.9.5",
         "@babel/types": "^7.9.5",
         "jsesc": "^2.5.1",
         "jsesc": "^2.5.1",
@@ -103,14 +148,58 @@
       }
       }
     },
     },
     "@babel/helper-replace-supers": {
     "@babel/helper-replace-supers": {
-      "version": "7.8.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz",
-      "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==",
+      "version": "7.9.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz",
+      "integrity": "sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==",
       "requires": {
       "requires": {
         "@babel/helper-member-expression-to-functions": "^7.8.3",
         "@babel/helper-member-expression-to-functions": "^7.8.3",
         "@babel/helper-optimise-call-expression": "^7.8.3",
         "@babel/helper-optimise-call-expression": "^7.8.3",
-        "@babel/traverse": "^7.8.6",
-        "@babel/types": "^7.8.6"
+        "@babel/traverse": "^7.9.6",
+        "@babel/types": "^7.9.6"
+      },
+      "dependencies": {
+        "@babel/generator": {
+          "version": "7.9.6",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz",
+          "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==",
+          "requires": {
+            "@babel/types": "^7.9.6",
+            "jsesc": "^2.5.1",
+            "lodash": "^4.17.13",
+            "source-map": "^0.5.0"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.9.6",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz",
+          "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q=="
+        },
+        "@babel/traverse": {
+          "version": "7.9.6",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz",
+          "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==",
+          "requires": {
+            "@babel/code-frame": "^7.8.3",
+            "@babel/generator": "^7.9.6",
+            "@babel/helper-function-name": "^7.9.5",
+            "@babel/helper-split-export-declaration": "^7.8.3",
+            "@babel/parser": "^7.9.6",
+            "@babel/types": "^7.9.6",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0",
+            "lodash": "^4.17.13"
+          }
+        },
+        "@babel/types": {
+          "version": "7.9.6",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz",
+          "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.9.5",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
       }
     },
     },
     "@babel/helper-simple-access": {
     "@babel/helper-simple-access": {
@@ -136,13 +225,57 @@
       "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g=="
       "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g=="
     },
     },
     "@babel/helpers": {
     "@babel/helpers": {
-      "version": "7.9.2",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz",
-      "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==",
+      "version": "7.9.6",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.6.tgz",
+      "integrity": "sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==",
       "requires": {
       "requires": {
         "@babel/template": "^7.8.3",
         "@babel/template": "^7.8.3",
-        "@babel/traverse": "^7.9.0",
-        "@babel/types": "^7.9.0"
+        "@babel/traverse": "^7.9.6",
+        "@babel/types": "^7.9.6"
+      },
+      "dependencies": {
+        "@babel/generator": {
+          "version": "7.9.6",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz",
+          "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==",
+          "requires": {
+            "@babel/types": "^7.9.6",
+            "jsesc": "^2.5.1",
+            "lodash": "^4.17.13",
+            "source-map": "^0.5.0"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.9.6",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz",
+          "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q=="
+        },
+        "@babel/traverse": {
+          "version": "7.9.6",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz",
+          "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==",
+          "requires": {
+            "@babel/code-frame": "^7.8.3",
+            "@babel/generator": "^7.9.6",
+            "@babel/helper-function-name": "^7.9.5",
+            "@babel/helper-split-export-declaration": "^7.8.3",
+            "@babel/parser": "^7.9.6",
+            "@babel/types": "^7.9.6",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0",
+            "lodash": "^4.17.13"
+          }
+        },
+        "@babel/types": {
+          "version": "7.9.6",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz",
+          "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.9.5",
+            "lodash": "^4.17.13",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
       }
     },
     },
     "@babel/highlight": {
     "@babel/highlight": {
@@ -161,9 +294,9 @@
       "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA=="
       "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA=="
     },
     },
     "@babel/runtime": {
     "@babel/runtime": {
-      "version": "7.9.2",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
-      "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
+      "version": "7.9.6",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz",
+      "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==",
       "requires": {
       "requires": {
         "regenerator-runtime": "^0.13.4"
         "regenerator-runtime": "^0.13.4"
       }
       }
@@ -182,6 +315,7 @@
       "version": "7.9.5",
       "version": "7.9.5",
       "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
       "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
       "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
       "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
+      "dev": true,
       "requires": {
       "requires": {
         "@babel/code-frame": "^7.8.3",
         "@babel/code-frame": "^7.8.3",
         "@babel/generator": "^7.9.5",
         "@babel/generator": "^7.9.5",
@@ -204,6 +338,11 @@
         "to-fast-properties": "^2.0.0"
         "to-fast-properties": "^2.0.0"
       }
       }
     },
     },
+    "@root/request": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/@root/request/-/request-1.6.1.tgz",
+      "integrity": "sha512-8wrWyeBLRp7T8J36GkT3RODJ6zYmL0/maWlAUD5LOXT28D3TDquUepyYDKYANNA3Gc8R5ZCgf+AXvSTYpJEWwQ=="
+    },
     "@samverschueren/stream-to-observable": {
     "@samverschueren/stream-to-observable": {
       "version": "0.3.0",
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz",
       "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz",
@@ -894,6 +1033,11 @@
       "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz",
       "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz",
       "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4="
       "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4="
     },
     },
+    "csv-stringify": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.5.0.tgz",
+      "integrity": "sha512-G05575DSO/9vFzQxZN+Srh30cNyHk0SM0ePyiTChMD5WVt7GMTVPBQf4rtgMF6mqhNCJUPw4pN8LDe8MF9EYOA=="
+    },
     "dashdash": {
     "dashdash": {
       "version": "1.14.1",
       "version": "1.14.1",
       "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
       "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -3305,9 +3449,9 @@
       "optional": true
       "optional": true
     },
     },
     "mongodb": {
     "mongodb": {
-      "version": "3.5.6",
-      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.6.tgz",
-      "integrity": "sha512-sh3q3GLDLT4QmoDLamxtAECwC3RGjq+oNuK1ENV8+tnipIavss6sMYt77hpygqlMOCt0Sla5cl7H4SKCVBCGEg==",
+      "version": "3.5.7",
+      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.7.tgz",
+      "integrity": "sha512-lMtleRT+vIgY/JhhTn1nyGwnSMmJkJELp+4ZbrjctrnBxuLbj6rmLuJFz8W2xUzUqWmqoyVxJLYuC58ZKpcTYQ==",
       "requires": {
       "requires": {
         "bl": "^2.2.0",
         "bl": "^2.2.0",
         "bson": "^1.1.4",
         "bson": "^1.1.4",
@@ -3733,6 +3877,11 @@
         "path-to-regexp": "~1.2.1"
         "path-to-regexp": "~1.2.1"
       }
       }
     },
     },
+    "papaparse": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.2.0.tgz",
+      "integrity": "sha512-ylq1wgUSnagU+MKQtNeVqrPhZuMYBvOSL00DHycFTCxownF95gpLAk1HiHdUW77N8yxRq1qHXLdlIPyBSG9NSA=="
+    },
     "parent-module": {
     "parent-module": {
       "version": "1.0.1",
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
       "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -3975,9 +4124,9 @@
       "dev": true
       "dev": true
     },
     },
     "qs": {
     "qs": {
-      "version": "6.9.3",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz",
-      "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw=="
+      "version": "6.9.4",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
+      "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ=="
     },
     },
     "rc": {
     "rc": {
       "version": "1.2.8",
       "version": "1.2.8",
@@ -4392,9 +4541,9 @@
       }
       }
     },
     },
     "source-map-support": {
     "source-map-support": {
-      "version": "0.5.18",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.18.tgz",
-      "integrity": "sha512-9luZr/BZ2QeU6tO2uG8N2aZpVSli4TSAOAqFOyTO51AJcD9P99c0K1h6dD6r6qo5dyT44BR5exweOaLLeldTkQ==",
+      "version": "0.5.19",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+      "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
       "requires": {
       "requires": {
         "buffer-from": "^1.0.0",
         "buffer-from": "^1.0.0",
         "source-map": "^0.6.0"
         "source-map": "^0.6.0"

+ 8 - 5
package.json

@@ -54,23 +54,26 @@
     "prettier-eslint": "^9.0.1"
     "prettier-eslint": "^9.0.1"
   },
   },
   "dependencies": {
   "dependencies": {
-    "@babel/core": "^7.9.0",
-    "@babel/runtime": "^7.9.2",
+    "@babel/core": "^7.9.6",
+    "@babel/runtime": "^7.9.6",
+    "@root/request": "^1.6.1",
     "ajv": "^5.0.0",
     "ajv": "^5.0.0",
     "babel-runtime": "^6.26.0",
     "babel-runtime": "^6.26.0",
     "bcrypt": "^3.0.7",
     "bcrypt": "^3.0.7",
     "bson": "^4.0.3",
     "bson": "^4.0.3",
     "bunyan": "^1.8.12",
     "bunyan": "^1.8.12",
+    "csv-stringify": "^5.5.0",
     "es6-promise": "^4.2.4",
     "es6-promise": "^4.2.4",
     "flatted": "^2.0.1",
     "flatted": "^2.0.1",
     "gridfs-stream": "^0.5.3",
     "gridfs-stream": "^0.5.3",
     "ldapjs": "^1.0.2",
     "ldapjs": "^1.0.2",
     "meteor-node-stubs": "^0.4.1",
     "meteor-node-stubs": "^0.4.1",
-    "mongodb": "^3.5.0",
+    "mongodb": "^3.5.7",
     "os": "^0.1.1",
     "os": "^0.1.1",
     "page": "^1.11.5",
     "page": "^1.11.5",
-    "qs": "^6.9.1",
-    "source-map-support": "^0.5.16",
+    "papaparse": "^5.2.0",
+    "qs": "^6.9.4",
+    "source-map-support": "^0.5.19",
     "xss": "^1.0.6"
     "xss": "^1.0.6"
   }
   }
 }
 }

+ 31 - 13
rebuild-wekan.sh

@@ -64,7 +64,7 @@ function npm_call(){
 
 
 echo
 echo
 PS3='Please enter your choice: '
 PS3='Please enter your choice: '
-options=("Install Wekan dependencies" "Build Wekan" "Quit")
+options=("Install Wekan dependencies" "Build Wekan" "Run Meteor for development on Ethernet IP address port 4000" "Run Meteor for development on Custom IP address and port" "Quit")
 select opt in "${options[@]}"
 select opt in "${options[@]}"
 do
 do
     case $opt in
     case $opt in
@@ -106,18 +106,19 @@ do
 			exit;
 			exit;
 		fi
 		fi
 
 
-	        ## Latest npm with Meteor 1.8.x
-	        npm_call -g install npm
-	        npm_call -g install node-gyp
-	        # Latest fibers for Meteor 1.8.x
+		## Latest npm with Meteor 1.8.x
+		npm_call -g install npm
+		npm_call -g install node-gyp
+		# Latest fibers for Meteor 1.8.x
 		sudo mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp
 		sudo mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp
-	        npm_call -g install fibers
-	        # Install Meteor, if it's not yet installed
-	        curl https://install.meteor.com | bash
+		npm_call -g install fibers
+		# Install Meteor, if it's not yet installed
+		curl https://install.meteor.com | bash
 		sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
 		sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
 		break
 		break
 		;;
 		;;
-        "Build Wekan")
+
+    "Build Wekan")
 		echo "Building Wekan."
 		echo "Building Wekan."
 		#wekan_repo_check
 		#wekan_repo_check
 		# REPOS BELOW ARE INCLUDED TO WEKAN REPO
 		# REPOS BELOW ARE INCLUDED TO WEKAN REPO
@@ -148,7 +149,7 @@ do
 		rm -rf .build
 		rm -rf .build
 		meteor build .build --directory
 		meteor build .build --directory
 		cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
 		cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
-    # Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
+		# Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
 		rm -rf .build/bundle/programs/web.browser.legacy
 		rm -rf .build/bundle/programs/web.browser.legacy
 		#Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
 		#Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
 		#https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
 		#https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
@@ -164,9 +165,26 @@ do
 		echo Done.
 		echo Done.
 		break
 		break
 		;;
 		;;
-        "Quit")
+
+    "Run Meteor for development on Ethernet IP address port 4000")
+		IPADDRESS=$(ip addr show enp2s0 | grep 'inet ' | cut -d: -f2 | awk '{ print $2}' | cut -d '/' -f 1)
+		WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000
+		break
+		;;
+
+    "Run Meteor for development on Custom IP address and port")
+		ip address
+		echo "From above list, what is your IP address?"
+		read IPADDRESS
+		echo "On what port you would like to run Wekan?"
+		read PORT
+    WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:$PORT meteor run --exclude-archs web.browser.legacy,web.cordova --port $PORT
+		break
+    ;;
+
+    "Quit")
 		break
 		break
-            ;;
-        *) echo invalid option;;
+    ;;
+    *) echo invalid option;;
     esac
     esac
 done
 done

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

@@ -42,6 +42,9 @@ tx pull -f -l sl_SI
 echo "Spanish:"
 echo "Spanish:"
 tx pull -f -l es
 tx pull -f -l es
 
 
+echo "Spanish (Chile):"
+tx pull -f -l es_CL
+
 echo "Spanish (Argentina):"
 echo "Spanish (Argentina):"
 tx pull -f -l es_AR
 tx pull -f -l es_AR
 
 

+ 1 - 1
sandstorm.js

@@ -22,7 +22,7 @@ const sandstormBoard = {
 
 
 if (isSandstorm && Meteor.isServer) {
 if (isSandstorm && Meteor.isServer) {
   const fs = require('fs');
   const fs = require('fs');
-  const Capnp = Npm.require(`capnp`);
+  const Capnp = Npm.require('capnp');
   const Package = Capnp.importSystem('sandstorm/package.capnp');
   const Package = Capnp.importSystem('sandstorm/package.capnp');
   const Powerbox = Capnp.importSystem('sandstorm/powerbox.capnp');
   const Powerbox = Capnp.importSystem('sandstorm/powerbox.capnp');
   const Identity = Capnp.importSystem('sandstorm/identity.capnp');
   const Identity = Capnp.importSystem('sandstorm/identity.capnp');

+ 0 - 1
server/migrations.js

@@ -1045,7 +1045,6 @@ Migrations.add('add-sort-field-to-boards', () => {
 import { MongoInternals } from 'meteor/mongo';
 import { MongoInternals } from 'meteor/mongo';
 
 
 Migrations.add('change-attachment-library', () => {
 Migrations.add('change-attachment-library', () => {
-	const http = require('http');
 	const fs = require('fs');
 	const fs = require('fs');
 	CFSAttachments.find().forEach(file => {
 	CFSAttachments.find().forEach(file => {
     const bucket = new MongoInternals.NpmModule.GridFSBucket(MongoInternals.defaultRemoteCollectionDriver().mongo.db, {bucketName: 'cfs_gridfs.attachments'});
     const bucket = new MongoInternals.NpmModule.GridFSBucket(MongoInternals.defaultRemoteCollectionDriver().mongo.db, {bucketName: 'cfs_gridfs.attachments'});