Browse Source

Merge branch 'feature-custom-fields' of https://github.com/feuerball11/wekan into feature-custom-fields

IgnatzHome 7 years ago
parent
commit
a433f7d9fe
76 changed files with 3081 additions and 444 deletions
  1. 8 6
      .github/ISSUE_TEMPLATE.md
  2. 99 1
      CHANGELOG.md
  3. 4 0
      CONTRIBUTING.md
  4. 0 5
      Contributing.md
  5. 9 6
      Dockerfile
  6. 1 0
      README.md
  7. 129 0
      SECURITY.md
  8. 12 4
      client/components/boards/boardArchive.jade
  9. 12 0
      client/components/boards/boardArchive.js
  10. 2 0
      client/components/boards/boardBody.js
  11. 6 0
      client/components/boards/boardHeader.js
  12. 8 6
      client/components/cards/cardDate.js
  13. 46 2
      client/components/cards/cardDetails.jade
  14. 41 1
      client/components/cards/cardDetails.js
  15. 2 1
      client/components/cards/cardDetails.styl
  16. 53 1
      client/components/cards/labels.styl
  17. 22 1
      client/components/cards/minicard.jade
  18. 7 0
      client/components/cards/minicard.styl
  19. 2 2
      client/components/sidebar/sidebarCustomFields.jade
  20. 19 0
      client/components/sidebar/sidebarFilters.jade
  21. 10 0
      client/components/sidebar/sidebarFilters.js
  22. 315 10
      client/lib/filter.js
  23. 1 1
      docker-compose.yml
  24. 33 2
      i18n/ar.i18n.json
  25. 130 99
      i18n/bg.i18n.json
  26. 33 2
      i18n/br.i18n.json
  27. 33 2
      i18n/ca.i18n.json
  28. 32 1
      i18n/cs.i18n.json
  29. 37 6
      i18n/de.i18n.json
  30. 33 2
      i18n/el.i18n.json
  31. 33 2
      i18n/en-GB.i18n.json
  32. 11 2
      i18n/en.i18n.json
  33. 33 2
      i18n/eo.i18n.json
  34. 32 1
      i18n/es-AR.i18n.json
  35. 34 3
      i18n/es.i18n.json
  36. 33 2
      i18n/eu.i18n.json
  37. 52 21
      i18n/fa.i18n.json
  38. 32 1
      i18n/fi.i18n.json
  39. 32 1
      i18n/fr.i18n.json
  40. 33 2
      i18n/gl.i18n.json
  41. 32 1
      i18n/he.i18n.json
  42. 49 18
      i18n/hu.i18n.json
  43. 33 2
      i18n/hy.i18n.json
  44. 33 2
      i18n/id.i18n.json
  45. 33 2
      i18n/ig.i18n.json
  46. 36 5
      i18n/it.i18n.json
  47. 33 2
      i18n/ja.i18n.json
  48. 478 0
      i18n/km.i18n.json
  49. 33 2
      i18n/ko.i18n.json
  50. 33 2
      i18n/lv.i18n.json
  51. 33 2
      i18n/mn.i18n.json
  52. 33 2
      i18n/nb.i18n.json
  53. 33 2
      i18n/nl.i18n.json
  54. 33 2
      i18n/pl.i18n.json
  55. 70 39
      i18n/pt-BR.i18n.json
  56. 33 2
      i18n/pt.i18n.json
  57. 33 2
      i18n/ro.i18n.json
  58. 34 3
      i18n/ru.i18n.json
  59. 33 2
      i18n/sr.i18n.json
  60. 54 23
      i18n/sv.i18n.json
  61. 33 2
      i18n/ta.i18n.json
  62. 33 2
      i18n/th.i18n.json
  63. 33 2
      i18n/tr.i18n.json
  64. 33 2
      i18n/uk.i18n.json
  65. 33 2
      i18n/vi.i18n.json
  66. 32 1
      i18n/zh-CN.i18n.json
  67. 33 2
      i18n/zh-TW.i18n.json
  68. 79 79
      models/attachments.js
  69. 3 0
      models/boards.js
  70. 34 3
      models/cards.js
  71. 2 3
      package.json
  72. 2 2
      sandstorm-pkgdef.capnp
  73. 5 5
      sandstorm.js
  74. 40 13
      server/migrations.js
  75. 23 5
      server/publications/people.js
  76. 17 8
      snapcraft.yaml

+ 8 - 6
.github/ISSUE_TEMPLATE.md

@@ -2,15 +2,17 @@
 
 
 **Server Setup Information**:
 **Server Setup Information**:
 
 
+* Did you test in newest Wekan?:
+* Wekan version:
+* If this is about old version of Wekan, what upgrade problem you have?:
 * Operating System:
 * Operating System:
-* Deployment Method(snap/sandstorm/mongodb bundle):
-* Http frontend (Caddy, Nginx, Apache, see config examples from Wekan GitHub wiki first):
+* Deployment Method(snap/docker/sandstorm/mongodb bundle/source):
+* Http frontend if any (Caddy, Nginx, Apache, see config examples from Wekan GitHub wiki first):
 * Node Version:
 * Node Version:
 * MongoDB Version:
 * MongoDB Version:
 * ROOT_URL environment variable http(s)://(subdomain).example.com(/suburl):
 * ROOT_URL environment variable http(s)://(subdomain).example.com(/suburl):
 
 
 **Problem description**:
 **Problem description**:
-- *be as explicit as you can*
-- *describe the problem and its symptoms*
-- *explain how to reproduce*
-- *attach whatever information that can help understanding the context (screen capture, log files in .zip file)*
+- *REQUIRED: Add recorded animated gif about how it works currently, and screenshot mockups how it should work*
+- *Explain steps how to reproduce*
+- *Attach log files in .zip file)*

+ 99 - 1
CHANGELOG.md

@@ -1,3 +1,101 @@
+# v1.04 2018-06-12 Wekan release
+
+This release adds the following new features:
+
+* [Add Khmer language](https://github.com/wekan/wekan/commit/2156e458690d0dc34a761a48fd7fa3b54af79031);
+* [Change label text colour to black for specific label colours for better
+   visibility](https://github.com/wekan/wekan/pull/1689).
+
+and fixes the following bugs:
+
+* [SECURITY FIX: Do not publish all of people collection. This bug has probably been present
+   since addition of Admin Panel](https://github.com/wekan/wekan/commit/dda49d2f07f9c50d5d57acfd5c7eee6492f93b33);
+* [Modify card covers/mini-cards so that: 1) received date is shown unless there is a start date
+   2) due date is shown, unless there is an end date](https://github.com/wekan/wekan/pull/1685).
+
+Thanks to GitHub users rjevnikar and xet7 for their contributions.
+Thanks to Adrian Genaid for security fix, he's now added to [Hall of Fame](https://wekan.github.io/hall-of-fame/).
+Thanks to translators.
+
+# v1.03 2018-06-08 Wekan release
+
+This release adds the following new features:
+
+* [Update to newest Sandstorm fork of Node.js that includes performance
+   etc fixes](https://github.com/wekan/wekan/commit/90d55777f7298d243ed0de03c934cea239a31272);
+* [Additional label colors. Assigned By and Requested By text fields
+   on card. Delete board from Recycle Bin](https://github.com/wekan/wekan/pull/1679).
+
+and possibly fixes the following bugs, please test:
+
+* [Try to fix: Missing board-view-lists Field after DB updated to
+   Wekan 1.02](https://github.com/wekan/wekan/issues/1675).
+
+Thanks to GitHub users JamesLavin, rjevnikar and xet7 for their contributions.
+
+# v1.02 2018-05-26 Wekan release
+
+This release fixes the following bugs:
+
+* [Remove binary version of bcrypt](https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac)
+  because of [vulnerability](https://nodesecurity.io/advisories/612) that has [issue that is not fixed
+  yet](https://github.com/kelektiv/node.bcrypt.js/issues/604)
+  and [not yet merged pull request](https://github.com/kelektiv/node.bcrypt.js/pull/606).
+  This may cause some slowdown;
+* [Snap: Filtering out swap file created at build time, adding stage package](https://github.com/wekan/wekan/pull/1660);
+* [Fix Received Date and End Date on Cards](https://github.com/wekan/wekan/issues/1654).
+
+Thanks to GitHub users kubiko, xadagaras and xet7 for their contributions.
+
+# v1.01 2018-05-23 Wekan release
+
+This release possibly fixes the following bugs, please test:
+
+* [Possible quickfix for all customFields Import errors, please test](https://github.com/wekan/wekan/pull/1653).
+
+Thanks to GitHub users feuerball11 and xet7 for their contributions.
+
+# v1.00 2018-05-21 Wekan release
+
+This release fixes the following bugs:
+
+* [Typo in English translation: brakets to brackets](https://github.com/wekan/wekan/issues/1647).
+
+Thanks to GitHub user yarons for contributions.
+
+# v0.99 2018-05-21 Wekan release
+
+This release adds the following new features:
+
+* [Advanced Filter for Custom Fields](https://github.com/wekan/wekan/pull/1646).
+
+Thanks to GitHub users feuerball11 and xet7 for their contributions.
+
+# v0.98 2018-05-19 Wekan release
+
+This release adds the following new features:
+
+* [Filtering by Custom Field](https://github.com/wekan/wekan/pull/1645);
+* Update to NPM 6.0.1 and MongoDB 3.2.20.
+
+Thanks to GitHub users feuerball11 and xet7 for their contributions.
+
+# v0.97 2018-05-19 Wekan release
+
+Updated translations.
+
+# v0.96 2018-05-19 Wekan release
+
+This release adds the following new features:
+
+* [Custom Fields](https://github.com/wekan/wekan/issues/807). Note: Import/Export is not implemented yet.
+
+and fixes the following bugs:
+
+* [Fix: checklistItems broken after upgrade](https://github.com/wekan/wekan/issues/1636).
+
+Thanks to GitHub users feuerball11, franksiler, 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:
@@ -6,7 +104,7 @@ This release adds the following new features:
 * [Add a new API route to create a new label in a given board](https://github.com/wekan/wekan/pull/1630);
 * [Add a new API route to create a new label in a given board](https://github.com/wekan/wekan/pull/1630);
 * [Admin Panel: Option to block username change](https://github.com/wekan/wekan/pull/1627).
 * [Admin Panel: Option to block username change](https://github.com/wekan/wekan/pull/1627).
 
 
-and fixed the following bugs:
+and fixes the following bugs:
 
 
 * [Error: title is required](https://github.com/wekan/wekan/issues/1576).
 * [Error: title is required](https://github.com/wekan/wekan/issues/1576).
     
     

+ 4 - 0
CONTRIBUTING.md

@@ -0,0 +1,4 @@
+To get started, [please sign the Contributor License Agreement](https://www.clahub.com/agreements/wekan/wekan).
+
+[Then, please read documentation at wiki](https://github.com/wekan/wekan/wiki).
+

+ 0 - 5
Contributing.md

@@ -1,5 +0,0 @@
-# Contributing
-
-Please see wiki for all documentation:
-
-<https://github.com/wekan/wekan/wiki>

+ 9 - 6
Dockerfile

@@ -19,7 +19,7 @@ ENV NODE_VERSION ${NODE_VERSION:-v8.11.1}
 ENV METEOR_RELEASE ${METEOR_RELEASE:-1.6.0.1}
 ENV METEOR_RELEASE ${METEOR_RELEASE:-1.6.0.1}
 ENV USE_EDGE ${USE_EDGE:-false}
 ENV USE_EDGE ${USE_EDGE:-false}
 ENV METEOR_EDGE ${METEOR_EDGE:-1.5-beta.17}
 ENV METEOR_EDGE ${METEOR_EDGE:-1.5-beta.17}
-ENV NPM_VERSION ${NPM_VERSION:-5.5.1}
+ENV NPM_VERSION ${NPM_VERSION:-latest}
 ENV FIBERS_VERSION ${FIBERS_VERSION:-2.0.0}
 ENV FIBERS_VERSION ${FIBERS_VERSION:-2.0.0}
 ENV ARCHITECTURE ${ARCHITECTURE:-linux-x64}
 ENV ARCHITECTURE ${ARCHITECTURE:-linux-x64}
 ENV SRC_PATH ${SRC_PATH:-./}
 ENV SRC_PATH ${SRC_PATH:-./}
@@ -49,7 +49,7 @@ RUN \
     # Description at https://releases.wekan.team/node.txt
     # Description at https://releases.wekan.team/node.txt
     # SHA256SUM: 18c99d5e79e2fe91e75157a31be30e5420787213684d4048eb91e602e092725d
     # SHA256SUM: 18c99d5e79e2fe91e75157a31be30e5420787213684d4048eb91e602e092725d
     wget https://releases.wekan.team/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
     wget https://releases.wekan.team/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
-    echo "c85ed210a360c50d55baaf7b49419236e5241515ed21410d716f4c1f5deedb12  node-v8.11.1-linux-x64.tar.gz" >> SHASUMS256.txt.asc && \
+    echo "509e79f1bfccc849b65bd3f207a56095dfa608f17502997e844fa9c9d01e6c20  node-v8.11.1-linux-x64.tar.gz" >> SHASUMS256.txt.asc && \
     \
     \
     # Verify nodejs authenticity
     # Verify nodejs authenticity
     grep ${NODE_VERSION}-${ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | shasum -a 256 -c - && \
     grep ${NODE_VERSION}-${ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | shasum -a 256 -c - && \
@@ -125,12 +125,15 @@ RUN \
     gosu wekan:wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build && \
     gosu wekan:wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build && \
     cp /home/wekan/app/fix-download-unicode/cfs_access-point.txt /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
     cp /home/wekan/app/fix-download-unicode/cfs_access-point.txt /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
     chown wekan:wekan /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
     chown wekan:wekan /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
-    cd /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt && \
-    gosu wekan:wekan rm -rf node_modules/bcrypt && \
-    gosu wekan:wekan npm install bcrypt && \
+    #Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
+    #https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
+    #https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
+    #cd /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt && \
+    #gosu wekan:wekan rm -rf node_modules/bcrypt && \
+    #gosu wekan:wekan npm install bcrypt && \
     cd /home/wekan/app_build/bundle/programs/server/ && \
     cd /home/wekan/app_build/bundle/programs/server/ && \
     gosu wekan:wekan npm install && \
     gosu wekan:wekan npm install && \
-    gosu wekan:wekan npm install bcrypt && \
+    #gosu wekan:wekan npm install bcrypt && \
     mv /home/wekan/app_build/bundle /build && \
     mv /home/wekan/app_build/bundle /build && \
     \
     \
     # Cleanup
     # Cleanup

+ 1 - 0
README.md

@@ -14,6 +14,7 @@
 [![Code Climate](https://codeclimate.com/github/wekan/wekan/badges/gpa.svg "Code Climate")](https://codeclimate.com/github/wekan/wekan)
 [![Code Climate](https://codeclimate.com/github/wekan/wekan/badges/gpa.svg "Code Climate")](https://codeclimate.com/github/wekan/wekan)
 [![Project Dependencies](https://david-dm.org/wekan/wekan.svg "Project Dependencies")](https://david-dm.org/wekan/wekan)
 [![Project Dependencies](https://david-dm.org/wekan/wekan.svg "Project Dependencies")](https://david-dm.org/wekan/wekan)
 [![Code analysis at Open Hub](https://img.shields.io/badge/code%20analysis-at%20Open%20Hub-brightgreen.svg "Code analysis at Open Hub")](https://www.openhub.net/p/wekan)
 [![Code analysis at Open Hub](https://img.shields.io/badge/code%20analysis-at%20Open%20Hub-brightgreen.svg "Code analysis at Open Hub")](https://www.openhub.net/p/wekan)
+[![Greenkeeper badge](https://badges.greenkeeper.io/wekan/wekan.svg)](https://greenkeeper.io/)
 
 
 Please read [FAQ](https://github.com/wekan/wekan/wiki/FAQ).
 Please read [FAQ](https://github.com/wekan/wekan/wiki/FAQ).
 Please don't feed the trolls and spammers that are mentioned in the FAQ :)
 Please don't feed the trolls and spammers that are mentioned in the FAQ :)

+ 129 - 0
SECURITY.md

@@ -0,0 +1,129 @@
+Security is very important to us. If discover any issue regarding security, please disclose
+the information responsibly by sending an email to security (at) wekan.team and not by
+creating a GitHub issue. We will respond swiftly to fix verifiable security issues.
+
+We thank you with a place at our hall of fame page, that is
+at https://wekan.github.io/hall-of-fame . Others have just posted public GitHub issue,
+so they are not at that hall-of-fame page.
+
+## How should reports be formatted?
+
+```
+Name: %name
+Twitter: %twitter
+Bug type: %bugtype
+Domain: %domain
+Severity: %severity
+URL: %url
+PoC: %poc
+CVSS (optional): %cvss
+CWSS (optional): %cwss
+```
+
+## Who can participate in the program
+
+Anyone who reports a unique security issue in scope and does not disclose it to
+a third party before we have patched and updated may be upon their approval
+added to the Wekan Hall of Fame.
+
+## Which domains are in scope?
+
+No any public domains, because all those are donated to Wekan Open Source project,
+and we don't have any permissions to do security scans on those donated servers.
+
+Please don't perform research that could impact other users. Secondly, please keep
+the reports short and succinct. If we fail to understand the logics of your bug, we will tell you.
+
+You can [Install Wekan](https://github.com/wekan/wekan/releases) to your own computer
+and scan it's vulnerabilities there.
+
+## About Wekan versions
+
+There is only 2 versions of Wekan: Standalone Wekan, and Sandstorm Wekan.
+
+### Standalone Wekan Security
+
+Standalone Wekan includes all non-Sandstorm platforms. Some Standalone Wekan platforms
+like Snap and Docker have their own specific sandboxing etc features.
+
+Standalone Wekan by default does not load any files from Internet, like fonts, CSS, etc.
+This also means all Standalone Wekan functionality works in offline local networks.
+Wekan is used by companies that have [thousands of users](https://github.com/wekan/wekan/wiki/AWS) and at healthcare.
+
+Wekan uses xss package for input fields like cards, as you can see from
+[package.json](https://github.com/wekan/wekan/blob/devel/package.json). Other used versions can be seen from
+[Meteor versions file](https://github.com/wekan/wekan/blob/devel/.meteor/versions).
+Forms can include markdown links, html, image tags etc like you see at https://wekan.github.io .
+It's possible to add attachments to cards, and markdown/html links to files.
+
+Wekan attachments are not accessible without logging in. Import from Trello works by copying
+Trello export JSON to Wekan Trello import page, and in Trello JSON file there is direct links to all publicly
+accessible Trello attachment files, that Standalone Wekan downloads directly to Wekan MongoDB database in
+[CollectionFS](https://github.com/wekan/wekan/pull/875) format. When Wekan board is exported in
+Wekan JSON format, all board attachments are included in Wekan JSON file as base64 encoded text.
+That Wekan JSON format file can be imported to Sandstorm Wekan with all the attachments, when we get
+latest Wekan version working on Sandstorm, only couple of bugs are left before that. In Sandstorm it's not
+possible yet to import from Trello with attachments, because Wekan does not implement Sandstorm-compatible
+access to outside of Wekan grain.
+
+Standalone Wekan only has password auth currently, there is work in progress to add
+[oauth2](https://github.com/wekan/wekan/pull/1578), [Openid](https://github.com/wekan/wekan/issues/538),
+[LDAP](https://github.com/wekan/wekan/issues/119) etc. If you need more login security for Standalone Wekan now,
+it's possible add additional [Google Auth proxybouncer](https://github.com/wekan/wekan/wiki/Let's-Encrypt-and-Google-Auth) in front of password auth, and then use Google Authenticator for Google Auth. Standalone Wekan does have [brute force protection with eluck:accounts-lockout and browser-policy clickjacking protection](https://github.com/wekan/wekan/blob/devel/CHANGELOG.md#v080-2018-04-04-wekan-release). You can also optionally use some [WAF](https://en.wikipedia.org/wiki/Web_application_firewall)
+like for example [AWS WAF](https://aws.amazon.com/waf/).
+
+[All Wekan Platforms](https://github.com/wekan/wekan/wiki/Platforms)
+
+### Sandstorm Wekan Security
+
+On Sandstorm platform using environment variable Standalone Wekan features like Admin Panel etc are
+turned off, because Sandstorm platform provides SSO for all apps running on Sandstorm. 
+
+[Sandstorm](https://sandstorm.io) is separate Open Source platform that has been
+[security audited](https://sandstorm.io/news/2017-03-02-security-review) and found bugs fixed.
+Sandstorm also has passwordless login, LDAP, SAML, Google etc auth options already.
+At Sandstorm code is read-only and signed by app maintainers, only grain content can be modified.
+Wekan at Sandstorm runs in sandboxed grain, it does not have access elsewhere without user-visible
+PowerBox request or opening randomly-generated API key URL.
+Also read [Sandstorm Security Practices](https://docs.sandstorm.io/en/latest/using/security-practices/) and
+[Sandstorm Security non-events](https://docs.sandstorm.io/en/latest/using/security-non-events/).
+For Sandstorm specific security issues you can contact [kentonv](https://github.com/kentonv) by email. 
+
+## What Wekan bugs are eligible?
+
+Any typical web security bugs. If any of the previously mentioned is somehow problematic and
+a security issue, we'd like to know about it, and also how to fix it:
+
+- Cross-site Scripting
+- Open redirect
+- Cross-site request forgery
+- File inclusion
+- Authentication bypass
+- Server-side code execution
+
+## What Wekan bugs are NOT eligible?
+
+Typical already known or "no impact" bugs such as:
+
+- Brute force password guessign. Currently there is
+  [brute force protection with eluck:accounts-lockout](https://github.com/wekan/wekan/blob/devel/CHANGELOG.md#v080-2018-04-04-wekan-release).
+- Security issues related to that Wekan uses Meteor 1.6.0.1 related packages, and upgrading to newer
+  Meteor 1.6.1 is complicated process that requires lots of changes to many dependency packages.
+  Upgrading [has been tried many times, spending a lot of time](https://github.com/meteor/meteor/issues/9609)
+  but there still is issues. Helping with package upgrades is very welcome.
+- [Wekan API old tokens not replaced correctly](https://github.com/wekan/wekan/issues/1437)
+- Missing Cookie flags on non-session cookies or 3rd party cookies
+- Logout CSRF
+- Social engineering
+- Denial of service
+- SSL BEAST/CRIME/etc. Wekan does not have SSL built-in, it uses Caddy/Nginx/Apache etc at front.
+  Integrated Caddy support is updated often.
+- Email spoofing, SPF, DMARC & DKIM. Wekan does not include email server.
+
+Wekan is Open Source with MIT license, and free to use also for commercial use.
+We welcome all fixes to improve security by email to security (at) wekan.team .
+
+## Bonus Points
+
+If your Responsible Security Disclosure includes code for fixing security issue,
+you get bonus points, as seen on [Hall of Fame](https://wekan.github.io/hall-of-fame).

+ 12 - 4
client/components/boards/boardArchive.jade

@@ -6,9 +6,17 @@ template(name="archivedBoards")
   ul.archived-lists
   ul.archived-lists
     each archivedBoards
     each archivedBoards
       li.archived-lists-item
       li.archived-lists-item
-        button.js-restore-board
-          i.fa.fa-undo
-          | {{_ 'restore-board'}}
-        = title
+        div.board-header-btns
+          button.board-header-btn.js-delete-board
+            i.fa.fa-trash-o
+            | {{_ 'delete-board'}}
+          button.board-header-btn.js-restore-board
+            i.fa.fa-undo
+            | {{_ 'restore-board'}}
+          = title
     else
     else
       li.no-items-message {{_ 'no-archived-boards'}}
       li.no-items-message {{_ 'no-archived-boards'}}
+
+template(name="boardDeletePopup")
+  p {{_ 'delete-board-confirm-popup'}}
+  button.js-confirm.negate.full(type="submit") {{_ 'delete'}}

+ 12 - 0
client/components/boards/boardArchive.js

@@ -29,6 +29,18 @@ BlazeComponent.extendComponent({
         board.restore();
         board.restore();
         Utils.goBoardId(board._id);
         Utils.goBoardId(board._id);
       },
       },
+      'click .js-delete-board': Popup.afterConfirm('boardDelete', function() {
+        Popup.close();
+        const isSandstorm = Meteor.settings && Meteor.settings.public &&
+          Meteor.settings.public.sandstorm;
+        if (isSandstorm && Session.get('currentBoard')) {
+          const currentBoard = Boards.findOne(Session.get('currentBoard'));
+          Boards.remove(currentBoard._id);
+        }
+        const board = this.currentData();
+        Boards.remove(board._id);
+        FlowRouter.go('home');
+      }),
     }];
     }];
   },
   },
 }).register('archivedBoards');
 }).register('archivedBoards');

+ 2 - 0
client/components/boards/boardBody.js

@@ -88,11 +88,13 @@ BlazeComponent.extendComponent({
 
 
   isViewSwimlanes() {
   isViewSwimlanes() {
     const currentUser = Meteor.user();
     const currentUser = Meteor.user();
+    if (!currentUser) return false;
     return (currentUser.profile.boardView === 'board-view-swimlanes');
     return (currentUser.profile.boardView === 'board-view-swimlanes');
   },
   },
 
 
   isViewLists() {
   isViewLists() {
     const currentUser = Meteor.user();
     const currentUser = Meteor.user();
+    if (!currentUser) return true;
     return (currentUser.profile.boardView === 'board-view-lists');
     return (currentUser.profile.boardView === 'board-view-lists');
   },
   },
 
 

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

@@ -17,6 +17,12 @@ Template.boardMenuPopup.events({
     // confirm that the board was successfully archived.
     // confirm that the board was successfully archived.
     FlowRouter.go('home');
     FlowRouter.go('home');
   }),
   }),
+  'click .js-delete-board': Popup.afterConfirm('deleteBoard', function() {
+    const currentBoard = Boards.findOne(Session.get('currentBoard'));
+    Popup.close();
+    Boards.remove(currentBoard._id);
+    FlowRouter.go('home');
+  }),
   'click .js-outgoing-webhooks': Popup.open('outgoingWebhooks'),
   'click .js-outgoing-webhooks': Popup.open('outgoingWebhooks'),
   'click .js-import-board': Popup.open('chooseBoardSource'),
   'click .js-import-board': Popup.open('chooseBoardSource'),
 });
 });

+ 8 - 6
client/components/cards/cardDate.js

@@ -93,7 +93,7 @@ Template.dateBadge.helpers({
 });
 });
 
 
 // editCardReceivedDatePopup
 // editCardReceivedDatePopup
-(class extends EditCardDate {
+(class extends DatePicker {
   onCreated() {
   onCreated() {
     super.onCreated();
     super.onCreated();
     this.data().receivedAt && this.date.set(moment(this.data().receivedAt));
     this.data().receivedAt && this.date.set(moment(this.data().receivedAt));
@@ -156,7 +156,7 @@ Template.dateBadge.helpers({
 }).register('editCardDueDatePopup');
 }).register('editCardDueDatePopup');
 
 
 // editCardEndDatePopup
 // editCardEndDatePopup
-(class extends EditCardDate {
+(class extends DatePicker {
   onCreated() {
   onCreated() {
     super.onCreated();
     super.onCreated();
     this.data().endAt && this.date.set(moment(this.data().endAt));
     this.data().endAt && this.date.set(moment(this.data().endAt));
@@ -279,11 +279,14 @@ class CardDueDate extends CardDate {
 
 
   classes() {
   classes() {
     let classes = 'due-date' + ' ';
     let classes = 'due-date' + ' ';
-    if (this.now.get().diff(this.date.get(), 'days') >= 2)
+    if ((this.now.get().diff(this.date.get(), 'days') >= 2) &&
+       (this.date.get().isBefore(this.data().endAt)))
       classes += 'long-overdue';
       classes += 'long-overdue';
-    else if (this.now.get().diff(this.date.get(), 'minute') >= 0)
+    else if ((this.now.get().diff(this.date.get(), 'minute') >= 0) &&
+       (this.date.get().isBefore(this.data().endAt)))
       classes += 'due';
       classes += 'due';
-    else if (this.now.get().diff(this.date.get(), 'days') >= -1)
+    else if ((this.now.get().diff(this.date.get(), 'days') >= -1) &&
+       (this.date.get().isBefore(this.data().endAt)))
       classes += 'almost-due';
       classes += 'almost-due';
     return classes;
     return classes;
   }
   }
@@ -355,4 +358,3 @@ CardEndDate.register('cardEndDate');
     return this.date.get().format('l');
     return this.date.get().format('l');
   }
   }
 }).register('minicardEndDate');
 }).register('minicardEndDate');
-

+ 46 - 2
client/components/cards/cardDetails.jade

@@ -108,6 +108,39 @@ template(name="cardDetails")
       +viewer
       +viewer
         = description
         = description
 
 
+    .card-details-items
+      .card-details-item.card-details-item-name
+        h3.card-details-item-title {{_ 'requested-by'}}
+        if canModifyCard
+          +inlinedForm(classNames="js-card-details-requester")
+            +editCardRequesterForm
+          else
+            a.js-open-inlined-form
+              if requestedBy
+                +viewer
+                  = requestedBy
+              else
+                | {{_ 'add'}}
+        else if requestedBy
+          +viewer
+            = requestedBy
+
+      .card-details-item.card-details-item-name
+        h3.card-details-item-title {{_ 'assigned-by'}}
+        if canModifyCard
+          +inlinedForm(classNames="js-card-details-assigner")
+            +editCardAssignerForm
+          else
+            a.js-open-inlined-form
+              if assignedBy
+                +viewer
+                  = assignedBy
+              else
+                | {{_ 'add'}}
+        else if requestedBy
+          +viewer
+            = assignedBy
+
     hr
     hr
     +checklists(cardId = _id)
     +checklists(cardId = _id)
 
 
@@ -141,6 +174,18 @@ template(name="editCardTitleForm")
     button.primary.confirm.js-submit-edit-card-title-form(type="submit") {{_ 'save'}}
     button.primary.confirm.js-submit-edit-card-title-form(type="submit") {{_ 'save'}}
     a.fa.fa-times-thin.js-close-inlined-form
     a.fa.fa-times-thin.js-close-inlined-form
 
 
+template(name="editCardRequesterForm")
+  input.js-edit-card-requester(type='text' autofocus value=requestedBy)
+  .edit-controls.clearfix
+    button.primary.confirm.js-submit-edit-card-requester-form(type="submit") {{_ 'save'}}
+    a.fa.fa-times-thin.js-close-inlined-form
+
+template(name="editCardAssignerForm")
+  input.js-edit-card-assigner(type='text' autofocus value=assignedBy)
+  .edit-controls.clearfix
+    button.primary.confirm.js-submit-edit-card-assigner-form(type="submit") {{_ 'save'}}
+    a.fa.fa-times-thin.js-close-inlined-form
+
 template(name="cardDetailsActionsPopup")
 template(name="cardDetailsActionsPopup")
   ul.pop-over-list
   ul.pop-over-list
     li: a.js-toggle-watch-card {{#if isWatching}}{{_ 'unwatch'}}{{else}}{{_ 'watch'}}{{/if}}
     li: a.js-toggle-watch-card {{#if isWatching}}{{_ 'unwatch'}}{{else}}{{_ 'watch'}}{{/if}}
@@ -150,8 +195,8 @@ template(name="cardDetailsActionsPopup")
       li: a.js-members {{_ 'card-edit-members'}}
       li: a.js-members {{_ 'card-edit-members'}}
       li: a.js-labels {{_ 'card-edit-labels'}}
       li: a.js-labels {{_ 'card-edit-labels'}}
       li: a.js-attachments {{_ 'card-edit-attachments'}}
       li: a.js-attachments {{_ 'card-edit-attachments'}}
-      li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}}
       li: a.js-custom-fields {{_ 'card-edit-custom-fields'}}
       li: a.js-custom-fields {{_ 'card-edit-custom-fields'}}
+      li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}}
       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'}}
@@ -178,7 +223,6 @@ template(name="copyCardPopup")
     = title
     = title
   +boardsAndLists
   +boardsAndLists
 
 
-
 template(name="copyChecklistToManyCardsPopup")
 template(name="copyChecklistToManyCardsPopup")
   label(for='copy-checklist-cards-title') {{_ 'copyChecklistToManyCardsPopup-instructions'}}:
   label(for='copy-checklist-cards-title') {{_ 'copyChecklistToManyCardsPopup-instructions'}}:
   textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
   textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)

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

@@ -150,6 +150,20 @@ BlazeComponent.extendComponent({
           this.data().setTitle(title);
           this.data().setTitle(title);
         }
         }
       },
       },
+      'submit .js-card-details-assigner'(evt) {
+        evt.preventDefault();
+        const assigner = this.currentComponent().getValue().trim();
+        if (assigner) {
+          this.data().setAssignedBy(assigner);
+        }
+      },
+      'submit .js-card-details-requester'(evt) {
+        evt.preventDefault();
+        const requester = this.currentComponent().getValue().trim();
+        if (requester) {
+          this.data().setRequestedBy(requester);
+        }
+      },
       'click .js-member': Popup.open('cardMember'),
       'click .js-member': Popup.open('cardMember'),
       'click .js-add-members': Popup.open('cardMembers'),
       'click .js-add-members': Popup.open('cardMembers'),
       'click .js-add-labels': Popup.open('cardLabels'),
       'click .js-add-labels': Popup.open('cardLabels'),
@@ -221,8 +235,8 @@ Template.cardDetailsActionsPopup.events({
   'click .js-members': Popup.open('cardMembers'),
   'click .js-members': Popup.open('cardMembers'),
   '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-custom-fields': Popup.open('cardCustomFields'),
   'click .js-custom-fields': Popup.open('cardCustomFields'),
+  'click .js-received-date': Popup.open('editCardReceivedDate'),
   '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'),
@@ -269,6 +283,32 @@ Template.editCardTitleForm.events({
   },
   },
 });
 });
 
 
+Template.editCardRequesterForm.onRendered(function() {
+  autosize(this.$('.js-edit-card-requester'));
+});
+
+Template.editCardRequesterForm.events({
+  'keydown .js-edit-card-requester'(evt) {
+    // If enter key was pressed, submit the data
+    if (evt.keyCode === 13) {
+      $('.js-submit-edit-card-requester-form').click();
+    }
+  },
+});
+
+Template.editCardAssignerForm.onRendered(function() {
+  autosize(this.$('.js-edit-card-assigner'));
+});
+
+Template.editCardAssignerForm.events({
+  'keydown .js-edit-card-assigner'(evt) {
+    // If enter key was pressed, submit the data
+    if (evt.keyCode === 13) {
+      $('.js-submit-edit-card-assigner-form').click();
+    }
+  },
+});
+
 Template.moveCardPopup.events({
 Template.moveCardPopup.events({
   'click .js-done' () {
   'click .js-done' () {
     // XXX We should *not* get the currentCard from the global state, but
     // XXX We should *not* get the currentCard from the global state, but

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

@@ -82,7 +82,8 @@
       &.card-details-item-start,
       &.card-details-item-start,
       &.card-details-item-due,
       &.card-details-item-due,
       &.card-details-item-end,
       &.card-details-item-end,
-      &.card-details-item-customfield
+      &.card-details-item-customfield,
+      &.card-details-item-name
         max-width: 50%
         max-width: 50%
         flex-grow: 1
         flex-grow: 1
 
 

+ 53 - 1
client/components/cards/labels.styl

@@ -3,7 +3,7 @@
 // XXX Use .board-widget-labels as a flexbox container
 // XXX Use .board-widget-labels as a flexbox container
 .card-label
 .card-label
   border-radius: 4px
   border-radius: 4px
-  color: white
+  color: white  //Default white text, in select cases,  changed to black to improve contrast between label colour and text
   display: inline-block
   display: inline-block
   font-weight: 700
   font-weight: 700
   font-size: 13px
   font-size: 13px
@@ -48,9 +48,11 @@
 
 
 .card-label-yellow
 .card-label-yellow
   background-color: #fad900
   background-color: #fad900
+  color: #000000 //Black text for better visibility
 
 
 .card-label-orange
 .card-label-orange
   background-color: #ff9f19
   background-color: #ff9f19
+  color: #000000 //Black text for better visibility
 
 
 .card-label-red
 .card-label-red
   background-color: #eb4646
   background-color: #eb4646
@@ -63,6 +65,7 @@
 
 
 .card-label-pink
 .card-label-pink
   background-color: #ff78cb
   background-color: #ff78cb
+  color: #000000 //Black text for better visibility
 
 
 .card-label-sky
 .card-label-sky
   background-color: #00c2e0
   background-color: #00c2e0
@@ -72,6 +75,55 @@
 
 
 .card-label-lime
 .card-label-lime
   background-color: #51e898
   background-color: #51e898
+  color: #000000 //Black text for better visibility
+
+.card-label-silver
+  background-color: #c0c0c0
+  color: #000000 //Black text for better visibility
+
+.card-label-peachpuff
+  background-color: #ffdab9
+  color: #000000 //Black text for better visibility
+
+.card-label-crimson
+  background-color: #dc143c
+
+.card-label-plum
+  background-color: #dda0dd
+  color: #000000 //Black text for better visibility
+
+.card-label-darkgreen
+  background-color: #006400
+
+.card-label-slateblue
+  background-color: #6a5acd
+
+.card-label-magenta
+  background-color: #ff00ff
+
+.card-label-gold
+  background-color: #ffd700
+  color: #000000 //Black text for better visibility
+
+.card-label-navy
+  background-color: #000080
+
+.card-label-gray
+  background-color: #808080
+
+.card-label-saddlebrown
+  background-color: #8b4513
+
+.card-label-paleturquoise
+  background-color: #afeeee
+  color: #000000 //Black text for better visibility
+
+.card-label-mistyrose
+  background-color: #ffe4e1
+  color: #000000 //Black text for better visibility
+
+.card-label-indigo
+  background-color: #4b0082
 
 
 .edit-label,
 .edit-label,
 .create-label
 .create-label

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

@@ -10,20 +10,41 @@ template(name="minicard")
       +viewer
       +viewer
         = title
         = title
     .dates
     .dates
+      if receivedAt
+        unless startAt
+          unless dueAt
+            unless endAt
+              .date
+                +miniCardReceivedDate
       if startAt
       if startAt
         .date
         .date
           +minicardStartDate
           +minicardStartDate
       if dueAt
       if dueAt
+        unless endAt
+          .date
+            +minicardDueDate
+      if endAt
         .date
         .date
-          +minicardDueDate
+          +minicardEndDate
       if spentTime
       if spentTime
         .date
         .date
           +cardSpentTime
           +cardSpentTime
 
 
+    .minicard-custom-fields
+      each customFieldsWD
+        if definition.showOnCard
+          .minicard-custom-field
+            .minicard-custom-field-item
+              = definition.name
+            .minicard-custom-field-item
+              +viewer
+                = trueValue
+
     if members
     if members
       .minicard-members.js-minicard-members
       .minicard-members.js-minicard-members
         each members
         each members
           +userAvatar(userId=this)
           +userAvatar(userId=this)
+
     .badges
     .badges
       if comments.count
       if comments.count
         .badge(title="{{_ 'card-comments-title' comments.count }}")
         .badge(title="{{_ 'card-comments-title' comments.count }}")

+ 7 - 0
client/components/cards/minicard.styl

@@ -77,6 +77,13 @@
       height: @width
       height: @width
       border-radius: 2px
       border-radius: 2px
       margin-left: 3px
       margin-left: 3px
+  .minicard-custom-fields
+    display:block;
+  .minicard-custom-field
+    display:flex;
+  .minicard-custom-field-item
+    max-width:50%;
+    flex-grow:1;
   .minicard-title
   .minicard-title
     p:last-child
     p:last-child
       margin-bottom: 0
       margin-bottom: 0

+ 2 - 2
client/components/sidebar/sidebarCustomFields.jade

@@ -37,7 +37,7 @@ template(name="createCustomFieldPopup")
             each dropdownItems.get
             each dropdownItems.get
                 input.js-dropdown-item(type="text" value=name placeholder="")
                 input.js-dropdown-item(type="text" value=name placeholder="")
             input.js-dropdown-item.last(type="text" value="" placeholder="{{_ 'custom-field-dropdown-options-placeholder'}}")
             input.js-dropdown-item.last(type="text" value="" placeholder="{{_ 'custom-field-dropdown-options-placeholder'}}")
-        a.flex.js-field-show-on-card
+        a.flex.js-field-show-on-card(class="{{#if showOnCard}}is-checked{{/if}}")
             .materialCheckBox(class="{{#if showOnCard}}is-checked{{/if}}")
             .materialCheckBox(class="{{#if showOnCard}}is-checked{{/if}}")
 
 
             span {{_ 'show-field-on-card'}}
             span {{_ 'show-field-on-card'}}
@@ -49,4 +49,4 @@ template(name="createCustomFieldPopup")
 
 
 template(name="deleteCustomFieldPopup")
 template(name="deleteCustomFieldPopup")
     p {{_ "custom-field-delete-pop"}}
     p {{_ "custom-field-delete-pop"}}
-    button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
+    button.js-confirm.negate.full(type="submit") {{_ 'delete'}}

+ 19 - 0
client/components/sidebar/sidebarFilters.jade

@@ -40,6 +40,25 @@ template(name="filterSidebar")
               | (<span class="username">{{ username }}</span>)
               | (<span class="username">{{ username }}</span>)
             if Filter.members.isSelected _id
             if Filter.members.isSelected _id
               i.fa.fa-check
               i.fa.fa-check
+  hr
+  ul.sidebar-list
+    li(class="{{#if Filter.customFields.isSelected undefined}}active{{/if}}")
+          a.name.js-toggle-custom-fields-filter
+            span.sidebar-list-item-description
+              | {{_ 'filter-no-custom-fields'}}
+            if Filter.customFields.isSelected undefined
+              i.fa.fa-check
+    each currentBoard.customFields
+      li(class="{{#if Filter.customFields.isSelected _id}}active{{/if}}")
+        a.name.js-toggle-custom-fields-filter
+          span.sidebar-list-item-description
+            {{ name }}
+          if Filter.customFields.isSelected _id
+              i.fa.fa-check
+  hr
+  span {{_ 'advanced-filter-label'}}
+  input.js-field-advanced-filter(type="text")
+  span {{_ 'advanced-filter-description'}}
   if Filter.isActive
   if Filter.isActive
     hr
     hr
     a.sidebar-btn.js-clear-all
     a.sidebar-btn.js-clear-all

+ 10 - 0
client/components/sidebar/sidebarFilters.js

@@ -11,6 +11,16 @@ BlazeComponent.extendComponent({
         Filter.members.toggle(this.currentData()._id);
         Filter.members.toggle(this.currentData()._id);
         Filter.resetExceptions();
         Filter.resetExceptions();
       },
       },
+      'click .js-toggle-custom-fields-filter'(evt) {
+        evt.preventDefault();
+        Filter.customFields.toggle(this.currentData()._id);
+        Filter.resetExceptions();
+      },
+      'change .js-field-advanced-filter'(evt) {
+        evt.preventDefault();
+        Filter.advanced.set(this.find('.js-field-advanced-filter').value.trim());
+        Filter.resetExceptions();
+      },
       'click .js-clear-all'(evt) {
       'click .js-clear-all'(evt) {
         evt.preventDefault();
         evt.preventDefault();
         Filter.reset();
         Filter.reset();

+ 315 - 10
client/lib/filter.js

@@ -10,10 +10,13 @@ function showFilterSidebar() {
 
 
 // Use a "set" filter for a field that is a set of documents uniquely
 // Use a "set" filter for a field that is a set of documents uniquely
 // identified. For instance `{ labels: ['labelA', 'labelC', 'labelD'] }`.
 // identified. For instance `{ labels: ['labelA', 'labelC', 'labelD'] }`.
+// use "subField" for searching inside object Fields.
+// For instance '{ 'customFields._id': ['field1','field2']} (subField would be: _id)
 class SetFilter {
 class SetFilter {
-  constructor() {
+  constructor(subField = '') {
     this._dep = new Tracker.Dependency();
     this._dep = new Tracker.Dependency();
     this._selectedElements = [];
     this._selectedElements = [];
+    this.subField = subField;
   }
   }
 
 
   isSelected(val) {
   isSelected(val) {
@@ -76,6 +79,295 @@ class SetFilter {
   }
   }
 }
 }
 
 
+
+// Advanced filter forms a MongoSelector from a users String.
+// Build by: Ignatz 19.05.2018 (github feuerball11)
+class AdvancedFilter {
+  constructor() {
+    this._dep = new Tracker.Dependency();
+    this._filter = '';
+    this._lastValide = {};
+  }
+
+  set(str) {
+    this._filter = str;
+    this._dep.changed();
+  }
+
+  reset() {
+    this._filter = '';
+    this._lastValide = {};
+    this._dep.changed();
+  }
+
+  _isActive() {
+    this._dep.depend();
+    return this._filter !== '';
+  }
+
+  _filterToCommands() {
+    const commands = [];
+    let current = '';
+    let string = false;
+    let wasString = false;
+    let ignore = false;
+    for (let i = 0; i < this._filter.length; i++) {
+      const char = this._filter.charAt(i);
+      if (ignore) {
+        ignore = false;
+        continue;
+      }
+      if (char === '\'') {
+        string = !string;
+        if (string) wasString = true;
+        continue;
+      }
+      if (char === '\\') {
+        ignore = true;
+        continue;
+      }
+      if (char === ' ' && !string) {
+        commands.push({ 'cmd': current, 'string': wasString });
+        wasString = false;
+        current = '';
+        continue;
+      }
+      current += char;
+    }
+    if (current !== '') {
+      commands.push({ 'cmd': current, 'string': wasString });
+    }
+    return commands;
+  }
+
+  _fieldNameToId(field) {
+    const found = CustomFields.findOne({ 'name': field });
+    return found._id;
+  }
+
+  _fieldValueToId(field, value)
+  {
+    const found = CustomFields.findOne({ 'name': field });
+    if (found.settings.dropdownItems && found.settings.dropdownItems.length > 0)
+      {
+      for (let i = 0; i < found.settings.dropdownItems.length; i++)
+        {
+        if (found.settings.dropdownItems[i].name === value)
+          {
+          return found.settings.dropdownItems[i]._id;
+        }
+      }
+    }
+    return value;
+  }
+
+  _arrayToSelector(commands) {
+    try {
+      //let changed = false;
+      this._processSubCommands(commands);
+    }
+    catch (e) { return this._lastValide; }
+    this._lastValide = { $or: commands };
+    return { $or: commands };
+  }
+
+  _processSubCommands(commands) {
+    const subcommands = [];
+    let level = 0;
+    let start = -1;
+    for (let i = 0; i < commands.length; i++) {
+      if (commands[i].cmd) {
+        switch (commands[i].cmd) {
+        case '(':
+          {
+            level++;
+            if (start === -1) start = i;
+            continue;
+          }
+        case ')':
+          {
+            level--;
+            commands.splice(i, 1);
+            i--;
+            continue;
+          }
+        default:
+          {
+            if (level > 0) {
+              subcommands.push(commands[i]);
+              commands.splice(i, 1);
+              i--;
+              continue;
+            }
+          }
+        }
+      }
+    }
+    if (start !== -1) {
+      this._processSubCommands(subcommands);
+      if (subcommands.length === 1)
+        commands.splice(start, 0, subcommands[0]);
+      else
+        commands.splice(start, 0, subcommands);
+    }
+    this._processConditions(commands);
+    this._processLogicalOperators(commands);
+  }
+
+  _processConditions(commands) {
+    for (let i = 0; i < commands.length; i++) {
+      if (!commands[i].string && commands[i].cmd) {
+        switch (commands[i].cmd) {
+        case '=':
+        case '==':
+        case '===':
+          {
+            const field = commands[i - 1].cmd;
+            const str = commands[i + 1].cmd;
+            commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': {$in: [this._fieldValueToId(field, str), parseInt(str, 10)]} };
+            commands.splice(i - 1, 1);
+            commands.splice(i, 1);
+          //changed = true;
+            i--;
+            break;
+          }
+        case '!=':
+        case '!==':
+          {
+            const field = commands[i - 1].cmd;
+            const str = commands[i + 1].cmd;
+            commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $not: {$in: [this._fieldValueToId(field, str), parseInt(str, 10)]} } };
+            commands.splice(i - 1, 1);
+            commands.splice(i, 1);
+          //changed = true;
+            i--;
+            break;
+          }
+        case '>':
+        case 'gt':
+        case 'Gt':
+        case 'GT':
+          {
+            const field = commands[i - 1].cmd;
+            const str = commands[i + 1].cmd;
+            commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $gt: parseInt(str, 10) } };
+            commands.splice(i - 1, 1);
+            commands.splice(i, 1);
+          //changed = true;
+            i--;
+            break;
+          }
+        case '>=':
+        case '>==':
+        case 'gte':
+        case 'Gte':
+        case 'GTE':
+          {
+            const field = commands[i - 1].cmd;
+            const str = commands[i + 1].cmd;
+            commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $gte:  parseInt(str, 10) } };
+            commands.splice(i - 1, 1);
+            commands.splice(i, 1);
+          //changed = true;
+            i--;
+            break;
+          }
+        case '<':
+        case 'lt':
+        case 'Lt':
+        case 'LT':
+          {
+            const field = commands[i - 1].cmd;
+            const str = commands[i + 1].cmd;
+            commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $lt:  parseInt(str, 10) } };
+            commands.splice(i - 1, 1);
+            commands.splice(i, 1);
+          //changed = true;
+            i--;
+            break;
+          }
+        case '<=':
+        case '<==':
+        case 'lte':
+        case 'Lte':
+        case 'LTE':
+          {
+            const field = commands[i - 1].cmd;
+            const str = commands[i + 1].cmd;
+            commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $lte:  parseInt(str, 10) } };
+            commands.splice(i - 1, 1);
+            commands.splice(i, 1);
+          //changed = true;
+            i--;
+            break;
+          }
+
+        }
+      }
+    }
+  }
+
+  _processLogicalOperators(commands) {
+    for (let i = 0; i < commands.length; i++) {
+      if (!commands[i].string && commands[i].cmd) {
+        switch (commands[i].cmd) {
+        case 'or':
+        case 'Or':
+        case 'OR':
+        case '|':
+        case '||':
+          {
+            const op1 = commands[i - 1];
+            const op2 = commands[i + 1];
+            commands[i] = { $or: [op1, op2] };
+            commands.splice(i - 1, 1);
+            commands.splice(i, 1);
+          //changed = true;
+            i--;
+            break;
+          }
+        case 'and':
+        case 'And':
+        case 'AND':
+        case '&':
+        case '&&':
+          {
+            const op1 = commands[i - 1];
+            const op2 = commands[i + 1];
+            commands[i] = { $and: [op1, op2] };
+            commands.splice(i - 1, 1);
+            commands.splice(i, 1);
+          //changed = true;
+            i--;
+            break;
+          }
+
+        case 'not':
+        case 'Not':
+        case 'NOT':
+        case '!':
+          {
+            const op1 = commands[i + 1];
+            commands[i] = { $not: op1 };
+            commands.splice(i + 1, 1);
+          //changed = true;
+            i--;
+            break;
+          }
+
+        }
+      }
+    }
+  }
+
+  _getMongoSelector() {
+    this._dep.depend();
+    const commands = this._filterToCommands();
+    return this._arrayToSelector(commands);
+  }
+
+}
+
 // The global Filter object.
 // The global Filter object.
 // XXX It would be possible to re-write this object more elegantly, and removing
 // XXX It would be possible to re-write this object more elegantly, and removing
 // the need to provide a list of `_fields`. We also should move methods into the
 // the need to provide a list of `_fields`. We also should move methods into the
@@ -86,8 +378,10 @@ Filter = {
   // before changing the schema.
   // before changing the schema.
   labelIds: new SetFilter(),
   labelIds: new SetFilter(),
   members: new SetFilter(),
   members: new SetFilter(),
+  customFields: new SetFilter('_id'),
+  advanced: new AdvancedFilter(),
 
 
-  _fields: ['labelIds', 'members'],
+  _fields: ['labelIds', 'members', 'customFields'],
 
 
   // We don't filter cards that have been added after the last filter change. To
   // We don't filter cards that have been added after the last filter change. To
   // implement this we keep the id of these cards in this `_exceptions` fields
   // implement this we keep the id of these cards in this `_exceptions` fields
@@ -98,7 +392,7 @@ Filter = {
   isActive() {
   isActive() {
     return _.any(this._fields, (fieldName) => {
     return _.any(this._fields, (fieldName) => {
       return this[fieldName]._isActive();
       return this[fieldName]._isActive();
-    });
+    }) || this.advanced._isActive();
   },
   },
 
 
   _getMongoSelector() {
   _getMongoSelector() {
@@ -111,7 +405,12 @@ Filter = {
     this._fields.forEach((fieldName) => {
     this._fields.forEach((fieldName) => {
       const filter = this[fieldName];
       const filter = this[fieldName];
       if (filter._isActive()) {
       if (filter._isActive()) {
-        filterSelector[fieldName] = filter._getMongoSelector();
+        if (filter.subField !== '') {
+          filterSelector[`${fieldName}.${filter.subField}`] = filter._getMongoSelector();
+        }
+        else {
+          filterSelector[fieldName] = filter._getMongoSelector();
+        }
         emptySelector[fieldName] = filter._getEmptySelector();
         emptySelector[fieldName] = filter._getEmptySelector();
         if (emptySelector[fieldName] !== null) {
         if (emptySelector[fieldName] !== null) {
           includeEmptySelectors = true;
           includeEmptySelectors = true;
@@ -119,13 +418,18 @@ Filter = {
       }
       }
     });
     });
 
 
-    const exceptionsSelector = {_id: {$in: this._exceptions}};
+    const exceptionsSelector = { _id: { $in: this._exceptions } };
     this._exceptionsDep.depend();
     this._exceptionsDep.depend();
 
 
-    if (includeEmptySelectors)
-      return {$or: [filterSelector, exceptionsSelector, emptySelector]};
-    else
-      return {$or: [filterSelector, exceptionsSelector]};
+    const selectors = [exceptionsSelector];
+
+    if (_.any(this._fields, (fieldName) => {
+      return this[fieldName]._isActive();
+    })) selectors.push(filterSelector);
+    if (includeEmptySelectors) selectors.push(emptySelector);
+    if (this.advanced._isActive()) selectors.push(this.advanced._getMongoSelector());
+
+    return { $or: selectors };
   },
   },
 
 
   mongoSelector(additionalSelector) {
   mongoSelector(additionalSelector) {
@@ -133,7 +437,7 @@ Filter = {
     if (_.isUndefined(additionalSelector))
     if (_.isUndefined(additionalSelector))
       return filterSelector;
       return filterSelector;
     else
     else
-      return {$and: [filterSelector, additionalSelector]};
+      return { $and: [filterSelector, additionalSelector] };
   },
   },
 
 
   reset() {
   reset() {
@@ -141,6 +445,7 @@ Filter = {
       const filter = this[fieldName];
       const filter = this[fieldName];
       filter.reset();
       filter.reset();
     });
     });
+    this.advanced.reset();
     this.resetExceptions();
     this.resetExceptions();
   },
   },
 
 

+ 1 - 1
docker-compose.yml

@@ -3,7 +3,7 @@ version: '2'
 services:
 services:
 
 
   wekandb:
   wekandb:
-    image: mongo:3.2.19
+    image: mongo:3.2.20
     container_name: wekan-db
     container_name: wekan-db
     restart: always
     restart: always
     command: mongod --smallfiles --oplogSize 128
     command: mongod --smallfiles --oplogSize 128

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "%s تعليقات لهذه البطاقة",
     "card-comments-title": "%s تعليقات لهذه البطاقة",
     "card-delete-notice": "هذا حذف أبديّ . سوف تفقد كل الإجراءات المنوطة بهذه البطاقة",
     "card-delete-notice": "هذا حذف أبديّ . سوف تفقد كل الإجراءات المنوطة بهذه البطاقة",
     "card-delete-pop": "سيتم إزالة جميع الإجراءات من تبعات النشاط، وأنك لن تكون قادرا على إعادة فتح البطاقة. لا يوجد التراجع.",
     "card-delete-pop": "سيتم إزالة جميع الإجراءات من تبعات النشاط، وأنك لن تكون قادرا على إعادة فتح البطاقة. لا يوجد التراجع.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "مستحق",
     "card-due": "مستحق",
     "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": "تصحيح الإشعار",
@@ -222,9 +242,12 @@
     "filter-clear": "مسح التصفية",
     "filter-clear": "مسح التصفية",
     "filter-no-label": "لا يوجد ملصق",
     "filter-no-label": "لا يوجد ملصق",
     "filter-no-member": "ليس هناك أي عضو",
     "filter-no-member": "ليس هناك أي عضو",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "التصفية تشتغل",
     "filter-on": "التصفية تشتغل",
     "filter-on-desc": "أنت بصدد تصفية بطاقات هذه اللوحة. اضغط هنا لتعديل التصفية.",
     "filter-on-desc": "أنت بصدد تصفية بطاقات هذه اللوحة. اضغط هنا لتعديل التصفية.",
     "filter-to-selection": "تصفية بالتحديد",
     "filter-to-selection": "تصفية بالتحديد",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "الإسم الكامل",
     "fullname": "الإسم الكامل",
     "header-logo-title": "الرجوع إلى صفحة اللوحات",
     "header-logo-title": "الرجوع إلى صفحة اللوحات",
     "hide-system-messages": "إخفاء رسائل النظام",
     "hide-system-messages": "إخفاء رسائل النظام",
@@ -366,6 +389,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 +454,7 @@
     "hours": "الساعات",
     "hours": "الساعات",
     "minutes": "الدقائق",
     "minutes": "الدقائق",
     "seconds": "الثواني",
     "seconds": "الثواني",
+    "show-field-on-card": "Show this field on card",
     "yes": "نعم",
     "yes": "نعم",
     "no": "لا",
     "no": "لا",
     "accounts": "الحسابات",
     "accounts": "الحسابات",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 130 - 99
i18n/bg.i18n.json

@@ -1,44 +1,46 @@
 {
 {
     "accept": "Accept",
     "accept": "Accept",
     "act-activity-notify": "[Wekan] Известия за дейности",
     "act-activity-notify": "[Wekan] Известия за дейности",
-    "act-addAttachment": "attached __attachment__ to __card__",
-    "act-addChecklist": "added checklist __checklist__ to __card__",
-    "act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
+    "act-addAttachment": "прикачи __attachment__ към __card__",
+    "act-addChecklist": "добави списък със задачи __checklist__ към __card__",
+    "act-addChecklistItem": "добави __checklistItem__ към списък със задачи __checklist__ в __card__",
     "act-addComment": "Коментира в __card__: __comment__",
     "act-addComment": "Коментира в __card__: __comment__",
-    "act-createBoard": "created __board__",
-    "act-createCard": "added __card__ to __list__",
-    "act-createList": "added __list__ to __board__",
-    "act-addBoardMember": "added __member__ to __board__",
-    "act-archivedBoard": "__board__ moved to Recycle Bin",
-    "act-archivedCard": "__card__ moved to Recycle Bin",
-    "act-archivedList": "__list__ moved to Recycle Bin",
-    "act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
-    "act-importBoard": "imported __board__",
-    "act-importCard": "imported __card__",
-    "act-importList": "imported __list__",
-    "act-joinMember": "added __member__ to __card__",
-    "act-moveCard": "moved __card__ from __oldList__ to __list__",
-    "act-removeBoardMember": "removed __member__ from __board__",
-    "act-restoredCard": "restored __card__ to __board__",
-    "act-unjoinMember": "removed __member__ from __card__",
+    "act-createBoard": "създаде __board__",
+    "act-createCard": "добави __card__ към __list__",
+    "act-createCustomField": "създаде собствено поле __customField__",
+    "act-createList": "добави __list__ към __board__",
+    "act-addBoardMember": "добави __member__ към __board__",
+    "act-archivedBoard": "__board__ беше преместен в Кошчето",
+    "act-archivedCard": "__card__ беше преместена в Кошчето",
+    "act-archivedList": "__list__ беше преместен в Кошчето",
+    "act-archivedSwimlane": "__swimlane__ беше преместен в Кошчето",
+    "act-importBoard": "импортира __board__",
+    "act-importCard": "импортира __card__",
+    "act-importList": "импортира __list__",
+    "act-joinMember": "добави __member__ към __card__",
+    "act-moveCard": "премести __card__ от __oldList__ в __list__",
+    "act-removeBoardMember": "премахна __member__ от __board__",
+    "act-restoredCard": "възстанови __card__ в __board__",
+    "act-unjoinMember": "премахна __member__ от __card__",
     "act-withBoardTitle": "[Wekan] __board__",
     "act-withBoardTitle": "[Wekan] __board__",
     "act-withCardTitle": "[__board__] __card__",
     "act-withCardTitle": "[__board__] __card__",
     "actions": "Actions",
     "actions": "Actions",
     "activities": "Действия",
     "activities": "Действия",
     "activity": "Дейности",
     "activity": "Дейности",
     "activity-added": "добави %s към %s",
     "activity-added": "добави %s към %s",
-    "activity-archived": "%s moved to Recycle Bin",
+    "activity-archived": "премести %s в Кошчето",
     "activity-attached": "прикачи %s към %s",
     "activity-attached": "прикачи %s към %s",
     "activity-created": "създаде %s",
     "activity-created": "създаде %s",
+    "activity-customfield-created": "създаде собствено поле %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",
-    "activity-joined": "joined %s",
+    "activity-joined": "се присъедини към %s",
     "activity-moved": "премести %s от %s в/във %s",
     "activity-moved": "премести %s от %s в/във %s",
     "activity-on": "на %s",
     "activity-on": "на %s",
     "activity-removed": "премахна %s от %s",
     "activity-removed": "премахна %s от %s",
     "activity-sent": "изпрати %s до %s",
     "activity-sent": "изпрати %s до %s",
-    "activity-unjoined": "unjoined %s",
+    "activity-unjoined": "вече не е част от %s",
     "activity-checklist-added": "добави списък със задачи към %s",
     "activity-checklist-added": "добави списък със задачи към %s",
     "activity-checklist-item-added": "добави точка към '%s' в/във %s",
     "activity-checklist-item-added": "добави точка към '%s' в/във %s",
     "add": "Добави",
     "add": "Добави",
@@ -58,29 +60,29 @@
     "admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
     "admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
     "admin-announcement": "Съобщение",
     "admin-announcement": "Съобщение",
     "admin-announcement-active": "Active System-Wide Announcement",
     "admin-announcement-active": "Active System-Wide Announcement",
-    "admin-announcement-title": "Announcement from Administrator",
+    "admin-announcement-title": "Съобщение от администратора",
     "all-boards": "Всички дъски",
     "all-boards": "Всички дъски",
-    "and-n-other-card": "And __count__ other card",
-    "and-n-other-card_plural": "And __count__ other cards",
+    "and-n-other-card": "И __count__ друга карта",
+    "and-n-other-card_plural": "И __count__ други карти",
     "apply": "Приложи",
     "apply": "Приложи",
-    "app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
-    "archive": "Move to Recycle Bin",
-    "archive-all": "Move All to Recycle Bin",
-    "archive-board": "Move Board to Recycle Bin",
-    "archive-card": "Move Card to Recycle Bin",
-    "archive-list": "Move List to Recycle Bin",
-    "archive-swimlane": "Move Swimlane to Recycle Bin",
-    "archive-selection": "Move selection to Recycle Bin",
-    "archiveBoardPopup-title": "Move Board to Recycle Bin?",
-    "archived-items": "Recycle Bin",
-    "archived-boards": "Boards in Recycle Bin",
-    "restore-board": "Restore Board",
-    "no-archived-boards": "No Boards in Recycle Bin.",
-    "archives": "Recycle Bin",
-    "assign-member": "Assign member",
+    "app-is-offline": "Wekan зарежда, моля изчакайте! Презареждането на страницата може да доведе до загуба на данни. Ако Wekan не се зареди, моля проверете дали сървъра му работи.",
+    "archive": "Премести в Кошчето",
+    "archive-all": "Премести всички в Кошчето",
+    "archive-board": "Премести Дъската в Кошчето",
+    "archive-card": "Премести Картата в Кошчето",
+    "archive-list": "Премести Списъка в Кошчето",
+    "archive-swimlane": "Премести Коридора в Кошчето",
+    "archive-selection": "Премести избраните в Кошчето",
+    "archiveBoardPopup-title": "Сигурни ли сте, че искате да преместите Дъската в Кошчето?",
+    "archived-items": "Кошче",
+    "archived-boards": "Дъски в Кошчето",
+    "restore-board": "Възстанови Дъската",
+    "no-archived-boards": "Няма Дъски в Кошчето.",
+    "archives": "Кошче",
+    "assign-member": "Възложи на член от екипа",
     "attached": "прикачен",
     "attached": "прикачен",
     "attachment": "Прикаченн файл",
     "attachment": "Прикаченн файл",
-    "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
+    "attachment-delete-pop": "Изтриването на прикачен файл е завинаги. Няма как да бъде възстановен.",
     "attachmentDeletePopup-title": "Желаете ли да изтриете прикачения файл?",
     "attachmentDeletePopup-title": "Желаете ли да изтриете прикачения файл?",
     "attachments": "Прикачени файлове",
     "attachments": "Прикачени файлове",
     "auto-watch": "Автоматично наблюдаване на дъските, когато са създадени",
     "auto-watch": "Автоматично наблюдаване на дъските, когато са създадени",
@@ -88,36 +90,39 @@
     "back": "Назад",
     "back": "Назад",
     "board-change-color": "Промени цвета",
     "board-change-color": "Промени цвета",
     "board-nb-stars": "%s звезди",
     "board-nb-stars": "%s звезди",
-    "board-not-found": "Board not found",
+    "board-not-found": "Дъската не е намерена",
     "board-private-info": "This board will be <strong>private</strong>.",
     "board-private-info": "This board will be <strong>private</strong>.",
     "board-public-info": "This board will be <strong>public</strong>.",
     "board-public-info": "This board will be <strong>public</strong>.",
     "boardChangeColorPopup-title": "Change Board Background",
     "boardChangeColorPopup-title": "Change Board Background",
-    "boardChangeTitlePopup-title": "Rename Board",
+    "boardChangeTitlePopup-title": "Промени името на Дъската",
     "boardChangeVisibilityPopup-title": "Change Visibility",
     "boardChangeVisibilityPopup-title": "Change Visibility",
     "boardChangeWatchPopup-title": "Промени наблюдаването",
     "boardChangeWatchPopup-title": "Промени наблюдаването",
-    "boardMenuPopup-title": "Board Menu",
+    "boardMenuPopup-title": "Меню на Дъската",
     "boards": "Дъски",
     "boards": "Дъски",
     "board-view": "Board View",
     "board-view": "Board View",
     "board-view-swimlanes": "Коридори",
     "board-view-swimlanes": "Коридори",
     "board-view-lists": "Списъци",
     "board-view-lists": "Списъци",
     "bucket-example": "Like “Bucket List” for example",
     "bucket-example": "Like “Bucket List” for example",
     "cancel": "Cancel",
     "cancel": "Cancel",
-    "card-archived": "This card is moved to Recycle Bin.",
+    "card-archived": "Картата е преместена в Кошчето.",
     "card-comments-title": "Тази карта има %s коментар.",
     "card-comments-title": "Тази карта има %s коментар.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Готова за",
     "card-due": "Готова за",
     "card-due-on": "Готова за",
     "card-due-on": "Готова за",
     "card-spent": "Изработено време",
     "card-spent": "Изработено време",
     "card-edit-attachments": "Промени прикачените файлове",
     "card-edit-attachments": "Промени прикачените файлове",
+    "card-edit-custom-fields": "Промени собствените полета",
     "card-edit-labels": "Промени етикетите",
     "card-edit-labels": "Промени етикетите",
     "card-edit-members": "Промени членовете",
     "card-edit-members": "Промени членовете",
-    "card-labels-title": "Променете етикетите за тази карта",
-    "card-members-title": "Add or remove members of the board from the card.",
+    "card-labels-title": "Промени етикетите за картата.",
+    "card-members-title": "Добави или премахни членове на Дъската от тази карта.",
     "card-start": "Начало",
     "card-start": "Начало",
-    "card-start-on": "Starts on",
-    "cardAttachmentsPopup-title": "Attach From",
+    "card-start-on": "Започва на",
+    "cardAttachmentsPopup-title": "Прикачи от",
+    "cardCustomField-datePopup-title": "Промени датата",
+    "cardCustomFieldsPopup-title": "Промени собствените полета",
     "cardDeletePopup-title": "Желаете да изтриете картата?",
     "cardDeletePopup-title": "Желаете да изтриете картата?",
     "cardDetailsActionsPopup-title": "Опции",
     "cardDetailsActionsPopup-title": "Опции",
     "cardLabelsPopup-title": "Етикети",
     "cardLabelsPopup-title": "Етикети",
@@ -125,7 +130,7 @@
     "cardMorePopup-title": "Още",
     "cardMorePopup-title": "Още",
     "cards": "Карти",
     "cards": "Карти",
     "cards-count": "Карти",
     "cards-count": "Карти",
-    "change": "Change",
+    "change": "Промени",
     "change-avatar": "Промени аватара",
     "change-avatar": "Промени аватара",
     "change-password": "Промени паролата",
     "change-password": "Промени паролата",
     "change-permissions": "Change permissions",
     "change-permissions": "Change permissions",
@@ -138,26 +143,26 @@
     "checklists": "Списъци със задачи",
     "checklists": "Списъци със задачи",
     "click-to-star": "Click to star this board.",
     "click-to-star": "Click to star this board.",
     "click-to-unstar": "Натиснете, за да премахнете тази дъска от любими.",
     "click-to-unstar": "Натиснете, за да премахнете тази дъска от любими.",
-    "clipboard": "Clipboard or drag & drop",
-    "close": "Close",
-    "close-board": "Close Board",
+    "clipboard": "Клипборда или с драг & дроп",
+    "close": "Затвори",
+    "close-board": "Затвори Дъската",
     "close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
     "close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
-    "color-black": "black",
-    "color-blue": "blue",
-    "color-green": "green",
-    "color-lime": "lime",
-    "color-orange": "orange",
-    "color-pink": "pink",
-    "color-purple": "purple",
-    "color-red": "red",
-    "color-sky": "sky",
-    "color-yellow": "yellow",
+    "color-black": "черно",
+    "color-blue": "синьо",
+    "color-green": "зелено",
+    "color-lime": "лайм",
+    "color-orange": "оранжево",
+    "color-pink": "розово",
+    "color-purple": "пурпурно",
+    "color-red": "червено",
+    "color-sky": "светло синьо",
+    "color-yellow": "жълто",
     "comment": "Коментирай",
     "comment": "Коментирай",
     "comment-placeholder": "Напиши коментар",
     "comment-placeholder": "Напиши коментар",
     "comment-only": "Само коментар",
     "comment-only": "Само коментар",
     "comment-only-desc": "Може да коментира само в карти.",
     "comment-only-desc": "Може да коментира само в карти.",
-    "computer": "Computer",
-    "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+    "computer": "Компютър",
+    "confirm-checklist-delete-dialog": "Сигурни ли сте, че искате да изтриете този чеклист?",
     "copy-card-link-to-clipboard": "Копирай връзката на картата в клипборда",
     "copy-card-link-to-clipboard": "Копирай връзката на картата в клипборда",
     "copyCardPopup-title": "Копирай картата",
     "copyCardPopup-title": "Копирай картата",
     "copyChecklistToManyCardsPopup-title": "Копирай шаблона за чеклисти в много карти",
     "copyChecklistToManyCardsPopup-title": "Копирай шаблона за чеклисти в много карти",
@@ -167,31 +172,46 @@
     "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": "Чекбокс",
+    "custom-field-date": "Дата",
+    "custom-field-dropdown": "Падащо меню",
+    "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": "Номер",
+    "custom-field-text": "Текст",
+    "custom-fields": "Собствени полета",
     "date": "Дата",
     "date": "Дата",
-    "decline": "Decline",
+    "decline": "Отказ",
     "default-avatar": "Основен аватар",
     "default-avatar": "Основен аватар",
     "delete": "Изтрий",
     "delete": "Изтрий",
+    "deleteCustomFieldPopup-title": "Изтриване на Собственото поле?",
     "deleteLabelPopup-title": "Желаете да изтриете етикета?",
     "deleteLabelPopup-title": "Желаете да изтриете етикета?",
     "description": "Описание",
     "description": "Описание",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
     "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
-    "discard": "Discard",
-    "done": "Done",
+    "discard": "Отказ",
+    "done": "Готово",
     "download": "Сваляне",
     "download": "Сваляне",
     "edit": "Промени",
     "edit": "Промени",
     "edit-avatar": "Промени аватара",
     "edit-avatar": "Промени аватара",
     "edit-profile": "Промяна на профила",
     "edit-profile": "Промяна на профила",
     "edit-wip-limit": "Промени WIP лимита",
     "edit-wip-limit": "Промени WIP лимита",
-    "soft-wip-limit": "Soft WIP Limit",
+    "soft-wip-limit": "\"Мек\" WIP лимит",
     "editCardStartDatePopup-title": "Промени началната дата",
     "editCardStartDatePopup-title": "Промени началната дата",
     "editCardDueDatePopup-title": "Промени датата за готовност",
     "editCardDueDatePopup-title": "Промени датата за готовност",
+    "editCustomFieldPopup-title": "Промени Полето",
     "editCardSpentTimePopup-title": "Промени изработеното време",
     "editCardSpentTimePopup-title": "Промени изработеното време",
-    "editLabelPopup-title": "Change Label",
+    "editLabelPopup-title": "Промяна на Етикета",
     "editNotificationPopup-title": "Промени известията",
     "editNotificationPopup-title": "Промени известията",
     "editProfilePopup-title": "Промяна на профила",
     "editProfilePopup-title": "Промяна на профила",
     "email": "Имейл",
     "email": "Имейл",
-    "email-enrollAccount-subject": "An account created for you on __siteName__",
+    "email-enrollAccount-subject": "Ваш профил беше създаден на __siteName__",
     "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
     "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
     "email-fail": "Неуспешно изпращане на имейла",
     "email-fail": "Неуспешно изпращане на имейла",
     "email-fail-text": "Възникна грешка при изпращането на имейла",
     "email-fail-text": "Възникна грешка при изпращането на имейла",
@@ -204,7 +224,7 @@
     "email-sent": "Имейлът е изпратен",
     "email-sent": "Имейлът е изпратен",
     "email-verifyEmail-subject": "Verify your email address on __siteName__",
     "email-verifyEmail-subject": "Verify your email address on __siteName__",
     "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
     "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
-    "enable-wip-limit": "Enable WIP Limit",
+    "enable-wip-limit": "Включи WIP лимита",
     "error-board-doesNotExist": "This board does not exist",
     "error-board-doesNotExist": "This board does not exist",
     "error-board-notAdmin": "You need to be admin of this board to do that",
     "error-board-notAdmin": "You need to be admin of this board to do that",
     "error-board-notAMember": "You need to be a member of this board to do that",
     "error-board-notAMember": "You need to be a member of this board to do that",
@@ -220,16 +240,19 @@
     "filter": "Филтър",
     "filter": "Филтър",
     "filter-cards": "Филтрирай картите",
     "filter-cards": "Филтрирай картите",
     "filter-clear": "Премахване на филтрите",
     "filter-clear": "Премахване на филтрите",
-    "filter-no-label": "No label",
-    "filter-no-member": "No member",
+    "filter-no-label": "без етикет",
+    "filter-no-member": "без член",
+    "filter-no-custom-fields": "Няма Собствени полета",
     "filter-on": "Има приложени филтри",
     "filter-on": "Има приложени филтри",
     "filter-on-desc": "В момента филтрирате картите в тази дъска. Моля, натиснете тук, за да промените филтъра.",
     "filter-on-desc": "В момента филтрирате картите в тази дъска. Моля, натиснете тук, за да промените филтъра.",
     "filter-to-selection": "Филтрирай избраните",
     "filter-to-selection": "Филтрирай избраните",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Име",
     "fullname": "Име",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Скриване на системните съобщения",
     "hide-system-messages": "Скриване на системните съобщения",
     "headerBarCreateBoardPopup-title": "Create Board",
     "headerBarCreateBoardPopup-title": "Create Board",
-    "home": "Home",
+    "home": "Начало",
     "import": "Import",
     "import": "Import",
     "import-board": "import board",
     "import-board": "import board",
     "import-board-c": "Import board",
     "import-board-c": "Import board",
@@ -245,13 +268,13 @@
     "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
     "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
     "import-show-user-mapping": "Review members mapping",
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "import-user-select": "Pick the Wekan user you want to use as this member",
-    "importMapMembersAddPopup-title": "Select Wekan member",
+    "importMapMembersAddPopup-title": "Избери Wekan член",
     "info": "Версия",
     "info": "Версия",
     "initials": "Инициали",
     "initials": "Инициали",
     "invalid-date": "Невалидна дата",
     "invalid-date": "Невалидна дата",
     "invalid-time": "Невалиден час",
     "invalid-time": "Невалиден час",
     "invalid-user": "Невалиден потребител",
     "invalid-user": "Невалиден потребител",
-    "joined": "joined",
+    "joined": "присъедини ",
     "just-invited": "You are just invited to this board",
     "just-invited": "You are just invited to this board",
     "keyboard-shortcuts": "Keyboard shortcuts",
     "keyboard-shortcuts": "Keyboard shortcuts",
     "label-create": "Създай етикет",
     "label-create": "Създай етикет",
@@ -264,17 +287,17 @@
     "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
     "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
     "leaveBoardPopup-title": "Leave Board ?",
     "leaveBoardPopup-title": "Leave Board ?",
     "link-card": "Връзка към тази карта",
     "link-card": "Връзка към тази карта",
-    "list-archive-cards": "Move all cards in this list to Recycle Bin",
+    "list-archive-cards": "Премести всички карти от този списък в Кошчето",
     "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
     "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
     "list-move-cards": "Премести всички карти в този списък",
     "list-move-cards": "Премести всички карти в този списък",
     "list-select-cards": "Избери всички карти в този списък",
     "list-select-cards": "Избери всички карти в този списък",
     "listActionPopup-title": "List Actions",
     "listActionPopup-title": "List Actions",
     "swimlaneActionPopup-title": "Swimlane Actions",
     "swimlaneActionPopup-title": "Swimlane Actions",
-    "listImportCardPopup-title": "Import a Trello card",
+    "listImportCardPopup-title": "Импорт на карта от Trello",
     "listMorePopup-title": "Още",
     "listMorePopup-title": "Още",
     "link-list": "Връзка към този списък",
     "link-list": "Връзка към този списък",
     "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
     "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
-    "list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.",
+    "list-delete-suggest-archive": "Можете да преместите списък в Кошчето, за да го премахнете от Дъската и запазите активността.",
     "lists": "Списъци",
     "lists": "Списъци",
     "swimlanes": "Коридори",
     "swimlanes": "Коридори",
     "log-out": "Изход",
     "log-out": "Изход",
@@ -294,9 +317,9 @@
     "muted-info": "You will never be notified of any changes in this board",
     "muted-info": "You will never be notified of any changes in this board",
     "my-boards": "Моите дъски",
     "my-boards": "Моите дъски",
     "name": "Име",
     "name": "Име",
-    "no-archived-cards": "No cards in Recycle Bin.",
-    "no-archived-lists": "No lists in Recycle Bin.",
-    "no-archived-swimlanes": "No swimlanes in Recycle Bin.",
+    "no-archived-cards": "Няма карти в Кошчето.",
+    "no-archived-lists": "Няма списъци в Кошчето.",
+    "no-archived-swimlanes": "Няма коридори в Кошчето.",
     "no-results": "No results",
     "no-results": "No results",
     "normal": "Normal",
     "normal": "Normal",
     "normal-desc": "Can view and edit cards. Can't change settings.",
     "normal-desc": "Can view and edit cards. Can't change settings.",
@@ -323,12 +346,12 @@
     "remove-from-board": "Remove from Board",
     "remove-from-board": "Remove from Board",
     "remove-label": "Remove Label",
     "remove-label": "Remove Label",
     "listDeletePopup-title": "Желаете да изтриете списъка?",
     "listDeletePopup-title": "Желаете да изтриете списъка?",
-    "remove-member": "Remove Member",
-    "remove-member-from-card": "Remove from Card",
+    "remove-member": "Премахни член",
+    "remove-member-from-card": "Премахни от картата",
     "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
     "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
     "removeMemberPopup-title": "Remove Member?",
     "removeMemberPopup-title": "Remove Member?",
     "rename": "Rename",
     "rename": "Rename",
-    "rename-board": "Rename Board",
+    "rename-board": "Промени името на Дъската",
     "restore": "Възстанови",
     "restore": "Възстанови",
     "save": "Запази",
     "save": "Запази",
     "search": "Търсене",
     "search": "Търсене",
@@ -336,8 +359,8 @@
     "search-example": "Text to search for?",
     "search-example": "Text to search for?",
     "select-color": "Избери цвят",
     "select-color": "Избери цвят",
     "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
     "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
-    "setWipLimitPopup-title": "Set WIP Limit",
-    "shortcut-assign-self": "Assign yourself to current card",
+    "setWipLimitPopup-title": "Въведи WIP лимит",
+    "shortcut-assign-self": "Добави себе си към тази карта",
     "shortcut-autocomplete-emoji": "Autocomplete emoji",
     "shortcut-autocomplete-emoji": "Autocomplete emoji",
     "shortcut-autocomplete-members": "Autocomplete members",
     "shortcut-autocomplete-members": "Autocomplete members",
     "shortcut-clear-filters": "Изчистване на всички филтри",
     "shortcut-clear-filters": "Изчистване на всички филтри",
@@ -356,7 +379,7 @@
     "subscribe": "Subscribe",
     "subscribe": "Subscribe",
     "team": "Team",
     "team": "Team",
     "this-board": "this board",
     "this-board": "this board",
-    "this-card": "тази карта",
+    "this-card": "картата",
     "spent-time-hours": "Изработено време (часа)",
     "spent-time-hours": "Изработено време (часа)",
     "overtime-hours": "Оувъртайм (часа)",
     "overtime-hours": "Оувъртайм (часа)",
     "overtime": "Оувъртайм",
     "overtime": "Оувъртайм",
@@ -366,6 +389,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": "Спри наблюдаването",
@@ -374,7 +398,7 @@
     "uploaded-avatar": "Качихте аватар",
     "uploaded-avatar": "Качихте аватар",
     "username": "Потребителско име",
     "username": "Потребителско име",
     "view-it": "View it",
     "view-it": "View it",
-    "warn-list-archived": "warning: this card is in an list at Recycle Bin",
+    "warn-list-archived": "внимание: тази карта е в списък, който е в Кошчето",
     "watch": "Наблюдавай",
     "watch": "Наблюдавай",
     "watching": "Наблюдава",
     "watching": "Наблюдава",
     "watching-info": "You will be notified of any change in this board",
     "watching-info": "You will be notified of any change in this board",
@@ -383,9 +407,9 @@
     "welcome-list1": "Basics",
     "welcome-list1": "Basics",
     "welcome-list2": "Advanced",
     "welcome-list2": "Advanced",
     "what-to-do": "What do you want to do?",
     "what-to-do": "What do you want to do?",
-    "wipLimitErrorPopup-title": "Invalid WIP Limit",
+    "wipLimitErrorPopup-title": "Невалиден WIP лимит",
     "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
     "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
-    "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
+    "wipLimitErrorPopup-dialog-pt2": "Моля, преместете някои от задачите от този списък или въведете по-висок WIP лимит.",
     "admin-panel": "Администраторски панел",
     "admin-panel": "Администраторски панел",
     "settings": "Настройки",
     "settings": "Настройки",
     "people": "Хора",
     "people": "Хора",
@@ -430,6 +454,7 @@
     "hours": "часа",
     "hours": "часа",
     "minutes": "минути",
     "minutes": "минути",
     "seconds": "секунди",
     "seconds": "секунди",
+    "show-field-on-card": "Покажи това поле в картата",
     "yes": "Да",
     "yes": "Да",
     "no": "Не",
     "no": "Не",
     "accounts": "Профили",
     "accounts": "Профили",
@@ -438,10 +463,16 @@
     "createdAt": "Създаден на",
     "createdAt": "Създаден на",
     "verified": "Потвърден",
     "verified": "Потвърден",
     "active": "Активен",
     "active": "Активен",
-    "card-received": "Received",
-    "card-received-on": "Received on",
-    "card-end": "End",
-    "card-end-on": "Ends on",
-    "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "card-received": "Получена",
+    "card-received-on": "Получена на",
+    "card-end": "Завършена",
+    "card-end-on": "Завършена на",
+    "editCardReceivedDatePopup-title": "Промени датата на получаване",
+    "editCardEndDatePopup-title": "Промени датата на завършване",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "Aquesta fitxa té %s comentaris.",
     "card-comments-title": "Aquesta fitxa té %s comentaris.",
     "card-delete-notice": "L'esborrat és permanent. Perdreu totes les accions associades a aquesta fitxa.",
     "card-delete-notice": "L'esborrat és permanent. Perdreu totes les accions associades a aquesta fitxa.",
     "card-delete-pop": "Totes les accions s'eliminaran de l'activitat i no podreu tornar a obrir la fitxa. No es pot desfer.",
     "card-delete-pop": "Totes les accions s'eliminaran de l'activitat i no podreu tornar a obrir la fitxa. No es pot desfer.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Finalitza",
     "card-due": "Finalitza",
     "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ó",
@@ -222,9 +242,12 @@
     "filter-clear": "Elimina filtre",
     "filter-clear": "Elimina filtre",
     "filter-no-label": "Sense etiqueta",
     "filter-no-label": "Sense etiqueta",
     "filter-no-member": "Sense membres",
     "filter-no-member": "Sense membres",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filtra per",
     "filter-on": "Filtra per",
     "filter-on-desc": "Estau filtrant fitxes en aquest tauler. Feu clic aquí per editar el filtre.",
     "filter-on-desc": "Estau filtrant fitxes en aquest tauler. Feu clic aquí per editar el filtre.",
     "filter-to-selection": "Filtra selecció",
     "filter-to-selection": "Filtra selecció",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Nom complet",
     "fullname": "Nom complet",
     "header-logo-title": "Torna a la teva pàgina de taulers",
     "header-logo-title": "Torna a la teva pàgina de taulers",
     "hide-system-messages": "Oculta missatges del sistema",
     "hide-system-messages": "Oculta missatges del sistema",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 32 - 1
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": "vytvořeno vlastní pole __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": "vytvořeno vlastní pole %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": "Upravit vlastní pole",
     "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": "Změnit datum",
+    "cardCustomFieldsPopup-title": "Upravit vlastní pole",
     "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": "Vytvořit pole",
+    "createCustomFieldPopup-title": "Vytvořit pole",
     "current": "Aktuální",
     "current": "Aktuální",
+    "custom-field-delete-pop": "Nelze vrátit zpět. Toto odebere toto vlastní pole ze všech karet a zničí jeho historii.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Datum",
+    "custom-field-dropdown": "Rozbalovací seznam",
+    "custom-field-dropdown-none": "(prázdné)",
+    "custom-field-dropdown-options": "Seznam možností",
+    "custom-field-dropdown-options-placeholder": "Stiskněte enter pro přidání více možností",
+    "custom-field-dropdown-unknown": "(neznámé)",
+    "custom-field-number": "Číslo",
+    "custom-field-text": "Text",
+    "custom-fields": "Vlastní pole",
     "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": "Smazat vlastní pole",
     "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": "Upravit pole",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Vyčistit filtr",
     "filter-clear": "Vyčistit filtr",
     "filter-no-label": "Žádný štítek",
     "filter-no-label": "Žádný štítek",
     "filter-no-member": "Žádný člen",
     "filter-no-member": "Žádný člen",
+    "filter-no-custom-fields": "Žádné vlastní pole",
     "filter-on": "Filtr je zapnut",
     "filter-on": "Filtr je zapnut",
     "filter-on-desc": "Filtrujete karty tohoto tabla. Pro úpravu filtru klikni sem.",
     "filter-on-desc": "Filtrujete karty tohoto tabla. Pro úpravu filtru klikni sem.",
     "filter-to-selection": "Filtrovat výběr",
     "filter-to-selection": "Filtrovat výběr",
+    "advanced-filter-label": "Pokročilý filtr",
+    "advanced-filter-description": "Pokročilý filtr dovoluje zapsat řetězec následujících operátorů: == != <= >= && || () Operátory jsou odděleny mezerou. Můžete filtrovat všechny vlastní pole zadáním jejich názvů nebo hodnot. Například: Pole1 == Hodnota1. Poznámka: Pokud pole nebo hodnoty obsahují mezery, je potřeba je obalit v jednoduchých uvozovkách. Například: 'Pole 1' == 'Hodnota 1'. Můžete také kombinovat více podmínek. Například P1 == H1 || P1 == H2. Obvykle jsou operátory interpretovány zleva doprava. Jejich pořadí můžete měnit pomocí závorek. Například: P1 == H1 && (P2 == H2 || P2 == H3 )",
     "fullname": "Celé jméno",
     "fullname": "Celé jméno",
     "header-logo-title": "Jit zpět na stránku s tably.",
     "header-logo-title": "Jit zpět na stránku s tably.",
     "hide-system-messages": "Skrýt systémové zprávy",
     "hide-system-messages": "Skrýt systémové zprávy",
@@ -366,6 +389,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": "Typ",
     "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 +454,7 @@
     "hours": "hodin",
     "hours": "hodin",
     "minutes": "minut",
     "minutes": "minut",
     "seconds": "sekund",
     "seconds": "sekund",
+    "show-field-on-card": "Ukázat toto pole na kartě",
     "yes": "Ano",
     "yes": "Ano",
     "no": "Ne",
     "no": "Ne",
     "accounts": "Účty",
     "accounts": "Účty",
@@ -443,5 +468,11 @@
     "card-end": "Konec",
     "card-end": "Konec",
     "card-end-on": "Končí v",
     "card-end-on": "Končí v",
     "editCardReceivedDatePopup-title": "Změnit datum přijetí",
     "editCardReceivedDatePopup-title": "Změnit datum přijetí",
-    "editCardEndDatePopup-title": "Změnit datum konce"
+    "editCardEndDatePopup-title": "Změnit datum konce",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Smazat tablo?",
+    "delete-board": "Smazat tablo"
 }
 }

+ 37 - 6
i18n/de.i18n.json

@@ -2,11 +2,12 @@
     "accept": "Akzeptieren",
     "accept": "Akzeptieren",
     "act-activity-notify": "[Wekan] Aktivitätsbenachrichtigung",
     "act-activity-notify": "[Wekan] Aktivitätsbenachrichtigung",
     "act-addAttachment": "hat __attachment__ an __card__ angehängt",
     "act-addAttachment": "hat __attachment__ an __card__ angehängt",
-    "act-addChecklist": "hat die Checklist __checklist__ zu __card__ hinzugefügt",
+    "act-addChecklist": "hat die Checkliste __checklist__ zu __card__ hinzugefügt",
     "act-addChecklistItem": "hat __checklistItem__ zur Checkliste __checklist__ in __card__ hinzugefügt",
     "act-addChecklistItem": "hat __checklistItem__ zur Checkliste __checklist__ in __card__ hinzugefügt",
     "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": "benutzerdefiniertes Feld __customField__ angelegt",
     "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",
@@ -27,9 +28,10 @@
     "activities": "Aktivitäten",
     "activities": "Aktivitäten",
     "activity": "Aktivität",
     "activity": "Aktivität",
     "activity-added": "hat %s zu %s hinzugefügt",
     "activity-added": "hat %s zu %s hinzugefügt",
-    "activity-archived": "%s in den Papierkorb verschoben",
+    "activity-archived": "hat %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": "hat das benutzerdefinierte Feld %s erstellt",
     "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",
@@ -40,14 +42,14 @@
     "activity-sent": "hat %s an %s gesendet",
     "activity-sent": "hat %s an %s gesendet",
     "activity-unjoined": "hat %s verlassen",
     "activity-unjoined": "hat %s verlassen",
     "activity-checklist-added": "hat eine Checkliste zu %s hinzugefügt",
     "activity-checklist-added": "hat eine Checkliste zu %s hinzugefügt",
-    "activity-checklist-item-added": "hat einen Punkt zur Checkliste '%s' in %s hinzugefügt",
+    "activity-checklist-item-added": "hat eine Checklistenposition zu '%s' in %s hinzugefügt",
     "add": "Hinzufügen",
     "add": "Hinzufügen",
     "add-attachment": "Datei anhängen",
     "add-attachment": "Datei anhängen",
     "add-board": "neues Board",
     "add-board": "neues Board",
     "add-card": "Karte hinzufügen",
     "add-card": "Karte hinzufügen",
     "add-swimlane": "Swimlane hinzufügen",
     "add-swimlane": "Swimlane hinzufügen",
     "add-checklist": "Checkliste hinzufügen",
     "add-checklist": "Checkliste hinzufügen",
-    "add-checklist-item": "Punkt zu einer Checkliste hinzufügen",
+    "add-checklist-item": "Position zu einer Checkliste hinzufügen",
     "add-cover": "Cover hinzufügen",
     "add-cover": "Cover hinzufügen",
     "add-label": "Label hinzufügen",
     "add-label": "Label hinzufügen",
     "add-list": "Liste hinzufügen",
     "add-list": "Liste hinzufügen",
@@ -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": "Benutzerdefinierte Felder editieren",
     "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": "Datum ändern",
+    "cardCustomFieldsPopup-title": "Benutzerdefinierte Felder editieren",
     "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": "Feld erstellen",
+    "createCustomFieldPopup-title": "Feld erstellen",
     "current": "aktuell",
     "current": "aktuell",
+    "custom-field-delete-pop": "Dies wird das Feld aus allen Karten entfernen und den dazugehörigen Verlauf löschen. Die Aktion kann nicht rückgängig gemacht werden.",
+    "custom-field-checkbox": "Kontrollkästchen",
+    "custom-field-date": "Datum",
+    "custom-field-dropdown": "Dropdownliste",
+    "custom-field-dropdown-none": "(keiner)",
+    "custom-field-dropdown-options": "Listenoptionen",
+    "custom-field-dropdown-options-placeholder": "Drücken Sie die Eingabetaste, um weitere Optionen hinzuzufügen",
+    "custom-field-dropdown-unknown": "(unbekannt)",
+    "custom-field-number": "Zahl",
+    "custom-field-text": "Text",
+    "custom-fields": "Benutzerdefinierte Felder",
     "date": "Datum",
     "date": "Datum",
     "decline": "Ablehnen",
     "decline": "Ablehnen",
     "default-avatar": "Standard Profilbild",
     "default-avatar": "Standard Profilbild",
     "delete": "Löschen",
     "delete": "Löschen",
+    "deleteCustomFieldPopup-title": "Benutzerdefiniertes Feld löschen?",
     "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": "Feld bearbeiten",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Filter entfernen",
     "filter-clear": "Filter entfernen",
     "filter-no-label": "Kein Label",
     "filter-no-label": "Kein Label",
     "filter-no-member": "Kein Mitglied",
     "filter-no-member": "Kein Mitglied",
+    "filter-no-custom-fields": "Keine benutzerdefinierten Felder",
     "filter-on": "Filter ist aktiv",
     "filter-on": "Filter ist aktiv",
     "filter-on-desc": "Sie filtern die Karten in diesem Board. Klicken Sie, um den Filter zu bearbeiten.",
     "filter-on-desc": "Sie filtern die Karten in diesem Board. Klicken Sie, um den Filter zu bearbeiten.",
     "filter-to-selection": "Ergebnisse auswählen",
     "filter-to-selection": "Ergebnisse auswählen",
+    "advanced-filter-label": "Erweiterter Filter",
+    "advanced-filter-description": "Der erweiterte Filter erlaubt die Eingabe von Zeichenfolgen, die folgende Operatoren enthalten: == != <= >= && || ( ). Ein Leerzeichen wird als Trennzeichen zwischen den Operatoren verwendet. Sie können nach allen benutzerdefinierten Feldern filtern, indem Sie deren Namen und Werte eingeben. Zum Beispiel: Feld1 == Wert1. Beachten Sie: Wenn Felder oder Werte Leerzeichen enthalten, müssen Sie sie in einfache Anführungszeichen setzen. Zum Beispiel: 'Feld 1' == 'Wert 1'. Sie können außerdem mehrere Bedingungen kombinieren. Zum Beispiel: F1 == W1 || F1 == W2. Normalerweise werden alle Operatoren von links nach rechts interpretiert. Sie können die Reihenfolge ändern, indem Sie Klammern setzen. Zum Beispiel: F1 == W1 && ( F2 == W2 || F2 == W3 )",
     "fullname": "Vollständiger Name",
     "fullname": "Vollständiger Name",
     "header-logo-title": "Zurück zur Board Seite.",
     "header-logo-title": "Zurück zur Board Seite.",
     "hide-system-messages": "Systemmeldungen ausblenden",
     "hide-system-messages": "Systemmeldungen ausblenden",
@@ -355,7 +378,7 @@
     "starred-boards-description": "Markierte Boards erscheinen oben in ihrer Boardliste.",
     "starred-boards-description": "Markierte Boards erscheinen oben in ihrer Boardliste.",
     "subscribe": "Abonnieren",
     "subscribe": "Abonnieren",
     "team": "Team",
     "team": "Team",
-    "this-board": "dieses Board",
+    "this-board": "diesem Board",
     "this-card": "diese Karte",
     "this-card": "diese Karte",
     "spent-time-hours": "Aufgewendete Zeit (Stunden)",
     "spent-time-hours": "Aufgewendete Zeit (Stunden)",
     "overtime-hours": "Mehrarbeit (Stunden)",
     "overtime-hours": "Mehrarbeit (Stunden)",
@@ -366,6 +389,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": "Typ",
     "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 +454,7 @@
     "hours": "Stunden",
     "hours": "Stunden",
     "minutes": "Minuten",
     "minutes": "Minuten",
     "seconds": "Sekunden",
     "seconds": "Sekunden",
+    "show-field-on-card": "Zeige dieses Feld auf der Karte",
     "yes": "Ja",
     "yes": "Ja",
     "no": "Nein",
     "no": "Nein",
     "accounts": "Konten",
     "accounts": "Konten",
@@ -443,5 +468,11 @@
     "card-end": "Ende",
     "card-end": "Ende",
     "card-end-on": "Endet am",
     "card-end-on": "Endet am",
     "editCardReceivedDatePopup-title": "Empfangsdatum ändern",
     "editCardReceivedDatePopup-title": "Empfangsdatum ändern",
-    "editCardEndDatePopup-title": "Enddatum ändern"
+    "editCardEndDatePopup-title": "Enddatum ändern",
+    "assigned-by": "Zugewiesen von",
+    "requested-by": "Angefordert von",
+    "board-delete-notice": "Löschen kann nicht rückgängig gemacht werden. Sie werden alle Listen, Karten und Aktionen, die mit diesem Board verbunden sind, verlieren.",
+    "delete-board-confirm-popup": "Alle Listen, Karten, Labels und Akivitäten werden gelöscht und Sie können die Inhalte des Boards nicht wiederherstellen! Die Aktion kann nicht rückgängig gemacht werden.",
+    "boardDeletePopup-title": "Board löschen?",
+    "delete-board": "Board löschen"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Έως",
     "card-due": "Έως",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "Κανένα μέλος",
     "filter-no-member": "Κανένα μέλος",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Πλήρες Όνομα",
     "fullname": "Πλήρες Όνομα",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,7 @@
     "hours": "ώρες",
     "hours": "ώρες",
     "minutes": "λεπτά",
     "minutes": "λεπτά",
     "seconds": "δευτερόλεπτα",
     "seconds": "δευτερόλεπτα",
+    "show-field-on-card": "Show this field on card",
     "yes": "Ναι",
     "yes": "Ναι",
     "no": "Όχι",
     "no": "Όχι",
     "accounts": "Λογαριασμοί",
     "accounts": "Λογαριασμοί",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card to the Recycle Bin to remove it from the board and preserve its activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 11 - 2
i18n/en.i18n.json

@@ -108,7 +108,7 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "card-due-on": "Due on",
     "card-due-on": "Due on",
     "card-spent": "Spent Time",
     "card-spent": "Spent Time",
@@ -242,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -465,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "Nenia etikedo",
     "filter-no-label": "Nenia etikedo",
     "filter-no-member": "Nenia membro",
     "filter-no-member": "Nenia membro",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 32 - 1
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",
@@ -222,9 +242,12 @@
     "filter-clear": "Sacar filtro",
     "filter-clear": "Sacar filtro",
     "filter-no-label": "Sin etiqueta",
     "filter-no-label": "Sin etiqueta",
     "filter-no-member": "No es miembro",
     "filter-no-member": "No es miembro",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "El filtro está activado",
     "filter-on": "El filtro está activado",
     "filter-on-desc": "Estás filtrando cartas en este tablero. Clickeá acá para editar el filtro.",
     "filter-on-desc": "Estás filtrando cartas en este tablero. Clickeá acá para editar el filtro.",
     "filter-to-selection": "Filtrar en la selección",
     "filter-to-selection": "Filtrar en la selección",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Nombre Completo",
     "fullname": "Nombre Completo",
     "header-logo-title": "Retroceder a tu página de tableros.",
     "header-logo-title": "Retroceder a tu página de tableros.",
     "hide-system-messages": "Esconder mensajes del sistema",
     "hide-system-messages": "Esconder mensajes del sistema",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "Termino",
     "card-end": "Termino",
     "card-end-on": "Termina en",
     "card-end-on": "Termina en",
     "editCardReceivedDatePopup-title": "Cambiar fecha de recepción",
     "editCardReceivedDatePopup-title": "Cambiar fecha de recepción",
-    "editCardEndDatePopup-title": "Cambiar fecha de término"
+    "editCardEndDatePopup-title": "Cambiar fecha de término",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 34 - 3
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": "creado el campo personalizado __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": "creado el campo personalizado %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": "Editar los campos personalizados",
     "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": "Cambiar la fecha",
+    "cardCustomFieldsPopup-title": "Editar los campos personalizados",
     "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": "Crear un campo",
+    "createCustomFieldPopup-title": "Crear un campo",
     "current": "actual",
     "current": "actual",
+    "custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
+    "custom-field-checkbox": "Casilla de verificación",
+    "custom-field-date": "Fecha",
+    "custom-field-dropdown": "Lista desplegable",
+    "custom-field-dropdown-none": "(nada)",
+    "custom-field-dropdown-options": "Opciones de la lista",
+    "custom-field-dropdown-options-placeholder": "Pulsa Intro para añadir más opciones",
+    "custom-field-dropdown-unknown": "(desconocido)",
+    "custom-field-number": "Número",
+    "custom-field-text": "Texto",
+    "custom-fields": "Campos personalizados",
     "date": "Fecha",
     "date": "Fecha",
     "decline": "Declinar",
     "decline": "Declinar",
     "default-avatar": "Avatar por defecto",
     "default-avatar": "Avatar por defecto",
     "delete": "Eliminar",
     "delete": "Eliminar",
+    "deleteCustomFieldPopup-title": "¿Borrar el campo personalizado?",
     "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": "Editar el campo",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Limpiar el filtro",
     "filter-clear": "Limpiar el filtro",
     "filter-no-label": "Sin etiqueta",
     "filter-no-label": "Sin etiqueta",
     "filter-no-member": "Sin miembro",
     "filter-no-member": "Sin miembro",
-    "filter-on": "Filtro activado",
+    "filter-no-custom-fields": "Sin campos personalizados",
+    "filter-on": "Filtrado activado",
     "filter-on-desc": "Estás filtrando tarjetas en este tablero. Haz clic aquí para editar el filtro.",
     "filter-on-desc": "Estás filtrando tarjetas en este tablero. Haz clic aquí para editar el filtro.",
     "filter-to-selection": "Filtrar la selección",
     "filter-to-selection": "Filtrar la selección",
+    "advanced-filter-label": "Filtrado avanzado",
+    "advanced-filter-description": "El filtrado avanzado permite escribir una cadena que contiene los siguientes operadores: == != <= >= && || ( ) Se utiliza un espacio como separador entre los operadores. Se pueden filtrar todos los campos personalizados escribiendo sus nombres y valores. Por ejemplo: Campo1 == Valor1. Nota: Si los campos o valores contienen espacios, debe encapsularlos entre comillas simples. Por ejemplo: 'Campo 1' == 'Valor 1'. También puedes combinar múltiples condiciones. Por ejemplo: C1 == V1 || C1 = V2. Normalmente todos los operadores se interpretan de izquierda a derecha. Puede cambiar el orden colocando corchetes. Por ejemplo: C1 == V1 y ( C2 == V2 || C2 == V3 )",
     "fullname": "Nombre completo",
     "fullname": "Nombre completo",
     "header-logo-title": "Volver a tu página de tableros",
     "header-logo-title": "Volver a tu página de tableros",
     "hide-system-messages": "Ocultar las notificaciones de actividad",
     "hide-system-messages": "Ocultar las notificaciones de actividad",
@@ -256,7 +279,7 @@
     "keyboard-shortcuts": "Atajos de teclado",
     "keyboard-shortcuts": "Atajos de teclado",
     "label-create": "Crear una etiqueta",
     "label-create": "Crear una etiqueta",
     "label-default": "etiqueta %s (por defecto)",
     "label-default": "etiqueta %s (por defecto)",
-    "label-delete-pop": "Esto eliminará esta etiqueta de todas las tarjetas y destruirá su historial. Esta acción no puede deshacerse.",
+    "label-delete-pop": "Se eliminará esta etiqueta de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
     "labels": "Etiquetas",
     "labels": "Etiquetas",
     "language": "Cambiar el idioma",
     "language": "Cambiar el idioma",
     "last-admin-desc": "No puedes cambiar roles porque debe haber al menos un administrador.",
     "last-admin-desc": "No puedes cambiar roles porque debe haber al menos un administrador.",
@@ -366,6 +389,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": "Tipo",
     "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 +454,7 @@
     "hours": "horas",
     "hours": "horas",
     "minutes": "minutos",
     "minutes": "minutos",
     "seconds": "segundos",
     "seconds": "segundos",
+    "show-field-on-card": "Mostrar este campo en la tarjeta",
     "yes": "Sí",
     "yes": "Sí",
     "no": "No",
     "no": "No",
     "accounts": "Cuentas",
     "accounts": "Cuentas",
@@ -443,5 +468,11 @@
     "card-end": "Finalizado",
     "card-end": "Finalizado",
     "card-end-on": "Finalizado el",
     "card-end-on": "Finalizado el",
     "editCardReceivedDatePopup-title": "Cambiar la fecha de recepción",
     "editCardReceivedDatePopup-title": "Cambiar la fecha de recepción",
-    "editCardEndDatePopup-title": "Cambiar la fecha de finalización"
+    "editCardEndDatePopup-title": "Cambiar la fecha de finalización",
+    "assigned-by": "Asignado por",
+    "requested-by": "Solicitado por",
+    "board-delete-notice": "Se eliminarán todas las listas, tarjetas y acciones asociadas a este tablero. Esta acción no puede deshacerse.",
+    "delete-board-confirm-popup": "Se eliminarán todas las listas, tarjetas, etiquetas y actividades, y no podrás recuperar los contenidos del tablero. Esta acción no puede deshacerse.",
+    "boardDeletePopup-title": "¿Borrar el tablero?",
+    "delete-board": "Borrar el tablero"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "Txartel honek iruzkin %s  dauka.",
     "card-comments-title": "Txartel honek iruzkin %s  dauka.",
     "card-delete-notice": "Ezabaketa behin betiko da. Txartel honi lotutako ekintza guztiak galduko dituzu.",
     "card-delete-notice": "Ezabaketa behin betiko da. Txartel honi lotutako ekintza guztiak galduko dituzu.",
     "card-delete-pop": "Ekintza guztiak ekintza jariotik kenduko dira eta ezin izango duzu txartela berrireki. Ez dago desegiterik.",
     "card-delete-pop": "Ekintza guztiak ekintza jariotik kenduko dira eta ezin izango duzu txartela berrireki. Ez dago desegiterik.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Epemuga",
     "card-due": "Epemuga",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Garbitu iragazkia",
     "filter-clear": "Garbitu iragazkia",
     "filter-no-label": "Etiketarik ez",
     "filter-no-label": "Etiketarik ez",
     "filter-no-member": "Kiderik ez",
     "filter-no-member": "Kiderik ez",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Iragazkia gaituta dago",
     "filter-on": "Iragazkia gaituta dago",
     "filter-on-desc": "Arbel honetako txartela iragazten ari zara. Egin klik hemen iragazkia editatzeko.",
     "filter-on-desc": "Arbel honetako txartela iragazten ari zara. Egin klik hemen iragazkia editatzeko.",
     "filter-to-selection": "Iragazketa aukerara",
     "filter-to-selection": "Iragazketa aukerara",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Izen abizenak",
     "fullname": "Izen abizenak",
     "header-logo-title": "Itzuli zure arbelen orrira.",
     "header-logo-title": "Itzuli zure arbelen orrira.",
     "hide-system-messages": "Ezkutatu sistemako mezuak",
     "hide-system-messages": "Ezkutatu sistemako mezuak",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 52 - 21
i18n/fa.i18n.json

@@ -7,12 +7,13 @@
     "act-addComment": "درج نظر برای __card__: __comment__",
     "act-addComment": "درج نظر برای __card__: __comment__",
     "act-createBoard": "__board__ ایجاد شد",
     "act-createBoard": "__board__ ایجاد شد",
     "act-createCard": "__card__  به __list__ اضافه شد",
     "act-createCard": "__card__  به __list__ اضافه شد",
+    "act-createCustomField": "فیلد __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-archivedCard": "__card__ moved to Recycle Bin",
-    "act-archivedList": "__list__ moved to Recycle Bin",
-    "act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
+    "act-archivedBoard": "__board__ به سطل زباله ریخته شد",
+    "act-archivedCard": "__card__ به سطل زباله منتقل شد",
+    "act-archivedList": "__list__ به سطل زباله منتقل شد",
+    "act-archivedSwimlane": "__swimlane__ به سطل زباله منتقل شد",
     "act-importBoard": "__board__ وارد شده",
     "act-importBoard": "__board__ وارد شده",
     "act-importCard": "__card__ وارد شده",
     "act-importCard": "__card__ وارد شده",
     "act-importList": "__list__ وارد شده",
     "act-importList": "__list__ وارد شده",
@@ -27,9 +28,10 @@
     "activities": "فعالیت ها",
     "activities": "فعالیت ها",
     "activity": "فعالیت",
     "activity": "فعالیت",
     "activity-added": "%s به %s اضافه شد",
     "activity-added": "%s به %s اضافه شد",
-    "activity-archived": "%s moved to Recycle Bin",
+    "activity-archived": "%s به سطل زباله منتقل شد",
     "activity-attached": "%s به %s پیوست شد",
     "activity-attached": "%s به %s پیوست شد",
     "activity-created": "%s ایجاد شد",
     "activity-created": "%s ایجاد شد",
+    "activity-customfield-created": "%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 وارد شد",
@@ -64,19 +66,19 @@
     "and-n-other-card_plural": "و __count__ کارت دیگر",
     "and-n-other-card_plural": "و __count__ کارت دیگر",
     "apply": "اعمال",
     "apply": "اعمال",
     "app-is-offline": "Wekan در حال بارگذاری است. لطفا صبر کنید. نوسازی صفحه، منجر به از دست رفتن داده‌ها می‌شود. اگر Wekan بارگذاری نشد، لطفا بررسی کنید که سرور Wekan متوقف نشده باشد.",
     "app-is-offline": "Wekan در حال بارگذاری است. لطفا صبر کنید. نوسازی صفحه، منجر به از دست رفتن داده‌ها می‌شود. اگر Wekan بارگذاری نشد، لطفا بررسی کنید که سرور Wekan متوقف نشده باشد.",
-    "archive": "Move to Recycle Bin",
-    "archive-all": "Move All to Recycle Bin",
-    "archive-board": "Move Board to Recycle Bin",
-    "archive-card": "Move Card to Recycle Bin",
-    "archive-list": "Move List to Recycle Bin",
-    "archive-swimlane": "Move Swimlane to Recycle Bin",
-    "archive-selection": "Move selection to Recycle Bin",
-    "archiveBoardPopup-title": "Move Board to Recycle Bin?",
-    "archived-items": "Recycle Bin",
-    "archived-boards": "Boards in Recycle Bin",
+    "archive": "ریختن به سطل زباله",
+    "archive-all": "ریختن همه به سطل زباله",
+    "archive-board": "ریختن تخته به سطل زباله",
+    "archive-card": "ریختن کارت به سطل زباله",
+    "archive-list": "ریختن لیست به سطل زباله",
+    "archive-swimlane": "ریختن مسیرشنا به سطل زباله",
+    "archive-selection": "انتخاب شده ها را به سطل زباله بریز",
+    "archiveBoardPopup-title": "آیا تخته به سطل زباله ریخته شود؟",
+    "archived-items": "سطل زباله",
+    "archived-boards": "تخته هایی که به زباله ریخته شده است",
     "restore-board": "بازیابی تخته",
     "restore-board": "بازیابی تخته",
-    "no-archived-boards": "No Boards in Recycle Bin.",
-    "archives": "Recycle Bin",
+    "no-archived-boards": "هیچ تخته ای در سطل زباله وجود ندارد",
+    "archives": "سطل زباله",
     "assign-member": "تعیین عضو",
     "assign-member": "تعیین عضو",
     "attached": "ضمیمه شده",
     "attached": "ضمیمه شده",
     "attachment": "ضمیمه",
     "attachment": "ضمیمه",
@@ -102,15 +104,16 @@
     "board-view-lists": "فهرست‌ها",
     "board-view-lists": "فهرست‌ها",
     "bucket-example": "برای مثال چیزی شبیه \"لیست سبدها\"",
     "bucket-example": "برای مثال چیزی شبیه \"لیست سبدها\"",
     "cancel": "انصراف",
     "cancel": "انصراف",
-    "card-archived": "This card is moved to Recycle Bin.",
+    "card-archived": "این کارت به سطل زباله ریخته شده است",
     "card-comments-title": "این کارت دارای %s نظر است.",
     "card-comments-title": "این کارت دارای %s نظر است.",
     "card-delete-notice": "حذف دائمی. تمامی موارد مرتبط با این کارت از بین خواهند رفت.",
     "card-delete-notice": "حذف دائمی. تمامی موارد مرتبط با این کارت از بین خواهند رفت.",
     "card-delete-pop": "همه اقدامات از این پردازه (خوراک) حذف خواهد شد و امکان بازگرداندن کارت وجود نخواهد داشت.",
     "card-delete-pop": "همه اقدامات از این پردازه (خوراک) حذف خواهد شد و امکان بازگرداندن کارت وجود نخواهد داشت.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "ناشی از",
     "card-due": "ناشی از",
     "card-due-on": "مقتضی بر",
     "card-due-on": "مقتضی بر",
     "card-spent": "زمان صرف شده",
     "card-spent": "زمان صرف شده",
     "card-edit-attachments": "ویرایش ضمائم",
     "card-edit-attachments": "ویرایش ضمائم",
+    "card-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": "تغییر تاریخ",
+    "cardCustomFieldsPopup-title": "ویرایش فیلدهای شخصی",
     "cardDeletePopup-title": "آیا می خواهید کارت را حذف کنید؟",
     "cardDeletePopup-title": "آیا می خواهید کارت را حذف کنید؟",
     "cardDetailsActionsPopup-title": "اعمال کارت",
     "cardDetailsActionsPopup-title": "اعمال کارت",
     "cardLabelsPopup-title": "برچسب ها",
     "cardLabelsPopup-title": "برچسب ها",
@@ -141,7 +146,7 @@
     "clipboard": "ذخیره در حافظه ویا بردار-رهاکن",
     "clipboard": "ذخیره در حافظه ویا بردار-رهاکن",
     "close": "بستن",
     "close": "بستن",
     "close-board": "بستن برد",
     "close-board": "بستن برد",
-    "close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
+    "close-board-pop": "شما با کلیک روی دکمه \"سطل زباله\" در قسمت خانه می توانید تخته را بازیابی کنید.",
     "color-black": "مشکی",
     "color-black": "مشکی",
     "color-blue": "آبی",
     "color-blue": "آبی",
     "color-green": "سبز",
     "color-green": "سبز",
@@ -167,11 +172,25 @@
     "createBoardPopup-title": "ایجاد تخته",
     "createBoardPopup-title": "ایجاد تخته",
     "chooseBoardSourcePopup-title": "بارگذاری تخته",
     "chooseBoardSourcePopup-title": "بارگذاری تخته",
     "createLabelPopup-title": "ایجاد برچسب",
     "createLabelPopup-title": "ایجاد برچسب",
+    "createCustomField": "ایجاد فیلد",
+    "createCustomFieldPopup-title": "ایجاد فیلد",
     "current": "جاری",
     "current": "جاری",
+    "custom-field-delete-pop": "این اقدام فیلدشخصی را بهمراه تمامی تاریخچه آن از کارت ها پاک می کند و برگشت پذیر نمی باشد",
+    "custom-field-checkbox": "جعبه انتخابی",
+    "custom-field-date": "تاریخ",
+    "custom-field-dropdown": "لیست افتادنی",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "لیست امکانات",
+    "custom-field-dropdown-options-placeholder": "کلید Enter را جهت افزودن امکانات بیشتر فشار دهید",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "عدد",
+    "custom-field-text": "متن",
+    "custom-fields": "فیلدهای شخصی",
     "date": "تاریخ",
     "date": "تاریخ",
     "decline": "رد",
     "decline": "رد",
     "default-avatar": "تصویر پیش فرض",
     "default-avatar": "تصویر پیش فرض",
     "delete": "حذف",
     "delete": "حذف",
+    "deleteCustomFieldPopup-title": "آیا فیلدشخصی پاک شود؟",
     "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": "ویرایش فیلد",
     "editCardSpentTimePopup-title": "تغییر زمان صرف شده",
     "editCardSpentTimePopup-title": "تغییر زمان صرف شده",
     "editLabelPopup-title": "تغیر برچسب",
     "editLabelPopup-title": "تغیر برچسب",
     "editNotificationPopup-title": "اصلاح اعلان",
     "editNotificationPopup-title": "اصلاح اعلان",
@@ -222,9 +242,12 @@
     "filter-clear": "حذف صافی ـFilterـ",
     "filter-clear": "حذف صافی ـFilterـ",
     "filter-no-label": "بدون برچسب",
     "filter-no-label": "بدون برچسب",
     "filter-no-member": "بدون عضو",
     "filter-no-member": "بدون عضو",
+    "filter-no-custom-fields": "هیچ فیلدشخصی ای وجود ندارد",
     "filter-on": "صافی ـFilterـ فعال است",
     "filter-on": "صافی ـFilterـ فعال است",
     "filter-on-desc": "شما صافی ـFilterـ برای کارتهای تخته را روشن کرده اید. جهت ویرایش کلیک نمایید.",
     "filter-on-desc": "شما صافی ـFilterـ برای کارتهای تخته را روشن کرده اید. جهت ویرایش کلیک نمایید.",
     "filter-to-selection": "صافی ـFilterـ برای موارد انتخابی",
     "filter-to-selection": "صافی ـFilterـ برای موارد انتخابی",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "نام و نام خانوادگی",
     "fullname": "نام و نام خانوادگی",
     "header-logo-title": "بازگشت به صفحه تخته.",
     "header-logo-title": "بازگشت به صفحه تخته.",
     "hide-system-messages": "عدم نمایش پیامهای سیستمی",
     "hide-system-messages": "عدم نمایش پیامهای سیستمی",
@@ -366,6 +389,7 @@
     "title": "عنوان",
     "title": "عنوان",
     "tracking": "پیگردی",
     "tracking": "پیگردی",
     "tracking-info": "شما از هرگونه تغییر در کارتهایی که بعنوان ایجاد کننده ویا عضو آن هستید، آگاه خواهید شد",
     "tracking-info": "شما از هرگونه تغییر در کارتهایی که بعنوان ایجاد کننده ویا عضو آن هستید، آگاه خواهید شد",
+    "type": "Type",
     "unassign-member": "عدم انتصاب کاربر",
     "unassign-member": "عدم انتصاب کاربر",
     "unsaved-description": "شما توضیحات ذخیره نشده دارید.",
     "unsaved-description": "شما توضیحات ذخیره نشده دارید.",
     "unwatch": "عدم دیده بانی",
     "unwatch": "عدم دیده بانی",
@@ -430,6 +454,7 @@
     "hours": "ساعت",
     "hours": "ساعت",
     "minutes": "دقیقه",
     "minutes": "دقیقه",
     "seconds": "ثانیه",
     "seconds": "ثانیه",
+    "show-field-on-card": "Show this field on card",
     "yes": "بله",
     "yes": "بله",
     "no": "خیر",
     "no": "خیر",
     "accounts": "حساب‌ها",
     "accounts": "حساب‌ها",
@@ -443,5 +468,11 @@
     "card-end": "پایان",
     "card-end": "پایان",
     "card-end-on": "پایان در",
     "card-end-on": "پایان در",
     "editCardReceivedDatePopup-title": "تغییر تاریخ رسید",
     "editCardReceivedDatePopup-title": "تغییر تاریخ رسید",
-    "editCardEndDatePopup-title": "تغییر تاریخ پایان"
+    "editCardEndDatePopup-title": "تغییر تاریخ پایان",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 32 - 1
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": "luotu 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 mukautettuja kenttiä",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Poista suodatin",
     "filter-clear": "Poista suodatin",
     "filter-no-label": "Ei tunnistetta",
     "filter-no-label": "Ei tunnistetta",
     "filter-no-member": "Ei jäseniä",
     "filter-no-member": "Ei jäseniä",
+    "filter-no-custom-fields": "Ei mukautettuja kenttiä",
     "filter-on": "Suodatus on päällä",
     "filter-on": "Suodatus on päällä",
     "filter-on-desc": "Suodatat kortteja tällä taululla. Klikkaa tästä muokataksesi suodatinta.",
     "filter-on-desc": "Suodatat kortteja tällä taululla. Klikkaa tästä muokataksesi suodatinta.",
     "filter-to-selection": "Suodata valintaan",
     "filter-to-selection": "Suodata valintaan",
+    "advanced-filter-label": "Edistynyt suodatin",
+    "advanced-filter-description": "Edistynyt suodatin mahdollistaa merkkijonon, joka sisältää seuraavat operaattorit: ==! = <=> = && || () Operaattorien välissä käytetään välilyöntiä. Voit suodattaa kaikki mukautetut kentät kirjoittamalla niiden nimet ja arvot. Esimerkiksi: Field1 == Value1. Huomaa: Jos kentillä tai arvoilla on välilyöntejä, sinun on sijoitettava ne yksittäisiin lainausmerkkeihin. Esimerkki: 'Kenttä 1' == 'Arvo 1'. Voit myös yhdistää useita ehtoja. Esimerkiksi: F1 == V1 || F1 = V2. Yleensä kaikki operaattorit tulkitaan vasemmalta oikealle. Voit muuttaa järjestystä asettamalla sulkuja. Esimerkiksi: F1 == V1 ja (F2 == V2 || F2 == V3)",
     "fullname": "Koko nimi",
     "fullname": "Koko nimi",
     "header-logo-title": "Palaa taulut sivullesi.",
     "header-logo-title": "Palaa taulut sivullesi.",
     "hide-system-messages": "Piilota järjestelmäviestit",
     "hide-system-messages": "Piilota järjestelmäviestit",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "Loppuu",
     "card-end": "Loppuu",
     "card-end-on": "Loppuu",
     "card-end-on": "Loppuu",
     "editCardReceivedDatePopup-title": "Vaihda vastaanottamispäivää",
     "editCardReceivedDatePopup-title": "Vaihda vastaanottamispäivää",
-    "editCardEndDatePopup-title": "Vaihda loppumispäivää"
+    "editCardEndDatePopup-title": "Vaihda loppumispäivää",
+    "assigned-by": "Tehtävänantaja",
+    "requested-by": "Pyytäjä",
+    "board-delete-notice": "Poistaminen on lopullista. Menetät kaikki listat, kortit ja toimet tällä taululla.",
+    "delete-board-confirm-popup": "Kaikki listat, kortit, tunnisteet ja toimet poistetaan ja et pysty palauttamaan taulun sisältöä. Tätä ei voi peruuttaa.",
+    "boardDeletePopup-title": "Poista taulu?",
+    "delete-board": "Poista taulu"
 }
 }

+ 32 - 1
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": "a créé le champ personnalisé __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": "a créé le champ personnalisé %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": "Éditer les champs personnalisés",
     "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": "Changer la date",
+    "cardCustomFieldsPopup-title": "Éditer les champs personnalisés",
     "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": "Créer un champ personnalisé",
+    "createCustomFieldPopup-title": "Créer un champ personnalisé",
     "current": "actuel",
     "current": "actuel",
+    "custom-field-delete-pop": "Cette action n'est pas réversible. Elle supprimera ce champ personnalisé de toutes les cartes et détruira son historique.",
+    "custom-field-checkbox": "Case à cocher",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Liste de choix",
+    "custom-field-dropdown-none": "(aucun)",
+    "custom-field-dropdown-options": "Options de liste",
+    "custom-field-dropdown-options-placeholder": "Appuyez sur Entrée pour ajouter d'autres options",
+    "custom-field-dropdown-unknown": "(inconnu)",
+    "custom-field-number": "Nombre",
+    "custom-field-text": "Texte",
+    "custom-fields": "Champs personnalisés",
     "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": "Supprimer le champ personnalisé ?",
     "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": "Éditer le champ personnalisé",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Supprimer les filtres",
     "filter-clear": "Supprimer les filtres",
     "filter-no-label": "Aucune étiquette",
     "filter-no-label": "Aucune étiquette",
     "filter-no-member": "Aucun membre",
     "filter-no-member": "Aucun membre",
+    "filter-no-custom-fields": "Pas de champs personnalisés",
     "filter-on": "Le filtre est actif",
     "filter-on": "Le filtre est actif",
     "filter-on-desc": "Vous êtes en train de filtrer les cartes sur ce tableau. Cliquez ici pour modifier les filtres.",
     "filter-on-desc": "Vous êtes en train de filtrer les cartes sur ce tableau. Cliquez ici pour modifier les filtres.",
     "filter-to-selection": "Filtre vers la sélection",
     "filter-to-selection": "Filtre vers la sélection",
+    "advanced-filter-label": "Filtre avancé",
+    "advanced-filter-description": "Le filtre avancé permet d'écrire une chaîne contenant les opérateur suivants : == != <= >= && || ( ). Les opérateurs doivent être séparés par des espaces. Vous pouvez filtrer tous les champs personnalisés en saisissant leur nom et leur valeur. Par exemple : champ1 == valeur1. Note : si des champs ou valeurs contiennent des espaces, vous devez les mettre entre apostrophes. Par exemple : 'champ 1' = 'valeur 1'. Il est également possible de combiner plusieurs conditions. Par exemple : f1 == v1 || f2 == v2. Normalement, tous les opérateurs sont interprétés de gauche à droite. Vous pouvez changer l'ordre à l'aide de parenthèses. Par exemple : f1 == v1 and (f2 == v2 || f2 == v3).",
     "fullname": "Nom complet",
     "fullname": "Nom complet",
     "header-logo-title": "Retourner à la page des tableaux",
     "header-logo-title": "Retourner à la page des tableaux",
     "hide-system-messages": "Masquer les messages système",
     "hide-system-messages": "Masquer les messages système",
@@ -366,6 +389,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 +454,7 @@
     "hours": "heures",
     "hours": "heures",
     "minutes": "minutes",
     "minutes": "minutes",
     "seconds": "secondes",
     "seconds": "secondes",
+    "show-field-on-card": "Afficher ce champ sur la carte",
     "yes": "Oui",
     "yes": "Oui",
     "no": "Non",
     "no": "Non",
     "accounts": "Comptes",
     "accounts": "Comptes",
@@ -443,5 +468,11 @@
     "card-end": "Fin",
     "card-end": "Fin",
     "card-end-on": "Se termine le",
     "card-end-on": "Se termine le",
     "editCardReceivedDatePopup-title": "Changer la date de réception",
     "editCardReceivedDatePopup-title": "Changer la date de réception",
-    "editCardEndDatePopup-title": "Changer la date de fin"
+    "editCardEndDatePopup-title": "Changer la date de fin",
+    "assigned-by": "Assigné par",
+    "requested-by": "Demandé par",
+    "board-delete-notice": "La suppression est définitive. Vous perdrez toutes vos listes, cartes et actions associées à ce tableau.",
+    "delete-board-confirm-popup": "Toutes les listes, cartes, étiquettes et activités seront supprimées et vous ne pourrez pas retrouver le contenu du tableau. Il n'y a pas d'annulation possible.",
+    "boardDeletePopup-title": "Supprimer le tableau ?",
+    "delete-board": "Supprimer le tableau"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Limpar filtro",
     "filter-clear": "Limpar filtro",
     "filter-no-label": "Non hai etiquetas",
     "filter-no-label": "Non hai etiquetas",
     "filter-no-member": "Non hai membros",
     "filter-no-member": "Non hai membros",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "O filtro está activado",
     "filter-on": "O filtro está activado",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Nome completo",
     "fullname": "Nome completo",
     "header-logo-title": "Retornar á páxina dos seus taboleiros.",
     "header-logo-title": "Retornar á páxina dos seus taboleiros.",
     "hide-system-messages": "Agochar as mensaxes do sistema",
     "hide-system-messages": "Agochar as mensaxes do sistema",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 32 - 1
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": "נוצר שדה בהתאמה אישית __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": "נוצר שדה בהתאמה אישית %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": "עריכת שדות בהתאמה אישית",
     "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": "החלפת תאריך",
+    "cardCustomFieldsPopup-title": "עריכת שדות בהתאמה אישית",
     "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": "יצירת שדה",
+    "createCustomFieldPopup-title": "יצירת שדה",
     "current": "נוכחי",
     "current": "נוכחי",
+    "custom-field-delete-pop": "אין אפשרות לבטל את הפעולה. הפעולה תסיר את השדה שהותאם אישית מכל הכרטיסים ותשמיד את ההיסטוריה שלו.",
+    "custom-field-checkbox": "תיבת סימון",
+    "custom-field-date": "תאריך",
+    "custom-field-dropdown": "רשימה נגללת",
+    "custom-field-dropdown-none": "(ללא)",
+    "custom-field-dropdown-options": "אפשרויות רשימה",
+    "custom-field-dropdown-options-placeholder": "יש ללחוץ על enter כדי להוסיף עוד אפשרויות",
+    "custom-field-dropdown-unknown": "(לא ידוע)",
+    "custom-field-number": "מספר",
+    "custom-field-text": "טקסט",
+    "custom-fields": "שדות מותאמים אישית",
     "date": "תאריך",
     "date": "תאריך",
     "decline": "סירוב",
     "decline": "סירוב",
     "default-avatar": "תמונת משתמש כבררת מחדל",
     "default-avatar": "תמונת משתמש כבררת מחדל",
     "delete": "מחיקה",
     "delete": "מחיקה",
+    "deleteCustomFieldPopup-title": "למחוק שדה מותאם אישית?",
     "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": "עריכת שדה",
     "editCardSpentTimePopup-title": "שינוי הזמן שהושקע",
     "editCardSpentTimePopup-title": "שינוי הזמן שהושקע",
     "editLabelPopup-title": "שינוי תווית",
     "editLabelPopup-title": "שינוי תווית",
     "editNotificationPopup-title": "שינוי דיווח",
     "editNotificationPopup-title": "שינוי דיווח",
@@ -222,9 +242,12 @@
     "filter-clear": "ניקוי המסנן",
     "filter-clear": "ניקוי המסנן",
     "filter-no-label": "אין תווית",
     "filter-no-label": "אין תווית",
     "filter-no-member": "אין חבר כזה",
     "filter-no-member": "אין חבר כזה",
+    "filter-no-custom-fields": "אין שדות מותאמים אישית",
     "filter-on": "המסנן פועל",
     "filter-on": "המסנן פועל",
     "filter-on-desc": "מסנן כרטיסים פעיל בלוח זה. יש ללחוץ כאן לעריכת המסנן.",
     "filter-on-desc": "מסנן כרטיסים פעיל בלוח זה. יש ללחוץ כאן לעריכת המסנן.",
     "filter-to-selection": "סינון לבחירה",
     "filter-to-selection": "סינון לבחירה",
+    "advanced-filter-label": "מסנן מתקדם",
+    "advanced-filter-description": "המסנן המתקדם מאפשר לך לכתוב מחרוזת שמכילה את הפעולות הבאות: == != <= >= && || ( ) רווח מכהן כמפריד בין הפעולות. ניתן לסנן את כל השדות המותאמים אישית על ידי הקלדת שמם והערך שלהם. למשל: שדה1 == ערך1. לתשומת לבך: אם שדות או ערכים מכילים רווח, יש לעטוף אותם במירכא מכל צד. למשל: 'שדה 1' == 'ערך 1'. ניתן גם לשלב מגוון תנאים. למשל: F1 == V1 || F1 = V2. על פי רוב כל הפעולות מפוענחות משמאל לימין. ניתן לשנות את הסדר על ידי הצבת סוגריים. למשל: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "שם מלא",
     "fullname": "שם מלא",
     "header-logo-title": "חזרה לדף הלוחות שלך.",
     "header-logo-title": "חזרה לדף הלוחות שלך.",
     "hide-system-messages": "הסתרת הודעות מערכת",
     "hide-system-messages": "הסתרת הודעות מערכת",
@@ -366,6 +389,7 @@
     "title": "כותרת",
     "title": "כותרת",
     "tracking": "מעקב",
     "tracking": "מעקב",
     "tracking-info": "על כל שינוי בכרטיסים בהם הייתה לך מעורבות ברמת היצירה או כחברות תגיע אליך הודעה.",
     "tracking-info": "על כל שינוי בכרטיסים בהם הייתה לך מעורבות ברמת היצירה או כחברות תגיע אליך הודעה.",
+    "type": "סוג",
     "unassign-member": "ביטול הקצאת חבר",
     "unassign-member": "ביטול הקצאת חבר",
     "unsaved-description": "יש לך תיאור לא שמור.",
     "unsaved-description": "יש לך תיאור לא שמור.",
     "unwatch": "ביטול מעקב",
     "unwatch": "ביטול מעקב",
@@ -430,6 +454,7 @@
     "hours": "שעות",
     "hours": "שעות",
     "minutes": "דקות",
     "minutes": "דקות",
     "seconds": "שניות",
     "seconds": "שניות",
+    "show-field-on-card": "הצגת שדה זה בכרטיס",
     "yes": "כן",
     "yes": "כן",
     "no": "לא",
     "no": "לא",
     "accounts": "חשבונות",
     "accounts": "חשבונות",
@@ -443,5 +468,11 @@
     "card-end": "סיום",
     "card-end": "סיום",
     "card-end-on": "מועד הסיום",
     "card-end-on": "מועד הסיום",
     "editCardReceivedDatePopup-title": "החלפת מועד הקבלה",
     "editCardReceivedDatePopup-title": "החלפת מועד הקבלה",
-    "editCardEndDatePopup-title": "החלפת מועד הסיום"
+    "editCardEndDatePopup-title": "החלפת מועד הסיום",
+    "assigned-by": "הוקצה על ידי",
+    "requested-by": "התבקש על ידי",
+    "board-delete-notice": "מחיקה היא לצמיתות. כל הרשימות, הכרטיבים והפעולות שקשורים בלוח הזה ילכו לאיבוד.",
+    "delete-board-confirm-popup": "כל הרשימות, הכרטיסים, התווית והפעולות יימחקו ולא תהיה לך דרך לשחזר את תכני הלוח. אין אפשרות לבטל.",
+    "boardDeletePopup-title": "למחוק את הלוח?",
+    "delete-board": "מחיקת לוח"
 }
 }

+ 49 - 18
i18n/hu.i18n.json

@@ -7,11 +7,12 @@
     "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": "létrehozta a(z) __customField__ egyéni listát",
     "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-archivedCard": "A __card__ kártya a lomtárba került.",
-    "act-archivedList": "A __list__ lista a lomtárba került.",
+    "act-archivedBoard": "A(z) __board__ tábla áthelyezve a lomtárba",
+    "act-archivedCard": "A(z) __card__ kártya áthelyezve a lomtárba",
+    "act-archivedList": "A(z) __list__ lista áthelyezve a lomtárba",
     "act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
     "act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
     "act-importBoard": "importálta a táblát: __board__",
     "act-importBoard": "importálta a táblát: __board__",
     "act-importCard": "importálta a kártyát: __card__",
     "act-importCard": "importálta a kártyát: __card__",
@@ -27,9 +28,10 @@
     "activities": "Tevékenységek",
     "activities": "Tevékenységek",
     "activity": "Tevékenység",
     "activity": "Tevékenység",
     "activity-added": "%s hozzáadva ehhez: %s",
     "activity-added": "%s hozzáadva ehhez: %s",
-    "activity-archived": "%s lomtárba helyezve",
+    "activity-archived": "%s áthelyezve a lomtárba",
     "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": "létrehozta a(z) %s egyéni mezőt",
     "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",
@@ -97,7 +99,7 @@
     "boardChangeWatchPopup-title": "Megfigyelés megváltoztatása",
     "boardChangeWatchPopup-title": "Megfigyelés megváltoztatása",
     "boardMenuPopup-title": "Tábla menü",
     "boardMenuPopup-title": "Tábla menü",
     "boards": "Táblák",
     "boards": "Táblák",
-    "board-view": "Board View",
+    "board-view": "Tábla nézet",
     "board-view-swimlanes": "Swimlanes",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Listák",
     "board-view-lists": "Listák",
     "bucket-example": "Mint például „Bakancslista”",
     "bucket-example": "Mint például „Bakancslista”",
@@ -106,11 +108,12 @@
     "card-comments-title": "Ez a kártya %s hozzászólást tartalmaz.",
     "card-comments-title": "Ez a kártya %s hozzászólást tartalmaz.",
     "card-delete-notice": "A törlés végleges. Az összes műveletet elveszíti, amely ehhez a kártyához tartozik.",
     "card-delete-notice": "A törlés végleges. Az összes műveletet elveszíti, amely ehhez a kártyához tartozik.",
     "card-delete-pop": "Az összes művelet el lesz távolítva a tevékenységlistából, és nem lesz képes többé újra megnyitni a kártyát. Nincs visszaállítási lehetőség.",
     "card-delete-pop": "Az összes művelet el lesz távolítva a tevékenységlistából, és nem lesz képes többé újra megnyitni a kártyát. Nincs visszaállítási lehetőség.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Esedékes",
     "card-due": "Esedékes",
     "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": "Egyéni mezők szerkesztése",
     "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": "Dátum megváltoztatása",
+    "cardCustomFieldsPopup-title": "Egyéni mezők szerkesztése",
     "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",
@@ -160,18 +165,32 @@
     "confirm-checklist-delete-dialog": "Biztosan törölni szeretné az ellenőrzőlistát?",
     "confirm-checklist-delete-dialog": "Biztosan törölni szeretné az ellenőrzőlistát?",
     "copy-card-link-to-clipboard": "Kártya hivatkozásának másolása a vágólapra",
     "copy-card-link-to-clipboard": "Kártya hivatkozásának másolása a vágólapra",
     "copyCardPopup-title": "Kártya másolása",
     "copyCardPopup-title": "Kártya másolása",
-    "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
-    "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
-    "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
+    "copyChecklistToManyCardsPopup-title": "Ellenőrzőlista sablon másolása több kártyára",
+    "copyChecklistToManyCardsPopup-instructions": "A célkártyák címe és a leírások ebben a JSON formátumban",
+    "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Első kártya címe\", \"description\":\"Első kártya leírása\"}, {\"title\":\"Második kártya címe\",\"description\":\"Második kártya leírása\"},{\"title\":\"Utolsó kártya címe\",\"description\":\"Utolsó kártya leírása\"} ]",
     "create": "Létrehozás",
     "create": "Létrehozás",
     "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": "Mező létrehozása",
+    "createCustomFieldPopup-title": "Mező létrehozása",
     "current": "jelenlegi",
     "current": "jelenlegi",
+    "custom-field-delete-pop": "Nincs visszavonás. Ez el fogja távolítani az egyéni mezőt az összes kártyáról, és megsemmisíti az előzményeit.",
+    "custom-field-checkbox": "Jelölőnégyzet",
+    "custom-field-date": "Dátum",
+    "custom-field-dropdown": "Legördülő lista",
+    "custom-field-dropdown-none": "(nincs)",
+    "custom-field-dropdown-options": "Lista lehetőségei",
+    "custom-field-dropdown-options-placeholder": "Nyomja meg az Enter billentyűt több lehetőség hozzáadásához",
+    "custom-field-dropdown-unknown": "(ismeretlen)",
+    "custom-field-number": "Szám",
+    "custom-field-text": "Szöveg",
+    "custom-fields": "Egyéni mezők",
     "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": "Törli az egyéni mezőt?",
     "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": "Mező szerkesztése",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Szűrő törlése",
     "filter-clear": "Szűrő törlése",
     "filter-no-label": "Nincs címke",
     "filter-no-label": "Nincs címke",
     "filter-no-member": "Nincs tag",
     "filter-no-member": "Nincs tag",
+    "filter-no-custom-fields": "Nincsenek egyéni mezők",
     "filter-on": "Szűrő bekapcsolva",
     "filter-on": "Szűrő bekapcsolva",
     "filter-on-desc": "A kártyaszűrés be van kapcsolva ezen a táblán. Kattintson ide a szűrő szerkesztéséhez.",
     "filter-on-desc": "A kártyaszűrés be van kapcsolva ezen a táblán. Kattintson ide a szűrő szerkesztéséhez.",
     "filter-to-selection": "Szűrés a kijelöléshez",
     "filter-to-selection": "Szűrés a kijelöléshez",
+    "advanced-filter-label": "Speciális szűrő",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Teljes név",
     "fullname": "Teljes név",
     "header-logo-title": "Vissza a táblák oldalára.",
     "header-logo-title": "Vissza a táblák oldalára.",
     "hide-system-messages": "Rendszerüzenetek elrejtése",
     "hide-system-messages": "Rendszerüzenetek elrejtése",
@@ -366,6 +389,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": "Típus",
     "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",
@@ -374,12 +398,12 @@
     "uploaded-avatar": "Egy avatár feltöltve",
     "uploaded-avatar": "Egy avatár feltöltve",
     "username": "Felhasználónév",
     "username": "Felhasználónév",
     "view-it": "Megtekintés",
     "view-it": "Megtekintés",
-    "warn-list-archived": "warning: this card is in an list at Recycle Bin",
+    "warn-list-archived": "figyelem: ez a kártya egy lomtárban lévő listán van",
     "watch": "Megfigyelés",
     "watch": "Megfigyelés",
     "watching": "Megfigyelés",
     "watching": "Megfigyelés",
     "watching-info": "Értesítve lesz a táblán lévő összes változásról",
     "watching-info": "Értesítve lesz a táblán lévő összes változásról",
     "welcome-board": "Üdvözlő tábla",
     "welcome-board": "Üdvözlő tábla",
-    "welcome-swimlane": "Milestone 1",
+    "welcome-swimlane": "1. mérföldkő",
     "welcome-list1": "Alapok",
     "welcome-list1": "Alapok",
     "welcome-list2": "Speciális",
     "welcome-list2": "Speciális",
     "what-to-do": "Mit szeretne tenni?",
     "what-to-do": "Mit szeretne tenni?",
@@ -430,18 +454,25 @@
     "hours": "óra",
     "hours": "óra",
     "minutes": "perc",
     "minutes": "perc",
     "seconds": "másodperc",
     "seconds": "másodperc",
+    "show-field-on-card": "A mező megjelenítése a kártyán",
     "yes": "Igen",
     "yes": "Igen",
     "no": "Nem",
     "no": "Nem",
     "accounts": "Fiókok",
     "accounts": "Fiókok",
     "accounts-allowEmailChange": "E-mail megváltoztatásának engedélyezése",
     "accounts-allowEmailChange": "E-mail megváltoztatásának engedélyezése",
-    "accounts-allowUserNameChange": "Allow Username Change",
+    "accounts-allowUserNameChange": "Felhasználónév megváltoztatásának engedélyezése",
     "createdAt": "Létrehozva",
     "createdAt": "Létrehozva",
     "verified": "Ellenőrizve",
     "verified": "Ellenőrizve",
     "active": "Aktív",
     "active": "Aktív",
-    "card-received": "Received",
-    "card-received-on": "Received on",
-    "card-end": "End",
-    "card-end-on": "Ends on",
-    "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "card-received": "Érkezett",
+    "card-received-on": "Ekkor érkezett",
+    "card-end": "Befejezés",
+    "card-end-on": "Befejeződik ekkor",
+    "editCardReceivedDatePopup-title": "Érkezési dátum megváltoztatása",
+    "editCardEndDatePopup-title": "Befejezési dátum megváltoztatása",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "Kartu ini punya %s komentar",
     "card-comments-title": "Kartu ini punya %s komentar",
     "card-delete-notice": "Menghapus sama dengan permanen. Anda akan kehilangan semua aksi yang terhubung ke kartu ini",
     "card-delete-notice": "Menghapus sama dengan permanen. Anda akan kehilangan semua aksi yang terhubung ke kartu ini",
     "card-delete-pop": "Semua aksi akan dihapus dari aktivitas dan anda tidak bisa lagi buka kartu ini",
     "card-delete-pop": "Semua aksi akan dihapus dari aktivitas dan anda tidak bisa lagi buka kartu ini",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Jatuh Tempo",
     "card-due": "Jatuh Tempo",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Bersihkan penyaringan",
     "filter-clear": "Bersihkan penyaringan",
     "filter-no-label": "Tidak ada label",
     "filter-no-label": "Tidak ada label",
     "filter-no-member": "Tidak ada anggota",
     "filter-no-member": "Tidak ada anggota",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Penyaring aktif",
     "filter-on": "Penyaring aktif",
     "filter-on-desc": "Anda memfilter kartu di panel ini. Klik di sini untuk menyunting filter",
     "filter-on-desc": "Anda memfilter kartu di panel ini. Klik di sini untuk menyunting filter",
     "filter-to-selection": "Saring berdasarkan yang dipilih",
     "filter-to-selection": "Saring berdasarkan yang dipilih",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Nama Lengkap",
     "fullname": "Nama Lengkap",
     "header-logo-title": "Kembali ke laman panel anda",
     "header-logo-title": "Kembali ke laman panel anda",
     "hide-system-messages": "Sembunyikan pesan-pesan sistem",
     "hide-system-messages": "Sembunyikan pesan-pesan sistem",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 36 - 5
i18n/it.i18n.json

@@ -3,10 +3,11 @@
     "act-activity-notify": "[Wekan] Notifiche attività",
     "act-activity-notify": "[Wekan] Notifiche attività",
     "act-addAttachment": "ha allegato __attachment__ a __card__",
     "act-addAttachment": "ha allegato __attachment__ a __card__",
     "act-addChecklist": "aggiunta checklist __checklist__ a __card__",
     "act-addChecklist": "aggiunta checklist __checklist__ a __card__",
-    "act-addChecklistItem": "aggiunto __checklistItem__ alla checklist __checklist__ su __card__",
+    "act-addChecklistItem": "aggiunto __checklistItem__ alla checklist __checklist__ di __card__",
     "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": "campo personalizzato __customField__ creato",
     "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",
@@ -18,7 +19,7 @@
     "act-importList": "ha importato __list__",
     "act-importList": "ha importato __list__",
     "act-joinMember": "ha aggiunto __member__ a __card__",
     "act-joinMember": "ha aggiunto __member__ a __card__",
     "act-moveCard": "ha spostato __card__ da __oldList__ a __list__",
     "act-moveCard": "ha spostato __card__ da __oldList__ a __list__",
-    "act-removeBoardMember": "ha rimosso __member__ da __board__",
+    "act-removeBoardMember": "ha rimosso __member__ a __board__",
     "act-restoredCard": "ha ripristinato __card__ su __board__",
     "act-restoredCard": "ha ripristinato __card__ su __board__",
     "act-unjoinMember": "ha rimosso __member__ da __card__",
     "act-unjoinMember": "ha rimosso __member__ da __card__",
     "act-withBoardTitle": "[Wekan] __board__",
     "act-withBoardTitle": "[Wekan] __board__",
@@ -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": "Campo personalizzato creato",
     "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": "Modifica campo personalizzato",
     "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": "Cambia data",
+    "cardCustomFieldsPopup-title": "Modifica campo personalizzato",
     "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": "Crea campo",
+    "createCustomFieldPopup-title": "Crea campo",
     "current": "corrente",
     "current": "corrente",
+    "custom-field-delete-pop": "Non potrai tornare indietro. Questa azione rimuoverà questo campo personalizzato da tutte le schede ed eliminerà ogni sua traccia.",
+    "custom-field-checkbox": "Casella di scelta",
+    "custom-field-date": "Data",
+    "custom-field-dropdown": "Lista a discesa",
+    "custom-field-dropdown-none": "(nessun)",
+    "custom-field-dropdown-options": "Lista opzioni",
+    "custom-field-dropdown-options-placeholder": "Premi invio per aggiungere altre opzioni",
+    "custom-field-dropdown-unknown": "(sconosciuto)",
+    "custom-field-number": "Numero",
+    "custom-field-text": "Testo",
+    "custom-fields": "Campi personalizzati",
     "date": "Data",
     "date": "Data",
     "decline": "Declina",
     "decline": "Declina",
     "default-avatar": "Avatar predefinito",
     "default-avatar": "Avatar predefinito",
     "delete": "Elimina",
     "delete": "Elimina",
+    "deleteCustomFieldPopup-title": "Elimina il campo personalizzato?",
     "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": "Modifica campo",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Pulisci filtri",
     "filter-clear": "Pulisci filtri",
     "filter-no-label": "Nessuna etichetta",
     "filter-no-label": "Nessuna etichetta",
     "filter-no-member": "Nessun membro",
     "filter-no-member": "Nessun membro",
+    "filter-no-custom-fields": "Nessun campo personalizzato",
     "filter-on": "Il filtro è attivo",
     "filter-on": "Il filtro è attivo",
     "filter-on-desc": "Stai filtrando le schede su questa bacheca. Clicca qui per modificare il filtro,",
     "filter-on-desc": "Stai filtrando le schede su questa bacheca. Clicca qui per modificare il filtro,",
     "filter-to-selection": "Seleziona",
     "filter-to-selection": "Seleziona",
+    "advanced-filter-label": "Filtro avanzato",
+    "advanced-filter-description": "Il filtro avanzato consente di scrivere una stringa contenente i seguenti operatori: == != <= >= && || ( ). Lo spazio è usato come separatore tra gli operatori. E' possibile filtrare per tutti i campi personalizzati, digitando i loro nomi e valori. Ad esempio: Campo1 == Valore1. Nota: Se i campi o i valori contengono spazi, devi racchiuderli dentro le virgolette singole. Ad esempio: 'Campo 1' == 'Valore 1'. E' possibile combinare condizioni multiple. Ad esempio: F1 == V1 || F1 = V2. Normalmente tutti gli operatori sono interpretati da sinistra a destra. Puoi modificare l'ordine utilizzando le parentesi. Ad Esempio: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Nome completo",
     "fullname": "Nome completo",
     "header-logo-title": "Torna alla tua bacheca.",
     "header-logo-title": "Torna alla tua bacheca.",
     "hide-system-messages": "Nascondi i messaggi di sistema",
     "hide-system-messages": "Nascondi i messaggi di sistema",
@@ -366,6 +389,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": "Tipo",
     "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",
@@ -393,7 +417,7 @@
     "disable-self-registration": "Disabilita Auto-registrazione",
     "disable-self-registration": "Disabilita Auto-registrazione",
     "invite": "Invita",
     "invite": "Invita",
     "invite-people": "Invita persone",
     "invite-people": "Invita persone",
-    "to-boards": "torna alle bacheche(a)",
+    "to-boards": "Alla(e) bacheche(a)",
     "email-addresses": "Indirizzi email",
     "email-addresses": "Indirizzi email",
     "smtp-host-description": "L'indirizzo del server SMTP che gestisce le tue email.",
     "smtp-host-description": "L'indirizzo del server SMTP che gestisce le tue email.",
     "smtp-port-description": "La porta che il tuo server SMTP utilizza per le email in uscita.",
     "smtp-port-description": "La porta che il tuo server SMTP utilizza per le email in uscita.",
@@ -430,11 +454,12 @@
     "hours": "ore",
     "hours": "ore",
     "minutes": "minuti",
     "minutes": "minuti",
     "seconds": "secondi",
     "seconds": "secondi",
+    "show-field-on-card": "Visualizza questo campo sulla scheda",
     "yes": "Sì",
     "yes": "Sì",
     "no": "No",
     "no": "No",
     "accounts": "Profili",
     "accounts": "Profili",
     "accounts-allowEmailChange": "Permetti modifica dell'email",
     "accounts-allowEmailChange": "Permetti modifica dell'email",
-    "accounts-allowUserNameChange": "Allow Username Change",
+    "accounts-allowUserNameChange": "Consenti la modifica del nome utente",
     "createdAt": "creato alle",
     "createdAt": "creato alle",
     "verified": "Verificato",
     "verified": "Verificato",
     "active": "Attivo",
     "active": "Attivo",
@@ -443,5 +468,11 @@
     "card-end": "Fine",
     "card-end": "Fine",
     "card-end-on": "Termina il",
     "card-end-on": "Termina il",
     "editCardReceivedDatePopup-title": "Cambia data ricezione",
     "editCardReceivedDatePopup-title": "Cambia data ricezione",
-    "editCardEndDatePopup-title": "Cambia data finale"
+    "editCardEndDatePopup-title": "Cambia data finale",
+    "assigned-by": "Assegnato da",
+    "requested-by": "Richiesto da",
+    "board-delete-notice": "L'eliminazione è permanente. Tutte le azioni, liste e schede associate a questa bacheca andranno perse.",
+    "delete-board-confirm-popup": "Tutte le liste, schede, etichette e azioni saranno rimosse e non sarai più in grado di recuperare il contenuto della bacheca. L'azione non è annullabile.",
+    "boardDeletePopup-title": "Eliminare la bacheca?",
+    "delete-board": "Elimina bacheca"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "%s 件のコメントがあります。",
     "card-comments-title": "%s 件のコメントがあります。",
     "card-delete-notice": "削除は取り消しできません。このカードに関係するすべてのアクションがなくなります。",
     "card-delete-notice": "削除は取り消しできません。このカードに関係するすべてのアクションがなくなります。",
     "card-delete-pop": "すべての内容がアクティビティから削除されます。この削除は元に戻すことができません。",
     "card-delete-pop": "すべての内容がアクティビティから削除されます。この削除は元に戻すことができません。",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "期限",
     "card-due": "期限",
     "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": "通知の変更",
@@ -222,9 +242,12 @@
     "filter-clear": "フィルターの解除",
     "filter-clear": "フィルターの解除",
     "filter-no-label": "ラベルなし",
     "filter-no-label": "ラベルなし",
     "filter-no-member": "メンバーなし",
     "filter-no-member": "メンバーなし",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "フィルター有効",
     "filter-on": "フィルター有効",
     "filter-on-desc": "このボードのカードをフィルターしています。フィルターを編集するにはこちらをクリックしてください。",
     "filter-on-desc": "このボードのカードをフィルターしています。フィルターを編集するにはこちらをクリックしてください。",
     "filter-to-selection": "フィルターした項目を全選択",
     "filter-to-selection": "フィルターした項目を全選択",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "フルネーム",
     "fullname": "フルネーム",
     "header-logo-title": "自分のボードページに戻る。",
     "header-logo-title": "自分のボードページに戻る。",
     "hide-system-messages": "システムメッセージを隠す",
     "hide-system-messages": "システムメッセージを隠す",
@@ -366,6 +389,7 @@
     "title": "タイトル",
     "title": "タイトル",
     "tracking": "トラッキング",
     "tracking": "トラッキング",
     "tracking-info": "これらのカードへの変更が通知されるようになります。",
     "tracking-info": "これらのカードへの変更が通知されるようになります。",
+    "type": "Type",
     "unassign-member": "未登録のメンバー",
     "unassign-member": "未登録のメンバー",
     "unsaved-description": "未保存の変更があります。",
     "unsaved-description": "未保存の変更があります。",
     "unwatch": "アンウォッチ",
     "unwatch": "アンウォッチ",
@@ -430,6 +454,7 @@
     "hours": "時",
     "hours": "時",
     "minutes": "分",
     "minutes": "分",
     "seconds": "秒",
     "seconds": "秒",
+    "show-field-on-card": "Show this field on card",
     "yes": "はい",
     "yes": "はい",
     "no": "いいえ",
     "no": "いいえ",
     "accounts": "アカウント",
     "accounts": "アカウント",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 478 - 0
i18n/km.i18n.json

@@ -0,0 +1,478 @@
+{
+    "accept": "យល់ព្រម",
+    "act-activity-notify": "[Wekan] សកម្មភាពជូនដំណឹង",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addChecklist": "added checklist __checklist__ to __card__",
+    "act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "__board__ moved to Recycle Bin",
+    "act-archivedCard": "__card__ moved to Recycle Bin",
+    "act-archivedList": "__list__ moved to Recycle Bin",
+    "act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
+    "actions": "Actions",
+    "activities": "Activities",
+    "activity": "Activity",
+    "activity-added": "added %s to %s",
+    "activity-archived": "%s moved to Recycle Bin",
+    "activity-attached": "attached %s to %s",
+    "activity-created": "created %s",
+    "activity-customfield-created": "created custom field %s",
+    "activity-excluded": "excluded %s from %s",
+    "activity-imported": "imported %s into %s from %s",
+    "activity-imported-board": "imported %s from %s",
+    "activity-joined": "joined %s",
+    "activity-moved": "moved %s from %s to %s",
+    "activity-on": "on %s",
+    "activity-removed": "removed %s from %s",
+    "activity-sent": "sent %s to %s",
+    "activity-unjoined": "unjoined %s",
+    "activity-checklist-added": "added checklist to %s",
+    "activity-checklist-item-added": "added checklist item to '%s' in %s",
+    "add": "Add",
+    "add-attachment": "Add Attachment",
+    "add-board": "Add Board",
+    "add-card": "Add Card",
+    "add-swimlane": "Add Swimlane",
+    "add-checklist": "Add Checklist",
+    "add-checklist-item": "Add an item to checklist",
+    "add-cover": "Add Cover",
+    "add-label": "Add Label",
+    "add-list": "Add List",
+    "add-members": "Add Members",
+    "added": "Added",
+    "addMemberPopup-title": "Members",
+    "admin": "Admin",
+    "admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
+    "admin-announcement": "Announcement",
+    "admin-announcement-active": "Active System-Wide Announcement",
+    "admin-announcement-title": "Announcement from Administrator",
+    "all-boards": "All boards",
+    "and-n-other-card": "And __count__ other card",
+    "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "Apply",
+    "app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
+    "archive": "Move to Recycle Bin",
+    "archive-all": "Move All to Recycle Bin",
+    "archive-board": "Move Board to Recycle Bin",
+    "archive-card": "Move Card to Recycle Bin",
+    "archive-list": "Move List to Recycle Bin",
+    "archive-swimlane": "Move Swimlane to Recycle Bin",
+    "archive-selection": "Move selection to Recycle Bin",
+    "archiveBoardPopup-title": "Move Board to Recycle Bin?",
+    "archived-items": "Recycle Bin",
+    "archived-boards": "Boards in Recycle Bin",
+    "restore-board": "Restore Board",
+    "no-archived-boards": "No Boards in Recycle Bin.",
+    "archives": "Recycle Bin",
+    "assign-member": "Assign member",
+    "attached": "attached",
+    "attachment": "Attachment",
+    "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
+    "attachmentDeletePopup-title": "Delete Attachment?",
+    "attachments": "Attachments",
+    "auto-watch": "Automatically watch boards when they are created",
+    "avatar-too-big": "The avatar is too large (70KB max)",
+    "back": "Back",
+    "board-change-color": "Change color",
+    "board-nb-stars": "%s stars",
+    "board-not-found": "Board not found",
+    "board-private-info": "This board will be <strong>private</strong>.",
+    "board-public-info": "This board will be <strong>public</strong>.",
+    "boardChangeColorPopup-title": "Change Board Background",
+    "boardChangeTitlePopup-title": "Rename Board",
+    "boardChangeVisibilityPopup-title": "Change Visibility",
+    "boardChangeWatchPopup-title": "Change Watch",
+    "boardMenuPopup-title": "Board Menu",
+    "boards": "Boards",
+    "board-view": "Board View",
+    "board-view-swimlanes": "Swimlanes",
+    "board-view-lists": "Lists",
+    "bucket-example": "Like “Bucket List” for example",
+    "cancel": "Cancel",
+    "card-archived": "This card is moved to Recycle Bin.",
+    "card-comments-title": "This card has %s comment.",
+    "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
+    "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
+    "card-spent": "Spent Time",
+    "card-edit-attachments": "Edit attachments",
+    "card-edit-custom-fields": "Edit custom fields",
+    "card-edit-labels": "Edit labels",
+    "card-edit-members": "Edit members",
+    "card-labels-title": "Change the labels for the card.",
+    "card-members-title": "Add or remove members of the board from the card.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
+    "cardAttachmentsPopup-title": "Attach From",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
+    "cardDeletePopup-title": "Delete Card?",
+    "cardDetailsActionsPopup-title": "Card Actions",
+    "cardLabelsPopup-title": "Labels",
+    "cardMembersPopup-title": "Members",
+    "cardMorePopup-title": "More",
+    "cards": "Cards",
+    "cards-count": "Cards",
+    "change": "Change",
+    "change-avatar": "Change Avatar",
+    "change-password": "Change Password",
+    "change-permissions": "Change permissions",
+    "change-settings": "Change Settings",
+    "changeAvatarPopup-title": "Change Avatar",
+    "changeLanguagePopup-title": "Change Language",
+    "changePasswordPopup-title": "Change Password",
+    "changePermissionsPopup-title": "Change Permissions",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
+    "click-to-star": "Click to star this board.",
+    "click-to-unstar": "Click to unstar this board.",
+    "clipboard": "Clipboard or drag & drop",
+    "close": "Close",
+    "close-board": "Close Board",
+    "close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
+    "color-black": "black",
+    "color-blue": "blue",
+    "color-green": "green",
+    "color-lime": "lime",
+    "color-orange": "orange",
+    "color-pink": "pink",
+    "color-purple": "purple",
+    "color-red": "red",
+    "color-sky": "sky",
+    "color-yellow": "yellow",
+    "comment": "Comment",
+    "comment-placeholder": "Write Comment",
+    "comment-only": "Comment only",
+    "comment-only-desc": "Can comment on cards only.",
+    "computer": "Computer",
+    "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+    "copy-card-link-to-clipboard": "Copy card link to clipboard",
+    "copyCardPopup-title": "Copy Card",
+    "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
+    "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+    "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
+    "create": "Create",
+    "createBoardPopup-title": "Create Board",
+    "chooseBoardSourcePopup-title": "Import board",
+    "createLabelPopup-title": "Create Label",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
+    "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-options": "List Options",
+    "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-number": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
+    "date": "Date",
+    "decline": "Decline",
+    "default-avatar": "Default avatar",
+    "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
+    "deleteLabelPopup-title": "Delete Label?",
+    "description": "Description",
+    "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
+    "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
+    "discard": "Discard",
+    "done": "Done",
+    "download": "Download",
+    "edit": "Edit",
+    "edit-avatar": "Change Avatar",
+    "edit-profile": "Edit Profile",
+    "edit-wip-limit": "Edit WIP Limit",
+    "soft-wip-limit": "Soft WIP Limit",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
+    "editCustomFieldPopup-title": "Edit Field",
+    "editCardSpentTimePopup-title": "Change spent time",
+    "editLabelPopup-title": "Change Label",
+    "editNotificationPopup-title": "Edit Notification",
+    "editProfilePopup-title": "Edit Profile",
+    "email": "Email",
+    "email-enrollAccount-subject": "An account created for you on __siteName__",
+    "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
+    "email-fail": "Sending email failed",
+    "email-fail-text": "Error trying to send email",
+    "email-invalid": "Invalid email",
+    "email-invite": "Invite via Email",
+    "email-invite-subject": "__inviter__ sent you an invitation",
+    "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
+    "email-resetPassword-subject": "Reset your password on __siteName__",
+    "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
+    "email-sent": "Email sent",
+    "email-verifyEmail-subject": "Verify your email address on __siteName__",
+    "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
+    "enable-wip-limit": "Enable WIP Limit",
+    "error-board-doesNotExist": "This board does not exist",
+    "error-board-notAdmin": "You need to be admin of this board to do that",
+    "error-board-notAMember": "You need to be a member of this board to do that",
+    "error-json-malformed": "Your text is not valid JSON",
+    "error-json-schema": "Your JSON data does not include the proper information in the correct format",
+    "error-list-doesNotExist": "This list does not exist",
+    "error-user-doesNotExist": "This user does not exist",
+    "error-user-notAllowSelf": "You can not invite yourself",
+    "error-user-notCreated": "This user is not created",
+    "error-username-taken": "This username is already taken",
+    "error-email-taken": "Email has already been taken",
+    "export-board": "Export board",
+    "filter": "Filter",
+    "filter-cards": "Filter Cards",
+    "filter-clear": "Clear filter",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
+    "filter-on": "Filter is on",
+    "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
+    "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
+    "fullname": "Full Name",
+    "header-logo-title": "Go back to your boards page.",
+    "hide-system-messages": "Hide system messages",
+    "headerBarCreateBoardPopup-title": "Create Board",
+    "home": "Home",
+    "import": "Import",
+    "import-board": "import board",
+    "import-board-c": "Import board",
+    "import-board-title-trello": "Import board from Trello",
+    "import-board-title-wekan": "Import board from Wekan",
+    "import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
+    "from-trello": "From Trello",
+    "from-wekan": "From Wekan",
+    "import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
+    "import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
+    "import-json-placeholder": "Paste your valid JSON data here",
+    "import-map-members": "Map members",
+    "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
+    "import-show-user-mapping": "Review members mapping",
+    "import-user-select": "Pick the Wekan user you want to use as this member",
+    "importMapMembersAddPopup-title": "Select Wekan member",
+    "info": "Version",
+    "initials": "Initials",
+    "invalid-date": "Invalid date",
+    "invalid-time": "Invalid time",
+    "invalid-user": "Invalid user",
+    "joined": "joined",
+    "just-invited": "You are just invited to this board",
+    "keyboard-shortcuts": "Keyboard shortcuts",
+    "label-create": "Create Label",
+    "label-default": "%s label (default)",
+    "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
+    "labels": "Labels",
+    "language": "Language",
+    "last-admin-desc": "You can’t change roles because there must be at least one admin.",
+    "leave-board": "Leave Board",
+    "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
+    "leaveBoardPopup-title": "Leave Board ?",
+    "link-card": "Link to this card",
+    "list-archive-cards": "Move all cards in this list to Recycle Bin",
+    "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
+    "list-move-cards": "Move all cards in this list",
+    "list-select-cards": "Select all cards in this list",
+    "listActionPopup-title": "List Actions",
+    "swimlaneActionPopup-title": "Swimlane Actions",
+    "listImportCardPopup-title": "Import a Trello card",
+    "listMorePopup-title": "More",
+    "link-list": "Link to this list",
+    "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
+    "list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.",
+    "lists": "Lists",
+    "swimlanes": "Swimlanes",
+    "log-out": "Log Out",
+    "log-in": "Log In",
+    "loginPopup-title": "Log In",
+    "memberMenuPopup-title": "Member Settings",
+    "members": "Members",
+    "menu": "Menu",
+    "move-selection": "Move selection",
+    "moveCardPopup-title": "Move Card",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
+    "moveSelectionPopup-title": "Move selection",
+    "multi-selection": "Multi-Selection",
+    "multi-selection-on": "Multi-Selection is on",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
+    "my-boards": "My Boards",
+    "name": "Name",
+    "no-archived-cards": "No cards in Recycle Bin.",
+    "no-archived-lists": "No lists in Recycle Bin.",
+    "no-archived-swimlanes": "No swimlanes in Recycle Bin.",
+    "no-results": "No results",
+    "normal": "Normal",
+    "normal-desc": "Can view and edit cards. Can't change settings.",
+    "not-accepted-yet": "Invitation not accepted yet",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
+    "optional": "optional",
+    "or": "or",
+    "page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
+    "page-not-found": "Page not found.",
+    "password": "Password",
+    "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
+    "participating": "Participating",
+    "preview": "Preview",
+    "previewAttachedImagePopup-title": "Preview",
+    "previewClipboardImagePopup-title": "Preview",
+    "private": "Private",
+    "private-desc": "This board is private. Only people added to the board can view and edit it.",
+    "profile": "Profile",
+    "public": "Public",
+    "public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
+    "quick-access-description": "Star a board to add a shortcut in this bar.",
+    "remove-cover": "Remove Cover",
+    "remove-from-board": "Remove from Board",
+    "remove-label": "Remove Label",
+    "listDeletePopup-title": "Delete List ?",
+    "remove-member": "Remove Member",
+    "remove-member-from-card": "Remove from Card",
+    "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
+    "removeMemberPopup-title": "Remove Member?",
+    "rename": "Rename",
+    "rename-board": "Rename Board",
+    "restore": "Restore",
+    "save": "Save",
+    "search": "Search",
+    "search-cards": "Search from card titles and descriptions on this board",
+    "search-example": "Text to search for?",
+    "select-color": "Select Color",
+    "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
+    "setWipLimitPopup-title": "Set WIP Limit",
+    "shortcut-assign-self": "Assign yourself to current card",
+    "shortcut-autocomplete-emoji": "Autocomplete emoji",
+    "shortcut-autocomplete-members": "Autocomplete members",
+    "shortcut-clear-filters": "Clear all filters",
+    "shortcut-close-dialog": "បិទផ្ទាំង",
+    "shortcut-filter-my-cards": "តម្រងកាតរបស់ខ្ញុំ",
+    "shortcut-show-shortcuts": "Bring up this shortcuts list",
+    "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
+    "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
+    "sidebar-open": "Open Sidebar",
+    "sidebar-close": "Close Sidebar",
+    "signupPopup-title": "បង្កើតគណនីមួយ",
+    "star-board-title": "Click to star this board. It will show up at top of your boards list.",
+    "starred-boards": "Starred Boards",
+    "starred-boards-description": "Starred boards show up at the top of your boards list.",
+    "subscribe": "Subscribe",
+    "team": "Team",
+    "this-board": "this board",
+    "this-card": "កាតនេះ",
+    "spent-time-hours": "ចំណាយពេល (ម៉ោង)",
+    "overtime-hours": "លើសពេល (ម៉ោង)",
+    "overtime": "លើសពេល",
+    "has-overtime-cards": "មានកាតលើសពេល",
+    "has-spenttime-cards": "មានកាតដែលបានចំណាយពេល",
+    "time": "Time",
+    "title": "Title",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "type": "Type",
+    "unassign-member": "Unassign member",
+    "unsaved-description": "You have an unsaved description.",
+    "unwatch": "Unwatch",
+    "upload": "Upload",
+    "upload-avatar": "Upload an avatar",
+    "uploaded-avatar": "Uploaded an avatar",
+    "username": "Username",
+    "view-it": "View it",
+    "warn-list-archived": "warning: this card is in an list at Recycle Bin",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-swimlane": "Milestone 1",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
+    "what-to-do": "What do you want to do?",
+    "wipLimitErrorPopup-title": "Invalid WIP Limit",
+    "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
+    "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
+    "admin-panel": "Admin Panel",
+    "settings": "Settings",
+    "people": "People",
+    "registration": "Registration",
+    "disable-self-registration": "Disable Self-Registration",
+    "invite": "Invite",
+    "invite-people": "Invite People",
+    "to-boards": "To board(s)",
+    "email-addresses": "Email Addresses",
+    "smtp-host-description": "The address of the SMTP server that handles your emails.",
+    "smtp-port-description": "The port your SMTP server uses for outgoing emails.",
+    "smtp-tls-description": "Enable TLS support for SMTP server",
+    "smtp-host": "SMTP Host",
+    "smtp-port": "SMTP Port",
+    "smtp-username": "Username",
+    "smtp-password": "Password",
+    "smtp-tls": "TLS support",
+    "send-from": "From",
+    "send-smtp-test": "Send a test email to yourself",
+    "invitation-code": "Invitation Code",
+    "email-invite-register-subject": "__inviter__ sent you an invitation",
+    "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
+    "email-smtp-test-subject": "SMTP Test Email From Wekan",
+    "email-smtp-test-text": "You have successfully sent an email",
+    "error-invitation-code-not-exist": "Invitation code doesn't exist",
+    "error-notAuthorized": "You are not authorized to view this page.",
+    "outgoing-webhooks": "Outgoing Webhooks",
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "new-outgoing-webhook": "New Outgoing Webhook",
+    "no-name": "(Unknown)",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds",
+    "show-field-on-card": "Show this field on card",
+    "yes": "Yes",
+    "no": "No",
+    "accounts": "Accounts",
+    "accounts-allowEmailChange": "Allow Email Change",
+    "accounts-allowUserNameChange": "Allow Username Change",
+    "createdAt": "Created at",
+    "verified": "Verified",
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
+}

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "이 카드에 %s 코멘트가 있습니다.",
     "card-comments-title": "이 카드에 %s 코멘트가 있습니다.",
     "card-delete-notice": "영구 삭제입니다. 이 카드와 관련된 모든 작업들을 잃게됩니다.",
     "card-delete-notice": "영구 삭제입니다. 이 카드와 관련된 모든 작업들을 잃게됩니다.",
     "card-delete-pop": "모든 작업이 활동 내역에서 제거되며 카드를 다시 열 수 없습니다. 복구가 안되니 주의하시기 바랍니다.",
     "card-delete-pop": "모든 작업이 활동 내역에서 제거되며 카드를 다시 열 수 없습니다. 복구가 안되니 주의하시기 바랍니다.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "종료일",
     "card-due": "종료일",
     "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": "알림 수정",
@@ -222,9 +242,12 @@
     "filter-clear": "필터 초기화",
     "filter-clear": "필터 초기화",
     "filter-no-label": "라벨 없음",
     "filter-no-label": "라벨 없음",
     "filter-no-member": "멤버 없음",
     "filter-no-member": "멤버 없음",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "필터 사용",
     "filter-on": "필터 사용",
     "filter-on-desc": "보드에서 카드를 필터링합니다. 여기를 클릭하여 필터를 수정합니다.",
     "filter-on-desc": "보드에서 카드를 필터링합니다. 여기를 클릭하여 필터를 수정합니다.",
     "filter-to-selection": "선택 항목으로 필터링",
     "filter-to-selection": "선택 항목으로 필터링",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "실명",
     "fullname": "실명",
     "header-logo-title": "보드 페이지로 돌아가기.",
     "header-logo-title": "보드 페이지로 돌아가기.",
     "hide-system-messages": "시스템 메시지 숨기기",
     "hide-system-messages": "시스템 메시지 숨기기",
@@ -366,6 +389,7 @@
     "title": "제목",
     "title": "제목",
     "tracking": "추적",
     "tracking": "추적",
     "tracking-info": "보드 생성자 또는 멤버로 참여하는 모든 카드에 대한 변경사항 알림 받음",
     "tracking-info": "보드 생성자 또는 멤버로 참여하는 모든 카드에 대한 변경사항 알림 받음",
+    "type": "Type",
     "unassign-member": "멤버 할당 해제",
     "unassign-member": "멤버 할당 해제",
     "unsaved-description": "저장되지 않은 설명이 있습니다.",
     "unsaved-description": "저장되지 않은 설명이 있습니다.",
     "unwatch": "감시 해제",
     "unwatch": "감시 해제",
@@ -430,6 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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": "Мэдэгдэл тохируулах",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "Dette kortet har %s kommentar.",
     "card-comments-title": "Dette kortet har %s kommentar.",
     "card-delete-notice": "Sletting er permanent. Du vil miste alle hendelser knyttet til dette kortet.",
     "card-delete-notice": "Sletting er permanent. Du vil miste alle hendelser knyttet til dette kortet.",
     "card-delete-pop": "Alle handlinger vil fjernes fra feeden for aktiviteter og du vil ikke kunne åpne kortet på nytt. Det er ingen mulighet å angre.",
     "card-delete-pop": "Alle handlinger vil fjernes fra feeden for aktiviteter og du vil ikke kunne åpne kortet på nytt. Det er ingen mulighet å angre.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Frist",
     "card-due": "Frist",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "Deze kaart heeft %s reactie.",
     "card-comments-title": "Deze kaart heeft %s reactie.",
     "card-delete-notice": "Verwijdering is permanent. Als je dit doet, verlies je alle informatie die op deze kaart is opgeslagen.",
     "card-delete-notice": "Verwijdering is permanent. Als je dit doet, verlies je alle informatie die op deze kaart is opgeslagen.",
     "card-delete-pop": "Alle acties worden verwijderd van de activiteiten feed, en er zal geen mogelijkheid zijn om de kaart opnieuw te openen. Deze actie kan je niet ongedaan maken.",
     "card-delete-pop": "Alle acties worden verwijderd van de activiteiten feed, en er zal geen mogelijkheid zijn om de kaart opnieuw te openen. Deze actie kan je niet ongedaan maken.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Deadline: ",
     "card-due": "Deadline: ",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Reset filter",
     "filter-clear": "Reset filter",
     "filter-no-label": "Geen label",
     "filter-no-label": "Geen label",
     "filter-no-member": "Geen lid",
     "filter-no-member": "Geen lid",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter staat aan",
     "filter-on": "Filter staat aan",
     "filter-on-desc": "Je bent nu kaarten aan het filteren op dit bord. Klik hier om het filter te wijzigen.",
     "filter-on-desc": "Je bent nu kaarten aan het filteren op dit bord. Klik hier om het filter te wijzigen.",
     "filter-to-selection": "Filter zoals selectie",
     "filter-to-selection": "Filter zoals selectie",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Volledige naam",
     "fullname": "Volledige naam",
     "header-logo-title": "Ga terug naar jouw borden pagina.",
     "header-logo-title": "Ga terug naar jouw borden pagina.",
     "hide-system-messages": "Verberg systeemberichten",
     "hide-system-messages": "Verberg systeemberichten",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "Ta karta ma %s komentarzy.",
     "card-comments-title": "Ta karta ma %s komentarzy.",
     "card-delete-notice": "Usunięcie jest trwałe. Stracisz wszystkie akcje powiązane z tą kartą.",
     "card-delete-notice": "Usunięcie jest trwałe. Stracisz wszystkie akcje powiązane z tą kartą.",
     "card-delete-pop": "Wszystkie akcje będą usunięte z widoku aktywności, nie można będzie ponownie otworzyć karty.  Usunięcie jest nieodwracalne.",
     "card-delete-pop": "Wszystkie akcje będą usunięte z widoku aktywności, nie można będzie ponownie otworzyć karty.  Usunięcie jest nieodwracalne.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Usuń filter",
     "filter-clear": "Usuń filter",
     "filter-no-label": "Brak etykiety",
     "filter-no-label": "Brak etykiety",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filtr jest włączony",
     "filter-on": "Filtr jest włączony",
     "filter-on-desc": "Filtrujesz karty na tej tablicy. Kliknij tutaj by edytować filtr.",
     "filter-on-desc": "Filtrujesz karty na tej tablicy. Kliknij tutaj by edytować filtr.",
     "filter-to-selection": "Odfiltruj zaznaczenie",
     "filter-to-selection": "Odfiltruj zaznaczenie",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Wróć do swojej strony z tablicami.",
     "header-logo-title": "Wróć do swojej strony z tablicami.",
     "hide-system-messages": "Ukryj wiadomości systemowe",
     "hide-system-messages": "Ukryj wiadomości systemowe",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 70 - 39
i18n/pt-BR.i18n.json

@@ -3,16 +3,17 @@
     "act-activity-notify": "[Wekan] Notificação de Atividade",
     "act-activity-notify": "[Wekan] Notificação de Atividade",
     "act-addAttachment": "anexo __attachment__ de __card__",
     "act-addAttachment": "anexo __attachment__ de __card__",
     "act-addChecklist": "added checklist __checklist__ no __card__",
     "act-addChecklist": "added checklist __checklist__ no __card__",
-    "act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
+    "act-addChecklistItem": "adicionado __checklistitem__ para a lista de checagem __checklist__ em __card__",
     "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": "criado campo customizado __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-archivedCard": "__card__ moved to Recycle Bin",
-    "act-archivedList": "__list__ moved to Recycle Bin",
-    "act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
+    "act-archivedBoard": "__board__ movido para a lixeira",
+    "act-archivedCard": "__card__ movido para a lixeira",
+    "act-archivedList": "__list__ movido para a lixeira",
+    "act-archivedSwimlane": "__swimlane__ movido para a lixeira",
     "act-importBoard": "__board__ importado",
     "act-importBoard": "__board__ importado",
     "act-importCard": "__card__ importado",
     "act-importCard": "__card__ importado",
     "act-importList": "__list__ importada",
     "act-importList": "__list__ importada",
@@ -27,9 +28,10 @@
     "activities": "Atividades",
     "activities": "Atividades",
     "activity": "Atividade",
     "activity": "Atividade",
     "activity-added": "adicionou %s a %s",
     "activity-added": "adicionou %s a %s",
-    "activity-archived": "%s moved to Recycle Bin",
+    "activity-archived": "%s movido para a lixeira",
     "activity-attached": "anexou %s a %s",
     "activity-attached": "anexou %s a %s",
     "activity-created": "criou %s",
     "activity-created": "criou %s",
+    "activity-customfield-created": "criado campo customizado %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",
@@ -45,7 +47,7 @@
     "add-attachment": "Adicionar Anexos",
     "add-attachment": "Adicionar Anexos",
     "add-board": "Adicionar Quadro",
     "add-board": "Adicionar Quadro",
     "add-card": "Adicionar Cartão",
     "add-card": "Adicionar Cartão",
-    "add-swimlane": "Add Swimlane",
+    "add-swimlane": "Adicionar Swimlane",
     "add-checklist": "Adicionar Checklist",
     "add-checklist": "Adicionar Checklist",
     "add-checklist-item": "Adicionar um item à lista de verificação",
     "add-checklist-item": "Adicionar um item à lista de verificação",
     "add-cover": "Adicionar Capa",
     "add-cover": "Adicionar Capa",
@@ -64,19 +66,19 @@
     "and-n-other-card_plural": "E __count__ outros cartões",
     "and-n-other-card_plural": "E __count__ outros cartões",
     "apply": "Aplicar",
     "apply": "Aplicar",
     "app-is-offline": "O Wekan está carregando, por favor espere. Recarregar a página irá causar perda de dado. Se o Wekan não carregar por favor verifique se o servidor Wekan não está parado.",
     "app-is-offline": "O Wekan está carregando, por favor espere. Recarregar a página irá causar perda de dado. Se o Wekan não carregar por favor verifique se o servidor Wekan não está parado.",
-    "archive": "Move to Recycle Bin",
-    "archive-all": "Move All to Recycle Bin",
-    "archive-board": "Move Board to Recycle Bin",
-    "archive-card": "Move Card to Recycle Bin",
-    "archive-list": "Move List to Recycle Bin",
-    "archive-swimlane": "Move Swimlane to Recycle Bin",
-    "archive-selection": "Move selection to Recycle Bin",
-    "archiveBoardPopup-title": "Move Board to Recycle Bin?",
-    "archived-items": "Recycle Bin",
-    "archived-boards": "Boards in Recycle Bin",
+    "archive": "Mover para a lixeira",
+    "archive-all": "Mover tudo para a lixeira",
+    "archive-board": "Mover quadro para a lixeira",
+    "archive-card": "Mover cartão para a lixeira",
+    "archive-list": "Mover lista para a lixeira",
+    "archive-swimlane": "Mover Swimlane para a lixeira",
+    "archive-selection": "Mover seleção para a lixeira",
+    "archiveBoardPopup-title": "Mover o quadro para a lixeira?",
+    "archived-items": "Lixeira",
+    "archived-boards": "Quadros na lixeira",
     "restore-board": "Restaurar Quadro",
     "restore-board": "Restaurar Quadro",
-    "no-archived-boards": "No Boards in Recycle Bin.",
-    "archives": "Recycle Bin",
+    "no-archived-boards": "Não há quadros na lixeira",
+    "archives": "Lixeira",
     "assign-member": "Atribuir Membro",
     "assign-member": "Atribuir Membro",
     "attached": "anexado",
     "attached": "anexado",
     "attachment": "Anexo",
     "attachment": "Anexo",
@@ -102,15 +104,16 @@
     "board-view-lists": "Listas",
     "board-view-lists": "Listas",
     "bucket-example": "\"Bucket List\", por exemplo",
     "bucket-example": "\"Bucket List\", por exemplo",
     "cancel": "Cancelar",
     "cancel": "Cancelar",
-    "card-archived": "This card is moved to Recycle Bin.",
+    "card-archived": "Este cartão foi movido para a lixeira",
     "card-comments-title": "Este cartão possui %s comentários.",
     "card-comments-title": "Este cartão possui %s comentários.",
     "card-delete-notice": "A exclusão será permanente. Você perderá todas as ações associadas a este cartão.",
     "card-delete-notice": "A exclusão será permanente. Você perderá todas as ações associadas a este cartão.",
     "card-delete-pop": "Todas as ações serão removidas da lista de Atividades e vocês não poderá re-abrir o cartão. Não há como desfazer.",
     "card-delete-pop": "Todas as ações serão removidas da lista de Atividades e vocês não poderá re-abrir o cartão. Não há como desfazer.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "Você pode mover um cartão para fora da lixeira e movê-lo para o quadro e preservar a atividade.",
     "card-due": "Data fim",
     "card-due": "Data fim",
     "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": "Editar campos customizados",
     "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": "Mudar data",
+    "cardCustomFieldsPopup-title": "Editar campos customizados",
     "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",
@@ -141,7 +146,7 @@
     "clipboard": "Área de Transferência ou arraste e solte",
     "clipboard": "Área de Transferência ou arraste e solte",
     "close": "Fechar",
     "close": "Fechar",
     "close-board": "Fechar Quadro",
     "close-board": "Fechar Quadro",
-    "close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
+    "close-board-pop": "Você poderá restaurar o quadro clicando no botão lixeira no cabeçalho da página inicial",
     "color-black": "preto",
     "color-black": "preto",
     "color-blue": "azul",
     "color-blue": "azul",
     "color-green": "verde",
     "color-green": "verde",
@@ -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": "Criar campo",
+    "createCustomFieldPopup-title": "Criar campo",
     "current": "atual",
     "current": "atual",
+    "custom-field-delete-pop": "Não existe desfazer. Isso irá remover o campo customizado de todos os cartões e destruir seu histórico",
+    "custom-field-checkbox": "Caixa de seleção",
+    "custom-field-date": "Data",
+    "custom-field-dropdown": "Lista suspensa",
+    "custom-field-dropdown-none": "(nada)",
+    "custom-field-dropdown-options": "Lista de opções",
+    "custom-field-dropdown-options-placeholder": "Pressione enter para adicionar mais opções",
+    "custom-field-dropdown-unknown": "(desconhecido)",
+    "custom-field-number": "Número",
+    "custom-field-text": "Texto",
+    "custom-fields": "Campos customizados",
     "date": "Data",
     "date": "Data",
     "decline": "Rejeitar",
     "decline": "Rejeitar",
     "default-avatar": "Avatar padrão",
     "default-avatar": "Avatar padrão",
     "delete": "Excluir",
     "delete": "Excluir",
+    "deleteCustomFieldPopup-title": "Deletar campo customizado?",
     "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": "Editar campo",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Limpar filtro",
     "filter-clear": "Limpar filtro",
     "filter-no-label": "Sem labels",
     "filter-no-label": "Sem labels",
     "filter-no-member": "Sem membros",
     "filter-no-member": "Sem membros",
+    "filter-no-custom-fields": "Não há campos customizados",
     "filter-on": "Filtro está ativo",
     "filter-on": "Filtro está ativo",
     "filter-on-desc": "Você está filtrando cartões neste quadro. Clique aqui para editar o filtro.",
     "filter-on-desc": "Você está filtrando cartões neste quadro. Clique aqui para editar o filtro.",
     "filter-to-selection": "Filtrar esta seleção",
     "filter-to-selection": "Filtrar esta seleção",
+    "advanced-filter-label": "Filtro avançado",
+    "advanced-filter-description": "Um Filtro Avançado permite escrever uma string contendo os seguintes operadores: == != <= >= && || () Um espaço é utilizado como separador entre os operadores. Você pode filtrar todos os campos customizados digitando seus nomes e valores. Por exemplo: campo1 == valor1. Nota: se campos ou valores contém espaços, você precisa encapsular eles em aspas simples. Por exemplo: 'campo 1' == 'valor 1'. Você também pode combinar múltiplas condições. Por exemplo: F1 == V1 || F1 == V2. Normalmente todos os operadores são interpretados da esquerda para a direita. Você pode mudar a ordem ao incluir parênteses. Por exemplo: F1 == V1 e (F2 == V2 || F2 == V3)",
     "fullname": "Nome Completo",
     "fullname": "Nome Completo",
     "header-logo-title": "Voltar para a lista de quadros.",
     "header-logo-title": "Voltar para a lista de quadros.",
     "hide-system-messages": "Esconde mensagens de sistema",
     "hide-system-messages": "Esconde mensagens de sistema",
@@ -264,17 +287,17 @@
     "leave-board-pop": "Tem a certeza de que pretende sair de __boardTitle__? Você será removido de todos os cartões neste quadro.",
     "leave-board-pop": "Tem a certeza de que pretende sair de __boardTitle__? Você será removido de todos os cartões neste quadro.",
     "leaveBoardPopup-title": "Sair do Quadro ?",
     "leaveBoardPopup-title": "Sair do Quadro ?",
     "link-card": "Vincular a este cartão",
     "link-card": "Vincular a este cartão",
-    "list-archive-cards": "Move all cards in this list to Recycle Bin",
-    "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
+    "list-archive-cards": "Mover todos os cartões nesta lista para a lixeira",
+    "list-archive-cards-pop": "Isso irá remover todos os cartões nesta lista do quadro. Para visualizar cartões na lixeira e trazê-los de volta ao quadro, clique em \"Menu\" > \"Lixeira\".",
     "list-move-cards": "Mover todos os cartões desta lista",
     "list-move-cards": "Mover todos os cartões desta lista",
     "list-select-cards": "Selecionar todos os cartões nesta lista",
     "list-select-cards": "Selecionar todos os cartões nesta lista",
     "listActionPopup-title": "Listar Ações",
     "listActionPopup-title": "Listar Ações",
-    "swimlaneActionPopup-title": "Swimlane Actions",
+    "swimlaneActionPopup-title": "Ações de Swimlane",
     "listImportCardPopup-title": "Importe um cartão do Trello",
     "listImportCardPopup-title": "Importe um cartão do Trello",
     "listMorePopup-title": "Mais",
     "listMorePopup-title": "Mais",
     "link-list": "Vincular a esta lista",
     "link-list": "Vincular a esta lista",
     "list-delete-pop": "Todas as ações serão removidas da lista de atividades e você não poderá recuperar a lista. Não há como desfazer.",
     "list-delete-pop": "Todas as ações serão removidas da lista de atividades e você não poderá recuperar a lista. Não há como desfazer.",
-    "list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.",
+    "list-delete-suggest-archive": "Você pode mover a lista para a lixeira para removê-la do quadro e preservar a atividade.",
     "lists": "Listas",
     "lists": "Listas",
     "swimlanes": "Swimlanes",
     "swimlanes": "Swimlanes",
     "log-out": "Sair",
     "log-out": "Sair",
@@ -294,9 +317,9 @@
     "muted-info": "Você nunca receberá qualquer notificação desse board",
     "muted-info": "Você nunca receberá qualquer notificação desse board",
     "my-boards": "Meus Quadros",
     "my-boards": "Meus Quadros",
     "name": "Nome",
     "name": "Nome",
-    "no-archived-cards": "No cards in Recycle Bin.",
-    "no-archived-lists": "No lists in Recycle Bin.",
-    "no-archived-swimlanes": "No swimlanes in Recycle Bin.",
+    "no-archived-cards": "Não há cartões na lixeira",
+    "no-archived-lists": "Não há listas na lixeira",
+    "no-archived-swimlanes": "Não há swimlanes na lixeira",
     "no-results": "Nenhum resultado.",
     "no-results": "Nenhum resultado.",
     "normal": "Normal",
     "normal": "Normal",
     "normal-desc": "Pode ver e editar cartões. Não pode alterar configurações.",
     "normal-desc": "Pode ver e editar cartões. Não pode alterar configurações.",
@@ -361,11 +384,12 @@
     "overtime-hours": "Tempo extras (Horas)",
     "overtime-hours": "Tempo extras (Horas)",
     "overtime": "Tempo extras",
     "overtime": "Tempo extras",
     "has-overtime-cards": "Tem cartões de horas extras",
     "has-overtime-cards": "Tem cartões de horas extras",
-    "has-spenttime-cards": "Has spent time cards",
+    "has-spenttime-cards": "Gastou cartões de tempo",
     "time": "Tempo",
     "time": "Tempo",
     "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": "Tipo",
     "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",
@@ -374,12 +398,12 @@
     "uploaded-avatar": "Avatar carregado",
     "uploaded-avatar": "Avatar carregado",
     "username": "Nome de usuário",
     "username": "Nome de usuário",
     "view-it": "Visualizar",
     "view-it": "Visualizar",
-    "warn-list-archived": "warning: this card is in an list at Recycle Bin",
+    "warn-list-archived": "Aviso: este cartão está em uma lista na lixeira",
     "watch": "Observar",
     "watch": "Observar",
     "watching": "Observando",
     "watching": "Observando",
     "watching-info": "Você será notificado em qualquer alteração desse board",
     "watching-info": "Você será notificado em qualquer alteração desse board",
     "welcome-board": "Board de Boas Vindas",
     "welcome-board": "Board de Boas Vindas",
-    "welcome-swimlane": "Milestone 1",
+    "welcome-swimlane": "Marco 1",
     "welcome-list1": "Básico",
     "welcome-list1": "Básico",
     "welcome-list2": "Avançado",
     "welcome-list2": "Avançado",
     "what-to-do": "O que você gostaria de fazer?",
     "what-to-do": "O que você gostaria de fazer?",
@@ -430,18 +454,25 @@
     "hours": "horas",
     "hours": "horas",
     "minutes": "minutos",
     "minutes": "minutos",
     "seconds": "segundos",
     "seconds": "segundos",
+    "show-field-on-card": "Mostrar este campo no cartão",
     "yes": "Sim",
     "yes": "Sim",
     "no": "Não",
     "no": "Não",
     "accounts": "Contas",
     "accounts": "Contas",
     "accounts-allowEmailChange": "Permitir Mudança de Email",
     "accounts-allowEmailChange": "Permitir Mudança de Email",
-    "accounts-allowUserNameChange": "Allow Username Change",
+    "accounts-allowUserNameChange": "Permitir alteração de nome de usuário",
     "createdAt": "Criado em",
     "createdAt": "Criado em",
     "verified": "Verificado",
     "verified": "Verificado",
     "active": "Ativo",
     "active": "Ativo",
-    "card-received": "Received",
-    "card-received-on": "Received on",
-    "card-end": "End",
-    "card-end-on": "Ends on",
-    "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "card-received": "Recebido",
+    "card-received-on": "Recebido em",
+    "card-end": "Fim",
+    "card-end-on": "Termina em",
+    "editCardReceivedDatePopup-title": "Modificar data de recebimento",
+    "editCardEndDatePopup-title": "Mudar data de fim",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 34 - 3
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": "Расширенный фильтр позволяет написать строку, содержащую следующие операторы: ==! = <=> = && || () Пространство используется как разделитель между Операторами. Вы можете фильтровать все пользовательские поля, введя их имена и значения. Например: Field1 == Value1. Примечание. Если поля или значения содержат пробелы, вам необходимо инкапсулировать их в одинарные кавычки. Например: «Поле 1» == «Значение 1». Также вы можете комбинировать несколько условий. Например: F1 == V1 || F1 = V2. Обычно все операторы интерпретируются слева направо. Вы можете изменить порядок, разместив скобки. Например: F1 == V1 и (F2 == V2 || F2 == V3)",
     "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": "создать настраиваемое поле",
     "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": "Редактировать настраиваемые поля",
     "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": "Изменить дату",
+    "cardCustomFieldsPopup-title": "редактировать настраиваемые поля",
     "cardDeletePopup-title": "Удалить карточку?",
     "cardDeletePopup-title": "Удалить карточку?",
     "cardDetailsActionsPopup-title": "Действия в карточке",
     "cardDetailsActionsPopup-title": "Действия в карточке",
     "cardLabelsPopup-title": "Метки",
     "cardLabelsPopup-title": "Метки",
@@ -161,17 +166,31 @@
     "copy-card-link-to-clipboard": "Копировать ссылку на карточку в буфер обмена",
     "copy-card-link-to-clipboard": "Копировать ссылку на карточку в буфер обмена",
     "copyCardPopup-title": "Копировать карточку",
     "copyCardPopup-title": "Копировать карточку",
     "copyChecklistToManyCardsPopup-title": "Копировать шаблон контрольного списка в несколько карточек",
     "copyChecklistToManyCardsPopup-title": "Копировать шаблон контрольного списка в несколько карточек",
-    "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+    "copyChecklistToManyCardsPopup-instructions": "Названия и описания целевых карт в формате JSON",
     "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
     "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
     "create": "Создать",
     "create": "Создать",
     "createBoardPopup-title": "Создать доску",
     "createBoardPopup-title": "Создать доску",
     "chooseBoardSourcePopup-title": "Импортировать доску",
     "chooseBoardSourcePopup-title": "Импортировать доску",
     "createLabelPopup-title": "Создать метку",
     "createLabelPopup-title": "Создать метку",
+    "createCustomField": "Создать поле",
+    "createCustomFieldPopup-title": "Создать поле",
     "current": "текущий",
     "current": "текущий",
+    "custom-field-delete-pop": "Отменить нельзя. Это удалит настраиваемое поле со всех карт и уничтожит его историю.",
+    "custom-field-checkbox": "Галочка",
+    "custom-field-date": "Дата",
+    "custom-field-dropdown": "Выпадающий список",
+    "custom-field-dropdown-none": "(нет)",
+    "custom-field-dropdown-options": "Параметры списка",
+    "custom-field-dropdown-options-placeholder": "Нажмите «Ввод», чтобы добавить дополнительные параметры.",
+    "custom-field-dropdown-unknown": "(неизвестно)",
+    "custom-field-number": "Номер",
+    "custom-field-text": "Текст",
+    "custom-fields": "Настраиваемые поля",
     "date": "Дата",
     "date": "Дата",
     "decline": "Отклонить",
     "decline": "Отклонить",
     "default-avatar": "Аватар по умолчанию",
     "default-avatar": "Аватар по умолчанию",
     "delete": "Удалить",
     "delete": "Удалить",
+    "deleteCustomFieldPopup-title": "Удалить настраиваемые поля?",
     "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": "Редактировать поле",
     "editCardSpentTimePopup-title": "Изменить затраченное время",
     "editCardSpentTimePopup-title": "Изменить затраченное время",
     "editLabelPopup-title": "Изменить метки",
     "editLabelPopup-title": "Изменить метки",
     "editNotificationPopup-title": "Редактировать уведомления",
     "editNotificationPopup-title": "Редактировать уведомления",
@@ -222,9 +242,12 @@
     "filter-clear": "Очистить фильтр",
     "filter-clear": "Очистить фильтр",
     "filter-no-label": "Нет метки",
     "filter-no-label": "Нет метки",
     "filter-no-member": "Нет участников",
     "filter-no-member": "Нет участников",
+    "filter-no-custom-fields": "Нет настраиваемых полей",
     "filter-on": "Включен фильтр",
     "filter-on": "Включен фильтр",
     "filter-on-desc": "Показываются карточки, соответствующие настройкам фильтра. Нажмите для редактирования.",
     "filter-on-desc": "Показываются карточки, соответствующие настройкам фильтра. Нажмите для редактирования.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Расширенный фильтр",
+    "advanced-filter-description": "Расширенный фильтр позволяет написать строку, содержащую следующие операторы: ==! = <=> = && || () Пространство используется как разделитель между Операторами. Вы можете фильтровать все пользовательские поля, введя их имена и значения. Например: Field1 == Value1. Примечание: Если поля или значения содержат пробелы, вам необходимо 'брать' их в одинарные кавычки. Например: 'Поле 1' == 'Значение 1'. Также вы можете комбинировать несколько условий. Например: F1 == V1 || F1 = V2. Обычно все операторы интерпретируются слева направо. Вы можете изменить порядок, разместив скобки. Например: F1 == V1 и (F2 == V2 || F2 == V3)",
     "fullname": "Полное имя",
     "fullname": "Полное имя",
     "header-logo-title": "Вернуться к доскам.",
     "header-logo-title": "Вернуться к доскам.",
     "hide-system-messages": "Скрыть системные сообщения",
     "hide-system-messages": "Скрыть системные сообщения",
@@ -366,6 +389,7 @@
     "title": "Название",
     "title": "Название",
     "tracking": "Отслеживание",
     "tracking": "Отслеживание",
     "tracking-info": "Вы будете уведомлены о любых изменениях в тех карточках, в которых вы являетесь создателем или участником.",
     "tracking-info": "Вы будете уведомлены о любых изменениях в тех карточках, в которых вы являетесь создателем или участником.",
+    "type": "Тип",
     "unassign-member": "Отменить назначение участника",
     "unassign-member": "Отменить назначение участника",
     "unsaved-description": "У вас есть несохраненное описание.",
     "unsaved-description": "У вас есть несохраненное описание.",
     "unwatch": "Перестать следить",
     "unwatch": "Перестать следить",
@@ -430,11 +454,12 @@
     "hours": "часы",
     "hours": "часы",
     "minutes": "минуты",
     "minutes": "минуты",
     "seconds": "секунды",
     "seconds": "секунды",
+    "show-field-on-card": "Показать это поле на карте",
     "yes": "Да",
     "yes": "Да",
     "no": "Нет",
     "no": "Нет",
     "accounts": "Учетные записи",
     "accounts": "Учетные записи",
     "accounts-allowEmailChange": "Разрешить изменение электронной почты",
     "accounts-allowEmailChange": "Разрешить изменение электронной почты",
-    "accounts-allowUserNameChange": "Allow Username Change",
+    "accounts-allowUserNameChange": "Разрешить изменение имени пользователя",
     "createdAt": "Создано на",
     "createdAt": "Создано на",
     "verified": "Проверено",
     "verified": "Проверено",
     "active": "Действующий",
     "active": "Действующий",
@@ -443,5 +468,11 @@
     "card-end": "Дата окончания",
     "card-end": "Дата окончания",
     "card-end-on": "Завершится до",
     "card-end-on": "Завершится до",
     "editCardReceivedDatePopup-title": "Изменить дату получения",
     "editCardReceivedDatePopup-title": "Изменить дату получения",
-    "editCardEndDatePopup-title": "Изменить дату завершения"
+    "editCardEndDatePopup-title": "Изменить дату завершения",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "Ova kartica ima %s komentar.",
     "card-comments-title": "Ova kartica ima %s komentar.",
     "card-delete-notice": "Brisanje je trajno. Izgubićeš sve akcije povezane sa ovom karticom.",
     "card-delete-notice": "Brisanje je trajno. Izgubićeš sve akcije povezane sa ovom karticom.",
     "card-delete-pop": "Sve akcije će biti uklonjene sa liste aktivnosti i kartica neće moći biti ponovo otvorena. Nema vraćanja unazad.",
     "card-delete-pop": "Sve akcije će biti uklonjene sa liste aktivnosti i kartica neće moći biti ponovo otvorena. Nema vraćanja unazad.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Krajnji datum",
     "card-due": "Krajnji datum",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "Nema oznake",
     "filter-no-label": "Nema oznake",
     "filter-no-member": "Nema člana",
     "filter-no-member": "Nema člana",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Sakrij sistemske poruke",
     "hide-system-messages": "Sakrij sistemske poruke",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 54 - 23
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": "skapa anpassat fält __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": "skapa anpassat fält %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",
@@ -45,7 +47,7 @@
     "add-attachment": "Lägg till bilaga",
     "add-attachment": "Lägg till bilaga",
     "add-board": "Lägg till anslagstavla",
     "add-board": "Lägg till anslagstavla",
     "add-card": "Lägg till kort",
     "add-card": "Lägg till kort",
-    "add-swimlane": "Add Swimlane",
+    "add-swimlane": "Lägg till simbana",
     "add-checklist": "Lägg till checklista",
     "add-checklist": "Lägg till checklista",
     "add-checklist-item": "Lägg till ett objekt till kontrollista",
     "add-checklist-item": "Lägg till ett objekt till kontrollista",
     "add-cover": "Lägg till omslag",
     "add-cover": "Lägg till omslag",
@@ -66,16 +68,16 @@
     "app-is-offline": "Wekan laddar, vänta. Uppdatering av sidan kommer att leda till förlust av data. Om Wekan inte laddas, kontrollera att Wekan-servern inte har stoppats.",
     "app-is-offline": "Wekan laddar, vänta. Uppdatering av sidan kommer att leda till förlust av data. Om Wekan inte laddas, kontrollera att Wekan-servern inte har stoppats.",
     "archive": "Flytta till papperskorgen",
     "archive": "Flytta till papperskorgen",
     "archive-all": "Flytta alla till papperskorgen",
     "archive-all": "Flytta alla till papperskorgen",
-    "archive-board": "Move Board to Recycle Bin",
-    "archive-card": "Move Card to Recycle Bin",
-    "archive-list": "Move List to Recycle Bin",
-    "archive-swimlane": "Move Swimlane to Recycle Bin",
-    "archive-selection": "Move selection to Recycle Bin",
-    "archiveBoardPopup-title": "Move Board to Recycle Bin?",
+    "archive-board": "Flytta anslagstavla till papperskorgen",
+    "archive-card": "Flytta kort till papperskorgen",
+    "archive-list": "Flytta lista till papperskorgen",
+    "archive-swimlane": "Flytta simbana till papperskorgen",
+    "archive-selection": "Flytta val till papperskorgen",
+    "archiveBoardPopup-title": "Flytta anslagstavla till papperskorgen?",
     "archived-items": "Papperskorgen",
     "archived-items": "Papperskorgen",
-    "archived-boards": "Boards in Recycle Bin",
+    "archived-boards": "Anslagstavlor i papperskorgen",
     "restore-board": "Återställ anslagstavla",
     "restore-board": "Återställ anslagstavla",
-    "no-archived-boards": "No Boards in Recycle Bin.",
+    "no-archived-boards": "Inga anslagstavlor i papperskorgen",
     "archives": "Papperskorgen",
     "archives": "Papperskorgen",
     "assign-member": "Tilldela medlem",
     "assign-member": "Tilldela medlem",
     "attached": "bifogad",
     "attached": "bifogad",
@@ -98,7 +100,7 @@
     "boardMenuPopup-title": "Anslagstavla meny",
     "boardMenuPopup-title": "Anslagstavla meny",
     "boards": "Anslagstavlor",
     "boards": "Anslagstavlor",
     "board-view": "Board View",
     "board-view": "Board View",
-    "board-view-swimlanes": "Swimlanes",
+    "board-view-swimlanes": "Simbanor",
     "board-view-lists": "Listor",
     "board-view-lists": "Listor",
     "bucket-example": "Gilla \"att-göra-innan-jag-dör-lista\" till exempel",
     "bucket-example": "Gilla \"att-göra-innan-jag-dör-lista\" till exempel",
     "cancel": "Avbryt",
     "cancel": "Avbryt",
@@ -106,11 +108,12 @@
     "card-comments-title": "Detta kort har %s kommentar.",
     "card-comments-title": "Detta kort har %s kommentar.",
     "card-delete-notice": "Ta bort är permanent. Du kommer att förlora alla åtgärder i samband med detta kort.",
     "card-delete-notice": "Ta bort är permanent. Du kommer att förlora alla åtgärder i samband med detta kort.",
     "card-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsflöde och du kommer inte att kunna öppna kortet igen. Det går inte att ångra.",
     "card-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsflöde och du kommer inte att kunna öppna kortet igen. Det går inte att ångra.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Förfaller",
     "card-due": "Förfaller",
     "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": "Redigera anpassade fält",
     "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": "Ändra datum",
+    "cardCustomFieldsPopup-title": "Redigera anpassade fält",
     "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",
@@ -161,17 +166,31 @@
     "copy-card-link-to-clipboard": "Kopiera kortlänk till urklipp",
     "copy-card-link-to-clipboard": "Kopiera kortlänk till urklipp",
     "copyCardPopup-title": "Kopiera kort",
     "copyCardPopup-title": "Kopiera kort",
     "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
     "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
-    "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+    "copyChecklistToManyCardsPopup-instructions": "Destinationskorttitlar och beskrivningar i detta JSON-format",
     "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
     "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
     "create": "Skapa",
     "create": "Skapa",
     "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": "Skapa fält",
+    "createCustomFieldPopup-title": "Skapa fält",
     "current": "aktuell",
     "current": "aktuell",
+    "custom-field-delete-pop": "Det går inte att ångra. Detta tar bort det här anpassade fältet från alla kort och förstör dess historia.",
+    "custom-field-checkbox": "Kryssruta",
+    "custom-field-date": "Datum",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(inga)",
+    "custom-field-dropdown-options": "Listalternativ",
+    "custom-field-dropdown-options-placeholder": "Tryck på enter för att lägga till fler alternativ",
+    "custom-field-dropdown-unknown": "(okänd)",
+    "custom-field-number": "Nummer",
+    "custom-field-text": "Text",
+    "custom-fields": "Anpassade fält",
     "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": "Ta bort anpassade fält?",
     "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": "Redigera fält",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Rensa filter",
     "filter-clear": "Rensa filter",
     "filter-no-label": "Ingen etikett",
     "filter-no-label": "Ingen etikett",
     "filter-no-member": "Ingen medlem",
     "filter-no-member": "Ingen medlem",
+    "filter-no-custom-fields": "Inga anpassade fält",
     "filter-on": "Filter är på",
     "filter-on": "Filter är på",
     "filter-on-desc": "Du filtrerar kort på denna anslagstavla. Klicka här för att redigera filter.",
     "filter-on-desc": "Du filtrerar kort på denna anslagstavla. Klicka här för att redigera filter.",
     "filter-to-selection": "Filter till val",
     "filter-to-selection": "Filter till val",
+    "advanced-filter-label": "Avancerat filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Namn",
     "fullname": "Namn",
     "header-logo-title": "Gå tillbaka till din anslagstavlor-sida.",
     "header-logo-title": "Gå tillbaka till din anslagstavlor-sida.",
     "hide-system-messages": "Göm systemmeddelanden",
     "hide-system-messages": "Göm systemmeddelanden",
@@ -269,14 +292,14 @@
     "list-move-cards": "Flytta alla kort i denna lista",
     "list-move-cards": "Flytta alla kort i denna lista",
     "list-select-cards": "Välj alla kort i denna lista",
     "list-select-cards": "Välj alla kort i denna lista",
     "listActionPopup-title": "Liståtgärder",
     "listActionPopup-title": "Liståtgärder",
-    "swimlaneActionPopup-title": "Swimlane Actions",
+    "swimlaneActionPopup-title": "Simbana-åtgärder",
     "listImportCardPopup-title": "Importera ett Trello kort",
     "listImportCardPopup-title": "Importera ett Trello kort",
     "listMorePopup-title": "Mera",
     "listMorePopup-title": "Mera",
     "link-list": "Länk till den här listan",
     "link-list": "Länk till den här listan",
     "list-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsmatningen och du kommer inte att kunna återställa listan. Det går inte att ångra.",
     "list-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsmatningen och du kommer inte att kunna återställa listan. Det går inte att ångra.",
-    "list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.",
+    "list-delete-suggest-archive": "Du kan flytta en lista till papperskorgen för att ta bort den från brädet och bevara aktiviteten.",
     "lists": "Listor",
     "lists": "Listor",
-    "swimlanes": "Swimlanes",
+    "swimlanes": "Simbanor ",
     "log-out": "Logga ut",
     "log-out": "Logga ut",
     "log-in": "Logga in",
     "log-in": "Logga in",
     "loginPopup-title": "Logga in",
     "loginPopup-title": "Logga in",
@@ -296,7 +319,7 @@
     "name": "Namn",
     "name": "Namn",
     "no-archived-cards": "Inga kort i papperskorgen.",
     "no-archived-cards": "Inga kort i papperskorgen.",
     "no-archived-lists": "Inga listor i papperskorgen.",
     "no-archived-lists": "Inga listor i papperskorgen.",
-    "no-archived-swimlanes": "No swimlanes in Recycle Bin.",
+    "no-archived-swimlanes": "Inga simbanor i papperskorgen.",
     "no-results": "Inga reslutat",
     "no-results": "Inga reslutat",
     "normal": "Normal",
     "normal": "Normal",
     "normal-desc": "Kan se och redigera kort. Kan inte ändra inställningar.",
     "normal-desc": "Kan se och redigera kort. Kan inte ändra inställningar.",
@@ -332,7 +355,7 @@
     "restore": "Återställ",
     "restore": "Återställ",
     "save": "Spara",
     "save": "Spara",
     "search": "Sök",
     "search": "Sök",
-    "search-cards": "Search from card titles and descriptions on this board",
+    "search-cards": "Sök från korttitlar och beskrivningar på det här brädet",
     "search-example": "Text att söka efter?",
     "search-example": "Text att söka efter?",
     "select-color": "Välj färg",
     "select-color": "Välj färg",
     "set-wip-limit-value": "Ange en gräns för det maximala antalet uppgifter i den här listan",
     "set-wip-limit-value": "Ange en gräns för det maximala antalet uppgifter i den här listan",
@@ -361,11 +384,12 @@
     "overtime-hours": "Övertid (timmar)",
     "overtime-hours": "Övertid (timmar)",
     "overtime": "Övertid",
     "overtime": "Övertid",
     "has-overtime-cards": "Har övertidskort",
     "has-overtime-cards": "Har övertidskort",
-    "has-spenttime-cards": "Has spent time cards",
+    "has-spenttime-cards": "Har spenderat tidkort",
     "time": "Tid",
     "time": "Tid",
     "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": "Skriv",
     "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",
@@ -374,7 +398,7 @@
     "uploaded-avatar": "Laddade upp en avatar",
     "uploaded-avatar": "Laddade upp en avatar",
     "username": "Änvandarnamn",
     "username": "Änvandarnamn",
     "view-it": "Visa det",
     "view-it": "Visa det",
-    "warn-list-archived": "warning: this card is in an list at Recycle Bin",
+    "warn-list-archived": "varning: det här kortet finns i en lista i papperskorgen",
     "watch": "Bevaka",
     "watch": "Bevaka",
     "watching": "Bevakar",
     "watching": "Bevakar",
     "watching-info": "Du kommer att meddelas om alla ändringar på denna anslagstavla",
     "watching-info": "Du kommer att meddelas om alla ändringar på denna anslagstavla",
@@ -430,18 +454,25 @@
     "hours": "timmar",
     "hours": "timmar",
     "minutes": "minuter",
     "minutes": "minuter",
     "seconds": "sekunder",
     "seconds": "sekunder",
+    "show-field-on-card": "Visa detta fält på kort",
     "yes": "Ja",
     "yes": "Ja",
     "no": "Nej",
     "no": "Nej",
     "accounts": "Konton",
     "accounts": "Konton",
     "accounts-allowEmailChange": "Tillåt e-poständring",
     "accounts-allowEmailChange": "Tillåt e-poständring",
-    "accounts-allowUserNameChange": "Allow Username Change",
+    "accounts-allowUserNameChange": "Tillåt användarnamnändring",
     "createdAt": "Skapad vid",
     "createdAt": "Skapad vid",
     "verified": "Verifierad",
     "verified": "Verifierad",
     "active": "Aktiv",
     "active": "Aktiv",
     "card-received": "Mottagen",
     "card-received": "Mottagen",
-    "card-received-on": "Received on",
+    "card-received-on": "Mottagen den",
     "card-end": "Slut",
     "card-end": "Slut",
-    "card-end-on": "Ends on",
+    "card-end-on": "Slutar den",
     "editCardReceivedDatePopup-title": "Ändra mottagningsdatum",
     "editCardReceivedDatePopup-title": "Ändra mottagningsdatum",
-    "editCardEndDatePopup-title": "Ändra slutdatum"
+    "editCardEndDatePopup-title": "Ändra slutdatum",
+    "assigned-by": "Tilldelad av",
+    "requested-by": "Efterfrågad av",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Ta bort anslagstavla?",
+    "delete-board": "Ta bort anslagstavla"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "การ์ดนี้มี %s ความเห็น.",
     "card-comments-title": "การ์ดนี้มี %s ความเห็น.",
     "card-delete-notice": "เป็นการลบถาวร คุณจะสูญเสียข้อมูลที่เกี่ยวข้องกับการ์ดนี้ทั้งหมด",
     "card-delete-notice": "เป็นการลบถาวร คุณจะสูญเสียข้อมูลที่เกี่ยวข้องกับการ์ดนี้ทั้งหมด",
     "card-delete-pop": "การดำเนินการทั้งหมดจะถูกลบจาก feed กิจกรรมและคุณไม่สามารถเปิดได้อีกครั้งหรือยกเลิกการทำ",
     "card-delete-pop": "การดำเนินการทั้งหมดจะถูกลบจาก feed กิจกรรมและคุณไม่สามารถเปิดได้อีกครั้งหรือยกเลิกการทำ",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "ครบกำหนด",
     "card-due": "ครบกำหนด",
     "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": "แก้ไขการแจ้งเตือน",
@@ -222,9 +242,12 @@
     "filter-clear": "ล้างตัวกรอง",
     "filter-clear": "ล้างตัวกรอง",
     "filter-no-label": "ไม่มีฉลาก",
     "filter-no-label": "ไม่มีฉลาก",
     "filter-no-member": "ไม่มีสมาชิก",
     "filter-no-member": "ไม่มีสมาชิก",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "กรองบน",
     "filter-on": "กรองบน",
     "filter-on-desc": "คุณกำลังกรองการ์ดในบอร์ดนี้ คลิกที่นี่เพื่อแก้ไขตัวกรอง",
     "filter-on-desc": "คุณกำลังกรองการ์ดในบอร์ดนี้ คลิกที่นี่เพื่อแก้ไขตัวกรอง",
     "filter-to-selection": "กรองตัวเลือก",
     "filter-to-selection": "กรองตัวเลือก",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "ชื่อ นามสกุล",
     "fullname": "ชื่อ นามสกุล",
     "header-logo-title": "ย้อนกลับไปที่หน้าบอร์ดของคุณ",
     "header-logo-title": "ย้อนกลับไปที่หน้าบอร์ดของคุณ",
     "hide-system-messages": "ซ่อนข้อความของระบบ",
     "hide-system-messages": "ซ่อนข้อความของระบบ",
@@ -366,6 +389,7 @@
     "title": "หัวข้อ",
     "title": "หัวข้อ",
     "tracking": "ติดตาม",
     "tracking": "ติดตาม",
     "tracking-info": "คุณจะได้รับแจ้งการเปลี่ยนแปลงใด ๆ กับการ์ดที่คุณมีส่วนร่วมในฐานะผู้สร้างหรือสมาชิก",
     "tracking-info": "คุณจะได้รับแจ้งการเปลี่ยนแปลงใด ๆ กับการ์ดที่คุณมีส่วนร่วมในฐานะผู้สร้างหรือสมาชิก",
+    "type": "Type",
     "unassign-member": "ยกเลิกสมาชิก",
     "unassign-member": "ยกเลิกสมาชิก",
     "unsaved-description": "คุณมีคำอธิบายที่ไม่ได้บันทึก",
     "unsaved-description": "คุณมีคำอธิบายที่ไม่ได้บันทึก",
     "unwatch": "เลิกเฝ้าดู",
     "unwatch": "เลิกเฝ้าดู",
@@ -430,6 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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": "__customField__ adlı özel alan yaratıldı",
     "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": "%s adlı özel alan yaratıldı",
     "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": "Özel alanları düzenle",
     "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": "Tarihi değiştir",
+    "cardCustomFieldsPopup-title": "Özel alanları düzenle",
     "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": "Alanı yarat",
+    "createCustomFieldPopup-title": "Alanı yarat",
     "current": "mevcut",
     "current": "mevcut",
+    "custom-field-delete-pop": "Bunun geri dönüşü yoktur. Bu özel alan tüm kartlardan kaldırılıp tarihçesi yokedilecektir.",
+    "custom-field-checkbox": "İşaret kutusu",
+    "custom-field-date": "Tarih",
+    "custom-field-dropdown": "Açılır liste",
+    "custom-field-dropdown-none": "(hiçbiri)",
+    "custom-field-dropdown-options": "Liste seçenekleri",
+    "custom-field-dropdown-options-placeholder": "Başka seçenekler eklemek için giriş tuşuna basınız",
+    "custom-field-dropdown-unknown": "(bilinmeyen)",
+    "custom-field-number": "Sayı",
+    "custom-field-text": "Metin",
+    "custom-fields": "Özel alanlar",
     "date": "Tarih",
     "date": "Tarih",
     "decline": "Reddet",
     "decline": "Reddet",
     "default-avatar": "Varsayılan avatar",
     "default-avatar": "Varsayılan avatar",
     "delete": "Sil",
     "delete": "Sil",
+    "deleteCustomFieldPopup-title": "Özel alan silinsin mi?",
     "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": "Alanı düzenle",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Filtreyi temizle",
     "filter-clear": "Filtreyi temizle",
     "filter-no-label": "Etiket yok",
     "filter-no-label": "Etiket yok",
     "filter-no-member": "Üye yok",
     "filter-no-member": "Üye yok",
+    "filter-no-custom-fields": "Hiç özel alan yok",
     "filter-on": "Filtre aktif",
     "filter-on": "Filtre aktif",
     "filter-on-desc": "Bu panodaki kartları filtreliyorsunuz. Fitreyi düzenlemek için tıklayın.",
     "filter-on-desc": "Bu panodaki kartları filtreliyorsunuz. Fitreyi düzenlemek için tıklayın.",
     "filter-to-selection": "Seçime göre filtreleme yap",
     "filter-to-selection": "Seçime göre filtreleme yap",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Ad Soyad",
     "fullname": "Ad Soyad",
     "header-logo-title": "Panolar sayfanıza geri dön.",
     "header-logo-title": "Panolar sayfanıza geri dön.",
     "hide-system-messages": "Sistem mesajlarını gizle",
     "hide-system-messages": "Sistem mesajlarını gizle",
@@ -366,6 +389,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": "Tür",
     "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,11 +454,12 @@
     "hours": "saat",
     "hours": "saat",
     "minutes": "dakika",
     "minutes": "dakika",
     "seconds": "saniye",
     "seconds": "saniye",
+    "show-field-on-card": "Bu alanı kartta göster",
     "yes": "Evet",
     "yes": "Evet",
     "no": "Hayır",
     "no": "Hayır",
     "accounts": "Hesaplar",
     "accounts": "Hesaplar",
     "accounts-allowEmailChange": "E-posta Değiştirmeye İzin Ver",
     "accounts-allowEmailChange": "E-posta Değiştirmeye İzin Ver",
-    "accounts-allowUserNameChange": "Allow Username Change",
+    "accounts-allowUserNameChange": "Kullanıcı adı değiştirmeye izin ver",
     "createdAt": "Oluşturulma tarihi",
     "createdAt": "Oluşturulma tarihi",
     "verified": "Doğrulanmış",
     "verified": "Doğrulanmış",
     "active": "Aktif",
     "active": "Aktif",
@@ -443,5 +468,11 @@
     "card-end": "Bitiş",
     "card-end": "Bitiş",
     "card-end-on": "Bitiş zamanı",
     "card-end-on": "Bitiş zamanı",
     "editCardReceivedDatePopup-title": "Giriş tarihini değiştir",
     "editCardReceivedDatePopup-title": "Giriş tarihini değiştir",
-    "editCardEndDatePopup-title": "Bitiş tarihini değiştir"
+    "editCardEndDatePopup-title": "Bitiş tarihini değiştir",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "This card has %s comment.",
     "card-comments-title": "This card has %s comment.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 33 - 2
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",
@@ -106,11 +108,12 @@
     "card-comments-title": "Thẻ này có %s bình luận.",
     "card-comments-title": "Thẻ này có %s bình luận.",
     "card-delete-notice": "Hành động xóa là không thể khôi phục. Bạn sẽ mất hết các hoạt động liên quan đến thẻ này.",
     "card-delete-notice": "Hành động xóa là không thể khôi phục. Bạn sẽ mất hết các hoạt động liên quan đến thẻ này.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "Due",
     "card-due": "Due",
     "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",
@@ -222,9 +242,12 @@
     "filter-clear": "Clear filter",
     "filter-clear": "Clear filter",
     "filter-no-label": "No label",
     "filter-no-label": "No label",
     "filter-no-member": "No member",
     "filter-no-member": "No member",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "Filter is on",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "filter-to-selection": "Filter to selection",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "Full Name",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
     "header-logo-title": "Go back to your boards page.",
     "hide-system-messages": "Hide system messages",
     "hide-system-messages": "Hide system messages",
@@ -366,6 +389,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 +454,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",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 32 - 1
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": "创建了自定义字段 __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": "创建了自定义字段 %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": "编辑自定义字段",
     "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": "修改日期",
+    "cardCustomFieldsPopup-title": "编辑自定义字段",
     "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": "创建字段",
+    "createCustomFieldPopup-title": "创建字段",
     "current": "当前",
     "current": "当前",
+    "custom-field-delete-pop": "没有撤销,此动作将从所有卡片中移除自定义字段并销毁历史。",
+    "custom-field-checkbox": "选择框",
+    "custom-field-date": "日期",
+    "custom-field-dropdown": "下拉列表",
+    "custom-field-dropdown-none": "(无)",
+    "custom-field-dropdown-options": "列表选项",
+    "custom-field-dropdown-options-placeholder": "回车可以加入更多选项",
+    "custom-field-dropdown-unknown": "(未知)",
+    "custom-field-number": "数字",
+    "custom-field-text": "文本",
+    "custom-fields": "自定义字段",
     "date": "日期",
     "date": "日期",
     "decline": "拒绝",
     "decline": "拒绝",
     "default-avatar": "默认头像",
     "default-avatar": "默认头像",
     "delete": "删除",
     "delete": "删除",
+    "deleteCustomFieldPopup-title": "删除自定义字段?",
     "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": "编辑字段",
     "editCardSpentTimePopup-title": "修改耗时",
     "editCardSpentTimePopup-title": "修改耗时",
     "editLabelPopup-title": "更改标签",
     "editLabelPopup-title": "更改标签",
     "editNotificationPopup-title": "编辑通知",
     "editNotificationPopup-title": "编辑通知",
@@ -222,9 +242,12 @@
     "filter-clear": "清空过滤器",
     "filter-clear": "清空过滤器",
     "filter-no-label": "无标签",
     "filter-no-label": "无标签",
     "filter-no-member": "无成员",
     "filter-no-member": "无成员",
+    "filter-no-custom-fields": "无自定义字段",
     "filter-on": "过滤器启用",
     "filter-on": "过滤器启用",
     "filter-on-desc": "你正在过滤该看板上的卡片,点此编辑过滤。",
     "filter-on-desc": "你正在过滤该看板上的卡片,点此编辑过滤。",
     "filter-to-selection": "要选择的过滤器",
     "filter-to-selection": "要选择的过滤器",
+    "advanced-filter-label": "高级过滤器",
+    "advanced-filter-description": "高级过滤器可以使用包含如下操作符的字符串进行过滤:== != <= >= && || ( ) 。操作符之间用空格隔开。输入字段名和数值就可以过滤所有自定义字段。例如:Field1 == Value1. 注意如果字段名或数值包含空格,需要用单引号。例如: 'Field 1' == 'Value 1'。支持组合使用多个条件,例如: F1 == V1 || F1 = V2。通常以从左到右的顺序进行判断。可以通过括号修改顺序,例如:F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "全称",
     "fullname": "全称",
     "header-logo-title": "返回您的看板页",
     "header-logo-title": "返回您的看板页",
     "hide-system-messages": "隐藏系统消息",
     "hide-system-messages": "隐藏系统消息",
@@ -366,6 +389,7 @@
     "title": "标题",
     "title": "标题",
     "tracking": "跟踪",
     "tracking": "跟踪",
     "tracking-info": "当任何包含您(作为创建者或成员)的卡片发生变更时,您将得到通知。",
     "tracking-info": "当任何包含您(作为创建者或成员)的卡片发生变更时,您将得到通知。",
+    "type": "类型",
     "unassign-member": "取消分配成员",
     "unassign-member": "取消分配成员",
     "unsaved-description": "存在未保存的描述",
     "unsaved-description": "存在未保存的描述",
     "unwatch": "取消关注",
     "unwatch": "取消关注",
@@ -430,6 +454,7 @@
     "hours": "小时",
     "hours": "小时",
     "minutes": "分钟",
     "minutes": "分钟",
     "seconds": "秒",
     "seconds": "秒",
+    "show-field-on-card": "在卡片上显示此字段",
     "yes": "是",
     "yes": "是",
     "no": "否",
     "no": "否",
     "accounts": "账号",
     "accounts": "账号",
@@ -443,5 +468,11 @@
     "card-end": "终止",
     "card-end": "终止",
     "card-end-on": "终止于",
     "card-end-on": "终止于",
     "editCardReceivedDatePopup-title": "修改接收日期",
     "editCardReceivedDatePopup-title": "修改接收日期",
-    "editCardEndDatePopup-title": "修改终止日期"
+    "editCardEndDatePopup-title": "修改终止日期",
+    "assigned-by": "分配人",
+    "requested-by": "需求人",
+    "board-delete-notice": "删除时永久操作,将会丢失此看板上的所有列表、卡片和动作。",
+    "delete-board-confirm-popup": "所有列表、卡片、标签和活动都回被删除,将无法恢复看板内容。不支持撤销。",
+    "boardDeletePopup-title": "删除看板?",
+    "delete-board": "删除看板"
 }
 }

+ 33 - 2
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 中",
@@ -106,11 +108,12 @@
     "card-comments-title": "該卡片有 %s 則評論",
     "card-comments-title": "該卡片有 %s 則評論",
     "card-delete-notice": "徹底刪除的操作不可復原,你將會遺失該卡片相關的所有操作記錄。",
     "card-delete-notice": "徹底刪除的操作不可復原,你將會遺失該卡片相關的所有操作記錄。",
     "card-delete-pop": "所有的動作將從活動動態中被移除且您將無法重新打開該卡片。此操作無法復原。",
     "card-delete-pop": "所有的動作將從活動動態中被移除且您將無法重新打開該卡片。此操作無法復原。",
-    "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
     "card-due": "到期",
     "card-due": "到期",
     "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": "更改通知",
@@ -222,9 +242,12 @@
     "filter-clear": "清空過濾條件",
     "filter-clear": "清空過濾條件",
     "filter-no-label": "沒有標籤",
     "filter-no-label": "沒有標籤",
     "filter-no-member": "沒有成員",
     "filter-no-member": "沒有成員",
+    "filter-no-custom-fields": "No Custom Fields",
     "filter-on": "過濾條件啟用",
     "filter-on": "過濾條件啟用",
     "filter-on-desc": "你正在過濾該看板上的卡片,點此編輯過濾條件。",
     "filter-on-desc": "你正在過濾該看板上的卡片,點此編輯過濾條件。",
     "filter-to-selection": "要選擇的過濾條件",
     "filter-to-selection": "要選擇的過濾條件",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )",
     "fullname": "全稱",
     "fullname": "全稱",
     "header-logo-title": "返回您的看板頁面",
     "header-logo-title": "返回您的看板頁面",
     "hide-system-messages": "隱藏系統訊息",
     "hide-system-messages": "隱藏系統訊息",
@@ -366,6 +389,7 @@
     "title": "標題",
     "title": "標題",
     "tracking": "追蹤",
     "tracking": "追蹤",
     "tracking-info": "你將會收到與你有關的卡片的所有變更通知",
     "tracking-info": "你將會收到與你有關的卡片的所有變更通知",
+    "type": "Type",
     "unassign-member": "取消分配成員",
     "unassign-member": "取消分配成員",
     "unsaved-description": "未儲存的描述",
     "unsaved-description": "未儲存的描述",
     "unwatch": "取消觀察",
     "unwatch": "取消觀察",
@@ -430,6 +454,7 @@
     "hours": "小時",
     "hours": "小時",
     "minutes": "分鐘",
     "minutes": "分鐘",
     "seconds": "秒",
     "seconds": "秒",
+    "show-field-on-card": "Show this field on card",
     "yes": "是",
     "yes": "是",
     "no": "否",
     "no": "否",
     "accounts": "帳號",
     "accounts": "帳號",
@@ -443,5 +468,11 @@
     "card-end": "End",
     "card-end": "End",
     "card-end-on": "Ends on",
     "card-end-on": "Ends on",
     "editCardReceivedDatePopup-title": "Change received date",
     "editCardReceivedDatePopup-title": "Change received date",
-    "editCardEndDatePopup-title": "Change end date"
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-by": "Requested By",
+    "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+    "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+    "boardDeletePopup-title": "Delete Board?",
+    "delete-board": "Delete Board"
 }
 }

+ 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,
     });
     });
-  }
+  });
+}

+ 3 - 0
models/boards.js

@@ -94,6 +94,9 @@ Boards.attachSchema(new SimpleSchema({
     allowedValues: [
     allowedValues: [
       'green', 'yellow', 'orange', 'red', 'purple',
       'green', 'yellow', 'orange', 'red', 'purple',
       'blue', 'sky', 'lime', 'pink', 'black',
       'blue', 'sky', 'lime', 'pink', 'black',
+      'silver', 'peachpuff', 'crimson', 'plum', 'darkgreen',
+      'slateblue', 'magenta', 'gold', 'navy', 'gray',
+      'saddlebrown', 'paleturquoise', 'mistyrose', 'indigo',
     ],
     ],
   },
   },
   // XXX We might want to maintain more informations under the member sub-
   // XXX We might want to maintain more informations under the member sub-

+ 34 - 3
models/cards.js

@@ -66,6 +66,14 @@ Cards.attachSchema(new SimpleSchema({
     type: String,
     type: String,
     optional: true,
     optional: true,
   },
   },
+  requestedBy: {
+    type: String,
+    optional: true,
+  },
+  assignedBy: {
+    type: String,
+    optional: true,
+  },
   labelIds: {
   labelIds: {
     type: [String],
     type: [String],
     optional: true,
     optional: true,
@@ -220,13 +228,28 @@ Cards.helpers({
     }).fetch();
     }).fetch();
 
 
     // match right definition to each field
     // match right definition to each field
+    if (!this.customFields) return [];
     return this.customFields.map((customField) => {
     return this.customFields.map((customField) => {
+      const definition = definitions.find((definition) => {
+        return definition._id === customField._id;
+      });
+      //search for "True Value" which is for DropDowns other then the Value (which is the id)
+      let trueValue = customField.value;
+      if (definition.settings.dropdownItems && definition.settings.dropdownItems.length > 0)
+      {
+        for (let i = 0; i < definition.settings.dropdownItems.length; i++)
+        {
+          if (definition.settings.dropdownItems[i]._id === customField.value)
+          {
+            trueValue = definition.settings.dropdownItems[i].name;
+          }
+        }
+      }
       return {
       return {
         _id: customField._id,
         _id: customField._id,
         value: customField.value,
         value: customField.value,
-        definition: definitions.find((definition) => {
-          return definition._id === customField._id;
-        }),
+        trueValue,
+        definition,
       };
       };
     });
     });
 
 
@@ -267,6 +290,14 @@ Cards.mutations({
     return {$set: {description}};
     return {$set: {description}};
   },
   },
 
 
+  setRequestedBy(requestedBy) {
+    return {$set: {requestedBy}};
+  },
+
+  setAssignedBy(assignedBy) {
+    return {$set: {assignedBy}};
+  },
+
   move(swimlaneId, listId, sortIndex) {
   move(swimlaneId, listId, sortIndex) {
     const list = Lists.findOne(listId);
     const list = Lists.findOne(listId);
     const mutatedFields = {
     const mutatedFields = {

+ 2 - 3
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "wekan",
   "name": "wekan",
-  "version": "0.95.0",
+  "version": "1.04.0",
   "description": "The open-source Trello-like kanban",
   "description": "The open-source Trello-like kanban",
   "private": true,
   "private": true,
   "scripts": {
   "scripts": {
@@ -20,11 +20,10 @@
   },
   },
   "homepage": "https://wekan.github.io",
   "homepage": "https://wekan.github.io",
   "devDependencies": {
   "devDependencies": {
-    "eslint": "^2.0.0"
+    "eslint": "^4.19.1"
   },
   },
   "dependencies": {
   "dependencies": {
     "babel-runtime": "^6.26.0",
     "babel-runtime": "^6.26.0",
-    "bcrypt": "^2.0.1",
     "bson-ext": "^2.0.0",
     "bson-ext": "^2.0.0",
     "es6-promise": "^4.2.4",
     "es6-promise": "^4.2.4",
     "meteor-node-stubs": "^0.4.1",
     "meteor-node-stubs": "^0.4.1",

+ 2 - 2
sandstorm-pkgdef.capnp

@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
     appTitle = (defaultText = "Wekan"),
     appTitle = (defaultText = "Wekan"),
     # The name of the app as it is displayed to the user.
     # The name of the app as it is displayed to the user.
 
 
-    appVersion = 80,
+    appVersion = 89,
     # Increment this for every release.
     # Increment this for every release.
 
 
-    appMarketingVersion = (defaultText = "0.95.0~2018-05-08"),
+    appMarketingVersion = (defaultText = "1.04.0~2018-06-12"),
     # Human-readable presentation of the app version.
     # Human-readable presentation of the app version.
 
 
     minUpgradableAppVersion = 0,
     minUpgradableAppVersion = 0,

+ 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));
     })();
     })();
   }
   }
 
 

+ 40 - 13
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
       );
       );
     }
     }
   });
   });
@@ -193,7 +193,7 @@ Migrations.add('add-checklist-items', () => {
     // Create new items
     // Create new items
     _.sortBy(checklist.items, 'sort').forEach((item, index) => {
     _.sortBy(checklist.items, 'sort').forEach((item, index) => {
       ChecklistItems.direct.insert({
       ChecklistItems.direct.insert({
-        title: checklist.title,
+        title: item.title,
         sort: index,
         sort: index,
         isFinished: item.isFinished,
         isFinished: item.isFinished,
         checklistId: checklist._id,
         checklistId: checklist._id,
@@ -211,12 +211,14 @@ Migrations.add('add-checklist-items', () => {
 
 
 Migrations.add('add-profile-view', () => {
 Migrations.add('add-profile-view', () => {
   Users.find().forEach((user) => {
   Users.find().forEach((user) => {
-    // Set default view
-    Users.direct.update(
-      { _id: user._id },
-      { $set: { 'profile.boardView': 'board-view-lists' } },
-      noValidate
-    );
+    if (!user.hasOwnProperty('profile.boardView')) {
+      // Set default view
+      Users.direct.update(
+        { _id: user._id },
+        { $set: { 'profile.boardView': 'board-view-lists' } },
+        noValidate
+      );
+    }
   });
   });
 });
 });
 
 
@@ -231,3 +233,28 @@ Migrations.add('add-custom-fields-to-cards', () => {
     },
     },
   }, noValidateMulti);
   }, noValidateMulti);
 });
 });
+
+Migrations.add('add-requester-field', () => {
+  Cards.update({
+    requestedBy: {
+      $exists: false,
+    },
+  }, {
+    $set: {
+      requestedBy:'',
+    },
+  }, noValidateMulti);
+});
+
+Migrations.add('add-assigner-field', () => {
+  Cards.update({
+    assignedBy: {
+      $exists: false,
+    },
+  }, {
+    $set: {
+      assignedBy:'',
+    },
+  }, noValidateMulti);
+});
+

+ 23 - 5
server/publications/people.js

@@ -1,7 +1,25 @@
-Meteor.publish('people', (limit) => {
+Meteor.publish('people', function(limit) {
   check(limit, Number);
   check(limit, Number);
-  return Users.find({}, {
-    limit,
-    sort: {createdAt: -1},
-  });
+
+  if (!Match.test(this.userId, String)) {
+    return [];
+  }
+
+  const user = Users.findOne(this.userId);
+  if (user && user.isAdmin) {
+    return Users.find({}, {
+      limit,
+      sort: {createdAt: -1},
+      fields: {
+        'username': 1,
+        'profile.fullname': 1,
+        'isAdmin': 1,
+        'emails': 1,
+        'createdAt': 1,
+        'loginDisabled': 1,
+      },
+    });
+  } else {
+    return [];
+  }
 });
 });

+ 17 - 8
snapcraft.yaml

@@ -65,7 +65,7 @@ apps:
 
 
 parts:
 parts:
     mongodb:
     mongodb:
-        source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.19.tgz
+        source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.20.tgz
         plugin: dump
         plugin: dump
         stage-packages: [libssl1.0.0]
         stage-packages: [libssl1.0.0]
         filesets:
         filesets:
@@ -83,7 +83,7 @@ parts:
         plugin: nodejs
         plugin: nodejs
         node-engine: 8.11.1
         node-engine: 8.11.1
         node-packages:
         node-packages:
-            - npm@5.5.1
+            - npm
             - node-gyp
             - node-gyp
             - node-pre-gyp
             - node-pre-gyp
             - fibers@2.0.0
             - fibers@2.0.0
@@ -96,6 +96,8 @@ parts:
             - npm
             - npm
             - curl
             - curl
             - execstack
             - execstack
+        stage-packages:
+            - libfontconfig1
         override-build: |
         override-build: |
             echo "Cleaning environment first"
             echo "Cleaning environment first"
             rm -rf ~/.meteor ~/.npm /usr/local/lib/node_modules
             rm -rf ~/.meteor ~/.npm /usr/local/lib/node_modules
@@ -109,7 +111,7 @@ parts:
             # Download node version 8.11.1 that has fix included, node binary copied from Sandstorm
             # Download node version 8.11.1 that has fix included, node binary copied from Sandstorm
             # Description at https://releases.wekan.team/node.txt
             # Description at https://releases.wekan.team/node.txt
             # SHA256SUM: 18c99d5e79e2fe91e75157a31be30e5420787213684d4048eb91e602e092725d
             # SHA256SUM: 18c99d5e79e2fe91e75157a31be30e5420787213684d4048eb91e602e092725d
-            echo "18c99d5e79e2fe91e75157a31be30e5420787213684d4048eb91e602e092725d  node" >> node-SHASUMS256.txt.asc
+            echo "5f2703af5f7bd48e85fc8ed32d61de7c7cf81c53d0dcd73f6c218ed87e950fae  node" >> node-SHASUMS256.txt.asc
             curl https://releases.wekan.team/node -o node
             curl https://releases.wekan.team/node -o node
             # Verify Fibers patched node authenticity
             # Verify Fibers patched node authenticity
             echo "Fibers 100% CPU issue patched node authenticity:"
             echo "Fibers 100% CPU issue patched node authenticity:"
@@ -138,13 +140,18 @@ parts:
             meteor npm install --allow-superuser
             meteor npm install --allow-superuser
             meteor build .build --directory --allow-superuser
             meteor build .build --directory --allow-superuser
             cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
             cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
-            cd .build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
-            rm -rf node_modules/bcrypt
-            meteor npm install --save bcrypt
+            #Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
+            #https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
+            #https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
+            #cd .build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
+            #rm -rf node_modules/bcrypt
+            #meteor npm install --save bcrypt
+            # Change from npm-bcrypt directory back to .build/bundle/programs/server directory.
+            #cd ../../../../
             # Change to directory .build/bundle/programs/server
             # Change to directory .build/bundle/programs/server
-            cd ../../../../
+            cd .build/bundle/programs/server
             npm install
             npm install
-            meteor npm install --save bcrypt
+            #meteor npm install --save bcrypt
             # Change back to Wekan source directory
             # Change back to Wekan source directory
             cd ../../../..
             cd ../../../..
             cp -r .build/bundle/* $SNAPCRAFT_PART_INSTALL/
             cp -r .build/bundle/* $SNAPCRAFT_PART_INSTALL/
@@ -153,6 +160,8 @@ parts:
             execstack --clear-execstack $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
             execstack --clear-execstack $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
         organize:
         organize:
             README: README.wekan
             README: README.wekan
+        prime:
+            - -lib/node_modules/node-pre-gyp/node_modules/tar/lib/.unpack.js.swp
 
 
     helpers:
     helpers:
         source: snap-src
         source: snap-src