Explorar o código

Merge branch 'devel' into greenkeeper/initial

Lauri Ojansivu %!s(int64=7) %!d(string=hai) anos
pai
achega
50f751e0a9
Modificáronse 77 ficheiros con 1902 adicións e 152 borrados
  1. 2 0
      .eslintrc.json
  2. 1 0
      .gitignore
  3. 8 0
      CHANGELOG.md
  4. 3 0
      client/components/activities/activities.jade
  5. 5 0
      client/components/activities/activities.js
  6. 1 0
      client/components/boards/boardHeader.jade
  7. 4 0
      client/components/boards/boardHeader.js
  8. 76 0
      client/components/cards/cardCustomFields.jade
  9. 179 0
      client/components/cards/cardCustomFields.js
  10. 0 16
      client/components/cards/cardDate.jade
  11. 2 2
      client/components/cards/cardDate.js
  12. 0 19
      client/components/cards/cardDate.styl
  13. 8 0
      client/components/cards/cardDetails.jade
  14. 1 0
      client/components/cards/cardDetails.js
  15. 5 3
      client/components/cards/cardDetails.styl
  16. 15 0
      client/components/forms/datepicker.jade
  17. 17 0
      client/components/forms/datepicker.styl
  18. 3 0
      client/components/forms/forms.styl
  19. 7 0
      client/components/lists/listBody.js
  20. 3 0
      client/components/main/popup.styl
  21. 1 0
      client/components/sidebar/sidebar.js
  22. 39 22
      client/components/sidebar/sidebar.styl
  23. 52 0
      client/components/sidebar/sidebarCustomFields.jade
  24. 131 0
      client/components/sidebar/sidebarCustomFields.js
  25. 86 0
      client/lib/datepicker.js
  26. 22 0
      i18n/ar.i18n.json
  27. 22 0
      i18n/bg.i18n.json
  28. 22 0
      i18n/br.i18n.json
  29. 22 0
      i18n/ca.i18n.json
  30. 22 0
      i18n/cs.i18n.json
  31. 22 0
      i18n/de.i18n.json
  32. 22 0
      i18n/el.i18n.json
  33. 22 0
      i18n/en-GB.i18n.json
  34. 22 0
      i18n/en.i18n.json
  35. 22 0
      i18n/eo.i18n.json
  36. 22 0
      i18n/es-AR.i18n.json
  37. 22 0
      i18n/es.i18n.json
  38. 22 0
      i18n/eu.i18n.json
  39. 22 0
      i18n/fa.i18n.json
  40. 22 0
      i18n/fi.i18n.json
  41. 22 0
      i18n/fr.i18n.json
  42. 22 0
      i18n/gl.i18n.json
  43. 22 0
      i18n/he.i18n.json
  44. 22 0
      i18n/hu.i18n.json
  45. 22 0
      i18n/hy.i18n.json
  46. 22 0
      i18n/id.i18n.json
  47. 22 0
      i18n/ig.i18n.json
  48. 22 0
      i18n/it.i18n.json
  49. 22 0
      i18n/ja.i18n.json
  50. 22 0
      i18n/ko.i18n.json
  51. 22 0
      i18n/lv.i18n.json
  52. 22 0
      i18n/mn.i18n.json
  53. 22 0
      i18n/nb.i18n.json
  54. 22 0
      i18n/nl.i18n.json
  55. 22 0
      i18n/pl.i18n.json
  56. 22 0
      i18n/pt-BR.i18n.json
  57. 22 0
      i18n/pt.i18n.json
  58. 22 0
      i18n/ro.i18n.json
  59. 22 0
      i18n/ru.i18n.json
  60. 22 0
      i18n/sr.i18n.json
  61. 22 0
      i18n/sv.i18n.json
  62. 22 0
      i18n/ta.i18n.json
  63. 22 0
      i18n/th.i18n.json
  64. 22 0
      i18n/tr.i18n.json
  65. 22 0
      i18n/uk.i18n.json
  66. 22 0
      i18n/vi.i18n.json
  67. 22 0
      i18n/zh-CN.i18n.json
  68. 22 0
      i18n/zh-TW.i18n.json
  69. 8 0
      models/activities.js
  70. 79 79
      models/attachments.js
  71. 4 0
      models/boards.js
  72. 69 0
      models/cards.js
  73. 132 0
      models/customFields.js
  74. 5 5
      sandstorm.js
  75. 6 6
      server/migrations.js
  76. 1 0
      server/publications/boards.js
  77. 3 0
      server/publications/customFields.js

+ 2 - 0
.eslintrc.json

@@ -100,7 +100,9 @@
     "Attachments": true,
     "Attachments": true,
     "Boards": true,
     "Boards": true,
     "CardComments": true,
     "CardComments": true,
+    "DatePicker" : true,
     "Cards": true,
     "Cards": true,
+    "CustomFields": true,
     "Lists": true,
     "Lists": true,
     "UnsavedEditCollection": true,
     "UnsavedEditCollection": true,
     "Users": true,
     "Users": true,

+ 1 - 0
.gitignore

@@ -15,3 +15,4 @@ package-lock.json
 **/prime
 **/prime
 **/*.snap
 **/*.snap
 snap/.snapcraft/
 snap/.snapcraft/
+.idea

+ 8 - 0
CHANGELOG.md

@@ -1,3 +1,11 @@
+# Upcoming Wekan release
+
+This release adds the following new features:
+
+* [Custom Fields](https://github.com/wekan/wekan/issues/807).
+
+Thanks to GitHub users feuerball11, papoola and xet7 for their contributions.
+
 # v0.95 2018-05-08 Wekan release
 # v0.95 2018-05-08 Wekan release
 
 
 This release adds the following new features:
 This release adds the following new features:

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

@@ -53,6 +53,9 @@ template(name="boardActivities")
         if($eq activityType 'createCard')
         if($eq activityType 'createCard')
           | {{{_ 'activity-added' cardLink boardLabel}}}.
           | {{{_ 'activity-added' cardLink boardLabel}}}.
 
 
+        if($eq activityType 'createCustomField')
+          | {{_ 'activity-customfield-created' customField}}.
+
         if($eq activityType 'createList')
         if($eq activityType 'createList')
           | {{_ 'activity-added' list.title boardLabel}}.
           | {{_ 'activity-added' list.title boardLabel}}.
 
 

+ 5 - 0
client/components/activities/activities.js

@@ -91,6 +91,11 @@ BlazeComponent.extendComponent({
     }, attachment.name()));
     }, attachment.name()));
   },
   },
 
 
+  customField() {
+    const customField = this.currentData().customField();
+    return customField.name;
+  },
+
   events() {
   events() {
     return [{
     return [{
       // XXX We should use Popup.afterConfirmation here
       // XXX We should use Popup.afterConfirmation here

+ 1 - 0
client/components/boards/boardHeader.jade

@@ -113,6 +113,7 @@ template(name="boardHeaderBar")
 
 
 template(name="boardMenuPopup")
 template(name="boardMenuPopup")
   ul.pop-over-list
   ul.pop-over-list
+    li: a.js-custom-fields {{_ 'custom-fields'}}
     li: a.js-open-archives {{_ 'archived-items'}}
     li: a.js-open-archives {{_ 'archived-items'}}
     if currentUser.isBoardAdmin
     if currentUser.isBoardAdmin
       li: a.js-change-board-color {{_ 'board-change-color'}}
       li: a.js-change-board-color {{_ 'board-change-color'}}

+ 4 - 0
client/components/boards/boardHeader.js

@@ -1,5 +1,9 @@
 Template.boardMenuPopup.events({
 Template.boardMenuPopup.events({
   'click .js-rename-board': Popup.open('boardChangeTitle'),
   'click .js-rename-board': Popup.open('boardChangeTitle'),
+  'click .js-custom-fields'() {
+    Sidebar.setView('customFields');
+    Popup.close();
+  },
   'click .js-open-archives'() {
   'click .js-open-archives'() {
     Sidebar.setView('archives');
     Sidebar.setView('archives');
     Popup.close();
     Popup.close();

+ 76 - 0
client/components/cards/cardCustomFields.jade

@@ -0,0 +1,76 @@
+template(name="cardCustomFieldsPopup")
+    ul.pop-over-list
+        each board.customFields
+            li.item(class="")
+                a.name.js-select-field(href="#")
+                    span.full-name
+                        = name
+                    if hasCustomField
+                        i.fa.fa-check
+    hr
+    a.quiet-button.full.js-settings
+        i.fa.fa-cog
+        span {{_ 'settings'}}
+
+template(name="cardCustomField")
+    +Template.dynamic(template=getTemplate)
+
+template(name="cardCustomField-text")
+    if canModifyCard
+        +inlinedForm(classNames="js-card-customfield-text")
+            +editor(autofocus=true)
+                = value
+            .edit-controls.clearfix
+                button.primary(type="submit") {{_ 'save'}}
+                a.fa.fa-times-thin.js-close-inlined-form
+        else
+            a.js-open-inlined-form
+                if value
+                    +viewer
+                        = value
+                else
+                    | {{_ 'edit'}}
+
+template(name="cardCustomField-number")
+    if canModifyCard
+        +inlinedForm(classNames="js-card-customfield-number")
+            input(type="number" value=data.value)
+            .edit-controls.clearfix
+                button.primary(type="submit") {{_ 'save'}}
+                a.fa.fa-times-thin.js-close-inlined-form
+        else
+            a.js-open-inlined-form
+                if value
+                    = value
+                else
+                    | {{_ 'edit'}}
+
+template(name="cardCustomField-date")
+    if canModifyCard
+        a.js-edit-date(title="{{showTitle}}" class="{{classes}}")
+            if value
+                div.card-date
+                    time(datetime="{{showISODate}}")
+                        | {{showDate}}
+            else
+                | {{_ 'edit'}}
+
+template(name="cardCustomField-dropdown")
+    if canModifyCard
+        +inlinedForm(classNames="js-card-customfield-dropdown")
+            select.inline
+                each items
+                    if($eq data.value this._id)
+                        option(value=_id selected="selected") {{name}}
+                    else
+                        option(value=_id) {{name}}
+            .edit-controls.clearfix
+                button.primary(type="submit") {{_ 'save'}}
+                a.fa.fa-times-thin.js-close-inlined-form
+        else
+            a.js-open-inlined-form
+                if value
+                    +viewer
+                        = selectedItem
+                else
+                    | {{_ 'edit'}}

+ 179 - 0
client/components/cards/cardCustomFields.js

@@ -0,0 +1,179 @@
+Template.cardCustomFieldsPopup.helpers({
+  hasCustomField() {
+    const card = Cards.findOne(Session.get('currentCard'));
+    const customFieldId = this._id;
+    return card.customFieldIndex(customFieldId) > -1;
+  },
+});
+
+Template.cardCustomFieldsPopup.events({
+  'click .js-select-field'(evt) {
+    const card = Cards.findOne(Session.get('currentCard'));
+    const customFieldId = this._id;
+    card.toggleCustomField(customFieldId);
+    evt.preventDefault();
+  },
+  'click .js-settings'(evt) {
+    EscapeActions.executeUpTo('detailsPane');
+    Sidebar.setView('customFields');
+    evt.preventDefault();
+  },
+});
+
+// cardCustomField
+const CardCustomField = BlazeComponent.extendComponent({
+
+  getTemplate() {
+    return `cardCustomField-${this.data().definition.type}`;
+  },
+
+  onCreated() {
+    const self = this;
+    self.card = Cards.findOne(Session.get('currentCard'));
+    self.customFieldId = this.data()._id;
+  },
+
+  canModifyCard() {
+    return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
+  },
+});
+CardCustomField.register('cardCustomField');
+
+// cardCustomField-text
+(class extends CardCustomField {
+
+  onCreated() {
+    super.onCreated();
+  }
+
+  events() {
+    return [{
+      'submit .js-card-customfield-text'(evt) {
+        evt.preventDefault();
+        const value = this.currentComponent().getValue();
+        this.card.setCustomField(this.customFieldId, value);
+      },
+    }];
+  }
+
+}).register('cardCustomField-text');
+
+// cardCustomField-number
+(class extends CardCustomField {
+
+  onCreated() {
+    super.onCreated();
+  }
+
+  events() {
+    return [{
+      'submit .js-card-customfield-number'(evt) {
+        evt.preventDefault();
+        const value = parseInt(this.find('input').value, 10);
+        this.card.setCustomField(this.customFieldId, value);
+      },
+    }];
+  }
+
+}).register('cardCustomField-number');
+
+// cardCustomField-date
+(class extends CardCustomField {
+
+  onCreated() {
+    super.onCreated();
+    const self = this;
+    self.date = ReactiveVar();
+    self.now = ReactiveVar(moment());
+    window.setInterval(() => {
+      self.now.set(moment());
+    }, 60000);
+
+    self.autorun(() => {
+      self.date.set(moment(self.data().value));
+    });
+  }
+
+  showDate() {
+    // this will start working once mquandalle:moment
+    // is updated to at least moment.js 2.10.5
+    // until then, the date is displayed in the "L" format
+    return this.date.get().calendar(null, {
+      sameElse: 'llll',
+    });
+  }
+
+  showISODate() {
+    return this.date.get().toISOString();
+  }
+
+  classes() {
+    if (this.date.get().isBefore(this.now.get(), 'minute') &&
+            this.now.get().isBefore(this.data().value)) {
+      return 'current';
+    }
+    return '';
+  }
+
+  showTitle() {
+    return `${TAPi18n.__('card-start-on')} ${this.date.get().format('LLLL')}`;
+  }
+
+  events() {
+    return [{
+      'click .js-edit-date': Popup.open('cardCustomField-date'),
+    }];
+  }
+
+}).register('cardCustomField-date');
+
+// cardCustomField-datePopup
+(class extends DatePicker {
+  onCreated() {
+    super.onCreated();
+    const self = this;
+    self.card = Cards.findOne(Session.get('currentCard'));
+    self.customFieldId = this.data()._id;
+    this.data().value && this.date.set(moment(this.data().value));
+  }
+
+  _storeDate(date) {
+    this.card.setCustomField(this.customFieldId, date);
+  }
+
+  _deleteDate() {
+    this.card.setCustomField(this.customFieldId, '');
+  }
+}).register('cardCustomField-datePopup');
+
+// cardCustomField-dropdown
+(class extends CardCustomField {
+
+  onCreated() {
+    super.onCreated();
+    this._items = this.data().definition.settings.dropdownItems;
+    this.items = this._items.slice(0);
+    this.items.unshift({
+      _id: '',
+      name: TAPi18n.__('custom-field-dropdown-none'),
+    });
+  }
+
+  selectedItem() {
+    const selected = this._items.find((item) => {
+      return item._id === this.data().value;
+    });
+    return (selected) ? selected.name : TAPi18n.__('custom-field-dropdown-unknown');
+  }
+
+  events() {
+    return [{
+      'submit .js-card-customfield-dropdown'(evt) {
+        evt.preventDefault();
+        const value = this.find('select').value;
+        this.card.setCustomField(this.customFieldId, value);
+      },
+    }];
+  }
+
+}).register('cardCustomField-dropdown');

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

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

+ 2 - 2
client/components/cards/cardDate.js

@@ -110,7 +110,7 @@ Template.dateBadge.helpers({
 
 
 
 
 // editCardStartDatePopup
 // editCardStartDatePopup
-(class extends EditCardDate {
+(class extends DatePicker {
   onCreated() {
   onCreated() {
     super.onCreated();
     super.onCreated();
     this.data().startAt && this.date.set(moment(this.data().startAt));
     this.data().startAt && this.date.set(moment(this.data().startAt));
@@ -133,7 +133,7 @@ Template.dateBadge.helpers({
 }).register('editCardStartDatePopup');
 }).register('editCardStartDatePopup');
 
 
 // editCardDueDatePopup
 // editCardDueDatePopup
-(class extends EditCardDate {
+(class extends DatePicker {
   onCreated() {
   onCreated() {
     super.onCreated();
     super.onCreated();
     this.data().dueAt && this.date.set(moment(this.data().dueAt));
     this.data().dueAt && this.date.set(moment(this.data().dueAt));

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

@@ -1,22 +1,3 @@
-.edit-card-date
-  .fields
-    .left
-      width: 56%
-    .right
-      width: 38%
-  .datepicker
-    width: 100%
-    table
-      width: 100%
-      border: none
-      border-spacing: 0
-      border-collapse: collapse
-      thead
-        background: none
-      td, th
-        box-sizing: border-box
-
-
 .card-date
 .card-date
   display: block
   display: block
   border-radius: 4px
   border-radius: 4px

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

@@ -65,6 +65,13 @@ template(name="cardDetails")
           a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
           a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
             i.fa.fa-plus
             i.fa.fa-plus
 
 
+    .card-details-items
+      each customFieldsWD
+        .card-details-item.card-details-item-customfield
+          h3.card-details-item-title
+            = definition.name
+          +cardCustomField
+
     .card-details-items
     .card-details-items
       if spentTime
       if spentTime
         .card-details-item.card-details-item-spent
         .card-details-item.card-details-item-spent
@@ -144,6 +151,7 @@ template(name="cardDetailsActionsPopup")
       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'}}
       li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}}
       li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}}
+      li: a.js-custom-fields {{_ 'card-edit-custom-fields'}}
       li: a.js-start-date {{_ 'editCardStartDatePopup-title'}}
       li: a.js-start-date {{_ 'editCardStartDatePopup-title'}}
       li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
       li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
       li: a.js-end-date {{_ 'editCardEndDatePopup-title'}}
       li: a.js-end-date {{_ 'editCardEndDatePopup-title'}}

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

@@ -216,6 +216,7 @@ Template.cardDetailsActionsPopup.events({
   'click .js-labels': Popup.open('cardLabels'),
   'click .js-labels': Popup.open('cardLabels'),
   'click .js-attachments': Popup.open('cardAttachments'),
   'click .js-attachments': Popup.open('cardAttachments'),
   'click .js-received-date': Popup.open('editCardReceivedDate'),
   'click .js-received-date': Popup.open('editCardReceivedDate'),
+  'click .js-custom-fields': Popup.open('cardCustomFields'),
   'click .js-start-date': Popup.open('editCardStartDate'),
   'click .js-start-date': Popup.open('editCardStartDate'),
   'click .js-due-date': Popup.open('editCardDueDate'),
   'click .js-due-date': Popup.open('editCardDueDate'),
   'click .js-end-date': Popup.open('editCardEndDate'),
   'click .js-end-date': Popup.open('editCardEndDate'),

+ 5 - 3
client/components/cards/cardDetails.styl

@@ -69,6 +69,7 @@
 
 
   .card-details-items
   .card-details-items
     display: flex
     display: flex
+    flex-wrap: wrap
     margin: 15px 0
     margin: 15px 0
 
 
     .card-details-item
     .card-details-item
@@ -80,9 +81,10 @@
       &.card-details-item-received,
       &.card-details-item-received,
       &.card-details-item-start,
       &.card-details-item-start,
       &.card-details-item-due,
       &.card-details-item-due,
-      &.card-details-item-end
-        width: 50%
-        flex-shrink: 1
+      &.card-details-item-end,
+      &.card-details-item-customfield
+        max-width: 50%
+        flex-grow: 1
 
 
   .card-details-item-title
   .card-details-item-title
     font-size: 16px
     font-size: 16px

+ 15 - 0
client/components/forms/datepicker.jade

@@ -0,0 +1,15 @@
+template(name="datepicker")
+    .datepicker-container
+        form.edit-date
+            .fields
+                .left
+                    label(for="date") {{_ 'date'}}
+                    input.js-date-field#date(type="text" name="date" value=showDate placeholder=dateFormat autofocus)
+                .right
+                    label(for="time") {{_ 'time'}}
+                    input.js-time-field#time(type="text" name="time" value=showTime placeholder=timeFormat)
+            .js-datepicker
+            if error.get
+                .warning {{_ error.get}}
+            button.primary.wide.left.js-submit-date(type="submit") {{_ 'save'}}
+            button.js-delete-date.negate.wide.right.js-delete-date {{_ 'delete'}}

+ 17 - 0
client/components/forms/datepicker.styl

@@ -0,0 +1,17 @@
+.datepicker-container
+  .fields
+    .left
+      width: 56%
+    .right
+      width: 38%
+  .datepicker
+    width: 100%
+    table
+      width: 100%
+      border: none
+      border-spacing: 0
+      border-collapse: collapse
+      thead
+        background: none
+      td, th
+        box-sizing: border-box

+ 3 - 0
client/components/forms/forms.styl

@@ -85,6 +85,9 @@ select
   width: 256px
   width: 256px
   margin-bottom: 8px
   margin-bottom: 8px
 
 
+  &.inline
+  	width: 100%
+
 option[disabled]
 option[disabled]
   color: #8c8c8c
   color: #8c8c8c
 
 

+ 7 - 0
client/components/lists/listBody.js

@@ -35,6 +35,10 @@ BlazeComponent.extendComponent({
 
 
     const members = formComponent.members.get();
     const members = formComponent.members.get();
     const labelIds = formComponent.labels.get();
     const labelIds = formComponent.labels.get();
+    const customFields = formComponent.customFields.get();
+    //console.log('members', members);
+    //console.log('labelIds', labelIds);
+    //console.log('customFields', customFields);
 
 
     const boardId = this.data().board()._id;
     const boardId = this.data().board()._id;
     let swimlaneId = '';
     let swimlaneId = '';
@@ -49,6 +53,7 @@ BlazeComponent.extendComponent({
         title,
         title,
         members,
         members,
         labelIds,
         labelIds,
+        customFields,
         listId: this.data()._id,
         listId: this.data()._id,
         boardId: this.data().board()._id,
         boardId: this.data().board()._id,
         sort: sortIndex,
         sort: sortIndex,
@@ -146,11 +151,13 @@ BlazeComponent.extendComponent({
   onCreated() {
   onCreated() {
     this.labels = new ReactiveVar([]);
     this.labels = new ReactiveVar([]);
     this.members = new ReactiveVar([]);
     this.members = new ReactiveVar([]);
+    this.customFields = new ReactiveVar([]);
   },
   },
 
 
   reset() {
   reset() {
     this.labels.set([]);
     this.labels.set([]);
     this.members.set([]);
     this.members.set([]);
+    this.customFields.set([]);
   },
   },
 
 
   getLabels() {
   getLabels() {

+ 3 - 0
client/components/main/popup.styl

@@ -33,6 +33,9 @@ $popupWidth = 300px
   textarea
   textarea
     height: 72px
     height: 72px
 
 
+  form a span
+    padding: 0 0.5rem
+
   .header
   .header
     height: 36px
     height: 36px
     position: relative
     position: relative

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

@@ -6,6 +6,7 @@ const viewTitles = {
   filter: 'filter-cards',
   filter: 'filter-cards',
   search: 'search-cards',
   search: 'search-cards',
   multiselection: 'multi-selection',
   multiselection: 'multi-selection',
+  customFields: 'custom-fields',
   archives: 'archives',
   archives: 'archives',
 };
 };
 
 

+ 39 - 22
client/components/sidebar/sidebar.styl

@@ -45,28 +45,45 @@
       display: flex
       display: flex
       flex-direction: column
       flex-direction: column
 
 
-      li > a
-        display: flex
-        height: 30px
-        margin: 0
-        padding: 4px
-        border-radius: 3px
-        align-items: center
-
-        &:hover
-          &, i, .quiet
-            color white
-
-        .member, .card-label
-          margin-right: 7px
-          margin-top: 5px
-
-        .sidebar-list-item-description
-          flex: 1
-          overflow: ellipsis
-
-        .fa.fa-check
-          margin: 0 4px
+      li
+        & > a
+          display: flex
+          height: 30px
+          margin: 0
+          padding: 4px
+          border-radius: 3px
+          align-items: center
+
+          &:hover
+            &, i, .quiet
+              color white
+
+          .member, .card-label
+            margin-right: 7px
+            margin-top: 5px
+
+          .minicard-edit-button
+            float: right
+            padding: 8px
+            border-radius: 3px
+
+          .sidebar-list-item-description
+            flex: 1
+            overflow: ellipsis
+
+          .fa.fa-check
+            margin: 0 4px
+
+        .minicard
+          padding: 6px 8px 4px
+
+          .minicard-edit-button
+            float: right
+            padding: 4px
+            border-radius: 3px
+
+            &:hover
+              background: #dbdbdb
 
 
     .sidebar-btn
     .sidebar-btn
       display: block
       display: block

+ 52 - 0
client/components/sidebar/sidebarCustomFields.jade

@@ -0,0 +1,52 @@
+template(name="customFieldsSidebar")
+    ul.sidebar-list
+        each customFields
+            li
+                div.minicard-wrapper.js-minicard
+                    div.minicard
+                        a.fa.fa-pencil.js-edit-custom-field.minicard-edit-button
+                        div.minicard-title
+                            | {{ name }} ({{ type }})
+
+    if currentUser.isBoardMember
+        hr
+        a.sidebar-btn.js-open-create-custom-field
+            i.fa.fa-plus
+            span {{_ 'createCustomField'}}
+
+template(name="createCustomFieldPopup")
+    form
+        label
+            | {{_ 'name'}}
+            unless _id
+                input.js-field-name(type="text" autofocus)
+            else
+                input.js-field-name(type="text" value=name)
+
+        label
+            | {{_ 'type'}}
+            select.js-field-type(disabled="{{#if _id}}disabled{{/if}}")
+                each types
+                    if selected
+                        option(value=value selected="selected") {{name}}
+                    else
+                        option(value=value) {{name}}
+        div.js-field-settings.js-field-settings-dropdown(class="{{#if isTypeNotSelected 'dropdown'}}hide{{/if}}")
+            label
+                | {{_ 'custom-field-dropdown-options'}}
+            each dropdownItems.get
+                input.js-dropdown-item(type="text" value=name placeholder="")
+            input.js-dropdown-item.last(type="text" value="" placeholder="{{_ 'custom-field-dropdown-options-placeholder'}}")
+        a.flex.js-field-show-on-card
+            .materialCheckBox(class="{{#if showOnCard}}is-checked{{/if}}")
+
+            span {{_ 'show-field-on-card'}}
+        button.primary.wide.left(type="button")
+            | {{_ 'save'}}
+        if _id
+            button.negate.wide.right.js-delete-custom-field(type="button")
+                | {{_ 'delete'}}
+
+template(name="deleteCustomFieldPopup")
+    p {{_ "custom-field-delete-pop"}}
+    button.js-confirm.negate.full(type="submit") {{_ 'delete'}}

+ 131 - 0
client/components/sidebar/sidebarCustomFields.js

@@ -0,0 +1,131 @@
+BlazeComponent.extendComponent({
+
+  customFields() {
+    return CustomFields.find({
+      boardId: Session.get('currentBoard'),
+    });
+  },
+
+  events() {
+    return [{
+      'click .js-open-create-custom-field': Popup.open('createCustomField'),
+      'click .js-edit-custom-field': Popup.open('editCustomField'),
+    }];
+  },
+
+}).register('customFieldsSidebar');
+
+const CreateCustomFieldPopup = BlazeComponent.extendComponent({
+
+  _types: ['text', 'number', 'date', 'dropdown'],
+
+  onCreated() {
+    this.type = new ReactiveVar((this.data().type) ? this.data().type : this._types[0]);
+    this.dropdownItems = new ReactiveVar((this.data().settings && this.data().settings.dropdownItems) ? this.data().settings.dropdownItems : []);
+  },
+
+  types() {
+    const currentType = this.data().type;
+    return this._types.
+      map((type) => {return {
+        value: type,
+        name: TAPi18n.__(`custom-field-${type}`),
+        selected: type === currentType,
+      };});
+  },
+
+  isTypeNotSelected(type) {
+    return this.type.get() !== type;
+  },
+
+  getDropdownItems() {
+    const items = this.dropdownItems.get();
+    Array.from(this.findAll('.js-field-settings-dropdown input')).forEach((el, index) => {
+      //console.log('each item!', index, el.value);
+      if (!items[index]) items[index] = {
+        _id: Random.id(6),
+      };
+      items[index].name = el.value.trim();
+    });
+    return items;
+  },
+
+  getSettings() {
+    const settings = {};
+    switch (this.type.get()) {
+    case 'dropdown': {
+      const dropdownItems = this.getDropdownItems().filter((item) => !!item.name.trim());
+      settings.dropdownItems = dropdownItems;
+      break;
+    }
+    }
+    return settings;
+  },
+
+  events() {
+    return [{
+      'change .js-field-type'(evt) {
+        const value = evt.target.value;
+        this.type.set(value);
+      },
+      'keydown .js-dropdown-item.last'(evt) {
+        if (evt.target.value.trim() && evt.keyCode === 13) {
+          const items = this.getDropdownItems();
+          this.dropdownItems.set(items);
+          evt.target.value = '';
+        }
+      },
+      'click .js-field-show-on-card'(evt) {
+        let $target = $(evt.target);
+        if(!$target.hasClass('js-field-show-on-card')){
+          $target = $target.parent();
+        }
+        $target.find('.materialCheckBox').toggleClass('is-checked');
+        $target.toggleClass('is-checked');
+      },
+      'click .primary'(evt) {
+        evt.preventDefault();
+
+        const data = {
+          boardId: Session.get('currentBoard'),
+          name: this.find('.js-field-name').value.trim(),
+          type: this.type.get(),
+          settings: this.getSettings(),
+          showOnCard: this.find('.js-field-show-on-card.is-checked') !== null,
+        };
+
+        // insert or update
+        if (!this.data()._id) {
+          CustomFields.insert(data);
+        } else {
+          CustomFields.update(this.data()._id, {$set: data});
+        }
+
+        Popup.back();
+      },
+      'click .js-delete-custom-field': Popup.afterConfirm('deleteCustomField', function() {
+        const customFieldId = this._id;
+        CustomFields.remove(customFieldId);
+        Popup.close();
+      }),
+    }];
+  },
+
+});
+CreateCustomFieldPopup.register('createCustomFieldPopup');
+
+(class extends CreateCustomFieldPopup {
+
+  template() {
+    return 'createCustomFieldPopup';
+  }
+
+}).register('editCustomFieldPopup');
+
+/*Template.deleteCustomFieldPopup.events({
+  'submit'(evt) {
+    const customFieldId = this._id;
+    CustomFields.remove(customFieldId);
+    Popup.close();
+  }
+});*/

+ 86 - 0
client/lib/datepicker.js

@@ -0,0 +1,86 @@
+DatePicker = BlazeComponent.extendComponent({
+  template() {
+    return 'datepicker';
+  },
+
+  onCreated() {
+    this.error = new ReactiveVar('');
+    this.card = this.data();
+    this.date = new ReactiveVar(moment.invalid());
+  },
+
+  onRendered() {
+    const $picker = this.$('.js-datepicker').datepicker({
+      todayHighlight: true,
+      todayBtn: 'linked',
+      language: TAPi18n.getLanguage(),
+    }).on('changeDate', function(evt) {
+      this.find('#date').value = moment(evt.date).format('L');
+      this.error.set('');
+      this.find('#time').focus();
+    }.bind(this));
+
+    if (this.date.get().isValid()) {
+      $picker.datepicker('update', this.date.get().toDate());
+    }
+  },
+
+  showDate() {
+    if (this.date.get().isValid())
+      return this.date.get().format('L');
+    return '';
+  },
+  showTime() {
+    if (this.date.get().isValid())
+      return this.date.get().format('LT');
+    return '';
+  },
+  dateFormat() {
+    return moment.localeData().longDateFormat('L');
+  },
+  timeFormat() {
+    return moment.localeData().longDateFormat('LT');
+  },
+
+  events() {
+    return [{
+      'keyup .js-date-field'() {
+        // parse for localized date format in strict mode
+        const dateMoment = moment(this.find('#date').value, 'L', true);
+        if (dateMoment.isValid()) {
+          this.error.set('');
+          this.$('.js-datepicker').datepicker('update', dateMoment.toDate());
+        }
+      },
+      'keyup .js-time-field'() {
+        // parse for localized time format in strict mode
+        const dateMoment = moment(this.find('#time').value, 'LT', true);
+        if (dateMoment.isValid()) {
+          this.error.set('');
+        }
+      },
+      'submit .edit-date'(evt) {
+        evt.preventDefault();
+
+        // if no time was given, init with 12:00
+        const time = evt.target.time.value || moment(new Date().setHours(12, 0, 0)).format('LT');
+
+        const dateString = `${evt.target.date.value} ${time}`;
+        const newDate = moment(dateString, 'L LT', true);
+        if (newDate.isValid()) {
+          this._storeDate(newDate.toDate());
+          Popup.close();
+        }
+        else {
+          this.error.set('invalid-date');
+          evt.target.date.focus();
+        }
+      },
+      'click .js-delete-date'(evt) {
+        evt.preventDefault();
+        this._deleteDate();
+        Popup.close();
+      },
+    }];
+  },
+});

+ 22 - 0
i18n/ar.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "علق على __comment__ : __card__",
     "act-addComment": "علق على __comment__ : __card__",
     "act-createBoard": "احدث __board__",
     "act-createBoard": "احدث __board__",
     "act-createCard": "اضاف __card__ الى __list__",
     "act-createCard": "اضاف __card__ الى __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "اضاف __list__ الى __board__",
     "act-createList": "اضاف __list__ الى __board__",
     "act-addBoardMember": "اضاف __member__ الى __board__",
     "act-addBoardMember": "اضاف __member__ الى __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "إرفاق %s ل %s",
     "activity-attached": "إرفاق %s ل %s",
     "activity-created": "أنشأ %s",
     "activity-created": "أنشأ %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "استبعاد %s عن %s",
     "activity-excluded": "استبعاد %s عن %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "مستحق في",
     "card-due-on": "مستحق في",
     "card-spent": "Spent Time",
     "card-spent": "Spent Time",
     "card-edit-attachments": "تعديل المرفقات",
     "card-edit-attachments": "تعديل المرفقات",
+    "card-edit-custom-fields": "Edit custom fields",
     "card-edit-labels": "تعديل العلامات",
     "card-edit-labels": "تعديل العلامات",
     "card-edit-members": "تعديل الأعضاء",
     "card-edit-members": "تعديل الأعضاء",
     "card-labels-title": "تعديل علامات البطاقة.",
     "card-labels-title": "تعديل علامات البطاقة.",
@@ -118,6 +121,8 @@
     "card-start": "بداية",
     "card-start": "بداية",
     "card-start-on": "يبدأ في",
     "card-start-on": "يبدأ في",
     "cardAttachmentsPopup-title": "إرفاق من",
     "cardAttachmentsPopup-title": "إرفاق من",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "حذف البطاقة ?",
     "cardDeletePopup-title": "حذف البطاقة ?",
     "cardDetailsActionsPopup-title": "إجراءات على البطاقة",
     "cardDetailsActionsPopup-title": "إجراءات على البطاقة",
     "cardLabelsPopup-title": "علامات",
     "cardLabelsPopup-title": "علامات",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "إنشاء لوحة",
     "createBoardPopup-title": "إنشاء لوحة",
     "chooseBoardSourcePopup-title": "استيراد لوحة",
     "chooseBoardSourcePopup-title": "استيراد لوحة",
     "createLabelPopup-title": "إنشاء علامة",
     "createLabelPopup-title": "إنشاء علامة",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "الحالي",
     "current": "الحالي",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "تاريخ",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "تاريخ",
     "date": "تاريخ",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "صورة شخصية افتراضية",
     "default-avatar": "صورة شخصية افتراضية",
     "delete": "حذف",
     "delete": "حذف",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "حذف العلامة ?",
     "deleteLabelPopup-title": "حذف العلامة ?",
     "description": "وصف",
     "description": "وصف",
     "disambiguateMultiLabelPopup-title": "تحديد الإجراء على العلامة",
     "disambiguateMultiLabelPopup-title": "تحديد الإجراء على العلامة",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "تغيير تاريخ البدء",
     "editCardStartDatePopup-title": "تغيير تاريخ البدء",
     "editCardDueDatePopup-title": "تغيير تاريخ الاستحقاق",
     "editCardDueDatePopup-title": "تغيير تاريخ الاستحقاق",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "تعديل العلامة",
     "editLabelPopup-title": "تعديل العلامة",
     "editNotificationPopup-title": "تصحيح الإشعار",
     "editNotificationPopup-title": "تصحيح الإشعار",
@@ -366,6 +386,7 @@
     "title": "عنوان",
     "title": "عنوان",
     "tracking": "تتبع",
     "tracking": "تتبع",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "إلغاء تعيين العضو",
     "unassign-member": "إلغاء تعيين العضو",
     "unsaved-description": "لديك وصف غير محفوظ",
     "unsaved-description": "لديك وصف غير محفوظ",
     "unwatch": "غير مُشاهد",
     "unwatch": "غير مُشاهد",
@@ -430,6 +451,7 @@
     "hours": "الساعات",
     "hours": "الساعات",
     "minutes": "الدقائق",
     "minutes": "الدقائق",
     "seconds": "الثواني",
     "seconds": "الثواني",
+    "show-field-on-card": "Show this field on card",
     "yes": "نعم",
     "yes": "نعم",
     "no": "لا",
     "no": "لا",
     "accounts": "الحسابات",
     "accounts": "الحسابات",

+ 22 - 0
i18n/bg.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "Коментира в __card__: __comment__",
     "act-addComment": "Коментира в __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "прикачи %s към %s",
     "activity-attached": "прикачи %s към %s",
     "activity-created": "създаде %s",
     "activity-created": "създаде %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "изключи %s от %s",
     "activity-excluded": "изключи %s от %s",
     "activity-imported": "импортира %s в/във %s от %s",
     "activity-imported": "импортира %s в/във %s от %s",
     "activity-imported-board": "импортира %s от %s",
     "activity-imported-board": "импортира %s от %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Готова за",
     "card-due-on": "Готова за",
     "card-spent": "Изработено време",
     "card-spent": "Изработено време",
     "card-edit-attachments": "Промени прикачените файлове",
     "card-edit-attachments": "Промени прикачените файлове",
+    "card-edit-custom-fields": "Edit custom fields",
     "card-edit-labels": "Промени етикетите",
     "card-edit-labels": "Промени етикетите",
     "card-edit-members": "Промени членовете",
     "card-edit-members": "Промени членовете",
     "card-labels-title": "Променете етикетите за тази карта",
     "card-labels-title": "Променете етикетите за тази карта",
@@ -118,6 +121,8 @@
     "card-start": "Начало",
     "card-start": "Начало",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Желаете да изтриете картата?",
     "cardDeletePopup-title": "Желаете да изтриете картата?",
     "cardDetailsActionsPopup-title": "Опции",
     "cardDetailsActionsPopup-title": "Опции",
     "cardLabelsPopup-title": "Етикети",
     "cardLabelsPopup-title": "Етикети",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Дата",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Дата",
     "date": "Дата",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Основен аватар",
     "default-avatar": "Основен аватар",
     "delete": "Изтрий",
     "delete": "Изтрий",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Желаете да изтриете етикета?",
     "deleteLabelPopup-title": "Желаете да изтриете етикета?",
     "description": "Описание",
     "description": "Описание",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Промени началната дата",
     "editCardStartDatePopup-title": "Промени началната дата",
     "editCardDueDatePopup-title": "Промени датата за готовност",
     "editCardDueDatePopup-title": "Промени датата за готовност",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Промени изработеното време",
     "editCardSpentTimePopup-title": "Промени изработеното време",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Промени известията",
     "editNotificationPopup-title": "Промени известията",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Следене",
     "tracking": "Следене",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Спри наблюдаването",
     "unwatch": "Спри наблюдаването",
@@ -430,6 +451,7 @@
     "hours": "часа",
     "hours": "часа",
     "minutes": "минути",
     "minutes": "минути",
     "seconds": "секунди",
     "seconds": "секунди",
+    "show-field-on-card": "Show this field on card",
     "yes": "Да",
     "yes": "Да",
     "no": "Не",
     "no": "Не",
     "accounts": "Профили",
     "accounts": "Профили",

+ 22 - 0
i18n/br.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "%s liammet ouzh %s",
     "activity-attached": "%s liammet ouzh %s",
     "activity-created": "%s krouet",
     "activity-created": "%s krouet",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "%s enporzhiet eus %s da %s",
     "activity-imported": "%s enporzhiet eus %s da %s",
     "activity-imported-board": "%s enporzhiet da %s",
     "activity-imported-board": "%s enporzhiet da %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Diverkañ ar gartenn ?",
     "cardDeletePopup-title": "Diverkañ ar gartenn ?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Diverkañ",
     "delete": "Diverkañ",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/ca.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "comentat a __card__: __comment__",
     "act-addComment": "comentat a __card__: __comment__",
     "act-createBoard": "creat __board__",
     "act-createBoard": "creat __board__",
     "act-createCard": "afegit/da __card__ a __list__",
     "act-createCard": "afegit/da __card__ a __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "afegit/da __list__ a __board__",
     "act-createList": "afegit/da __list__ a __board__",
     "act-addBoardMember": "afegit/da __member__ a __board__",
     "act-addBoardMember": "afegit/da __member__ a __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "ha adjuntat %s a %s",
     "activity-attached": "ha adjuntat %s a %s",
     "activity-created": "ha creat %s",
     "activity-created": "ha creat %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "ha exclòs %s de %s",
     "activity-excluded": "ha exclòs %s de %s",
     "activity-imported": "importat %s dins %s des de %s",
     "activity-imported": "importat %s dins %s des de %s",
     "activity-imported-board": "importat %s des de %s",
     "activity-imported-board": "importat %s des de %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Finalitza a",
     "card-due-on": "Finalitza a",
     "card-spent": "Temps Dedicat",
     "card-spent": "Temps Dedicat",
     "card-edit-attachments": "Edita arxius adjunts",
     "card-edit-attachments": "Edita arxius adjunts",
+    "card-edit-custom-fields": "Edit custom fields",
     "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",
@@ -118,6 +121,8 @@
     "card-start": "Comença",
     "card-start": "Comença",
     "card-start-on": "Comença a",
     "card-start-on": "Comença a",
     "cardAttachmentsPopup-title": "Adjunta des de",
     "cardAttachmentsPopup-title": "Adjunta des de",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Esborrar fitxa?",
     "cardDeletePopup-title": "Esborrar fitxa?",
     "cardDetailsActionsPopup-title": "Accions de fitxes",
     "cardDetailsActionsPopup-title": "Accions de fitxes",
     "cardLabelsPopup-title": "Etiquetes",
     "cardLabelsPopup-title": "Etiquetes",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Crea tauler",
     "createBoardPopup-title": "Crea tauler",
     "chooseBoardSourcePopup-title": "Importa Tauler",
     "chooseBoardSourcePopup-title": "Importa Tauler",
     "createLabelPopup-title": "Crea etiqueta",
     "createLabelPopup-title": "Crea etiqueta",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "Actual",
     "current": "Actual",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Data",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Data",
     "date": "Data",
     "decline": "Declina",
     "decline": "Declina",
     "default-avatar": "Avatar per defecte",
     "default-avatar": "Avatar per defecte",
     "delete": "Esborra",
     "delete": "Esborra",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Esborra etiqueta",
     "deleteLabelPopup-title": "Esborra etiqueta",
     "description": "Descripció",
     "description": "Descripció",
     "disambiguateMultiLabelPopup-title": "Desfe l'ambigüitat en les etiquetes",
     "disambiguateMultiLabelPopup-title": "Desfe l'ambigüitat en les etiquetes",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Canvia data d'inici",
     "editCardStartDatePopup-title": "Canvia data d'inici",
     "editCardDueDatePopup-title": "Canvia data de finalització",
     "editCardDueDatePopup-title": "Canvia data de finalització",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Canvia temps dedicat",
     "editCardSpentTimePopup-title": "Canvia temps dedicat",
     "editLabelPopup-title": "Canvia etiqueta",
     "editLabelPopup-title": "Canvia etiqueta",
     "editNotificationPopup-title": "Edita la notificació",
     "editNotificationPopup-title": "Edita la notificació",
@@ -366,6 +386,7 @@
     "title": "Títol",
     "title": "Títol",
     "tracking": "En seguiment",
     "tracking": "En seguiment",
     "tracking-info": "Seràs notificat per cada canvi a aquelles fitxes de les que n'eres creador o membre",
     "tracking-info": "Seràs notificat per cada canvi a aquelles fitxes de les que n'eres creador o membre",
+    "type": "Type",
     "unassign-member": "Desassignar membre",
     "unassign-member": "Desassignar membre",
     "unsaved-description": "Tens una descripció sense desar.",
     "unsaved-description": "Tens una descripció sense desar.",
     "unwatch": "Suprimeix observació",
     "unwatch": "Suprimeix observació",
@@ -430,6 +451,7 @@
     "hours": "hores",
     "hours": "hores",
     "minutes": "minuts",
     "minutes": "minuts",
     "seconds": "segons",
     "seconds": "segons",
+    "show-field-on-card": "Show this field on card",
     "yes": "Si",
     "yes": "Si",
     "no": "No",
     "no": "No",
     "accounts": "Comptes",
     "accounts": "Comptes",

+ 22 - 0
i18n/cs.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "komentář k __card__: __comment__",
     "act-addComment": "komentář k __card__: __comment__",
     "act-createBoard": "přidání __board__",
     "act-createBoard": "přidání __board__",
     "act-createCard": "přidání __card__ do __list__",
     "act-createCard": "přidání __card__ do __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "přidání __list__ do __board__",
     "act-createList": "přidání __list__ do __board__",
     "act-addBoardMember": "přidání __member__ do __board__",
     "act-addBoardMember": "přidání __member__ do __board__",
     "act-archivedBoard": "__board__ bylo přesunuto do koše",
     "act-archivedBoard": "__board__ bylo přesunuto do koše",
@@ -30,6 +31,7 @@
     "activity-archived": "%s bylo přesunuto do koše",
     "activity-archived": "%s bylo přesunuto do koše",
     "activity-attached": "přiloženo %s k %s",
     "activity-attached": "přiloženo %s k %s",
     "activity-created": "%s vytvořeno",
     "activity-created": "%s vytvořeno",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "%s vyjmuto z %s",
     "activity-excluded": "%s vyjmuto z %s",
     "activity-imported": "importován %s do %s z %s",
     "activity-imported": "importován %s do %s z %s",
     "activity-imported-board": "importován %s z %s",
     "activity-imported-board": "importován %s z %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Do",
     "card-due-on": "Do",
     "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": "Edit custom fields",
     "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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Začít dne",
     "card-start-on": "Začít dne",
     "cardAttachmentsPopup-title": "Přiložit formulář",
     "cardAttachmentsPopup-title": "Přiložit formulář",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Smazat kartu?",
     "cardDeletePopup-title": "Smazat kartu?",
     "cardDetailsActionsPopup-title": "Akce karty",
     "cardDetailsActionsPopup-title": "Akce karty",
     "cardLabelsPopup-title": "Štítky",
     "cardLabelsPopup-title": "Štítky",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Vytvořit tablo",
     "createBoardPopup-title": "Vytvořit tablo",
     "chooseBoardSourcePopup-title": "Importovat tablo",
     "chooseBoardSourcePopup-title": "Importovat tablo",
     "createLabelPopup-title": "Vytvořit štítek",
     "createLabelPopup-title": "Vytvořit štítek",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "Aktuální",
     "current": "Aktuální",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Datum",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Datum",
     "date": "Datum",
     "decline": "Zamítnout",
     "decline": "Zamítnout",
     "default-avatar": "Výchozí avatar",
     "default-avatar": "Výchozí avatar",
     "delete": "Smazat",
     "delete": "Smazat",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Smazat štítek?",
     "deleteLabelPopup-title": "Smazat štítek?",
     "description": "Popis",
     "description": "Popis",
     "disambiguateMultiLabelPopup-title": "Dvojznačný štítek akce",
     "disambiguateMultiLabelPopup-title": "Dvojznačný štítek akce",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Mírný WIP limit",
     "soft-wip-limit": "Mírný WIP limit",
     "editCardStartDatePopup-title": "Změnit datum startu úkolu",
     "editCardStartDatePopup-title": "Změnit datum startu úkolu",
     "editCardDueDatePopup-title": "Změnit datum dokončení úkolu",
     "editCardDueDatePopup-title": "Změnit datum dokončení úkolu",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Změnit strávený čas",
     "editCardSpentTimePopup-title": "Změnit strávený čas",
     "editLabelPopup-title": "Změnit štítek",
     "editLabelPopup-title": "Změnit štítek",
     "editNotificationPopup-title": "Změnit notifikace",
     "editNotificationPopup-title": "Změnit notifikace",
@@ -366,6 +386,7 @@
     "title": "Název",
     "title": "Název",
     "tracking": "Pozorující",
     "tracking": "Pozorující",
     "tracking-info": "Budete informováni o všech změnách v kartách, u kterých jste tvůrce nebo člen.",
     "tracking-info": "Budete informováni o všech změnách v kartách, u kterých jste tvůrce nebo člen.",
+    "type": "Type",
     "unassign-member": "Vyřadit člena",
     "unassign-member": "Vyřadit člena",
     "unsaved-description": "Popis neni uložen.",
     "unsaved-description": "Popis neni uložen.",
     "unwatch": "Přestat sledovat",
     "unwatch": "Přestat sledovat",
@@ -430,6 +451,7 @@
     "hours": "hodin",
     "hours": "hodin",
     "minutes": "minut",
     "minutes": "minut",
     "seconds": "sekund",
     "seconds": "sekund",
+    "show-field-on-card": "Show this field on card",
     "yes": "Ano",
     "yes": "Ano",
     "no": "Ne",
     "no": "Ne",
     "accounts": "Účty",
     "accounts": "Účty",

+ 22 - 0
i18n/de.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "hat __card__ kommentiert: __comment__",
     "act-addComment": "hat __card__ kommentiert: __comment__",
     "act-createBoard": "hat __board__ erstellt",
     "act-createBoard": "hat __board__ erstellt",
     "act-createCard": "hat __card__ zu __list__ hinzugefügt",
     "act-createCard": "hat __card__ zu __list__ hinzugefügt",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "hat __list__ zu __board__ hinzugefügt",
     "act-createList": "hat __list__ zu __board__ hinzugefügt",
     "act-addBoardMember": "hat __member__ zu __board__ hinzugefügt",
     "act-addBoardMember": "hat __member__ zu __board__ hinzugefügt",
     "act-archivedBoard": "__board__ in den Papierkorb verschoben",
     "act-archivedBoard": "__board__ in den Papierkorb verschoben",
@@ -30,6 +31,7 @@
     "activity-archived": "%s in den Papierkorb verschoben",
     "activity-archived": "%s in den Papierkorb verschoben",
     "activity-attached": "hat %s an %s angehängt",
     "activity-attached": "hat %s an %s angehängt",
     "activity-created": "hat %s erstellt",
     "activity-created": "hat %s erstellt",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "hat %s von %s ausgeschlossen",
     "activity-excluded": "hat %s von %s ausgeschlossen",
     "activity-imported": "hat %s in %s von %s importiert",
     "activity-imported": "hat %s in %s von %s importiert",
     "activity-imported-board": "hat %s von %s importiert",
     "activity-imported-board": "hat %s von %s importiert",
@@ -111,6 +113,7 @@
     "card-due-on": "Fällig am",
     "card-due-on": "Fällig am",
     "card-spent": "Aufgewendete Zeit",
     "card-spent": "Aufgewendete Zeit",
     "card-edit-attachments": "Anhänge ändern",
     "card-edit-attachments": "Anhänge ändern",
+    "card-edit-custom-fields": "Edit custom fields",
     "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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Start am",
     "card-start-on": "Start am",
     "cardAttachmentsPopup-title": "Anhängen von",
     "cardAttachmentsPopup-title": "Anhängen von",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Karte löschen?",
     "cardDeletePopup-title": "Karte löschen?",
     "cardDetailsActionsPopup-title": "Kartenaktionen",
     "cardDetailsActionsPopup-title": "Kartenaktionen",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Board erstellen",
     "createBoardPopup-title": "Board erstellen",
     "chooseBoardSourcePopup-title": "Board importieren",
     "chooseBoardSourcePopup-title": "Board importieren",
     "createLabelPopup-title": "Label erstellen",
     "createLabelPopup-title": "Label erstellen",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "aktuell",
     "current": "aktuell",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Datum",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Datum",
     "date": "Datum",
     "decline": "Ablehnen",
     "decline": "Ablehnen",
     "default-avatar": "Standard Profilbild",
     "default-avatar": "Standard Profilbild",
     "delete": "Löschen",
     "delete": "Löschen",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Label löschen?",
     "deleteLabelPopup-title": "Label löschen?",
     "description": "Beschreibung",
     "description": "Beschreibung",
     "disambiguateMultiLabelPopup-title": "Labels vereinheitlichen",
     "disambiguateMultiLabelPopup-title": "Labels vereinheitlichen",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP-Limit",
     "soft-wip-limit": "Soft WIP-Limit",
     "editCardStartDatePopup-title": "Startdatum ändern",
     "editCardStartDatePopup-title": "Startdatum ändern",
     "editCardDueDatePopup-title": "Fälligkeitsdatum ändern",
     "editCardDueDatePopup-title": "Fälligkeitsdatum ändern",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Aufgewendete Zeit ändern",
     "editCardSpentTimePopup-title": "Aufgewendete Zeit ändern",
     "editLabelPopup-title": "Label ändern",
     "editLabelPopup-title": "Label ändern",
     "editNotificationPopup-title": "Benachrichtigung ändern",
     "editNotificationPopup-title": "Benachrichtigung ändern",
@@ -366,6 +386,7 @@
     "title": "Titel",
     "title": "Titel",
     "tracking": "Folgen",
     "tracking": "Folgen",
     "tracking-info": "Sie werden über alle Änderungen an Karten benachrichtigt, an denen Sie als Ersteller oder Mitglied beteiligt sind.",
     "tracking-info": "Sie werden über alle Änderungen an Karten benachrichtigt, an denen Sie als Ersteller oder Mitglied beteiligt sind.",
+    "type": "Type",
     "unassign-member": "Mitglied entfernen",
     "unassign-member": "Mitglied entfernen",
     "unsaved-description": "Sie haben eine nicht gespeicherte Änderung.",
     "unsaved-description": "Sie haben eine nicht gespeicherte Änderung.",
     "unwatch": "Beobachtung entfernen",
     "unwatch": "Beobachtung entfernen",
@@ -430,6 +451,7 @@
     "hours": "Stunden",
     "hours": "Stunden",
     "minutes": "Minuten",
     "minutes": "Minuten",
     "seconds": "Sekunden",
     "seconds": "Sekunden",
+    "show-field-on-card": "Show this field on card",
     "yes": "Ja",
     "yes": "Ja",
     "no": "Nein",
     "no": "Nein",
     "accounts": "Konten",
     "accounts": "Konten",

+ 22 - 0
i18n/el.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "attached %s to %s",
     "activity-attached": "attached %s to %s",
     "activity-created": "created %s",
     "activity-created": "created %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Έως τις",
     "card-due-on": "Έως τις",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Διαγραφή Κάρτας;",
     "cardDeletePopup-title": "Διαγραφή Κάρτας;",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Ετικέτες",
     "cardLabelsPopup-title": "Ετικέτες",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Ημερομηνία",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Ημερομηνία",
     "date": "Ημερομηνία",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Διαγραφή",
     "delete": "Διαγραφή",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Τίτλος",
     "title": "Τίτλος",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "ώρες",
     "hours": "ώρες",
     "minutes": "λεπτά",
     "minutes": "λεπτά",
     "seconds": "δευτερόλεπτα",
     "seconds": "δευτερόλεπτα",
+    "show-field-on-card": "Show this field on card",
     "yes": "Ναι",
     "yes": "Ναι",
     "no": "Όχι",
     "no": "Όχι",
     "accounts": "Λογαριασμοί",
     "accounts": "Λογαριασμοί",

+ 22 - 0
i18n/en-GB.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "attached %s to %s",
     "activity-attached": "attached %s to %s",
     "activity-created": "created %s",
     "activity-created": "created %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/en.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "attached %s to %s",
     "activity-attached": "attached %s to %s",
     "activity-created": "created %s",
     "activity-created": "created %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/eo.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "Kreiis __board__",
     "act-createBoard": "Kreiis __board__",
     "act-createCard": "Aldonis __card__ al __list__",
     "act-createCard": "Aldonis __card__ al __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "Aldonis __card__ al __board__",
     "act-createList": "Aldonis __card__ al __board__",
     "act-addBoardMember": "Aldonis __member__ al __board__",
     "act-addBoardMember": "Aldonis __member__ al __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "attached %s to %s",
     "activity-attached": "attached %s to %s",
     "activity-created": "Kreiis %s",
     "activity-created": "Kreiis %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Komenco",
     "card-start": "Komenco",
     "card-start-on": "Komencas je la",
     "card-start-on": "Komencas je la",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Etikedoj",
     "cardLabelsPopup-title": "Etikedoj",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Krei tavolon",
     "createBoardPopup-title": "Krei tavolon",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Dato",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Dato",
     "date": "Dato",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Redakti komencdaton",
     "editCardStartDatePopup-title": "Redakti komencdaton",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Ŝanĝi etikedon",
     "editLabelPopup-title": "Ŝanĝi etikedon",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Titolo",
     "title": "Titolo",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/es-AR.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "comentado en __card__: __comment__",
     "act-addComment": "comentado en __card__: __comment__",
     "act-createBoard": "__board__ creado",
     "act-createBoard": "__board__ creado",
     "act-createCard": "agregada __card__ a __list__",
     "act-createCard": "agregada __card__ a __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "agregada __list__ a __board__",
     "act-createList": "agregada __list__ a __board__",
     "act-addBoardMember": "agregado __member__ a __board__",
     "act-addBoardMember": "agregado __member__ a __board__",
     "act-archivedBoard": "__board__ movido a Papelera de Reciclaje",
     "act-archivedBoard": "__board__ movido a Papelera de Reciclaje",
@@ -30,6 +31,7 @@
     "activity-archived": "%s movido a Papelera de Reciclaje",
     "activity-archived": "%s movido a Papelera de Reciclaje",
     "activity-attached": "adjuntadas %s a %s",
     "activity-attached": "adjuntadas %s a %s",
     "activity-created": "creadas %s",
     "activity-created": "creadas %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluidas %s de %s",
     "activity-excluded": "excluidas %s de %s",
     "activity-imported": "importadas %s en %s de %s",
     "activity-imported": "importadas %s en %s de %s",
     "activity-imported-board": "importadas %s de %s",
     "activity-imported-board": "importadas %s de %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Vence en",
     "card-due-on": "Vence en",
     "card-spent": "Tiempo Empleado",
     "card-spent": "Tiempo Empleado",
     "card-edit-attachments": "Editar adjuntos",
     "card-edit-attachments": "Editar adjuntos",
+    "card-edit-custom-fields": "Edit custom fields",
     "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.",
@@ -118,6 +121,8 @@
     "card-start": "Empieza",
     "card-start": "Empieza",
     "card-start-on": "Empieza el",
     "card-start-on": "Empieza el",
     "cardAttachmentsPopup-title": "Adjuntar De",
     "cardAttachmentsPopup-title": "Adjuntar De",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "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",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Crear Tablero",
     "createBoardPopup-title": "Crear Tablero",
     "chooseBoardSourcePopup-title": "Importar tablero",
     "chooseBoardSourcePopup-title": "Importar tablero",
     "createLabelPopup-title": "Crear Etiqueta",
     "createLabelPopup-title": "Crear Etiqueta",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "actual",
     "current": "actual",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Fecha",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Fecha",
     "date": "Fecha",
     "decline": "Rechazar",
     "decline": "Rechazar",
     "default-avatar": "Avatar por defecto",
     "default-avatar": "Avatar por defecto",
     "delete": "Borrar",
     "delete": "Borrar",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "¿Borrar Etiqueta?",
     "deleteLabelPopup-title": "¿Borrar Etiqueta?",
     "description": "Descripción",
     "description": "Descripción",
     "disambiguateMultiLabelPopup-title": "Desambiguación de Acción de Etiqueta",
     "disambiguateMultiLabelPopup-title": "Desambiguación de Acción de Etiqueta",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Límite TEP suave",
     "soft-wip-limit": "Límite TEP suave",
     "editCardStartDatePopup-title": "Cambiar fecha de inicio",
     "editCardStartDatePopup-title": "Cambiar fecha de inicio",
     "editCardDueDatePopup-title": "Cambiar fecha de vencimiento",
     "editCardDueDatePopup-title": "Cambiar fecha de vencimiento",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Cambiar tiempo empleado",
     "editCardSpentTimePopup-title": "Cambiar tiempo empleado",
     "editLabelPopup-title": "Cambiar Etiqueta",
     "editLabelPopup-title": "Cambiar Etiqueta",
     "editNotificationPopup-title": "Editar Notificación",
     "editNotificationPopup-title": "Editar Notificación",
@@ -366,6 +386,7 @@
     "title": "Título",
     "title": "Título",
     "tracking": "Seguimiento",
     "tracking": "Seguimiento",
     "tracking-info": "Serás notificado de cualquier cambio a aquellas tarjetas en las que seas creador o miembro.",
     "tracking-info": "Serás notificado de cualquier cambio a aquellas tarjetas en las que seas creador o miembro.",
+    "type": "Type",
     "unassign-member": "Desasignar miembro",
     "unassign-member": "Desasignar miembro",
     "unsaved-description": "Tienes una descripción sin guardar.",
     "unsaved-description": "Tienes una descripción sin guardar.",
     "unwatch": "Dejar de seguir",
     "unwatch": "Dejar de seguir",
@@ -430,6 +451,7 @@
     "hours": "horas",
     "hours": "horas",
     "minutes": "minutos",
     "minutes": "minutos",
     "seconds": "segundos",
     "seconds": "segundos",
+    "show-field-on-card": "Show this field on card",
     "yes": "Si",
     "yes": "Si",
     "no": "No",
     "no": "No",
     "accounts": "Cuentas",
     "accounts": "Cuentas",

+ 22 - 0
i18n/es.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "ha comentado en __card__: __comment__",
     "act-addComment": "ha comentado en __card__: __comment__",
     "act-createBoard": "ha creado __board__",
     "act-createBoard": "ha creado __board__",
     "act-createCard": "ha añadido __card__ a __list__",
     "act-createCard": "ha añadido __card__ a __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "ha añadido __list__ a __board__",
     "act-createList": "ha añadido __list__ a __board__",
     "act-addBoardMember": "ha añadido a __member__ a __board__",
     "act-addBoardMember": "ha añadido a __member__ a __board__",
     "act-archivedBoard": "__board__ se ha enviado a la papelera de reciclaje",
     "act-archivedBoard": "__board__ se ha enviado a la papelera de reciclaje",
@@ -30,6 +31,7 @@
     "activity-archived": "%s se ha enviado a la papelera de reciclaje",
     "activity-archived": "%s se ha enviado a la papelera de reciclaje",
     "activity-attached": "ha adjuntado %s a %s",
     "activity-attached": "ha adjuntado %s a %s",
     "activity-created": "ha creado %s",
     "activity-created": "ha creado %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "ha excluido %s de %s",
     "activity-excluded": "ha excluido %s de %s",
     "activity-imported": "ha importado %s a %s desde %s",
     "activity-imported": "ha importado %s a %s desde %s",
     "activity-imported-board": "ha importado %s desde %s",
     "activity-imported-board": "ha importado %s desde %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Vence el",
     "card-due-on": "Vence el",
     "card-spent": "Tiempo consumido",
     "card-spent": "Tiempo consumido",
     "card-edit-attachments": "Editar los adjuntos",
     "card-edit-attachments": "Editar los adjuntos",
+    "card-edit-custom-fields": "Edit custom fields",
     "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",
@@ -118,6 +121,8 @@
     "card-start": "Comienza",
     "card-start": "Comienza",
     "card-start-on": "Comienza el",
     "card-start-on": "Comienza el",
     "cardAttachmentsPopup-title": "Adjuntar desde",
     "cardAttachmentsPopup-title": "Adjuntar desde",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "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",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Crear tablero",
     "createBoardPopup-title": "Crear tablero",
     "chooseBoardSourcePopup-title": "Importar un tablero",
     "chooseBoardSourcePopup-title": "Importar un tablero",
     "createLabelPopup-title": "Crear etiqueta",
     "createLabelPopup-title": "Crear etiqueta",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "actual",
     "current": "actual",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Fecha",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Fecha",
     "date": "Fecha",
     "decline": "Declinar",
     "decline": "Declinar",
     "default-avatar": "Avatar por defecto",
     "default-avatar": "Avatar por defecto",
     "delete": "Eliminar",
     "delete": "Eliminar",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "¿Eliminar la etiqueta?",
     "deleteLabelPopup-title": "¿Eliminar la etiqueta?",
     "description": "Descripción",
     "description": "Descripción",
     "disambiguateMultiLabelPopup-title": "Desambiguar la acción de etiqueta",
     "disambiguateMultiLabelPopup-title": "Desambiguar la acción de etiqueta",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Límite del trabajo en proceso flexible",
     "soft-wip-limit": "Límite del trabajo en proceso flexible",
     "editCardStartDatePopup-title": "Cambiar la fecha de comienzo",
     "editCardStartDatePopup-title": "Cambiar la fecha de comienzo",
     "editCardDueDatePopup-title": "Cambiar la fecha de vencimiento",
     "editCardDueDatePopup-title": "Cambiar la fecha de vencimiento",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Cambiar el tiempo consumido",
     "editCardSpentTimePopup-title": "Cambiar el tiempo consumido",
     "editLabelPopup-title": "Cambiar la etiqueta",
     "editLabelPopup-title": "Cambiar la etiqueta",
     "editNotificationPopup-title": "Editar las notificaciones",
     "editNotificationPopup-title": "Editar las notificaciones",
@@ -366,6 +386,7 @@
     "title": "Título",
     "title": "Título",
     "tracking": "Siguiendo",
     "tracking": "Siguiendo",
     "tracking-info": "Serás notificado de cualquier cambio en las tarjetas en las que participas como creador o miembro.",
     "tracking-info": "Serás notificado de cualquier cambio en las tarjetas en las que participas como creador o miembro.",
+    "type": "Type",
     "unassign-member": "Desvincular al miembro",
     "unassign-member": "Desvincular al miembro",
     "unsaved-description": "Tienes una descripción por añadir.",
     "unsaved-description": "Tienes una descripción por añadir.",
     "unwatch": "Dejar de vigilar",
     "unwatch": "Dejar de vigilar",
@@ -430,6 +451,7 @@
     "hours": "horas",
     "hours": "horas",
     "minutes": "minutos",
     "minutes": "minutos",
     "seconds": "segundos",
     "seconds": "segundos",
+    "show-field-on-card": "Show this field on card",
     "yes": "Sí",
     "yes": "Sí",
     "no": "No",
     "no": "No",
     "accounts": "Cuentas",
     "accounts": "Cuentas",

+ 22 - 0
i18n/eu.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "__card__ txartelean iruzkina: __comment__",
     "act-addComment": "__card__ txartelean iruzkina: __comment__",
     "act-createBoard": "__board__ sortuta",
     "act-createBoard": "__board__ sortuta",
     "act-createCard": "__card__ __list__ zerrrendara gehituta",
     "act-createCard": "__card__ __list__ zerrrendara gehituta",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "__list__ __board__ arbelera gehituta",
     "act-createList": "__list__ __board__ arbelera gehituta",
     "act-addBoardMember": "__member__ __board__ arbelera gehituta",
     "act-addBoardMember": "__member__ __board__ arbelera gehituta",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "%s %s(e)ra erantsita",
     "activity-attached": "%s %s(e)ra erantsita",
     "activity-created": "%s sortuta",
     "activity-created": "%s sortuta",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "%s %s(e)tik kanpo utzita",
     "activity-excluded": "%s %s(e)tik kanpo utzita",
     "activity-imported": "%s inportatuta %s(e)ra %s(e)tik",
     "activity-imported": "%s inportatuta %s(e)ra %s(e)tik",
     "activity-imported-board": "%s inportatuta %s(e)tik",
     "activity-imported-board": "%s inportatuta %s(e)tik",
@@ -111,6 +113,7 @@
     "card-due-on": "Epemuga",
     "card-due-on": "Epemuga",
     "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-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",
@@ -118,6 +121,8 @@
     "card-start": "Hasiera",
     "card-start": "Hasiera",
     "card-start-on": "Hasiera",
     "card-start-on": "Hasiera",
     "cardAttachmentsPopup-title": "Erantsi hemendik",
     "cardAttachmentsPopup-title": "Erantsi hemendik",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Ezabatu txartela?",
     "cardDeletePopup-title": "Ezabatu txartela?",
     "cardDetailsActionsPopup-title": "Txartel-ekintzak",
     "cardDetailsActionsPopup-title": "Txartel-ekintzak",
     "cardLabelsPopup-title": "Etiketak",
     "cardLabelsPopup-title": "Etiketak",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Sortu arbela",
     "createBoardPopup-title": "Sortu arbela",
     "chooseBoardSourcePopup-title": "Inportatu arbela",
     "chooseBoardSourcePopup-title": "Inportatu arbela",
     "createLabelPopup-title": "Sortu etiketa",
     "createLabelPopup-title": "Sortu etiketa",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "unekoa",
     "current": "unekoa",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Data",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Data",
     "date": "Data",
     "decline": "Ukatu",
     "decline": "Ukatu",
     "default-avatar": "Lehenetsitako avatarra",
     "default-avatar": "Lehenetsitako avatarra",
     "delete": "Ezabatu",
     "delete": "Ezabatu",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Ezabatu etiketa?",
     "deleteLabelPopup-title": "Ezabatu etiketa?",
     "description": "Deskripzioa",
     "description": "Deskripzioa",
     "disambiguateMultiLabelPopup-title": "Argitu etiketaren ekintza",
     "disambiguateMultiLabelPopup-title": "Argitu etiketaren ekintza",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "WIP muga malgua",
     "soft-wip-limit": "WIP muga malgua",
     "editCardStartDatePopup-title": "Aldatu hasiera data",
     "editCardStartDatePopup-title": "Aldatu hasiera data",
     "editCardDueDatePopup-title": "Aldatu epemuga data",
     "editCardDueDatePopup-title": "Aldatu epemuga data",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Aldatu erabilitako denbora",
     "editCardSpentTimePopup-title": "Aldatu erabilitako denbora",
     "editLabelPopup-title": "Aldatu etiketa",
     "editLabelPopup-title": "Aldatu etiketa",
     "editNotificationPopup-title": "Editatu jakinarazpena",
     "editNotificationPopup-title": "Editatu jakinarazpena",
@@ -366,6 +386,7 @@
     "title": "Izenburua",
     "title": "Izenburua",
     "tracking": "Jarraitzen",
     "tracking": "Jarraitzen",
     "tracking-info": "Sortzaile edo kide gisa parte-hartzen duzun txartelei egindako aldaketak jakinaraziko zaizkizu.",
     "tracking-info": "Sortzaile edo kide gisa parte-hartzen duzun txartelei egindako aldaketak jakinaraziko zaizkizu.",
+    "type": "Type",
     "unassign-member": "Kendu kidea",
     "unassign-member": "Kendu kidea",
     "unsaved-description": "Gorde gabeko deskripzio bat duzu",
     "unsaved-description": "Gorde gabeko deskripzio bat duzu",
     "unwatch": "Utzi ikuskatzeari",
     "unwatch": "Utzi ikuskatzeari",
@@ -430,6 +451,7 @@
     "hours": "ordu",
     "hours": "ordu",
     "minutes": "minutu",
     "minutes": "minutu",
     "seconds": "segundo",
     "seconds": "segundo",
+    "show-field-on-card": "Show this field on card",
     "yes": "Bai",
     "yes": "Bai",
     "no": "Ez",
     "no": "Ez",
     "accounts": "Kontuak",
     "accounts": "Kontuak",

+ 22 - 0
i18n/fa.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "درج نظر برای __card__: __comment__",
     "act-addComment": "درج نظر برای __card__: __comment__",
     "act-createBoard": "__board__ ایجاد شد",
     "act-createBoard": "__board__ ایجاد شد",
     "act-createCard": "__card__  به __list__ اضافه شد",
     "act-createCard": "__card__  به __list__ اضافه شد",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "__list__ به __board__ اضافه شد",
     "act-createList": "__list__ به __board__ اضافه شد",
     "act-addBoardMember": "__member__ به __board__ اضافه شد",
     "act-addBoardMember": "__member__ به __board__ اضافه شد",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "%s به %s پیوست شد",
     "activity-attached": "%s به %s پیوست شد",
     "activity-created": "%s ایجاد شد",
     "activity-created": "%s ایجاد شد",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "%s  از %s مستثنی گردید",
     "activity-excluded": "%s  از %s مستثنی گردید",
     "activity-imported": "%s از %s وارد %s شد",
     "activity-imported": "%s از %s وارد %s شد",
     "activity-imported-board": "%s از %s وارد شد",
     "activity-imported-board": "%s از %s وارد شد",
@@ -111,6 +113,7 @@
     "card-due-on": "مقتضی بر",
     "card-due-on": "مقتضی بر",
     "card-spent": "زمان صرف شده",
     "card-spent": "زمان صرف شده",
     "card-edit-attachments": "ویرایش ضمائم",
     "card-edit-attachments": "ویرایش ضمائم",
+    "card-edit-custom-fields": "Edit custom fields",
     "card-edit-labels": "ویرایش برچسب",
     "card-edit-labels": "ویرایش برچسب",
     "card-edit-members": "ویرایش اعضا",
     "card-edit-members": "ویرایش اعضا",
     "card-labels-title": "تغییر برچسب کارت",
     "card-labels-title": "تغییر برچسب کارت",
@@ -118,6 +121,8 @@
     "card-start": "شروع",
     "card-start": "شروع",
     "card-start-on": "شروع از",
     "card-start-on": "شروع از",
     "cardAttachmentsPopup-title": "ضمیمه از",
     "cardAttachmentsPopup-title": "ضمیمه از",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "آیا می خواهید کارت را حذف کنید؟",
     "cardDeletePopup-title": "آیا می خواهید کارت را حذف کنید؟",
     "cardDetailsActionsPopup-title": "اعمال کارت",
     "cardDetailsActionsPopup-title": "اعمال کارت",
     "cardLabelsPopup-title": "برچسب ها",
     "cardLabelsPopup-title": "برچسب ها",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "ایجاد تخته",
     "createBoardPopup-title": "ایجاد تخته",
     "chooseBoardSourcePopup-title": "بارگذاری تخته",
     "chooseBoardSourcePopup-title": "بارگذاری تخته",
     "createLabelPopup-title": "ایجاد برچسب",
     "createLabelPopup-title": "ایجاد برچسب",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "جاری",
     "current": "جاری",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "تاریخ",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "تاریخ",
     "date": "تاریخ",
     "decline": "رد",
     "decline": "رد",
     "default-avatar": "تصویر پیش فرض",
     "default-avatar": "تصویر پیش فرض",
     "delete": "حذف",
     "delete": "حذف",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "آیا می خواهید برچسب را حذف کنید؟",
     "deleteLabelPopup-title": "آیا می خواهید برچسب را حذف کنید؟",
     "description": "توضیحات",
     "description": "توضیحات",
     "disambiguateMultiLabelPopup-title": "عمل ابهام زدایی از برچسب",
     "disambiguateMultiLabelPopup-title": "عمل ابهام زدایی از برچسب",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "تغییر تاریخ آغاز",
     "editCardStartDatePopup-title": "تغییر تاریخ آغاز",
     "editCardDueDatePopup-title": "تغییر تاریخ بدلیل",
     "editCardDueDatePopup-title": "تغییر تاریخ بدلیل",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "تغییر زمان صرف شده",
     "editCardSpentTimePopup-title": "تغییر زمان صرف شده",
     "editLabelPopup-title": "تغیر برچسب",
     "editLabelPopup-title": "تغیر برچسب",
     "editNotificationPopup-title": "اصلاح اعلان",
     "editNotificationPopup-title": "اصلاح اعلان",
@@ -366,6 +386,7 @@
     "title": "عنوان",
     "title": "عنوان",
     "tracking": "پیگردی",
     "tracking": "پیگردی",
     "tracking-info": "شما از هرگونه تغییر در کارتهایی که بعنوان ایجاد کننده ویا عضو آن هستید، آگاه خواهید شد",
     "tracking-info": "شما از هرگونه تغییر در کارتهایی که بعنوان ایجاد کننده ویا عضو آن هستید، آگاه خواهید شد",
+    "type": "Type",
     "unassign-member": "عدم انتصاب کاربر",
     "unassign-member": "عدم انتصاب کاربر",
     "unsaved-description": "شما توضیحات ذخیره نشده دارید.",
     "unsaved-description": "شما توضیحات ذخیره نشده دارید.",
     "unwatch": "عدم دیده بانی",
     "unwatch": "عدم دیده بانی",
@@ -430,6 +451,7 @@
     "hours": "ساعت",
     "hours": "ساعت",
     "minutes": "دقیقه",
     "minutes": "دقیقه",
     "seconds": "ثانیه",
     "seconds": "ثانیه",
+    "show-field-on-card": "Show this field on card",
     "yes": "بله",
     "yes": "بله",
     "no": "خیر",
     "no": "خیر",
     "accounts": "حساب‌ها",
     "accounts": "حساب‌ها",

+ 22 - 0
i18n/fi.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "kommentoitu __card__: __comment__",
     "act-addComment": "kommentoitu __card__: __comment__",
     "act-createBoard": "luotu __board__",
     "act-createBoard": "luotu __board__",
     "act-createCard": "lisätty __card__ listalle __list__",
     "act-createCard": "lisätty __card__ listalle __list__",
+    "act-createCustomField": "luo mukautettu kenttä __customField__",
     "act-createList": "lisätty __list__ taululle __board__",
     "act-createList": "lisätty __list__ taululle __board__",
     "act-addBoardMember": "lisätty __member__ taululle __board__",
     "act-addBoardMember": "lisätty __member__ taululle __board__",
     "act-archivedBoard": "__board__ siirretty roskakoriin",
     "act-archivedBoard": "__board__ siirretty roskakoriin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s siirretty roskakoriin",
     "activity-archived": "%s siirretty roskakoriin",
     "activity-attached": "liitetty %s kohteeseen %s",
     "activity-attached": "liitetty %s kohteeseen %s",
     "activity-created": "luotu %s",
     "activity-created": "luotu %s",
+    "activity-customfield-created": "luotu mukautettu kenttä %s",
     "activity-excluded": "poistettu %s kohteesta %s",
     "activity-excluded": "poistettu %s kohteesta %s",
     "activity-imported": "tuotu %s kohteeseen %s lähteestä %s",
     "activity-imported": "tuotu %s kohteeseen %s lähteestä %s",
     "activity-imported-board": "tuotu %s lähteestä %s",
     "activity-imported-board": "tuotu %s lähteestä %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Erääntyy",
     "card-due-on": "Erääntyy",
     "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 mukautettua kenttää",
     "card-edit-labels": "Muokkaa tunnisteita",
     "card-edit-labels": "Muokkaa tunnisteita",
     "card-edit-members": "Muokkaa jäseniä",
     "card-edit-members": "Muokkaa jäseniä",
     "card-labels-title": "Muokkaa kortin tunnisteita.",
     "card-labels-title": "Muokkaa kortin tunnisteita.",
@@ -118,6 +121,8 @@
     "card-start": "Alkaa",
     "card-start": "Alkaa",
     "card-start-on": "Alkaa",
     "card-start-on": "Alkaa",
     "cardAttachmentsPopup-title": "Liitä mistä",
     "cardAttachmentsPopup-title": "Liitä mistä",
+    "cardCustomField-datePopup-title": "Muokkaa päivää",
+    "cardCustomFieldsPopup-title": "Muokkaa mukautettuja kenttiä",
     "cardDeletePopup-title": "Poista kortti?",
     "cardDeletePopup-title": "Poista kortti?",
     "cardDetailsActionsPopup-title": "Kortti toimet",
     "cardDetailsActionsPopup-title": "Kortti toimet",
     "cardLabelsPopup-title": "Tunnisteet",
     "cardLabelsPopup-title": "Tunnisteet",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Luo taulu",
     "createBoardPopup-title": "Luo taulu",
     "chooseBoardSourcePopup-title": "Tuo taulu",
     "chooseBoardSourcePopup-title": "Tuo taulu",
     "createLabelPopup-title": "Luo tunniste",
     "createLabelPopup-title": "Luo tunniste",
+    "createCustomField": "Luo kenttä",
+    "createCustomFieldPopup-title": "Luo kenttä",
     "current": "nykyinen",
     "current": "nykyinen",
+    "custom-field-delete-pop": "Tätä ei voi peruuttaa. Tämä poistaa tämän mukautetun kentän kaikista korteista ja poistaa sen historian.",
+    "custom-field-checkbox": "Valintaruutu",
+    "custom-field-date": "Päivämäärä",
+    "custom-field-dropdown": "Pudotusvalikko",
+    "custom-field-dropdown-none": "(ei mitään)",
+    "custom-field-dropdown-options": "Luettelon vaihtoehdot",
+    "custom-field-dropdown-options-placeholder": "Paina Enter lisätäksesi lisää vaihtoehtoja",
+    "custom-field-dropdown-unknown": "(tuntematon)",
+    "custom-field-number": "Numero",
+    "custom-field-text": "Teksti",
+    "custom-fields": "Mukautetut kentät",
     "date": "Päivämäärä",
     "date": "Päivämäärä",
     "decline": "Kieltäydy",
     "decline": "Kieltäydy",
     "default-avatar": "Oletus profiilikuva",
     "default-avatar": "Oletus profiilikuva",
     "delete": "Poista",
     "delete": "Poista",
+    "deleteCustomFieldPopup-title": "Poista mukautettu kenttä?",
     "deleteLabelPopup-title": "Poista tunniste?",
     "deleteLabelPopup-title": "Poista tunniste?",
     "description": "Kuvaus",
     "description": "Kuvaus",
     "disambiguateMultiLabelPopup-title": "Yksikäsitteistä tunniste toiminta",
     "disambiguateMultiLabelPopup-title": "Yksikäsitteistä tunniste toiminta",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Pehmeä WIP raja",
     "soft-wip-limit": "Pehmeä WIP raja",
     "editCardStartDatePopup-title": "Muokkaa aloituspäivää",
     "editCardStartDatePopup-title": "Muokkaa aloituspäivää",
     "editCardDueDatePopup-title": "Muokkaa eräpäivää",
     "editCardDueDatePopup-title": "Muokkaa eräpäivää",
+    "editCustomFieldPopup-title": "Muokkaa kenttää",
     "editCardSpentTimePopup-title": "Muuta käytettyä aikaa",
     "editCardSpentTimePopup-title": "Muuta käytettyä aikaa",
     "editLabelPopup-title": "Muokkaa tunnistetta",
     "editLabelPopup-title": "Muokkaa tunnistetta",
     "editNotificationPopup-title": "Muokkaa ilmoituksia",
     "editNotificationPopup-title": "Muokkaa ilmoituksia",
@@ -366,6 +386,7 @@
     "title": "Otsikko",
     "title": "Otsikko",
     "tracking": "Ilmoitukset",
     "tracking": "Ilmoitukset",
     "tracking-info": "Sinulle ilmoitetaan muutoksista korteissa joihin olet osallistunut luojana tai jäsenenä.",
     "tracking-info": "Sinulle ilmoitetaan muutoksista korteissa joihin olet osallistunut luojana tai jäsenenä.",
+    "type": "Tyyppi",
     "unassign-member": "Peru jäsenvalinta",
     "unassign-member": "Peru jäsenvalinta",
     "unsaved-description": "Sinulla on tallentamaton kuvaus.",
     "unsaved-description": "Sinulla on tallentamaton kuvaus.",
     "unwatch": "Lopeta seuraaminen",
     "unwatch": "Lopeta seuraaminen",
@@ -430,6 +451,7 @@
     "hours": "tuntia",
     "hours": "tuntia",
     "minutes": "minuuttia",
     "minutes": "minuuttia",
     "seconds": "sekuntia",
     "seconds": "sekuntia",
+    "show-field-on-card": "Näytä tämä kenttä kortilla",
     "yes": "Kyllä",
     "yes": "Kyllä",
     "no": "Ei",
     "no": "Ei",
     "accounts": "Tilit",
     "accounts": "Tilit",

+ 22 - 0
i18n/fr.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "a commenté __card__ : __comment__",
     "act-addComment": "a commenté __card__ : __comment__",
     "act-createBoard": "a créé __board__",
     "act-createBoard": "a créé __board__",
     "act-createCard": "a ajouté __card__ à __list__",
     "act-createCard": "a ajouté __card__ à __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "a ajouté __list__ à __board__",
     "act-createList": "a ajouté __list__ à __board__",
     "act-addBoardMember": "a ajouté __member__ à __board__",
     "act-addBoardMember": "a ajouté __member__ à __board__",
     "act-archivedBoard": "__board__ a été déplacé vers la corbeille",
     "act-archivedBoard": "__board__ a été déplacé vers la corbeille",
@@ -30,6 +31,7 @@
     "activity-archived": "%s a été déplacé vers la corbeille",
     "activity-archived": "%s a été déplacé vers la corbeille",
     "activity-attached": "a attaché %s à %s",
     "activity-attached": "a attaché %s à %s",
     "activity-created": "a créé %s",
     "activity-created": "a créé %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "a exclu %s de %s",
     "activity-excluded": "a exclu %s de %s",
     "activity-imported": "a importé %s vers %s depuis %s",
     "activity-imported": "a importé %s vers %s depuis %s",
     "activity-imported-board": "a importé %s depuis %s",
     "activity-imported-board": "a importé %s depuis %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Échéance le",
     "card-due-on": "Échéance le",
     "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": "Edit custom fields",
     "card-edit-labels": "Modifier les étiquettes",
     "card-edit-labels": "Modifier les étiquettes",
     "card-edit-members": "Modifier les membres",
     "card-edit-members": "Modifier les membres",
     "card-labels-title": "Modifier les étiquettes de la carte.",
     "card-labels-title": "Modifier les étiquettes de la carte.",
@@ -118,6 +121,8 @@
     "card-start": "Début",
     "card-start": "Début",
     "card-start-on": "Commence le",
     "card-start-on": "Commence le",
     "cardAttachmentsPopup-title": "Joindre depuis",
     "cardAttachmentsPopup-title": "Joindre depuis",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "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",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Créer un tableau",
     "createBoardPopup-title": "Créer un tableau",
     "chooseBoardSourcePopup-title": "Importer un tableau",
     "chooseBoardSourcePopup-title": "Importer un tableau",
     "createLabelPopup-title": "Créer une étiquette",
     "createLabelPopup-title": "Créer une étiquette",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "actuel",
     "current": "actuel",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Refuser",
     "decline": "Refuser",
     "default-avatar": "Avatar par défaut",
     "default-avatar": "Avatar par défaut",
     "delete": "Supprimer",
     "delete": "Supprimer",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Supprimer l'étiquette ?",
     "deleteLabelPopup-title": "Supprimer l'étiquette ?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Préciser l'action sur l'étiquette",
     "disambiguateMultiLabelPopup-title": "Préciser l'action sur l'étiquette",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Limite WIP douce",
     "soft-wip-limit": "Limite WIP douce",
     "editCardStartDatePopup-title": "Modifier la date de début",
     "editCardStartDatePopup-title": "Modifier la date de début",
     "editCardDueDatePopup-title": "Modifier la date d'échéance",
     "editCardDueDatePopup-title": "Modifier la date d'échéance",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Changer le temps passé",
     "editCardSpentTimePopup-title": "Changer le temps passé",
     "editLabelPopup-title": "Modifier l'étiquette",
     "editLabelPopup-title": "Modifier l'étiquette",
     "editNotificationPopup-title": "Modifier la notification",
     "editNotificationPopup-title": "Modifier la notification",
@@ -366,6 +386,7 @@
     "title": "Titre",
     "title": "Titre",
     "tracking": "Suivi",
     "tracking": "Suivi",
     "tracking-info": "Vous serez notifié de toute modification concernant les cartes pour lesquelles vous êtes impliqué en tant que créateur ou membre.",
     "tracking-info": "Vous serez notifié de toute modification concernant les cartes pour lesquelles vous êtes impliqué en tant que créateur ou membre.",
+    "type": "Type",
     "unassign-member": "Retirer le membre",
     "unassign-member": "Retirer le membre",
     "unsaved-description": "Vous avez une description non sauvegardée",
     "unsaved-description": "Vous avez une description non sauvegardée",
     "unwatch": "Arrêter de suivre",
     "unwatch": "Arrêter de suivre",
@@ -430,6 +451,7 @@
     "hours": "heures",
     "hours": "heures",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "secondes",
     "seconds": "secondes",
+    "show-field-on-card": "Show this field on card",
     "yes": "Oui",
     "yes": "Oui",
     "no": "Non",
     "no": "Non",
     "accounts": "Comptes",
     "accounts": "Comptes",

+ 22 - 0
i18n/gl.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "attached %s to %s",
     "activity-attached": "attached %s to %s",
     "activity-created": "created %s",
     "activity-created": "created %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Etiquetas",
     "cardLabelsPopup-title": "Etiquetas",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Crear taboleiro",
     "createBoardPopup-title": "Crear taboleiro",
     "chooseBoardSourcePopup-title": "Importar taboleiro",
     "chooseBoardSourcePopup-title": "Importar taboleiro",
     "createLabelPopup-title": "Crear etiqueta",
     "createLabelPopup-title": "Crear etiqueta",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "actual",
     "current": "actual",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Data",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Data",
     "date": "Data",
     "decline": "Rexeitar",
     "decline": "Rexeitar",
     "default-avatar": "Avatar predeterminado",
     "default-avatar": "Avatar predeterminado",
     "delete": "Eliminar",
     "delete": "Eliminar",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Eliminar a etiqueta?",
     "deleteLabelPopup-title": "Eliminar a etiqueta?",
     "description": "Descrición",
     "description": "Descrición",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Cambiar a data de inicio",
     "editCardStartDatePopup-title": "Cambiar a data de inicio",
     "editCardDueDatePopup-title": "Cambiar a data límite",
     "editCardDueDatePopup-title": "Cambiar a data límite",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Cambiar a etiqueta",
     "editLabelPopup-title": "Cambiar a etiqueta",
     "editNotificationPopup-title": "Editar a notificación",
     "editNotificationPopup-title": "Editar a notificación",
@@ -366,6 +386,7 @@
     "title": "Título",
     "title": "Título",
     "tracking": "Seguimento",
     "tracking": "Seguimento",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/he.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "התקבלה תגובה על הכרטיס __card__:‏ __comment__",
     "act-addComment": "התקבלה תגובה על הכרטיס __card__:‏ __comment__",
     "act-createBoard": "הלוח __board__ נוצר",
     "act-createBoard": "הלוח __board__ נוצר",
     "act-createCard": "הכרטיס __card__ התווסף לרשימה __list__",
     "act-createCard": "הכרטיס __card__ התווסף לרשימה __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "הרשימה __list__ התווספה ללוח __board__",
     "act-createList": "הרשימה __list__ התווספה ללוח __board__",
     "act-addBoardMember": "המשתמש __member__ נוסף ללוח __board__",
     "act-addBoardMember": "המשתמש __member__ נוסף ללוח __board__",
     "act-archivedBoard": "__board__ הועבר לסל המחזור",
     "act-archivedBoard": "__board__ הועבר לסל המחזור",
@@ -30,6 +31,7 @@
     "activity-archived": "%s הועבר לסל המחזור",
     "activity-archived": "%s הועבר לסל המחזור",
     "activity-attached": "%s צורף ל%s",
     "activity-attached": "%s צורף ל%s",
     "activity-created": "%s נוצר",
     "activity-created": "%s נוצר",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "%s לא נכלל ב%s",
     "activity-excluded": "%s לא נכלל ב%s",
     "activity-imported": "%s ייובא מ%s אל %s",
     "activity-imported": "%s ייובא מ%s אל %s",
     "activity-imported-board": "%s ייובא מ%s",
     "activity-imported-board": "%s ייובא מ%s",
@@ -111,6 +113,7 @@
     "card-due-on": "תאריך יעד",
     "card-due-on": "תאריך יעד",
     "card-spent": "זמן שהושקע",
     "card-spent": "זמן שהושקע",
     "card-edit-attachments": "עריכת קבצים מצורפים",
     "card-edit-attachments": "עריכת קבצים מצורפים",
+    "card-edit-custom-fields": "Edit custom fields",
     "card-edit-labels": "עריכת תוויות",
     "card-edit-labels": "עריכת תוויות",
     "card-edit-members": "עריכת חברים",
     "card-edit-members": "עריכת חברים",
     "card-labels-title": "שינוי תוויות לכרטיס.",
     "card-labels-title": "שינוי תוויות לכרטיס.",
@@ -118,6 +121,8 @@
     "card-start": "התחלה",
     "card-start": "התחלה",
     "card-start-on": "מתחיל ב־",
     "card-start-on": "מתחיל ב־",
     "cardAttachmentsPopup-title": "לצרף מ־",
     "cardAttachmentsPopup-title": "לצרף מ־",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "למחוק כרטיס?",
     "cardDeletePopup-title": "למחוק כרטיס?",
     "cardDetailsActionsPopup-title": "פעולות על הכרטיס",
     "cardDetailsActionsPopup-title": "פעולות על הכרטיס",
     "cardLabelsPopup-title": "תוויות",
     "cardLabelsPopup-title": "תוויות",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "יצירת לוח",
     "createBoardPopup-title": "יצירת לוח",
     "chooseBoardSourcePopup-title": "ייבוא לוח",
     "chooseBoardSourcePopup-title": "ייבוא לוח",
     "createLabelPopup-title": "יצירת תווית",
     "createLabelPopup-title": "יצירת תווית",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "נוכחי",
     "current": "נוכחי",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "תאריך",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "תאריך",
     "date": "תאריך",
     "decline": "סירוב",
     "decline": "סירוב",
     "default-avatar": "תמונת משתמש כבררת מחדל",
     "default-avatar": "תמונת משתמש כבררת מחדל",
     "delete": "מחיקה",
     "delete": "מחיקה",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "למחוק תווית?",
     "deleteLabelPopup-title": "למחוק תווית?",
     "description": "תיאור",
     "description": "תיאור",
     "disambiguateMultiLabelPopup-title": "הבהרת פעולת תווית",
     "disambiguateMultiLabelPopup-title": "הבהרת פעולת תווית",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "מגבלת „בעבודה” רכה",
     "soft-wip-limit": "מגבלת „בעבודה” רכה",
     "editCardStartDatePopup-title": "שינוי מועד התחלה",
     "editCardStartDatePopup-title": "שינוי מועד התחלה",
     "editCardDueDatePopup-title": "שינוי מועד סיום",
     "editCardDueDatePopup-title": "שינוי מועד סיום",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "שינוי הזמן שהושקע",
     "editCardSpentTimePopup-title": "שינוי הזמן שהושקע",
     "editLabelPopup-title": "שינוי תווית",
     "editLabelPopup-title": "שינוי תווית",
     "editNotificationPopup-title": "שינוי דיווח",
     "editNotificationPopup-title": "שינוי דיווח",
@@ -366,6 +386,7 @@
     "title": "כותרת",
     "title": "כותרת",
     "tracking": "מעקב",
     "tracking": "מעקב",
     "tracking-info": "על כל שינוי בכרטיסים בהם הייתה לך מעורבות ברמת היצירה או כחברות תגיע אליך הודעה.",
     "tracking-info": "על כל שינוי בכרטיסים בהם הייתה לך מעורבות ברמת היצירה או כחברות תגיע אליך הודעה.",
+    "type": "Type",
     "unassign-member": "ביטול הקצאת חבר",
     "unassign-member": "ביטול הקצאת חבר",
     "unsaved-description": "יש לך תיאור לא שמור.",
     "unsaved-description": "יש לך תיאור לא שמור.",
     "unwatch": "ביטול מעקב",
     "unwatch": "ביטול מעקב",
@@ -430,6 +451,7 @@
     "hours": "שעות",
     "hours": "שעות",
     "minutes": "דקות",
     "minutes": "דקות",
     "seconds": "שניות",
     "seconds": "שניות",
+    "show-field-on-card": "Show this field on card",
     "yes": "כן",
     "yes": "כן",
     "no": "לא",
     "no": "לא",
     "accounts": "חשבונות",
     "accounts": "חשבונות",

+ 22 - 0
i18n/hu.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "hozzászólt a(z) __card__ kártyán: __comment__",
     "act-addComment": "hozzászólt a(z) __card__ kártyán: __comment__",
     "act-createBoard": "létrehozta a táblát: __board__",
     "act-createBoard": "létrehozta a táblát: __board__",
     "act-createCard": "__card__ kártyát adott hozzá a listához: __list__",
     "act-createCard": "__card__ kártyát adott hozzá a listához: __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "__list__ listát adott hozzá a táblához: __board__",
     "act-createList": "__list__ listát adott hozzá a táblához: __board__",
     "act-addBoardMember": "__member__ tagot hozzáadta a táblához: __board__",
     "act-addBoardMember": "__member__ tagot hozzáadta a táblához: __board__",
     "act-archivedBoard": "A __board__ tábla a lomtárba került.",
     "act-archivedBoard": "A __board__ tábla a lomtárba került.",
@@ -30,6 +31,7 @@
     "activity-archived": "%s lomtárba helyezve",
     "activity-archived": "%s lomtárba helyezve",
     "activity-attached": "%s mellékletet csatolt a kártyához: %s",
     "activity-attached": "%s mellékletet csatolt a kártyához: %s",
     "activity-created": "%s létrehozva",
     "activity-created": "%s létrehozva",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "%s kizárva innen: %s",
     "activity-excluded": "%s kizárva innen: %s",
     "activity-imported": "%s importálva ebbe: %s, innen: %s",
     "activity-imported": "%s importálva ebbe: %s, innen: %s",
     "activity-imported-board": "%s importálva innen: %s",
     "activity-imported-board": "%s importálva innen: %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Esedékes ekkor",
     "card-due-on": "Esedékes ekkor",
     "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": "Edit custom fields",
     "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.",
@@ -118,6 +121,8 @@
     "card-start": "Kezdés",
     "card-start": "Kezdés",
     "card-start-on": "Kezdés ekkor",
     "card-start-on": "Kezdés ekkor",
     "cardAttachmentsPopup-title": "Innen csatolva",
     "cardAttachmentsPopup-title": "Innen csatolva",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "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",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Tábla létrehozása",
     "createBoardPopup-title": "Tábla létrehozása",
     "chooseBoardSourcePopup-title": "Tábla importálása",
     "chooseBoardSourcePopup-title": "Tábla importálása",
     "createLabelPopup-title": "Címke létrehozása",
     "createLabelPopup-title": "Címke létrehozása",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "jelenlegi",
     "current": "jelenlegi",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Dátum",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Dátum",
     "date": "Dátum",
     "decline": "Elutasítás",
     "decline": "Elutasítás",
     "default-avatar": "Alapértelmezett avatár",
     "default-avatar": "Alapértelmezett avatár",
     "delete": "Törlés",
     "delete": "Törlés",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Törli a címkét?",
     "deleteLabelPopup-title": "Törli a címkét?",
     "description": "Leírás",
     "description": "Leírás",
     "disambiguateMultiLabelPopup-title": "Címkeművelet egyértelműsítése",
     "disambiguateMultiLabelPopup-title": "Címkeművelet egyértelműsítése",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Gyenge WIP korlát",
     "soft-wip-limit": "Gyenge WIP korlát",
     "editCardStartDatePopup-title": "Kezdődátum megváltoztatása",
     "editCardStartDatePopup-title": "Kezdődátum megváltoztatása",
     "editCardDueDatePopup-title": "Esedékesség dátumának megváltoztatása",
     "editCardDueDatePopup-title": "Esedékesség dátumának megváltoztatása",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Eltöltött idő megváltoztatása",
     "editCardSpentTimePopup-title": "Eltöltött idő megváltoztatása",
     "editLabelPopup-title": "Címke megváltoztatása",
     "editLabelPopup-title": "Címke megváltoztatása",
     "editNotificationPopup-title": "Értesítés szerkesztése",
     "editNotificationPopup-title": "Értesítés szerkesztése",
@@ -366,6 +386,7 @@
     "title": "Cím",
     "title": "Cím",
     "tracking": "Követés",
     "tracking": "Követés",
     "tracking-info": "Értesítve lesz az összes olyan kártya változásáról, amelyen létrehozóként vagy tagként vesz részt.",
     "tracking-info": "Értesítve lesz az összes olyan kártya változásáról, amelyen létrehozóként vagy tagként vesz részt.",
+    "type": "Type",
     "unassign-member": "Tag hozzárendelésének megszüntetése",
     "unassign-member": "Tag hozzárendelésének megszüntetése",
     "unsaved-description": "Van egy mentetlen leírása.",
     "unsaved-description": "Van egy mentetlen leírása.",
     "unwatch": "Megfigyelés megszüntetése",
     "unwatch": "Megfigyelés megszüntetése",
@@ -430,6 +451,7 @@
     "hours": "óra",
     "hours": "óra",
     "minutes": "perc",
     "minutes": "perc",
     "seconds": "másodperc",
     "seconds": "másodperc",
+    "show-field-on-card": "Show this field on card",
     "yes": "Igen",
     "yes": "Igen",
     "no": "Nem",
     "no": "Nem",
     "accounts": "Fiókok",
     "accounts": "Fiókok",

+ 22 - 0
i18n/hy.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "մեկնաբանել է __card__: __comment__",
     "act-addComment": "մեկնաբանել է __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "attached %s to %s",
     "activity-attached": "attached %s to %s",
     "activity-created": "created %s",
     "activity-created": "created %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/id.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "Dikomentari di__kartu__:__comment__",
     "act-addComment": "Dikomentari di__kartu__:__comment__",
     "act-createBoard": "Panel__dibuat__",
     "act-createBoard": "Panel__dibuat__",
     "act-createCard": "Kartu__dilampirkan__ke__Daftar",
     "act-createCard": "Kartu__dilampirkan__ke__Daftar",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "Daftar__ditambahkan__ke__Panel",
     "act-createList": "Daftar__ditambahkan__ke__Panel",
     "act-addBoardMember": "Partisipan__ditambahkan__ke__Kartu",
     "act-addBoardMember": "Partisipan__ditambahkan__ke__Kartu",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "dilampirkan %s ke %s",
     "activity-attached": "dilampirkan %s ke %s",
     "activity-created": "dibuat %s",
     "activity-created": "dibuat %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "tidak termasuk %s dari %s",
     "activity-excluded": "tidak termasuk %s dari %s",
     "activity-imported": "diimpor %s kedalam %s dari %s",
     "activity-imported": "diimpor %s kedalam %s dari %s",
     "activity-imported-board": "diimpor %s dari %s",
     "activity-imported-board": "diimpor %s dari %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Jatuh Tempo pada",
     "card-due-on": "Jatuh Tempo pada",
     "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-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",
@@ -118,6 +121,8 @@
     "card-start": "Mulai",
     "card-start": "Mulai",
     "card-start-on": "Mulai pada",
     "card-start-on": "Mulai pada",
     "cardAttachmentsPopup-title": "Lampirkan dari",
     "cardAttachmentsPopup-title": "Lampirkan dari",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Hapus kartu",
     "cardDeletePopup-title": "Hapus kartu",
     "cardDetailsActionsPopup-title": "Aksi Kartu",
     "cardDetailsActionsPopup-title": "Aksi Kartu",
     "cardLabelsPopup-title": "Daftar Label",
     "cardLabelsPopup-title": "Daftar Label",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Buat Panel",
     "createBoardPopup-title": "Buat Panel",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Buat Label",
     "createLabelPopup-title": "Buat Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "sekarang",
     "current": "sekarang",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Tanggal",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Tanggal",
     "date": "Tanggal",
     "decline": "Tolak",
     "decline": "Tolak",
     "default-avatar": "Avatar standar",
     "default-avatar": "Avatar standar",
     "delete": "Hapus",
     "delete": "Hapus",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Hapus label?",
     "deleteLabelPopup-title": "Hapus label?",
     "description": "Deskripsi",
     "description": "Deskripsi",
     "disambiguateMultiLabelPopup-title": "Abaikan label Aksi",
     "disambiguateMultiLabelPopup-title": "Abaikan label Aksi",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Ubah tanggal mulai",
     "editCardStartDatePopup-title": "Ubah tanggal mulai",
     "editCardDueDatePopup-title": "Ubah tanggal selesai",
     "editCardDueDatePopup-title": "Ubah tanggal selesai",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Ubah Label",
     "editLabelPopup-title": "Ubah Label",
     "editNotificationPopup-title": "Sunting Pemberitahuan",
     "editNotificationPopup-title": "Sunting Pemberitahuan",
@@ -366,6 +386,7 @@
     "title": "Judul",
     "title": "Judul",
     "tracking": "Pelacakan",
     "tracking": "Pelacakan",
     "tracking-info": "Anda akan dinotifikasi semua perubahan di kartu tersebut diaman anda terlibat sebagai creator atau partisipan",
     "tracking-info": "Anda akan dinotifikasi semua perubahan di kartu tersebut diaman anda terlibat sebagai creator atau partisipan",
+    "type": "Type",
     "unassign-member": "Tidak sertakan partisipan",
     "unassign-member": "Tidak sertakan partisipan",
     "unsaved-description": "Anda memiliki deskripsi yang belum disimpan.",
     "unsaved-description": "Anda memiliki deskripsi yang belum disimpan.",
     "unwatch": "Tidak mengamati",
     "unwatch": "Tidak mengamati",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/ig.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "attached %s to %s",
     "activity-attached": "attached %s to %s",
     "activity-created": "created %s",
     "activity-created": "created %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Bido",
     "card-start": "Bido",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Aha",
     "cardLabelsPopup-title": "Aha",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "elekere",
     "hours": "elekere",
     "minutes": "nkeji",
     "minutes": "nkeji",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Ee",
     "yes": "Ee",
     "no": "Mba",
     "no": "Mba",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/it.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "ha commentato su __card__: __comment__",
     "act-addComment": "ha commentato su __card__: __comment__",
     "act-createBoard": "ha creato __board__",
     "act-createBoard": "ha creato __board__",
     "act-createCard": "ha aggiunto __card__ a __list__",
     "act-createCard": "ha aggiunto __card__ a __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "ha aggiunto __list__ a __board__",
     "act-createList": "ha aggiunto __list__ a __board__",
     "act-addBoardMember": "ha aggiunto __member__ a __board__",
     "act-addBoardMember": "ha aggiunto __member__ a __board__",
     "act-archivedBoard": "__board__ spostata nel cestino",
     "act-archivedBoard": "__board__ spostata nel cestino",
@@ -30,6 +31,7 @@
     "activity-archived": "%s spostato nel cestino",
     "activity-archived": "%s spostato nel cestino",
     "activity-attached": "allegato %s a %s",
     "activity-attached": "allegato %s a %s",
     "activity-created": "creato %s",
     "activity-created": "creato %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "escluso %s da %s",
     "activity-excluded": "escluso %s da %s",
     "activity-imported": "importato %s in %s da %s",
     "activity-imported": "importato %s in %s da %s",
     "activity-imported-board": "importato %s da %s",
     "activity-imported-board": "importato %s da %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Scade",
     "card-due-on": "Scade",
     "card-spent": "Tempo trascorso",
     "card-spent": "Tempo trascorso",
     "card-edit-attachments": "Modifica allegati",
     "card-edit-attachments": "Modifica allegati",
+    "card-edit-custom-fields": "Edit custom fields",
     "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.",
@@ -118,6 +121,8 @@
     "card-start": "Inizio",
     "card-start": "Inizio",
     "card-start-on": "Inizia",
     "card-start-on": "Inizia",
     "cardAttachmentsPopup-title": "Allega da",
     "cardAttachmentsPopup-title": "Allega da",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Elimina scheda?",
     "cardDeletePopup-title": "Elimina scheda?",
     "cardDetailsActionsPopup-title": "Azioni scheda",
     "cardDetailsActionsPopup-title": "Azioni scheda",
     "cardLabelsPopup-title": "Etichette",
     "cardLabelsPopup-title": "Etichette",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Crea bacheca",
     "createBoardPopup-title": "Crea bacheca",
     "chooseBoardSourcePopup-title": "Importa bacheca",
     "chooseBoardSourcePopup-title": "Importa bacheca",
     "createLabelPopup-title": "Crea etichetta",
     "createLabelPopup-title": "Crea etichetta",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "corrente",
     "current": "corrente",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Data",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Data",
     "date": "Data",
     "decline": "Declina",
     "decline": "Declina",
     "default-avatar": "Avatar predefinito",
     "default-avatar": "Avatar predefinito",
     "delete": "Elimina",
     "delete": "Elimina",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Eliminare etichetta?",
     "deleteLabelPopup-title": "Eliminare etichetta?",
     "description": "Descrizione",
     "description": "Descrizione",
     "disambiguateMultiLabelPopup-title": "Disambiguare l'azione Etichetta",
     "disambiguateMultiLabelPopup-title": "Disambiguare l'azione Etichetta",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Limite Work in progress soft",
     "soft-wip-limit": "Limite Work in progress soft",
     "editCardStartDatePopup-title": "Cambia data di inizio",
     "editCardStartDatePopup-title": "Cambia data di inizio",
     "editCardDueDatePopup-title": "Cambia data di scadenza",
     "editCardDueDatePopup-title": "Cambia data di scadenza",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Cambia tempo trascorso",
     "editCardSpentTimePopup-title": "Cambia tempo trascorso",
     "editLabelPopup-title": "Cambia etichetta",
     "editLabelPopup-title": "Cambia etichetta",
     "editNotificationPopup-title": "Modifica notifiche",
     "editNotificationPopup-title": "Modifica notifiche",
@@ -366,6 +386,7 @@
     "title": "Titolo",
     "title": "Titolo",
     "tracking": "Monitoraggio",
     "tracking": "Monitoraggio",
     "tracking-info": "Sarai notificato per tutte le modifiche alle schede delle quali sei creatore o membro.",
     "tracking-info": "Sarai notificato per tutte le modifiche alle schede delle quali sei creatore o membro.",
+    "type": "Type",
     "unassign-member": "Rimuovi membro",
     "unassign-member": "Rimuovi membro",
     "unsaved-description": "Hai una descrizione non salvata",
     "unsaved-description": "Hai una descrizione non salvata",
     "unwatch": "Non seguire",
     "unwatch": "Non seguire",
@@ -430,6 +451,7 @@
     "hours": "ore",
     "hours": "ore",
     "minutes": "minuti",
     "minutes": "minuti",
     "seconds": "secondi",
     "seconds": "secondi",
+    "show-field-on-card": "Show this field on card",
     "yes": "Sì",
     "yes": "Sì",
     "no": "No",
     "no": "No",
     "accounts": "Profili",
     "accounts": "Profili",

+ 22 - 0
i18n/ja.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "__card__: __comment__ をコメントしました",
     "act-addComment": "__card__: __comment__ をコメントしました",
     "act-createBoard": "__board__ を作成しました",
     "act-createBoard": "__board__ を作成しました",
     "act-createCard": "__list__ に __card__ を追加しました",
     "act-createCard": "__list__ に __card__ を追加しました",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "__board__ に __list__ を追加しました",
     "act-createList": "__board__ に __list__ を追加しました",
     "act-addBoardMember": "__board__ に __member__ を追加しました",
     "act-addBoardMember": "__board__ に __member__ を追加しました",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "%s を %s に添付しました",
     "activity-attached": "%s を %s に添付しました",
     "activity-created": "%s を作成しました",
     "activity-created": "%s を作成しました",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "%s を %s から除外しました",
     "activity-excluded": "%s を %s から除外しました",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "期限日",
     "card-due-on": "期限日",
     "card-spent": "Spent Time",
     "card-spent": "Spent Time",
     "card-edit-attachments": "添付ファイルの編集",
     "card-edit-attachments": "添付ファイルの編集",
+    "card-edit-custom-fields": "Edit custom fields",
     "card-edit-labels": "ラベルの編集",
     "card-edit-labels": "ラベルの編集",
     "card-edit-members": "メンバーの編集",
     "card-edit-members": "メンバーの編集",
     "card-labels-title": "カードのラベルを変更する",
     "card-labels-title": "カードのラベルを変更する",
@@ -118,6 +121,8 @@
     "card-start": "開始",
     "card-start": "開始",
     "card-start-on": "開始日",
     "card-start-on": "開始日",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "カードを削除しますか?",
     "cardDeletePopup-title": "カードを削除しますか?",
     "cardDetailsActionsPopup-title": "カード操作",
     "cardDetailsActionsPopup-title": "カード操作",
     "cardLabelsPopup-title": "ラベル",
     "cardLabelsPopup-title": "ラベル",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "ボードの作成",
     "createBoardPopup-title": "ボードの作成",
     "chooseBoardSourcePopup-title": "ボードをインポート",
     "chooseBoardSourcePopup-title": "ボードをインポート",
     "createLabelPopup-title": "ラベルの作成",
     "createLabelPopup-title": "ラベルの作成",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "現在",
     "current": "現在",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "日付",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "日付",
     "date": "日付",
     "decline": "拒否",
     "decline": "拒否",
     "default-avatar": "デフォルトのアバター",
     "default-avatar": "デフォルトのアバター",
     "delete": "削除",
     "delete": "削除",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "ラベルを削除しますか?",
     "deleteLabelPopup-title": "ラベルを削除しますか?",
     "description": "詳細",
     "description": "詳細",
     "disambiguateMultiLabelPopup-title": "不正なラベル操作",
     "disambiguateMultiLabelPopup-title": "不正なラベル操作",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "開始日の変更",
     "editCardStartDatePopup-title": "開始日の変更",
     "editCardDueDatePopup-title": "期限の変更",
     "editCardDueDatePopup-title": "期限の変更",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "ラベルの変更",
     "editLabelPopup-title": "ラベルの変更",
     "editNotificationPopup-title": "通知の変更",
     "editNotificationPopup-title": "通知の変更",
@@ -366,6 +386,7 @@
     "title": "タイトル",
     "title": "タイトル",
     "tracking": "トラッキング",
     "tracking": "トラッキング",
     "tracking-info": "これらのカードへの変更が通知されるようになります。",
     "tracking-info": "これらのカードへの変更が通知されるようになります。",
+    "type": "Type",
     "unassign-member": "未登録のメンバー",
     "unassign-member": "未登録のメンバー",
     "unsaved-description": "未保存の変更があります。",
     "unsaved-description": "未保存の変更があります。",
     "unwatch": "アンウォッチ",
     "unwatch": "アンウォッチ",
@@ -430,6 +451,7 @@
     "hours": "時",
     "hours": "時",
     "minutes": "分",
     "minutes": "分",
     "seconds": "秒",
     "seconds": "秒",
+    "show-field-on-card": "Show this field on card",
     "yes": "はい",
     "yes": "はい",
     "no": "いいえ",
     "no": "いいえ",
     "accounts": "アカウント",
     "accounts": "アカウント",

+ 22 - 0
i18n/ko.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "__card__에 내용 추가 : __comment__",
     "act-addComment": "__card__에 내용 추가 : __comment__",
     "act-createBoard": "__board__ 생성",
     "act-createBoard": "__board__ 생성",
     "act-createCard": "__list__에 __card__ 추가",
     "act-createCard": "__list__에 __card__ 추가",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "__board__에 __list__ 추가",
     "act-createList": "__board__에 __list__ 추가",
     "act-addBoardMember": "__board__에 __member__ 추가",
     "act-addBoardMember": "__board__에 __member__ 추가",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "%s를 %s에 첨부함",
     "activity-attached": "%s를 %s에 첨부함",
     "activity-created": "%s 생성됨",
     "activity-created": "%s 생성됨",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "%s를 %s에서 제외함",
     "activity-excluded": "%s를 %s에서 제외함",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "종료일",
     "card-due-on": "종료일",
     "card-spent": "Spent Time",
     "card-spent": "Spent Time",
     "card-edit-attachments": "첨부 파일 수정",
     "card-edit-attachments": "첨부 파일 수정",
+    "card-edit-custom-fields": "Edit custom fields",
     "card-edit-labels": "라벨 수정",
     "card-edit-labels": "라벨 수정",
     "card-edit-members": "멤버 수정",
     "card-edit-members": "멤버 수정",
     "card-labels-title": "카드의 라벨 변경.",
     "card-labels-title": "카드의 라벨 변경.",
@@ -118,6 +121,8 @@
     "card-start": "시작일",
     "card-start": "시작일",
     "card-start-on": "시작일",
     "card-start-on": "시작일",
     "cardAttachmentsPopup-title": "첨부 파일",
     "cardAttachmentsPopup-title": "첨부 파일",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "카드를 삭제합니까?",
     "cardDeletePopup-title": "카드를 삭제합니까?",
     "cardDetailsActionsPopup-title": "카드 액션",
     "cardDetailsActionsPopup-title": "카드 액션",
     "cardLabelsPopup-title": "라벨",
     "cardLabelsPopup-title": "라벨",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "보드 생성",
     "createBoardPopup-title": "보드 생성",
     "chooseBoardSourcePopup-title": "보드 가져오기",
     "chooseBoardSourcePopup-title": "보드 가져오기",
     "createLabelPopup-title": "라벨 생성",
     "createLabelPopup-title": "라벨 생성",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "경향",
     "current": "경향",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "날짜",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "날짜",
     "date": "날짜",
     "decline": "쇠퇴",
     "decline": "쇠퇴",
     "default-avatar": "기본 아바타",
     "default-avatar": "기본 아바타",
     "delete": "삭제",
     "delete": "삭제",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "라벨을 삭제합니까?",
     "deleteLabelPopup-title": "라벨을 삭제합니까?",
     "description": "설명",
     "description": "설명",
     "disambiguateMultiLabelPopup-title": "라벨 액션의 모호성 제거",
     "disambiguateMultiLabelPopup-title": "라벨 액션의 모호성 제거",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "원만한 WIP 제한",
     "soft-wip-limit": "원만한 WIP 제한",
     "editCardStartDatePopup-title": "시작일 변경",
     "editCardStartDatePopup-title": "시작일 변경",
     "editCardDueDatePopup-title": "종료일 변경",
     "editCardDueDatePopup-title": "종료일 변경",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "라벨 변경",
     "editLabelPopup-title": "라벨 변경",
     "editNotificationPopup-title": "알림 수정",
     "editNotificationPopup-title": "알림 수정",
@@ -366,6 +386,7 @@
     "title": "제목",
     "title": "제목",
     "tracking": "추적",
     "tracking": "추적",
     "tracking-info": "보드 생성자 또는 멤버로 참여하는 모든 카드에 대한 변경사항 알림 받음",
     "tracking-info": "보드 생성자 또는 멤버로 참여하는 모든 카드에 대한 변경사항 알림 받음",
+    "type": "Type",
     "unassign-member": "멤버 할당 해제",
     "unassign-member": "멤버 할당 해제",
     "unsaved-description": "저장되지 않은 설명이 있습니다.",
     "unsaved-description": "저장되지 않은 설명이 있습니다.",
     "unwatch": "감시 해제",
     "unwatch": "감시 해제",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/lv.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "komentēja __card__: __comment__",
     "act-addComment": "komentēja __card__: __comment__",
     "act-createBoard": "izveidoja __board__",
     "act-createBoard": "izveidoja __board__",
     "act-createCard": "pievienoja __card__ to __list__",
     "act-createCard": "pievienoja __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "pievienoja __list__ to __board__",
     "act-createList": "pievienoja __list__ to __board__",
     "act-addBoardMember": "pievienoja __member__ to __board__",
     "act-addBoardMember": "pievienoja __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "pievienoja %s pie %s",
     "activity-attached": "pievienoja %s pie %s",
     "activity-created": "izveidoja%s",
     "activity-created": "izveidoja%s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "izslēdza%s no%s",
     "activity-excluded": "izslēdza%s no%s",
     "activity-imported": "importēja %s iekšā%s no%s",
     "activity-imported": "importēja %s iekšā%s no%s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/mn.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "attached %s to %s",
     "activity-attached": "attached %s to %s",
     "activity-created": "created %s",
     "activity-created": "created %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Самбар үүсгэх",
     "createBoardPopup-title": "Самбар үүсгэх",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Шошго үүсгэх",
     "createLabelPopup-title": "Шошго үүсгэх",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Мэдэгдэл тохируулах",
     "editNotificationPopup-title": "Мэдэгдэл тохируулах",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/nb.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "kommenterte til __card__: __comment__",
     "act-addComment": "kommenterte til __card__: __comment__",
     "act-createBoard": "opprettet __board__",
     "act-createBoard": "opprettet __board__",
     "act-createCard": "la __card__ til __list__",
     "act-createCard": "la __card__ til __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "la __list__ til __board__",
     "act-createList": "la __list__ til __board__",
     "act-addBoardMember": "la __member__ til __board__",
     "act-addBoardMember": "la __member__ til __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "la %s til %s",
     "activity-attached": "la %s til %s",
     "activity-created": "opprettet %s",
     "activity-created": "opprettet %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "ekskluderte %s fra %s",
     "activity-excluded": "ekskluderte %s fra %s",
     "activity-imported": "importerte %s til %s fra %s",
     "activity-imported": "importerte %s til %s fra %s",
     "activity-imported-board": "importerte %s fra %s",
     "activity-imported-board": "importerte %s fra %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Frist til",
     "card-due-on": "Frist til",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starter på",
     "card-start-on": "Starter på",
     "cardAttachmentsPopup-title": "Legg ved fra",
     "cardAttachmentsPopup-title": "Legg ved fra",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Slett kort?",
     "cardDeletePopup-title": "Slett kort?",
     "cardDetailsActionsPopup-title": "Kort-handlinger",
     "cardDetailsActionsPopup-title": "Kort-handlinger",
     "cardLabelsPopup-title": "Etiketter",
     "cardLabelsPopup-title": "Etiketter",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/nl.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "gereageerd op __card__:__comment__",
     "act-addComment": "gereageerd op __card__:__comment__",
     "act-createBoard": "aangemaakte __bord__",
     "act-createBoard": "aangemaakte __bord__",
     "act-createCard": "toegevoegd __kaart__ aan __lijst__",
     "act-createCard": "toegevoegd __kaart__ aan __lijst__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "toegevoegd __lijst__ aan __bord__",
     "act-createList": "toegevoegd __lijst__ aan __bord__",
     "act-addBoardMember": "__member__ aan __board__ toegevoegd",
     "act-addBoardMember": "__member__ aan __board__ toegevoegd",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "%s bijgevoegd aan %s",
     "activity-attached": "%s bijgevoegd aan %s",
     "activity-created": "%s aangemaakt",
     "activity-created": "%s aangemaakt",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "%s uitgesloten van %s",
     "activity-excluded": "%s uitgesloten van %s",
     "activity-imported": "%s geimporteerd in %s van %s",
     "activity-imported": "%s geimporteerd in %s van %s",
     "activity-imported-board": "%s geimporteerd van %s",
     "activity-imported-board": "%s geimporteerd van %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Deadline: ",
     "card-due-on": "Deadline: ",
     "card-spent": "gespendeerde tijd",
     "card-spent": "gespendeerde tijd",
     "card-edit-attachments": "Wijzig bijlagen",
     "card-edit-attachments": "Wijzig bijlagen",
+    "card-edit-custom-fields": "Edit custom fields",
     "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 vam de kaart.",
     "card-labels-title": "Wijzig de labels vam de kaart.",
@@ -118,6 +121,8 @@
     "card-start": "Begin",
     "card-start": "Begin",
     "card-start-on": "Begint op",
     "card-start-on": "Begint op",
     "cardAttachmentsPopup-title": "Voeg bestand toe vanuit",
     "cardAttachmentsPopup-title": "Voeg bestand toe vanuit",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Kaart verwijderen?",
     "cardDeletePopup-title": "Kaart verwijderen?",
     "cardDetailsActionsPopup-title": "Kaart actie ondernemen",
     "cardDetailsActionsPopup-title": "Kaart actie ondernemen",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Bord aanmaken",
     "createBoardPopup-title": "Bord aanmaken",
     "chooseBoardSourcePopup-title": "Importeer bord",
     "chooseBoardSourcePopup-title": "Importeer bord",
     "createLabelPopup-title": "Label aanmaken",
     "createLabelPopup-title": "Label aanmaken",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "Huidige",
     "current": "Huidige",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Datum",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Datum",
     "date": "Datum",
     "decline": "Weigeren",
     "decline": "Weigeren",
     "default-avatar": "Standaard avatar",
     "default-avatar": "Standaard avatar",
     "delete": "Verwijderen",
     "delete": "Verwijderen",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Verwijder label?",
     "deleteLabelPopup-title": "Verwijder label?",
     "description": "Beschrijving",
     "description": "Beschrijving",
     "disambiguateMultiLabelPopup-title": "Disambigueer Label Actie",
     "disambiguateMultiLabelPopup-title": "Disambigueer Label Actie",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Zachte WIP limiet",
     "soft-wip-limit": "Zachte WIP limiet",
     "editCardStartDatePopup-title": "Wijzig start datum",
     "editCardStartDatePopup-title": "Wijzig start datum",
     "editCardDueDatePopup-title": "Wijzig deadline",
     "editCardDueDatePopup-title": "Wijzig deadline",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Verander gespendeerde tijd",
     "editCardSpentTimePopup-title": "Verander gespendeerde tijd",
     "editLabelPopup-title": "Wijzig label",
     "editLabelPopup-title": "Wijzig label",
     "editNotificationPopup-title": "Wijzig notificatie",
     "editNotificationPopup-title": "Wijzig notificatie",
@@ -366,6 +386,7 @@
     "title": "Titel",
     "title": "Titel",
     "tracking": "Volgen",
     "tracking": "Volgen",
     "tracking-info": "Je wordt op de hoogte gesteld als er veranderingen zijn aan de kaarten waar je lid of maker van bent.",
     "tracking-info": "Je wordt op de hoogte gesteld als er veranderingen zijn aan de kaarten waar je lid of maker van bent.",
+    "type": "Type",
     "unassign-member": "Lid ontkennen",
     "unassign-member": "Lid ontkennen",
     "unsaved-description": "Je hebt een niet opgeslagen beschrijving.",
     "unsaved-description": "Je hebt een niet opgeslagen beschrijving.",
     "unwatch": "Niet bekijken",
     "unwatch": "Niet bekijken",
@@ -430,6 +451,7 @@
     "hours": "uren",
     "hours": "uren",
     "minutes": "minuten",
     "minutes": "minuten",
     "seconds": "seconden",
     "seconds": "seconden",
+    "show-field-on-card": "Show this field on card",
     "yes": "Ja",
     "yes": "Ja",
     "no": "Nee",
     "no": "Nee",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/pl.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s przeniesiono do Kosza",
     "activity-archived": "%s przeniesiono do Kosza",
     "activity-attached": "załączono %s z %s",
     "activity-attached": "załączono %s z %s",
     "activity-created": "utworzono %s",
     "activity-created": "utworzono %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "wyłączono %s z %s",
     "activity-excluded": "wyłączono %s z %s",
     "activity-imported": "zaimportowano %s to %s z %s",
     "activity-imported": "zaimportowano %s to %s z %s",
     "activity-imported-board": "zaimportowano %s z %s",
     "activity-imported-board": "zaimportowano %s z %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "card-spent": "Spent Time",
     "card-spent": "Spent Time",
     "card-edit-attachments": "Edytuj załączniki",
     "card-edit-attachments": "Edytuj załączniki",
+    "card-edit-custom-fields": "Edit custom fields",
     "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",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Załącz z",
     "cardAttachmentsPopup-title": "Załącz z",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Usunąć kartę?",
     "cardDeletePopup-title": "Usunąć kartę?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Etykiety",
     "cardLabelsPopup-title": "Etykiety",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Utwórz tablicę",
     "createBoardPopup-title": "Utwórz tablicę",
     "chooseBoardSourcePopup-title": "Import tablicy",
     "chooseBoardSourcePopup-title": "Import tablicy",
     "createLabelPopup-title": "Utwórz etykietę",
     "createLabelPopup-title": "Utwórz etykietę",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "obecny",
     "current": "obecny",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Data",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Data",
     "date": "Data",
     "decline": "Odrzuć",
     "decline": "Odrzuć",
     "default-avatar": "Domyślny avatar",
     "default-avatar": "Domyślny avatar",
     "delete": "Usuń",
     "delete": "Usuń",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Usunąć etykietę?",
     "deleteLabelPopup-title": "Usunąć etykietę?",
     "description": "Opis",
     "description": "Opis",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Zmień etykietę",
     "editLabelPopup-title": "Zmień etykietę",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Tytuł",
     "title": "Tytuł",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Nieprzypisany członek",
     "unassign-member": "Nieprzypisany członek",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "godzin",
     "hours": "godzin",
     "minutes": "minut",
     "minutes": "minut",
     "seconds": "sekund",
     "seconds": "sekund",
+    "show-field-on-card": "Show this field on card",
     "yes": "Tak",
     "yes": "Tak",
     "no": "Nie",
     "no": "Nie",
     "accounts": "Konto",
     "accounts": "Konto",

+ 22 - 0
i18n/pt-BR.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "comentou em __card__: __comment__",
     "act-addComment": "comentou em __card__: __comment__",
     "act-createBoard": "criou __board__",
     "act-createBoard": "criou __board__",
     "act-createCard": "__card__ adicionado à __list__",
     "act-createCard": "__card__ adicionado à __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "__list__ adicionada à __board__",
     "act-createList": "__list__ adicionada à __board__",
     "act-addBoardMember": "__member__ adicionado à __board__",
     "act-addBoardMember": "__member__ adicionado à __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "anexou %s a %s",
     "activity-attached": "anexou %s a %s",
     "activity-created": "criou %s",
     "activity-created": "criou %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluiu %s de %s",
     "activity-excluded": "excluiu %s de %s",
     "activity-imported": "importado %s em %s de %s",
     "activity-imported": "importado %s em %s de %s",
     "activity-imported-board": "importado %s de %s",
     "activity-imported-board": "importado %s de %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Finaliza em",
     "card-due-on": "Finaliza em",
     "card-spent": "Tempo Gasto",
     "card-spent": "Tempo Gasto",
     "card-edit-attachments": "Editar anexos",
     "card-edit-attachments": "Editar anexos",
+    "card-edit-custom-fields": "Edit custom fields",
     "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.",
@@ -118,6 +121,8 @@
     "card-start": "Data início",
     "card-start": "Data início",
     "card-start-on": "Começa em",
     "card-start-on": "Começa em",
     "cardAttachmentsPopup-title": "Anexar a partir de",
     "cardAttachmentsPopup-title": "Anexar a partir de",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "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",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Criar Quadro",
     "createBoardPopup-title": "Criar Quadro",
     "chooseBoardSourcePopup-title": "Importar quadro",
     "chooseBoardSourcePopup-title": "Importar quadro",
     "createLabelPopup-title": "Criar Etiqueta",
     "createLabelPopup-title": "Criar Etiqueta",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "atual",
     "current": "atual",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Data",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Data",
     "date": "Data",
     "decline": "Rejeitar",
     "decline": "Rejeitar",
     "default-avatar": "Avatar padrão",
     "default-avatar": "Avatar padrão",
     "delete": "Excluir",
     "delete": "Excluir",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Excluir Etiqueta?",
     "deleteLabelPopup-title": "Excluir Etiqueta?",
     "description": "Descrição",
     "description": "Descrição",
     "disambiguateMultiLabelPopup-title": "Desambiguar ações de etiquetas",
     "disambiguateMultiLabelPopup-title": "Desambiguar ações de etiquetas",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Limite de WIP",
     "soft-wip-limit": "Limite de WIP",
     "editCardStartDatePopup-title": "Altera data de início",
     "editCardStartDatePopup-title": "Altera data de início",
     "editCardDueDatePopup-title": "Altera data fim",
     "editCardDueDatePopup-title": "Altera data fim",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Editar tempo gasto",
     "editCardSpentTimePopup-title": "Editar tempo gasto",
     "editLabelPopup-title": "Alterar Etiqueta",
     "editLabelPopup-title": "Alterar Etiqueta",
     "editNotificationPopup-title": "Editar Notificações",
     "editNotificationPopup-title": "Editar Notificações",
@@ -366,6 +386,7 @@
     "title": "Título",
     "title": "Título",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "Você será notificado se houver qualquer alteração em cards em que você é o criador ou membro",
     "tracking-info": "Você será notificado se houver qualquer alteração em cards em que você é o criador ou membro",
+    "type": "Type",
     "unassign-member": "Membro não associado",
     "unassign-member": "Membro não associado",
     "unsaved-description": "Você possui uma descrição não salva",
     "unsaved-description": "Você possui uma descrição não salva",
     "unwatch": "Deixar de observar",
     "unwatch": "Deixar de observar",
@@ -430,6 +451,7 @@
     "hours": "horas",
     "hours": "horas",
     "minutes": "minutos",
     "minutes": "minutos",
     "seconds": "segundos",
     "seconds": "segundos",
+    "show-field-on-card": "Show this field on card",
     "yes": "Sim",
     "yes": "Sim",
     "no": "Não",
     "no": "Não",
     "accounts": "Contas",
     "accounts": "Contas",

+ 22 - 0
i18n/pt.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "attached %s to %s",
     "activity-attached": "attached %s to %s",
     "activity-created": "Criado %s",
     "activity-created": "Criado %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Etiquetas",
     "cardLabelsPopup-title": "Etiquetas",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "Não",
     "no": "Não",
     "accounts": "Contas",
     "accounts": "Contas",

+ 22 - 0
i18n/ro.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "attached %s to %s",
     "activity-attached": "attached %s to %s",
     "activity-created": "created %s",
     "activity-created": "created %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Titlu",
     "title": "Titlu",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/ru.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "прокомментировал __card__: __comment__",
     "act-addComment": "прокомментировал __card__: __comment__",
     "act-createBoard": "создал __board__",
     "act-createBoard": "создал __board__",
     "act-createCard": "добавил __card__ в __list__",
     "act-createCard": "добавил __card__ в __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "добавил __list__ для __board__",
     "act-createList": "добавил __list__ для __board__",
     "act-addBoardMember": "добавил __member__ в __board__",
     "act-addBoardMember": "добавил __member__ в __board__",
     "act-archivedBoard": "Доска __board__ перемещена в Корзину",
     "act-archivedBoard": "Доска __board__ перемещена в Корзину",
@@ -30,6 +31,7 @@
     "activity-archived": "%s перемещено в Корзину",
     "activity-archived": "%s перемещено в Корзину",
     "activity-attached": "прикрепил %s к %s",
     "activity-attached": "прикрепил %s к %s",
     "activity-created": "создал %s",
     "activity-created": "создал %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "исключил %s из %s",
     "activity-excluded": "исключил %s из %s",
     "activity-imported": "импортировал %s в %s из %s",
     "activity-imported": "импортировал %s в %s из %s",
     "activity-imported-board": "импортировал %s из %s",
     "activity-imported-board": "импортировал %s из %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Выполнить до",
     "card-due-on": "Выполнить до",
     "card-spent": "Затраченное время",
     "card-spent": "Затраченное время",
     "card-edit-attachments": "Изменить вложения",
     "card-edit-attachments": "Изменить вложения",
+    "card-edit-custom-fields": "Edit custom fields",
     "card-edit-labels": "Изменить метку",
     "card-edit-labels": "Изменить метку",
     "card-edit-members": "Изменить участников",
     "card-edit-members": "Изменить участников",
     "card-labels-title": "Изменить метки для этой карточки.",
     "card-labels-title": "Изменить метки для этой карточки.",
@@ -118,6 +121,8 @@
     "card-start": "Дата начала",
     "card-start": "Дата начала",
     "card-start-on": "Начнётся с",
     "card-start-on": "Начнётся с",
     "cardAttachmentsPopup-title": "Прикрепить из",
     "cardAttachmentsPopup-title": "Прикрепить из",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Удалить карточку?",
     "cardDeletePopup-title": "Удалить карточку?",
     "cardDetailsActionsPopup-title": "Действия в карточке",
     "cardDetailsActionsPopup-title": "Действия в карточке",
     "cardLabelsPopup-title": "Метки",
     "cardLabelsPopup-title": "Метки",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Создать доску",
     "createBoardPopup-title": "Создать доску",
     "chooseBoardSourcePopup-title": "Импортировать доску",
     "chooseBoardSourcePopup-title": "Импортировать доску",
     "createLabelPopup-title": "Создать метку",
     "createLabelPopup-title": "Создать метку",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "текущий",
     "current": "текущий",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Дата",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Дата",
     "date": "Дата",
     "decline": "Отклонить",
     "decline": "Отклонить",
     "default-avatar": "Аватар по умолчанию",
     "default-avatar": "Аватар по умолчанию",
     "delete": "Удалить",
     "delete": "Удалить",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Удалить метку?",
     "deleteLabelPopup-title": "Удалить метку?",
     "description": "Описание",
     "description": "Описание",
     "disambiguateMultiLabelPopup-title": "Разрешить конфликт меток",
     "disambiguateMultiLabelPopup-title": "Разрешить конфликт меток",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Мягкий лимит на кол-во задач",
     "soft-wip-limit": "Мягкий лимит на кол-во задач",
     "editCardStartDatePopup-title": "Изменить дату начала",
     "editCardStartDatePopup-title": "Изменить дату начала",
     "editCardDueDatePopup-title": "Изменить дату выполнения",
     "editCardDueDatePopup-title": "Изменить дату выполнения",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Изменить затраченное время",
     "editCardSpentTimePopup-title": "Изменить затраченное время",
     "editLabelPopup-title": "Изменить метки",
     "editLabelPopup-title": "Изменить метки",
     "editNotificationPopup-title": "Редактировать уведомления",
     "editNotificationPopup-title": "Редактировать уведомления",
@@ -366,6 +386,7 @@
     "title": "Название",
     "title": "Название",
     "tracking": "Отслеживание",
     "tracking": "Отслеживание",
     "tracking-info": "Вы будете уведомлены о любых изменениях в тех карточках, в которых вы являетесь создателем или участником.",
     "tracking-info": "Вы будете уведомлены о любых изменениях в тех карточках, в которых вы являетесь создателем или участником.",
+    "type": "Type",
     "unassign-member": "Отменить назначение участника",
     "unassign-member": "Отменить назначение участника",
     "unsaved-description": "У вас есть несохраненное описание.",
     "unsaved-description": "У вас есть несохраненное описание.",
     "unwatch": "Перестать следить",
     "unwatch": "Перестать следить",
@@ -430,6 +451,7 @@
     "hours": "часы",
     "hours": "часы",
     "minutes": "минуты",
     "minutes": "минуты",
     "seconds": "секунды",
     "seconds": "секунды",
+    "show-field-on-card": "Show this field on card",
     "yes": "Да",
     "yes": "Да",
     "no": "Нет",
     "no": "Нет",
     "accounts": "Учетные записи",
     "accounts": "Учетные записи",

+ 22 - 0
i18n/sr.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "prikačio %s u %s",
     "activity-attached": "prikačio %s u %s",
     "activity-created": "kreirao %s",
     "activity-created": "kreirao %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "izuzmi %s iz %s",
     "activity-excluded": "izuzmi %s iz %s",
     "activity-imported": "uvezao %s u %s iz %s",
     "activity-imported": "uvezao %s u %s iz %s",
     "activity-imported-board": "uvezao %s iz %s",
     "activity-imported-board": "uvezao %s iz %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Završava se",
     "card-due-on": "Završava se",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Početak",
     "card-start": "Početak",
     "card-start-on": "Počinje",
     "card-start-on": "Počinje",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Datum",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Datum",
     "date": "Datum",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Izmeni početni datum",
     "editCardStartDatePopup-title": "Izmeni početni datum",
     "editCardDueDatePopup-title": "Izmeni krajnji datum",
     "editCardDueDatePopup-title": "Izmeni krajnji datum",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Izmeni notifikaciju",
     "editNotificationPopup-title": "Izmeni notifikaciju",
@@ -366,6 +386,7 @@
     "title": "Naslov",
     "title": "Naslov",
     "tracking": "Praćenje",
     "tracking": "Praćenje",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "Imaš nesnimljen opis.",
     "unsaved-description": "Imaš nesnimljen opis.",
     "unwatch": "Ne posmatraj",
     "unwatch": "Ne posmatraj",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/sv.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "kommenterade __card__: __comment__",
     "act-addComment": "kommenterade __card__: __comment__",
     "act-createBoard": "skapade __board__",
     "act-createBoard": "skapade __board__",
     "act-createCard": "lade till __card__ to __list__",
     "act-createCard": "lade till __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "lade till __list__ to __board__",
     "act-createList": "lade till __list__ to __board__",
     "act-addBoardMember": "lade till __member__ to __board__",
     "act-addBoardMember": "lade till __member__ to __board__",
     "act-archivedBoard": "__board__ flyttad till papperskorgen",
     "act-archivedBoard": "__board__ flyttad till papperskorgen",
@@ -30,6 +31,7 @@
     "activity-archived": "%s flyttad till papperskorgen",
     "activity-archived": "%s flyttad till papperskorgen",
     "activity-attached": "bifogade %s to %s",
     "activity-attached": "bifogade %s to %s",
     "activity-created": "skapade %s",
     "activity-created": "skapade %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "exkluderade %s från %s",
     "activity-excluded": "exkluderade %s från %s",
     "activity-imported": "importerade %s till %s från %s",
     "activity-imported": "importerade %s till %s från %s",
     "activity-imported-board": "importerade %s från %s",
     "activity-imported-board": "importerade %s från %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Förfaller på",
     "card-due-on": "Förfaller på",
     "card-spent": "Spenderad tid",
     "card-spent": "Spenderad tid",
     "card-edit-attachments": "Redigera bilaga",
     "card-edit-attachments": "Redigera bilaga",
+    "card-edit-custom-fields": "Edit custom fields",
     "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.",
@@ -118,6 +121,8 @@
     "card-start": "Börja",
     "card-start": "Börja",
     "card-start-on": "Börja med",
     "card-start-on": "Börja med",
     "cardAttachmentsPopup-title": "Bifoga från",
     "cardAttachmentsPopup-title": "Bifoga från",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "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",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Skapa anslagstavla",
     "createBoardPopup-title": "Skapa anslagstavla",
     "chooseBoardSourcePopup-title": "Importera anslagstavla",
     "chooseBoardSourcePopup-title": "Importera anslagstavla",
     "createLabelPopup-title": "Skapa etikett",
     "createLabelPopup-title": "Skapa etikett",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "aktuell",
     "current": "aktuell",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Datum",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Datum",
     "date": "Datum",
     "decline": "Nedgång",
     "decline": "Nedgång",
     "default-avatar": "Standard avatar",
     "default-avatar": "Standard avatar",
     "delete": "Ta bort",
     "delete": "Ta bort",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Ta bort etikett?",
     "deleteLabelPopup-title": "Ta bort etikett?",
     "description": "Beskrivning",
     "description": "Beskrivning",
     "disambiguateMultiLabelPopup-title": "Otvetydig etikettåtgärd",
     "disambiguateMultiLabelPopup-title": "Otvetydig etikettåtgärd",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Mjuk WIP-gräns",
     "soft-wip-limit": "Mjuk WIP-gräns",
     "editCardStartDatePopup-title": "Ändra startdatum",
     "editCardStartDatePopup-title": "Ändra startdatum",
     "editCardDueDatePopup-title": "Ändra förfallodatum",
     "editCardDueDatePopup-title": "Ändra förfallodatum",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Ändra spenderad tid",
     "editCardSpentTimePopup-title": "Ändra spenderad tid",
     "editLabelPopup-title": "Ändra etikett",
     "editLabelPopup-title": "Ändra etikett",
     "editNotificationPopup-title": "Redigera avisering",
     "editNotificationPopup-title": "Redigera avisering",
@@ -366,6 +386,7 @@
     "title": "Titel",
     "title": "Titel",
     "tracking": "Spårning",
     "tracking": "Spårning",
     "tracking-info": "Du kommer att meddelas om eventuella ändringar av dessa kort du deltar i som skapare eller medlem.",
     "tracking-info": "Du kommer att meddelas om eventuella ändringar av dessa kort du deltar i som skapare eller medlem.",
+    "type": "Type",
     "unassign-member": "Ta bort tilldelad medlem",
     "unassign-member": "Ta bort tilldelad medlem",
     "unsaved-description": "Du har en osparad beskrivning.",
     "unsaved-description": "Du har en osparad beskrivning.",
     "unwatch": "Avbevaka",
     "unwatch": "Avbevaka",
@@ -430,6 +451,7 @@
     "hours": "timmar",
     "hours": "timmar",
     "minutes": "minuter",
     "minutes": "minuter",
     "seconds": "sekunder",
     "seconds": "sekunder",
+    "show-field-on-card": "Show this field on card",
     "yes": "Ja",
     "yes": "Ja",
     "no": "Nej",
     "no": "Nej",
     "accounts": "Konton",
     "accounts": "Konton",

+ 22 - 0
i18n/ta.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "commented on __card__: __comment__",
     "act-addComment": "commented on __card__: __comment__",
     "act-createBoard": "created __board__",
     "act-createBoard": "created __board__",
     "act-createCard": "added __card__ to __list__",
     "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "attached %s to %s",
     "activity-attached": "attached %s to %s",
     "activity-created": "created %s",
     "activity-created": "created %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/th.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "ออกความเห็นที่ __card__: __comment__",
     "act-addComment": "ออกความเห็นที่ __card__: __comment__",
     "act-createBoard": "สร้าง __board__",
     "act-createBoard": "สร้าง __board__",
     "act-createCard": "เพิ่ม __card__ ไปยัง __list__",
     "act-createCard": "เพิ่ม __card__ ไปยัง __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "เพิ่ม __list__ ไปยัง __board__",
     "act-createList": "เพิ่ม __list__ ไปยัง __board__",
     "act-addBoardMember": "เพิ่ม __member__ ไปยัง __board__",
     "act-addBoardMember": "เพิ่ม __member__ ไปยัง __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "แนบ %s ไปยัง %s",
     "activity-attached": "แนบ %s ไปยัง %s",
     "activity-created": "สร้าง %s",
     "activity-created": "สร้าง %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "ยกเว้น %s จาก %s",
     "activity-excluded": "ยกเว้น %s จาก %s",
     "activity-imported": "ถูกนำเข้า %s ไปยัง %s จาก %s",
     "activity-imported": "ถูกนำเข้า %s ไปยัง %s จาก %s",
     "activity-imported-board": "นำเข้า %s จาก %s",
     "activity-imported-board": "นำเข้า %s จาก %s",
@@ -111,6 +113,7 @@
     "card-due-on": "ครบกำหนดเมื่อ",
     "card-due-on": "ครบกำหนดเมื่อ",
     "card-spent": "Spent Time",
     "card-spent": "Spent Time",
     "card-edit-attachments": "แก้ไขสิ่งที่แนบมา",
     "card-edit-attachments": "แก้ไขสิ่งที่แนบมา",
+    "card-edit-custom-fields": "Edit custom fields",
     "card-edit-labels": "แก้ไขป้ายกำกับ",
     "card-edit-labels": "แก้ไขป้ายกำกับ",
     "card-edit-members": "แก้ไขสมาชิก",
     "card-edit-members": "แก้ไขสมาชิก",
     "card-labels-title": "เปลี่ยนป้ายกำกับของการ์ด",
     "card-labels-title": "เปลี่ยนป้ายกำกับของการ์ด",
@@ -118,6 +121,8 @@
     "card-start": "เริ่ม",
     "card-start": "เริ่ม",
     "card-start-on": "เริ่มเมื่อ",
     "card-start-on": "เริ่มเมื่อ",
     "cardAttachmentsPopup-title": "แนบจาก",
     "cardAttachmentsPopup-title": "แนบจาก",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "ลบการ์ดนี้หรือไม่",
     "cardDeletePopup-title": "ลบการ์ดนี้หรือไม่",
     "cardDetailsActionsPopup-title": "การดำเนินการการ์ด",
     "cardDetailsActionsPopup-title": "การดำเนินการการ์ด",
     "cardLabelsPopup-title": "ป้ายกำกับ",
     "cardLabelsPopup-title": "ป้ายกำกับ",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "สร้างบอร์ด",
     "createBoardPopup-title": "สร้างบอร์ด",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "สร้างป้ายกำกับ",
     "createLabelPopup-title": "สร้างป้ายกำกับ",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "ปัจจุบัน",
     "current": "ปัจจุบัน",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "วันที่",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "วันที่",
     "date": "วันที่",
     "decline": "ปฎิเสธ",
     "decline": "ปฎิเสธ",
     "default-avatar": "ภาพเริ่มต้น",
     "default-avatar": "ภาพเริ่มต้น",
     "delete": "ลบ",
     "delete": "ลบ",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "ลบป้ายกำกับนี้หรือไม่",
     "deleteLabelPopup-title": "ลบป้ายกำกับนี้หรือไม่",
     "description": "คำอธิบาย",
     "description": "คำอธิบาย",
     "disambiguateMultiLabelPopup-title": "การดำเนินการกำกับป้ายชัดเจน",
     "disambiguateMultiLabelPopup-title": "การดำเนินการกำกับป้ายชัดเจน",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "เปลี่ยนวันเริ่มต้น",
     "editCardStartDatePopup-title": "เปลี่ยนวันเริ่มต้น",
     "editCardDueDatePopup-title": "เปลี่ยนวันครบกำหนด",
     "editCardDueDatePopup-title": "เปลี่ยนวันครบกำหนด",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "เปลี่ยนป้ายกำกับ",
     "editLabelPopup-title": "เปลี่ยนป้ายกำกับ",
     "editNotificationPopup-title": "แก้ไขการแจ้งเตือน",
     "editNotificationPopup-title": "แก้ไขการแจ้งเตือน",
@@ -366,6 +386,7 @@
     "title": "หัวข้อ",
     "title": "หัวข้อ",
     "tracking": "ติดตาม",
     "tracking": "ติดตาม",
     "tracking-info": "คุณจะได้รับแจ้งการเปลี่ยนแปลงใด ๆ กับการ์ดที่คุณมีส่วนร่วมในฐานะผู้สร้างหรือสมาชิก",
     "tracking-info": "คุณจะได้รับแจ้งการเปลี่ยนแปลงใด ๆ กับการ์ดที่คุณมีส่วนร่วมในฐานะผู้สร้างหรือสมาชิก",
+    "type": "Type",
     "unassign-member": "ยกเลิกสมาชิก",
     "unassign-member": "ยกเลิกสมาชิก",
     "unsaved-description": "คุณมีคำอธิบายที่ไม่ได้บันทึก",
     "unsaved-description": "คุณมีคำอธิบายที่ไม่ได้บันทึก",
     "unwatch": "เลิกเฝ้าดู",
     "unwatch": "เลิกเฝ้าดู",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/tr.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "__card__ kartına bir yorum bıraktı: __comment__",
     "act-addComment": "__card__ kartına bir yorum bıraktı: __comment__",
     "act-createBoard": "__board__ panosunu oluşturdu",
     "act-createBoard": "__board__ panosunu oluşturdu",
     "act-createCard": "__card__ kartını ___list__ listesine ekledi",
     "act-createCard": "__card__ kartını ___list__ listesine ekledi",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "__list__ listesini __board__ panosuna ekledi",
     "act-createList": "__list__ listesini __board__ panosuna ekledi",
     "act-addBoardMember": "__member__ kullanıcısını __board__ panosuna ekledi",
     "act-addBoardMember": "__member__ kullanıcısını __board__ panosuna ekledi",
     "act-archivedBoard": "__board__ Geri Dönüşüm Kutusu'na taşındı",
     "act-archivedBoard": "__board__ Geri Dönüşüm Kutusu'na taşındı",
@@ -30,6 +31,7 @@
     "activity-archived": "%s Geri Dönüşüm Kutusu'na taşındı",
     "activity-archived": "%s Geri Dönüşüm Kutusu'na taşındı",
     "activity-attached": "%s içine %s ekledi",
     "activity-attached": "%s içine %s ekledi",
     "activity-created": "%s öğesini oluşturdu",
     "activity-created": "%s öğesini oluşturdu",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "%s içinden %s çıkarttı",
     "activity-excluded": "%s içinden %s çıkarttı",
     "activity-imported": "%s kaynağından %s öğesini %s öğesinin içine taşıdı ",
     "activity-imported": "%s kaynağından %s öğesini %s öğesinin içine taşıdı ",
     "activity-imported-board": "%s i %s içinden aktardı",
     "activity-imported-board": "%s i %s içinden aktardı",
@@ -111,6 +113,7 @@
     "card-due-on": "Bitiş tarihi:",
     "card-due-on": "Bitiş tarihi:",
     "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": "Edit custom fields",
     "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",
@@ -118,6 +121,8 @@
     "card-start": "Başlama",
     "card-start": "Başlama",
     "card-start-on": "Başlama tarihi:",
     "card-start-on": "Başlama tarihi:",
     "cardAttachmentsPopup-title": "Eklenme",
     "cardAttachmentsPopup-title": "Eklenme",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "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",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Pano Oluşturma",
     "createBoardPopup-title": "Pano Oluşturma",
     "chooseBoardSourcePopup-title": "Panoyu içe aktar",
     "chooseBoardSourcePopup-title": "Panoyu içe aktar",
     "createLabelPopup-title": "Etiket Oluşturma",
     "createLabelPopup-title": "Etiket Oluşturma",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "mevcut",
     "current": "mevcut",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Tarih",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Tarih",
     "date": "Tarih",
     "decline": "Reddet",
     "decline": "Reddet",
     "default-avatar": "Varsayılan avatar",
     "default-avatar": "Varsayılan avatar",
     "delete": "Sil",
     "delete": "Sil",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Etiket Silinsin mi?",
     "deleteLabelPopup-title": "Etiket Silinsin mi?",
     "description": "Açıklama",
     "description": "Açıklama",
     "disambiguateMultiLabelPopup-title": "Etiket işlemini izah et",
     "disambiguateMultiLabelPopup-title": "Etiket işlemini izah et",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Zayıf Devam Eden İş Sınırı",
     "soft-wip-limit": "Zayıf Devam Eden İş Sınırı",
     "editCardStartDatePopup-title": "Başlangıç tarihini değiştir",
     "editCardStartDatePopup-title": "Başlangıç tarihini değiştir",
     "editCardDueDatePopup-title": "Bitiş tarihini değiştir",
     "editCardDueDatePopup-title": "Bitiş tarihini değiştir",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Harcanan zamanı değiştir",
     "editCardSpentTimePopup-title": "Harcanan zamanı değiştir",
     "editLabelPopup-title": "Etiket Değiştir",
     "editLabelPopup-title": "Etiket Değiştir",
     "editNotificationPopup-title": "Bildirimi değiştir",
     "editNotificationPopup-title": "Bildirimi değiştir",
@@ -366,6 +386,7 @@
     "title": "Başlık",
     "title": "Başlık",
     "tracking": "Takip",
     "tracking": "Takip",
     "tracking-info": "Oluşturduğunuz veya üyesi olduğunuz tüm kartlardaki değişiklikler size bildirim olarak gelecek.",
     "tracking-info": "Oluşturduğunuz veya üyesi olduğunuz tüm kartlardaki değişiklikler size bildirim olarak gelecek.",
+    "type": "Type",
     "unassign-member": "Üyeye atamayı kaldır",
     "unassign-member": "Üyeye atamayı kaldır",
     "unsaved-description": "Kaydedilmemiş bir açıklama metnin bulunmakta",
     "unsaved-description": "Kaydedilmemiş bir açıklama metnin bulunmakta",
     "unwatch": "Takibi bırak",
     "unwatch": "Takibi bırak",
@@ -430,6 +451,7 @@
     "hours": "saat",
     "hours": "saat",
     "minutes": "dakika",
     "minutes": "dakika",
     "seconds": "saniye",
     "seconds": "saniye",
+    "show-field-on-card": "Show this field on card",
     "yes": "Evet",
     "yes": "Evet",
     "no": "Hayır",
     "no": "Hayır",
     "accounts": "Hesaplar",
     "accounts": "Hesaplar",

+ 22 - 0
i18n/uk.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "комментар в __card__: __comment__",
     "act-addComment": "комментар в __card__: __comment__",
     "act-createBoard": "__board__ створенна",
     "act-createBoard": "__board__ створенна",
     "act-createCard": "__card__ карта додана до __list__ листа",
     "act-createCard": "__card__ карта додана до __list__ листа",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "added __list__ to __board__",
     "act-createList": "added __list__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-addBoardMember": "added __member__ to __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "attached %s to %s",
     "activity-attached": "attached %s to %s",
     "activity-created": "created %s",
     "activity-created": "created %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "excluded %s from %s",
     "activity-excluded": "excluded %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported": "imported %s into %s from %s",
     "activity-imported-board": "imported %s from %s",
     "activity-imported-board": "imported %s from %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/vi.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "đã bình luận trong __card__: __comment__",
     "act-addComment": "đã bình luận trong __card__: __comment__",
     "act-createBoard": "đã tạo __board__",
     "act-createBoard": "đã tạo __board__",
     "act-createCard": "đã thêm __card__ vào __list__",
     "act-createCard": "đã thêm __card__ vào __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "đã thêm __list__ vào __board__",
     "act-createList": "đã thêm __list__ vào __board__",
     "act-addBoardMember": "đã thêm __member__ vào __board__",
     "act-addBoardMember": "đã thêm __member__ vào __board__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "đã đính kèm %s vào %s",
     "activity-attached": "đã đính kèm %s vào %s",
     "activity-created": "đã tạo %s",
     "activity-created": "đã tạo %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "đã loại bỏ %s khỏi %s",
     "activity-excluded": "đã loại bỏ %s khỏi %s",
     "activity-imported": "đã nạp %s vào %s từ %s",
     "activity-imported": "đã nạp %s vào %s từ %s",
     "activity-imported-board": "đã nạp %s từ %s",
     "activity-imported-board": "đã nạp %s từ %s",
@@ -111,6 +113,7 @@
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "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-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.",
@@ -118,6 +121,8 @@
     "card-start": "Start",
     "card-start": "Start",
     "card-start-on": "Starts on",
     "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "Delete Card?",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardDetailsActionsPopup-title": "Card Actions",
     "cardLabelsPopup-title": "Labels",
     "cardLabelsPopup-title": "Labels",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "Create Board",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",
     "chooseBoardSourcePopup-title": "Import board",
     "createLabelPopup-title": "Create Label",
     "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "current",
     "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "Date",
     "date": "Date",
     "decline": "Decline",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "default-avatar": "Default avatar",
     "delete": "Delete",
     "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "Delete Label?",
     "deleteLabelPopup-title": "Delete Label?",
     "description": "Description",
     "description": "Description",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "Change start date",
     "editCardStartDatePopup-title": "Change start date",
     "editCardDueDatePopup-title": "Change due date",
     "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "Change Label",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editNotificationPopup-title": "Edit Notification",
@@ -366,6 +386,7 @@
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
     "unassign-member": "Unassign member",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
     "unsaved-description": "You have an unsaved description.",
     "unwatch": "Unwatch",
     "unwatch": "Unwatch",
@@ -430,6 +451,7 @@
     "hours": "hours",
     "hours": "hours",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "seconds",
     "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
     "yes": "Yes",
     "yes": "Yes",
     "no": "No",
     "no": "No",
     "accounts": "Accounts",
     "accounts": "Accounts",

+ 22 - 0
i18n/zh-CN.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "在 __card__ 发布评论: __comment__",
     "act-addComment": "在 __card__ 发布评论: __comment__",
     "act-createBoard": "创建看板 __board__",
     "act-createBoard": "创建看板 __board__",
     "act-createCard": "添加卡片 __card__  至列表 __list__",
     "act-createCard": "添加卡片 __card__  至列表 __list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "添加列表 __list__  至看板 __board__",
     "act-createList": "添加列表 __list__  至看板 __board__",
     "act-addBoardMember": "添加成员 __member__  至看板 __board__",
     "act-addBoardMember": "添加成员 __member__  至看板 __board__",
     "act-archivedBoard": "__board__ 已被移入回收站 ",
     "act-archivedBoard": "__board__ 已被移入回收站 ",
@@ -30,6 +31,7 @@
     "activity-archived": "%s 已被移入回收站",
     "activity-archived": "%s 已被移入回收站",
     "activity-attached": "添加附件 %s 至 %s",
     "activity-attached": "添加附件 %s 至 %s",
     "activity-created": "创建 %s",
     "activity-created": "创建 %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "排除 %s 从 %s",
     "activity-excluded": "排除 %s 从 %s",
     "activity-imported": "导入 %s 至 %s 从 %s 中",
     "activity-imported": "导入 %s 至 %s 从 %s 中",
     "activity-imported-board": "已导入 %s 从 %s 中",
     "activity-imported-board": "已导入 %s 从 %s 中",
@@ -111,6 +113,7 @@
     "card-due-on": "期限",
     "card-due-on": "期限",
     "card-spent": "耗时",
     "card-spent": "耗时",
     "card-edit-attachments": "编辑附件",
     "card-edit-attachments": "编辑附件",
+    "card-edit-custom-fields": "Edit custom fields",
     "card-edit-labels": "编辑标签",
     "card-edit-labels": "编辑标签",
     "card-edit-members": "编辑成员",
     "card-edit-members": "编辑成员",
     "card-labels-title": "更改该卡片上的标签",
     "card-labels-title": "更改该卡片上的标签",
@@ -118,6 +121,8 @@
     "card-start": "开始",
     "card-start": "开始",
     "card-start-on": "始于",
     "card-start-on": "始于",
     "cardAttachmentsPopup-title": "附件来源",
     "cardAttachmentsPopup-title": "附件来源",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "彻底删除卡片?",
     "cardDeletePopup-title": "彻底删除卡片?",
     "cardDetailsActionsPopup-title": "卡片操作",
     "cardDetailsActionsPopup-title": "卡片操作",
     "cardLabelsPopup-title": "标签",
     "cardLabelsPopup-title": "标签",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "创建看板",
     "createBoardPopup-title": "创建看板",
     "chooseBoardSourcePopup-title": "导入看板",
     "chooseBoardSourcePopup-title": "导入看板",
     "createLabelPopup-title": "创建标签",
     "createLabelPopup-title": "创建标签",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "当前",
     "current": "当前",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "日期",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "日期",
     "date": "日期",
     "decline": "拒绝",
     "decline": "拒绝",
     "default-avatar": "默认头像",
     "default-avatar": "默认头像",
     "delete": "删除",
     "delete": "删除",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "删除标签?",
     "deleteLabelPopup-title": "删除标签?",
     "description": "描述",
     "description": "描述",
     "disambiguateMultiLabelPopup-title": "标签消歧 [?]",
     "disambiguateMultiLabelPopup-title": "标签消歧 [?]",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "软在制品限制",
     "soft-wip-limit": "软在制品限制",
     "editCardStartDatePopup-title": "修改起始日期",
     "editCardStartDatePopup-title": "修改起始日期",
     "editCardDueDatePopup-title": "修改截止日期",
     "editCardDueDatePopup-title": "修改截止日期",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "修改耗时",
     "editCardSpentTimePopup-title": "修改耗时",
     "editLabelPopup-title": "更改标签",
     "editLabelPopup-title": "更改标签",
     "editNotificationPopup-title": "编辑通知",
     "editNotificationPopup-title": "编辑通知",
@@ -366,6 +386,7 @@
     "title": "标题",
     "title": "标题",
     "tracking": "跟踪",
     "tracking": "跟踪",
     "tracking-info": "当任何包含您(作为创建者或成员)的卡片发生变更时,您将得到通知。",
     "tracking-info": "当任何包含您(作为创建者或成员)的卡片发生变更时,您将得到通知。",
+    "type": "Type",
     "unassign-member": "取消分配成员",
     "unassign-member": "取消分配成员",
     "unsaved-description": "存在未保存的描述",
     "unsaved-description": "存在未保存的描述",
     "unwatch": "取消关注",
     "unwatch": "取消关注",
@@ -430,6 +451,7 @@
     "hours": "小时",
     "hours": "小时",
     "minutes": "分钟",
     "minutes": "分钟",
     "seconds": "秒",
     "seconds": "秒",
+    "show-field-on-card": "Show this field on card",
     "yes": "是",
     "yes": "是",
     "no": "否",
     "no": "否",
     "accounts": "账号",
     "accounts": "账号",

+ 22 - 0
i18n/zh-TW.i18n.json

@@ -7,6 +7,7 @@
     "act-addComment": "評論__card__: __comment__",
     "act-addComment": "評論__card__: __comment__",
     "act-createBoard": "完成新增 __board__",
     "act-createBoard": "完成新增 __board__",
     "act-createCard": "將__card__加入__list__",
     "act-createCard": "將__card__加入__list__",
+    "act-createCustomField": "created custom field __customField__",
     "act-createList": "新增__list__至__board__",
     "act-createList": "新增__list__至__board__",
     "act-addBoardMember": "在__board__中新增成員__member__",
     "act-addBoardMember": "在__board__中新增成員__member__",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
     "act-archivedBoard": "__board__ moved to Recycle Bin",
@@ -30,6 +31,7 @@
     "activity-archived": "%s moved to Recycle Bin",
     "activity-archived": "%s moved to Recycle Bin",
     "activity-attached": "新增附件 %s 至 %s",
     "activity-attached": "新增附件 %s 至 %s",
     "activity-created": "建立 %s",
     "activity-created": "建立 %s",
+    "activity-customfield-created": "created custom field %s",
     "activity-excluded": "排除 %s 從 %s",
     "activity-excluded": "排除 %s 從 %s",
     "activity-imported": "匯入 %s 至 %s 從 %s 中",
     "activity-imported": "匯入 %s 至 %s 從 %s 中",
     "activity-imported-board": "已匯入 %s 從 %s 中",
     "activity-imported-board": "已匯入 %s 從 %s 中",
@@ -111,6 +113,7 @@
     "card-due-on": "到期",
     "card-due-on": "到期",
     "card-spent": "Spent Time",
     "card-spent": "Spent Time",
     "card-edit-attachments": "編輯附件",
     "card-edit-attachments": "編輯附件",
+    "card-edit-custom-fields": "Edit custom fields",
     "card-edit-labels": "編輯標籤",
     "card-edit-labels": "編輯標籤",
     "card-edit-members": "編輯成員",
     "card-edit-members": "編輯成員",
     "card-labels-title": "更改該卡片上的標籤",
     "card-labels-title": "更改該卡片上的標籤",
@@ -118,6 +121,8 @@
     "card-start": "開始",
     "card-start": "開始",
     "card-start-on": "開始",
     "card-start-on": "開始",
     "cardAttachmentsPopup-title": "附件來源",
     "cardAttachmentsPopup-title": "附件來源",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
     "cardDeletePopup-title": "徹底刪除卡片?",
     "cardDeletePopup-title": "徹底刪除卡片?",
     "cardDetailsActionsPopup-title": "卡片動作",
     "cardDetailsActionsPopup-title": "卡片動作",
     "cardLabelsPopup-title": "標籤",
     "cardLabelsPopup-title": "標籤",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "建立看板",
     "createBoardPopup-title": "建立看板",
     "chooseBoardSourcePopup-title": "匯入看板",
     "chooseBoardSourcePopup-title": "匯入看板",
     "createLabelPopup-title": "建立標籤",
     "createLabelPopup-title": "建立標籤",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
     "current": "目前",
     "current": "目前",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "日期",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
     "date": "日期",
     "date": "日期",
     "decline": "拒絕",
     "decline": "拒絕",
     "default-avatar": "預設大頭貼",
     "default-avatar": "預設大頭貼",
     "delete": "刪除",
     "delete": "刪除",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
     "deleteLabelPopup-title": "刪除標籤?",
     "deleteLabelPopup-title": "刪除標籤?",
     "description": "描述",
     "description": "描述",
     "disambiguateMultiLabelPopup-title": "清除標籤動作歧義",
     "disambiguateMultiLabelPopup-title": "清除標籤動作歧義",
@@ -186,6 +205,7 @@
     "soft-wip-limit": "Soft WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "更改開始日期",
     "editCardStartDatePopup-title": "更改開始日期",
     "editCardDueDatePopup-title": "更改到期日期",
     "editCardDueDatePopup-title": "更改到期日期",
+    "editCustomFieldPopup-title": "Edit Field",
     "editCardSpentTimePopup-title": "Change spent time",
     "editCardSpentTimePopup-title": "Change spent time",
     "editLabelPopup-title": "更改標籤",
     "editLabelPopup-title": "更改標籤",
     "editNotificationPopup-title": "更改通知",
     "editNotificationPopup-title": "更改通知",
@@ -366,6 +386,7 @@
     "title": "標題",
     "title": "標題",
     "tracking": "追蹤",
     "tracking": "追蹤",
     "tracking-info": "你將會收到與你有關的卡片的所有變更通知",
     "tracking-info": "你將會收到與你有關的卡片的所有變更通知",
+    "type": "Type",
     "unassign-member": "取消分配成員",
     "unassign-member": "取消分配成員",
     "unsaved-description": "未儲存的描述",
     "unsaved-description": "未儲存的描述",
     "unwatch": "取消觀察",
     "unwatch": "取消觀察",
@@ -430,6 +451,7 @@
     "hours": "小時",
     "hours": "小時",
     "minutes": "分鐘",
     "minutes": "分鐘",
     "seconds": "秒",
     "seconds": "秒",
+    "show-field-on-card": "Show this field on card",
     "yes": "是",
     "yes": "是",
     "no": "否",
     "no": "否",
     "accounts": "帳號",
     "accounts": "帳號",

+ 8 - 0
models/activities.js

@@ -44,6 +44,9 @@ Activities.helpers({
   checklistItem() {
   checklistItem() {
     return ChecklistItems.findOne(this.checklistItemId);
     return ChecklistItems.findOne(this.checklistItemId);
   },
   },
+  customField() {
+    return CustomFields.findOne(this.customFieldId);
+  },
 });
 });
 
 
 Activities.before.insert((userId, doc) => {
 Activities.before.insert((userId, doc) => {
@@ -60,6 +63,7 @@ if (Meteor.isServer) {
     Activities._collection._ensureIndex({ boardId: 1, createdAt: -1 });
     Activities._collection._ensureIndex({ boardId: 1, createdAt: -1 });
     Activities._collection._ensureIndex({ commentId: 1 }, { partialFilterExpression: { commentId: { $exists: true } } });
     Activities._collection._ensureIndex({ commentId: 1 }, { partialFilterExpression: { commentId: { $exists: true } } });
     Activities._collection._ensureIndex({ attachmentId: 1 }, { partialFilterExpression: { attachmentId: { $exists: true } } });
     Activities._collection._ensureIndex({ attachmentId: 1 }, { partialFilterExpression: { attachmentId: { $exists: true } } });
+    Activities._collection._ensureIndex({ customFieldId: 1 }, { partialFilterExpression: { customFieldId: { $exists: true } } });
   });
   });
 
 
   Activities.after.insert((userId, doc) => {
   Activities.after.insert((userId, doc) => {
@@ -127,6 +131,10 @@ if (Meteor.isServer) {
       const checklistItem = activity.checklistItem();
       const checklistItem = activity.checklistItem();
       params.checklistItem = checklistItem.title;
       params.checklistItem = checklistItem.title;
     }
     }
+    if (activity.customFieldId) {
+      const customField = activity.customField();
+      params.customField = customField.name;
+    }
     if (board) {
     if (board) {
       const watchingUsers = _.pluck(_.where(board.watchers, {level: 'watching'}), 'userId');
       const watchingUsers = _.pluck(_.where(board.watchers, {level: 'watching'}), 'userId');
       const trackingUsers = _.pluck(_.where(board.watchers, {level: 'tracking'}), 'userId');
       const trackingUsers = _.pluck(_.where(board.watchers, {level: 'tracking'}), 'userId');

+ 79 - 79
models/attachments.js

@@ -1,90 +1,90 @@
-  Attachments = new FS.Collection('attachments', {
-    stores: [
+Attachments = new FS.Collection('attachments', {
+  stores: [
 
 
-      // XXX Add a new store for cover thumbnails so we don't load big images in
-      // the general board view
-      new FS.Store.GridFS('attachments', {
-        // If the uploaded document is not an image we need to enforce browser
-        // download instead of execution. This is particularly important for HTML
-        // files that the browser will just execute if we don't serve them with the
-        // appropriate `application/octet-stream` MIME header which can lead to user
-        // data leaks. I imagine other formats (like PDF) can also be attack vectors.
-        // See https://github.com/wekan/wekan/issues/99
-        // XXX Should we use `beforeWrite` option of CollectionFS instead of
-        // collection-hooks?
-        // We should use `beforeWrite`.
-        beforeWrite: (fileObj) => {
-          if (!fileObj.isImage()) {
-            return {
-              type: 'application/octet-stream',
-            };
-          }
-          return {};
-        },
-      }),
-    ],
-  });
-
-
-  if (Meteor.isServer) {
-    Attachments.allow({
-      insert(userId, doc) {
-        return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
-      },
-      update(userId, doc) {
-        return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
-      },
-      remove(userId, doc) {
-        return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
-      },
-      // We authorize the attachment download either:
-      // - if the board is public, everyone (even unconnected) can download it
-      // - if the board is private, only board members can download it
-      download(userId, doc) {
-        const board = Boards.findOne(doc.boardId);
-        if (board.isPublic()) {
-          return true;
-        } else {
-          return board.hasMember(userId);
+    // XXX Add a new store for cover thumbnails so we don't load big images in
+    // the general board view
+    new FS.Store.GridFS('attachments', {
+      // If the uploaded document is not an image we need to enforce browser
+      // download instead of execution. This is particularly important for HTML
+      // files that the browser will just execute if we don't serve them with the
+      // appropriate `application/octet-stream` MIME header which can lead to user
+      // data leaks. I imagine other formats (like PDF) can also be attack vectors.
+      // See https://github.com/wekan/wekan/issues/99
+      // XXX Should we use `beforeWrite` option of CollectionFS instead of
+      // collection-hooks?
+      // We should use `beforeWrite`.
+      beforeWrite: (fileObj) => {
+        if (!fileObj.isImage()) {
+          return {
+            type: 'application/octet-stream',
+          };
         }
         }
+        return {};
       },
       },
+    }),
+  ],
+});
 
 
-      fetch: ['boardId'],
-    });
-  }
-
-  // XXX Enforce a schema for the Attachments CollectionFS
 
 
-  if (Meteor.isServer) {
-    Attachments.files.after.insert((userId, doc) => {
-      // If the attachment doesn't have a source field
-      // or its source is different than import
-      if (!doc.source || doc.source !== 'import') {
-        // Add activity about adding the attachment
-        Activities.insert({
-          userId,
-          type: 'card',
-          activityType: 'addAttachment',
-          attachmentId: doc._id,
-          boardId: doc.boardId,
-          cardId: doc.cardId,
-        });
+if (Meteor.isServer) {
+  Attachments.allow({
+    insert(userId, doc) {
+      return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
+    },
+    update(userId, doc) {
+      return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
+    },
+    remove(userId, doc) {
+      return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
+    },
+    // We authorize the attachment download either:
+    // - if the board is public, everyone (even unconnected) can download it
+    // - if the board is private, only board members can download it
+    download(userId, doc) {
+      const board = Boards.findOne(doc.boardId);
+      if (board.isPublic()) {
+        return true;
       } else {
       } else {
-        // Don't add activity about adding the attachment as the activity
-        // be imported and delete source field
-        Attachments.update({
-          _id: doc._id,
-        }, {
-          $unset: {
-            source: '',
-          },
-        });
+        return board.hasMember(userId);
       }
       }
-    });
+    },
+
+    fetch: ['boardId'],
+  });
+}
 
 
-    Attachments.files.after.remove((userId, doc) => {
-      Activities.remove({
+// XXX Enforce a schema for the Attachments CollectionFS
+
+if (Meteor.isServer) {
+  Attachments.files.after.insert((userId, doc) => {
+    // If the attachment doesn't have a source field
+    // or its source is different than import
+    if (!doc.source || doc.source !== 'import') {
+      // Add activity about adding the attachment
+      Activities.insert({
+        userId,
+        type: 'card',
+        activityType: 'addAttachment',
         attachmentId: doc._id,
         attachmentId: doc._id,
+        boardId: doc.boardId,
+        cardId: doc.cardId,
       });
       });
+    } else {
+      // Don't add activity about adding the attachment as the activity
+      // be imported and delete source field
+      Attachments.update({
+        _id: doc._id,
+      }, {
+        $unset: {
+          source: '',
+        },
+      });
+    }
+  });
+
+  Attachments.files.after.remove((userId, doc) => {
+    Activities.remove({
+      attachmentId: doc._id,
     });
     });
-  }
+  });
+}

+ 4 - 0
models/boards.js

@@ -249,6 +249,10 @@ Boards.helpers({
     return `board-color-${this.color}`;
     return `board-color-${this.color}`;
   },
   },
 
 
+  customFields() {
+    return CustomFields.find({ boardId: this._id }, { sort: { name: 1 } });
+  },
+
   // XXX currently mutations return no value so we have an issue when using addLabel in import
   // XXX currently mutations return no value so we have an issue when using addLabel in import
   // XXX waiting on https://github.com/mquandalle/meteor-collection-mutations/issues/1 to remove...
   // XXX waiting on https://github.com/mquandalle/meteor-collection-mutations/issues/1 to remove...
   pushLabel(name, color) {
   pushLabel(name, color) {

+ 69 - 0
models/cards.js

@@ -41,6 +41,21 @@ Cards.attachSchema(new SimpleSchema({
       }
       }
     },
     },
   },
   },
+  customFields: {
+    type: [Object],
+    optional: true,
+  },
+  'customFields.$': {
+    type: new SimpleSchema({
+      _id: {
+        type: String,
+      },
+      value: {
+        type: Match.OneOf(String, Number, Boolean, Date),
+        optional: true,
+      },
+    }),
+  },
   dateLastActivity: {
   dateLastActivity: {
     type: Date,
     type: Date,
     autoValue() {
     autoValue() {
@@ -192,6 +207,31 @@ Cards.helpers({
     return this.checklistItemCount() !== 0;
     return this.checklistItemCount() !== 0;
   },
   },
 
 
+  customFieldIndex(customFieldId) {
+    return _.pluck(this.customFields, '_id').indexOf(customFieldId);
+  },
+
+  // customFields with definitions
+  customFieldsWD() {
+
+    // get all definitions
+    const definitions = CustomFields.find({
+      boardId: this.boardId,
+    }).fetch();
+
+    // match right definition to each field
+    return this.customFields.map((customField) => {
+      return {
+        _id: customField._id,
+        value: customField.value,
+        definition: definitions.find((definition) => {
+          return definition._id === customField._id;
+        }),
+      };
+    });
+
+  },
+
   absoluteUrl() {
   absoluteUrl() {
     const board = this.board();
     const board = this.board();
     return FlowRouter.url('card', {
     return FlowRouter.url('card', {
@@ -271,6 +311,35 @@ Cards.mutations({
     }
     }
   },
   },
 
 
+  assignCustomField(customFieldId) {
+    return {$addToSet: {customFields: {_id: customFieldId, value: null}}};
+  },
+
+  unassignCustomField(customFieldId) {
+    return {$pull: {customFields: {_id: customFieldId}}};
+  },
+
+  toggleCustomField(customFieldId) {
+    if (this.customFields && this.customFieldIndex(customFieldId) > -1) {
+      return this.unassignCustomField(customFieldId);
+    } else {
+      return this.assignCustomField(customFieldId);
+    }
+  },
+
+  setCustomField(customFieldId, value) {
+    // todo
+    const index = this.customFieldIndex(customFieldId);
+    if (index > -1) {
+      const update = {$set: {}};
+      update.$set[`customFields.${index}.value`] = value;
+      return update;
+    }
+    // TODO
+    // Ignatz 18.05.2018: Return null to silence ESLint. No Idea if that is correct
+    return null;
+  },
+
   setCover(coverId) {
   setCover(coverId) {
     return {$set: {coverId}};
     return {$set: {coverId}};
   },
   },

+ 132 - 0
models/customFields.js

@@ -0,0 +1,132 @@
+CustomFields = new Mongo.Collection('customFields');
+
+CustomFields.attachSchema(new SimpleSchema({
+  boardId: {
+    type: String,
+  },
+  name: {
+    type: String,
+  },
+  type: {
+    type: String,
+    allowedValues: ['text', 'number', 'date', 'dropdown'],
+  },
+  settings: {
+    type: Object,
+  },
+  'settings.dropdownItems': {
+    type: [Object],
+    optional: true,
+  },
+  'settings.dropdownItems.$': {
+    type: new SimpleSchema({
+      _id: {
+        type: String,
+      },
+      name: {
+        type: String,
+      },
+    }),
+  },
+  showOnCard: {
+    type: Boolean,
+  },
+}));
+
+CustomFields.allow({
+  insert(userId, doc) {
+    return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
+  },
+  update(userId, doc) {
+    return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
+  },
+  remove(userId, doc) {
+    return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
+  },
+  fetch: ['userId', 'boardId'],
+});
+
+// not sure if we need this?
+//CustomFields.hookOptions.after.update = { fetchPrevious: false };
+
+function customFieldCreation(userId, doc){
+  Activities.insert({
+    userId,
+    activityType: 'createCustomField',
+    boardId: doc.boardId,
+    customFieldId: doc._id,
+  });
+}
+
+if (Meteor.isServer) {
+  /*Meteor.startup(() => {
+    CustomFields._collection._ensureIndex({ boardId: 1});
+  });*/
+
+  CustomFields.after.insert((userId, doc) => {
+    customFieldCreation(userId, doc);
+  });
+
+  CustomFields.after.remove((userId, doc) => {
+    Activities.remove({
+      customFieldId: doc._id,
+    });
+  });
+}
+
+//CUSTOM FIELD REST API
+if (Meteor.isServer) {
+  JsonRoutes.add('GET', '/api/boards/:boardId/custom-fields', function (req, res) {
+    Authentication.checkUserId( req.userId);
+    const paramBoardId = req.params.boardId;
+    JsonRoutes.sendResult(res, {
+      code: 200,
+      data: CustomFields.find({ boardId: paramBoardId }),
+    });
+  });
+
+  JsonRoutes.add('GET', '/api/boards/:boardId/custom-fields/:customFieldId', function (req, res) {
+    Authentication.checkUserId( req.userId);
+    const paramBoardId = req.params.boardId;
+    const paramCustomFieldId = req.params.customFieldId;
+    JsonRoutes.sendResult(res, {
+      code: 200,
+      data: CustomFields.findOne({ _id: paramCustomFieldId, boardId: paramBoardId }),
+    });
+  });
+
+  JsonRoutes.add('POST', '/api/boards/:boardId/custom-fields', function (req, res) {
+    Authentication.checkUserId( req.userId);
+    const paramBoardId = req.params.boardId;
+    const id = CustomFields.direct.insert({
+      name: req.body.name,
+      type: req.body.type,
+      settings: req.body.settings,
+      showOnCard: req.body.showOnCard,
+      boardId: paramBoardId,
+    });
+
+    const customField = CustomFields.findOne({_id: id, boardId: paramBoardId });
+    customFieldCreation(req.body.authorId, customField);
+
+    JsonRoutes.sendResult(res, {
+      code: 200,
+      data: {
+        _id: id,
+      },
+    });
+  });
+
+  JsonRoutes.add('DELETE', '/api/boards/:boardId/custom-fields/:customFieldId', function (req, res) {
+    Authentication.checkUserId( req.userId);
+    const paramBoardId = req.params.boardId;
+    const id = req.params.customFieldId;
+    CustomFields.remove({ _id: id, boardId: paramBoardId });
+    JsonRoutes.sendResult(res, {
+      code: 200,
+      data: {
+        _id: id,
+      },
+    });
+  });
+}

+ 5 - 5
sandstorm.js

@@ -75,7 +75,7 @@ if (isSandstorm && Meteor.isServer) {
         session.claimRequest(token).then((response) => {
         session.claimRequest(token).then((response) => {
           const identity = response.cap.castAs(Identity.Identity);
           const identity = response.cap.castAs(Identity.Identity);
           const promises = [api.getIdentityId(identity), identity.getProfile(),
           const promises = [api.getIdentityId(identity), identity.getProfile(),
-                            httpBridge.saveIdentity(identity)];
+            httpBridge.saveIdentity(identity)];
           return Promise.all(promises).then((responses) => {
           return Promise.all(promises).then((responses) => {
             const identityId = responses[0].id.toString('hex').slice(0, 32);
             const identityId = responses[0].id.toString('hex').slice(0, 32);
             const profile = responses[1].profile;
             const profile = responses[1].profile;
@@ -115,9 +115,9 @@ if (isSandstorm && Meteor.isServer) {
           const identity = response.identity;
           const identity = response.identity;
           return identity.getProfile().then(() => {
           return identity.getProfile().then(() => {
             return { identity,
             return { identity,
-                     mentioned: !!user.mentioned,
-                     subscribed: !!user.subscribed,
-                   };
+              mentioned: !!user.mentioned,
+              subscribed: !!user.subscribed,
+            };
           });
           });
         }).catch(() => {
         }).catch(() => {
           // Ignore identities that fail to restore. Either they were added before we set
           // Ignore identities that fail to restore. Either they were added before we set
@@ -132,7 +132,7 @@ if (isSandstorm && Meteor.isServer) {
 
 
         return session.activity(event);
         return session.activity(event);
       }).then(() => done(),
       }).then(() => done(),
-              (e) => done(e));
+        (e) => done(e));
     })();
     })();
   }
   }
 
 

+ 6 - 6
server/migrations.js

@@ -167,9 +167,9 @@ Migrations.add('add-swimlanes', () => {
     Cards.find({ boardId: board._id }).forEach((card) => {
     Cards.find({ boardId: board._id }).forEach((card) => {
       if (!card.hasOwnProperty('swimlaneId')) {
       if (!card.hasOwnProperty('swimlaneId')) {
         Cards.direct.update(
         Cards.direct.update(
-            { _id: card._id },
-            { $set: { swimlaneId } },
-            noValidate
+          { _id: card._id },
+          { $set: { swimlaneId } },
+          noValidate
         );
         );
       }
       }
     });
     });
@@ -180,9 +180,9 @@ Migrations.add('add-views', () => {
   Boards.find().forEach((board) => {
   Boards.find().forEach((board) => {
     if (!board.hasOwnProperty('view')) {
     if (!board.hasOwnProperty('view')) {
       Boards.direct.update(
       Boards.direct.update(
-          { _id: board._id },
-          { $set: { view: 'board-view-swimlanes' } },
-          noValidate
+        { _id: board._id },
+        { $set: { view: 'board-view-swimlanes' } },
+        noValidate
       );
       );
     }
     }
   });
   });

+ 1 - 0
server/publications/boards.js

@@ -75,6 +75,7 @@ Meteor.publishRelations('board', function(boardId) {
     this.cursor(Lists.find({ boardId }));
     this.cursor(Lists.find({ boardId }));
     this.cursor(Swimlanes.find({ boardId }));
     this.cursor(Swimlanes.find({ boardId }));
     this.cursor(Integrations.find({ boardId }));
     this.cursor(Integrations.find({ boardId }));
+    this.cursor(CustomFields.find({ boardId }, { sort: { name: 1 } }));
 
 
     // Cards and cards comments
     // Cards and cards comments
     // XXX Originally we were publishing the card documents as a child of the
     // XXX Originally we were publishing the card documents as a child of the

+ 3 - 0
server/publications/customFields.js

@@ -0,0 +1,3 @@
+Meteor.publish('customFields', function() {
+  return CustomFields.find();
+});