فهرست منبع

Merge remote-tracking branch 'upstream/devel' into devel

Lauri Ojansivu 7 سال پیش
والد
کامیت
188341cf50

+ 16 - 14
.meteor/packages

@@ -3,13 +3,13 @@
 # 'meteor add' and 'meteor remove' will edit this file for you,
 # 'meteor add' and 'meteor remove' will edit this file for you,
 # but you can also edit it by hand.
 # but you can also edit it by hand.
 
 
-meteor-base@1.0.4
+meteor-base@1.2.0
 
 
 # Build system
 # Build system
-ecmascript@0.7.2
-stylus@2.513.9
-standard-minifier-css@1.3.4
-standard-minifier-js@2.0.0
+ecmascript@0.9.0
+stylus@2.513.13
+standard-minifier-css@1.3.5
+standard-minifier-js@2.2.0
 mquandalle:jade
 mquandalle:jade
 
 
 # Polyfills
 # Polyfills
@@ -17,18 +17,16 @@ es5-shim@4.6.15
 
 
 # Collections
 # Collections
 aldeed:collection2
 aldeed:collection2
-cfs:gridfs
 cfs:standard-packages
 cfs:standard-packages
 cottz:publish-relations
 cottz:publish-relations
 dburles:collection-helpers
 dburles:collection-helpers
 idmontie:migrations
 idmontie:migrations
 matb33:collection-hooks
 matb33:collection-hooks
 matteodem:easy-search
 matteodem:easy-search
-mongo@1.1.16
+mongo@1.3.1
 mquandalle:collection-mutations
 mquandalle:collection-mutations
 
 
 # Account system
 # Account system
-accounts-password@1.3.5
 kenton:accounts-sandstorm
 kenton:accounts-sandstorm
 service-configuration@1.0.11
 service-configuration@1.0.11
 useraccounts:unstyled
 useraccounts:unstyled
@@ -38,9 +36,9 @@ useraccounts:flow-routing
 check@1.2.5
 check@1.2.5
 jquery@1.11.10
 jquery@1.11.10
 random@1.0.10
 random@1.0.10
-reactive-dict@1.1.8
+reactive-dict@1.2.0
 session@1.1.7
 session@1.1.7
-tracker@1.1.2
+tracker@1.1.3
 underscore@1.0.10
 underscore@1.0.10
 3stack:presence
 3stack:presence
 alethes:pages
 alethes:pages
@@ -48,7 +46,6 @@ arillo:flow-router-helpers
 audit-argument-checks@1.0.7
 audit-argument-checks@1.0.7
 kadira:blaze-layout
 kadira:blaze-layout
 kadira:dochead
 kadira:dochead
-meteorhacks:fast-render
 meteorhacks:picker
 meteorhacks:picker
 meteorhacks:subs-manager
 meteorhacks:subs-manager
 mquandalle:autofocus
 mquandalle:autofocus
@@ -56,7 +53,7 @@ mquandalle:moment
 ongoworks:speakingurl
 ongoworks:speakingurl
 raix:handlebar-helpers
 raix:handlebar-helpers
 tap:i18n
 tap:i18n
-http
+http@1.3.0
 
 
 # UI components
 # UI components
 blaze
 blaze
@@ -74,10 +71,15 @@ templates:tabs
 verron:autosize
 verron:autosize
 simple:json-routes
 simple:json-routes
 rajit:bootstrap3-datepicker
 rajit:bootstrap3-datepicker
-kadira:flow-router
-shell-server@0.2.3
+shell-server@0.3.0
 simple:rest-accounts-password
 simple:rest-accounts-password
 useraccounts:core
 useraccounts:core
 email@1.2.3
 email@1.2.3
 horka:swipebox
 horka:swipebox
+dynamic-import@0.2.0
+staringatlights:fast-render
+staringatlights:flow-router
+
 mixmax:smart-disconnect
 mixmax:smart-disconnect
+accounts-password@1.5.0
+cfs:gridfs

+ 1 - 1
.meteor/release

@@ -1 +1 @@
-METEOR@1.4.4.1
+METEOR@1.6.0.1

+ 51 - 45
.meteor/versions

@@ -1,23 +1,23 @@
-3stack:presence@1.0.5
-accounts-base@1.2.16
-accounts-password@1.3.5
+3stack:presence@1.1.2
+accounts-base@1.4.0
+accounts-password@1.5.0
 aldeed:collection2@2.10.0
 aldeed:collection2@2.10.0
 aldeed:collection2-core@1.2.0
 aldeed:collection2-core@1.2.0
 aldeed:schema-deny@1.1.0
 aldeed:schema-deny@1.1.0
 aldeed:schema-index@1.1.1
 aldeed:schema-index@1.1.1
 aldeed:simple-schema@1.5.3
 aldeed:simple-schema@1.5.3
 alethes:pages@1.8.6
 alethes:pages@1.8.6
-allow-deny@1.0.9
+allow-deny@1.1.0
 arillo:flow-router-helpers@0.5.2
 arillo:flow-router-helpers@0.5.2
 audit-argument-checks@1.0.7
 audit-argument-checks@1.0.7
 autoupdate@1.3.12
 autoupdate@1.3.12
-babel-compiler@6.18.2
-babel-runtime@1.0.1
+babel-compiler@6.24.7
+babel-runtime@1.1.1
 base64@1.0.10
 base64@1.0.10
 binary-heap@1.0.10
 binary-heap@1.0.10
 blaze@2.3.2
 blaze@2.3.2
 blaze-tools@1.0.10
 blaze-tools@1.0.10
-boilerplate-generator@1.0.11
+boilerplate-generator@1.3.1
 caching-compiler@1.1.9
 caching-compiler@1.1.9
 caching-html-compiler@1.1.2
 caching-html-compiler@1.1.2
 callback-hook@1.0.10
 callback-hook@1.0.10
@@ -27,7 +27,7 @@ cfs:collection@0.5.5
 cfs:collection-filters@0.2.4
 cfs:collection-filters@0.2.4
 cfs:data-man@0.0.6
 cfs:data-man@0.0.6
 cfs:file@0.1.17
 cfs:file@0.1.17
-cfs:gridfs@0.0.33
+cfs:gridfs@0.0.34
 cfs:http-methods@0.0.32
 cfs:http-methods@0.0.32
 cfs:http-publish@0.0.13
 cfs:http-publish@0.0.13
 cfs:power-queue@0.9.11
 cfs:power-queue@0.9.11
@@ -40,19 +40,23 @@ cfs:upload-http@0.0.20
 cfs:worker@0.1.4
 cfs:worker@0.1.4
 check@1.2.5
 check@1.2.5
 chuangbo:cookie@1.1.0
 chuangbo:cookie@1.1.0
-coffeescript@1.12.3_1
-cottz:publish-relations@2.0.7
+coffeescript@1.12.7_3
+coffeescript-compiler@1.12.7_3
+cottz:publish-relations@2.0.8
 dburles:collection-helpers@1.1.0
 dburles:collection-helpers@1.1.0
-ddp@1.2.5
-ddp-client@1.3.4
-ddp-common@1.2.8
+ddp@1.4.0
+ddp-client@2.2.0
+ddp-common@1.3.0
 ddp-rate-limiter@1.0.7
 ddp-rate-limiter@1.0.7
-ddp-server@1.3.14
+ddp-server@2.1.1
 deps@1.0.12
 deps@1.0.12
 diff-sequence@1.0.7
 diff-sequence@1.0.7
-ecmascript@0.7.3
-ecmascript-runtime@0.3.15
-ejson@1.0.13
+dynamic-import@0.2.1
+ecmascript@0.9.0
+ecmascript-runtime@0.5.0
+ecmascript-runtime-client@0.5.0
+ecmascript-runtime-server@0.5.0
+ejson@1.1.0
 email@1.2.3
 email@1.2.3
 es5-shim@4.6.15
 es5-shim@4.6.15
 fastclick@1.0.13
 fastclick@1.0.13
@@ -62,41 +66,40 @@ horka:swipebox@1.0.2
 hot-code-push@1.0.4
 hot-code-push@1.0.4
 html-tools@1.0.11
 html-tools@1.0.11
 htmljs@1.0.11
 htmljs@1.0.11
-http@1.2.12
+http@1.3.0
 id-map@1.0.9
 id-map@1.0.9
 idmontie:migrations@1.0.3
 idmontie:migrations@1.0.3
 jquery@1.11.10
 jquery@1.11.10
 kadira:blaze-layout@2.3.0
 kadira:blaze-layout@2.3.0
 kadira:dochead@1.5.0
 kadira:dochead@1.5.0
 kadira:flow-router@2.12.1
 kadira:flow-router@2.12.1
-kenton:accounts-sandstorm@0.6.0
+kenton:accounts-sandstorm@0.7.0
 launch-screen@1.1.1
 launch-screen@1.1.1
 livedata@1.0.18
 livedata@1.0.18
-localstorage@1.0.12
-logging@1.1.17
+localstorage@1.2.0
+logging@1.1.19
 matb33:collection-hooks@0.8.4
 matb33:collection-hooks@0.8.4
 matteodem:easy-search@1.6.4
 matteodem:easy-search@1.6.4
 mdg:validation-error@0.5.1
 mdg:validation-error@0.5.1
-meteor@1.6.1
-meteor-base@1.0.4
+meteor@1.8.2
+meteor-base@1.2.0
 meteor-platform@1.2.6
 meteor-platform@1.2.6
 meteorhacks:aggregate@1.3.0
 meteorhacks:aggregate@1.3.0
 meteorhacks:collection-utils@1.2.0
 meteorhacks:collection-utils@1.2.0
-meteorhacks:fast-render@2.16.0
-meteorhacks:inject-data@2.0.0
 meteorhacks:meteorx@1.4.1
 meteorhacks:meteorx@1.4.1
 meteorhacks:picker@1.0.3
 meteorhacks:picker@1.0.3
 meteorhacks:subs-manager@1.6.4
 meteorhacks:subs-manager@1.6.4
 meteorspark:util@0.2.0
 meteorspark:util@0.2.0
 minifier-css@1.2.16
 minifier-css@1.2.16
-minifier-js@2.0.0
+minifier-js@2.2.2
 minifiers@1.1.8-faster-rebuild.0
 minifiers@1.1.8-faster-rebuild.0
-minimongo@1.0.21
+minimongo@1.4.3
 mixmax:smart-disconnect@0.0.4
 mixmax:smart-disconnect@0.0.4
 mobile-status-bar@1.0.14
 mobile-status-bar@1.0.14
-modules@0.8.2
-modules-runtime@0.7.10
-mongo@1.1.16
+modules@0.11.0
+modules-runtime@0.9.1
+mongo@1.3.1
+mongo-dev-server@1.1.0
 mongo-id@1.0.6
 mongo-id@1.0.6
 mongo-livedata@1.0.12
 mongo-livedata@1.0.12
 mousetrap:mousetrap@1.4.6_1
 mousetrap:mousetrap@1.4.6_1
@@ -109,24 +112,24 @@ mquandalle:jquery-ui-drag-drop-sort@0.2.0
 mquandalle:moment@1.0.1
 mquandalle:moment@1.0.1
 mquandalle:mousetrap-bindglobal@0.0.1
 mquandalle:mousetrap-bindglobal@0.0.1
 mquandalle:perfect-scrollbar@0.6.5_2
 mquandalle:perfect-scrollbar@0.6.5_2
-npm-bcrypt@0.9.2
-npm-mongo@2.2.24
+npm-bcrypt@0.9.3
+npm-mongo@2.2.33
 observe-sequence@1.0.16
 observe-sequence@1.0.16
 ongoworks:speakingurl@1.1.0
 ongoworks:speakingurl@1.1.0
 ordered-dict@1.0.9
 ordered-dict@1.0.9
 peerlibrary:assert@0.2.5
 peerlibrary:assert@0.2.5
 peerlibrary:base-component@0.16.0
 peerlibrary:base-component@0.16.0
 peerlibrary:blaze-components@0.15.1
 peerlibrary:blaze-components@0.15.1
-peerlibrary:computed-field@0.6.1
+peerlibrary:computed-field@0.7.0
 peerlibrary:reactive-field@0.3.0
 peerlibrary:reactive-field@0.3.0
 perak:markdown@1.0.5
 perak:markdown@1.0.5
-promise@0.8.8
+promise@0.10.0
 raix:eventemitter@0.1.3
 raix:eventemitter@0.1.3
 raix:handlebar-helpers@0.2.5
 raix:handlebar-helpers@0.2.5
-rajit:bootstrap3-datepicker@1.6.4
+rajit:bootstrap3-datepicker@1.7.1
 random@1.0.10
 random@1.0.10
 rate-limit@1.0.8
 rate-limit@1.0.8
-reactive-dict@1.1.8
+reactive-dict@1.2.0
 reactive-var@1.0.11
 reactive-var@1.0.11
 reload@1.1.11
 reload@1.1.11
 retry@1.0.9
 retry@1.0.9
@@ -135,26 +138,29 @@ seriousm:emoji-continued@1.4.0
 service-configuration@1.0.11
 service-configuration@1.0.11
 session@1.1.7
 session@1.1.7
 sha@1.0.9
 sha@1.0.9
-shell-server@0.2.3
+shell-server@0.3.1
 simple:authenticate-user-by-token@1.0.1
 simple:authenticate-user-by-token@1.0.1
 simple:json-routes@2.1.0
 simple:json-routes@2.1.0
 simple:rest-accounts-password@1.1.2
 simple:rest-accounts-password@1.1.2
 simple:rest-bearer-token-parser@1.0.1
 simple:rest-bearer-token-parser@1.0.1
 simple:rest-json-error-handler@1.0.1
 simple:rest-json-error-handler@1.0.1
-softwarerero:accounts-t9n@1.3.9
+softwarerero:accounts-t9n@1.3.11
 spacebars@1.0.15
 spacebars@1.0.15
-spacebars-compiler@1.1.2
+spacebars-compiler@1.1.3
 srp@1.0.10
 srp@1.0.10
-standard-minifier-css@1.3.4
-standard-minifier-js@2.0.0
-stylus@2.513.9
+standard-minifier-css@1.3.5
+standard-minifier-js@2.2.3
+staringatlights:fast-render@2.16.5
+staringatlights:flow-router@2.12.2
+staringatlights:inject-data@2.0.5
+stylus@2.513.13
 tap:i18n@1.8.2
 tap:i18n@1.8.2
 templates:tabs@2.3.0
 templates:tabs@2.3.0
 templating@1.3.2
 templating@1.3.2
-templating-compiler@1.3.2
+templating-compiler@1.3.3
 templating-runtime@1.3.2
 templating-runtime@1.3.2
 templating-tools@1.1.2
 templating-tools@1.1.2
-tracker@1.1.2
+tracker@1.1.3
 ui@1.0.13
 ui@1.0.13
 underscore@1.0.10
 underscore@1.0.10
 url@1.1.0
 url@1.1.0
@@ -162,6 +168,6 @@ useraccounts:core@1.14.2
 useraccounts:flow-routing@1.14.2
 useraccounts:flow-routing@1.14.2
 useraccounts:unstyled@1.14.2
 useraccounts:unstyled@1.14.2
 verron:autosize@3.0.8
 verron:autosize@3.0.8
-webapp@1.3.15
+webapp@1.4.0
 webapp-hashing@1.0.9
 webapp-hashing@1.0.9
 zimme:active-route@2.3.2
 zimme:active-route@2.3.2

+ 1 - 1
.tx/config

@@ -39,7 +39,7 @@ host = https://www.transifex.com
 # tap:i18n requires us to use `-` separator in the language identifiers whereas
 # tap:i18n requires us to use `-` separator in the language identifiers whereas
 # Transifex uses a `_` separator, without an option to customize it on one side
 # Transifex uses a `_` separator, without an option to customize it on one side
 # or the other, so we need to do a Manual mapping.
 # or the other, so we need to do a Manual mapping.
-lang_map = en_GB:en-GB, es_AR:es-AR, el_GR:el, fa_IR:fa, fi_FI:fi, hu_HU:hu, id_ID:id, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, zh_CN:zh-CN, zh_TW:zh-TW
+lang_map = en_GB:en-GB, es_AR:es-AR, el_GR:el, fa_IR:fa, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, zh_CN:zh-CN, zh_TW:zh-TW
 
 
 [wekan.application]
 [wekan.application]
 file_filter = i18n/<lang>.i18n.json
 file_filter = i18n/<lang>.i18n.json

+ 5 - 2
CHANGELOG.md

@@ -1,14 +1,17 @@
-# Upcoming Wekan release
+# v0.64 2018-01-22 Wekan release
 
 
 This release adds the following new features:
 This release adds the following new features:
 
 
 * [Different icons for start and due date](https://github.com/wekan/wekan/pull/1420).
 * [Different icons for start and due date](https://github.com/wekan/wekan/pull/1420).
+* Added new languages: Mongolian and Portuguese;
+* Upgraded to Meteor 1.6.0.1, Node 8.9.3, NPM 5.5.1 and fibers 2.0.0.
 
 
 and fixes the following bugs:
 and fixes the following bugs:
 
 
 * [Fix for dragging into scrolled-down list](https://github.com/wekan/wekan/pull/1424).
 * [Fix for dragging into scrolled-down list](https://github.com/wekan/wekan/pull/1424).
+* [Fix double slash bug on snap](https://github.com/wekan/wekan/issues/962#issuecomment-357785748).
 
 
-Thanks to GitHub users dpoznyak and mmarschall for their contributions.
+Thanks to GitHub users dpoznyak, mmarschall and xet7 for their contributions.
 
 
 # v0.63 2017-12-20 Wekan release
 # v0.63 2017-12-20 Wekan release
 
 

+ 7 - 19
Dockerfile

@@ -1,4 +1,4 @@
-FROM debian:jessie-slim
+FROM debian:buster-slim
 MAINTAINER wekan
 MAINTAINER wekan
 
 
 # Declare Arguments
 # Declare Arguments
@@ -13,14 +13,13 @@ ARG SRC_PATH
 
 
 # Set the environment variables (defaults where required)
 # Set the environment variables (defaults where required)
 # paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
 # paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
-ENV BUILD_DEPS="wget curl bzip2 build-essential python git ca-certificates gcc-4.9 paxctl"
-ENV GOSU_VERSION=1.10
-ENV NODE_VERSION ${NODE_VERSION:-v4.8.7}
-ENV METEOR_RELEASE ${METEOR_RELEASE:-1.4.4.1}
+ENV BUILD_DEPS="apt-utils gnupg gosu wget curl bzip2 build-essential python git ca-certificates gcc-7 paxctl"
+ENV NODE_VERSION ${NODE_VERSION:-v8.9.3}
+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:-4.6.1}
-ENV FIBERS_VERSION ${FIBERS_VERSION:-1.0.15}
+ENV NPM_VERSION ${NPM_VERSION:-5.5.1}
+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:-./}
 
 
@@ -32,17 +31,7 @@ RUN \
     useradd --user-group --system --home-dir /home/wekan wekan && \
     useradd --user-group --system --home-dir /home/wekan wekan && \
     \
     \
     # OS dependencies
     # OS dependencies
-    apt-get update -y && apt-get dist-upgrade -y && apt-get install -y --no-install-recommends ${BUILD_DEPS} && \
-    \
-    # Gosu installation
-    GOSU_ARCHITECTURE="$(dpkg --print-architecture | awk -F- '{ print $NF }')" && \
-    wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${GOSU_ARCHITECTURE}" && \
-    wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${GOSU_ARCHITECTURE}.asc" && \
-    export GNUPGHOME="$(mktemp -d)" && \
-    gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && \
-    gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu && \
-    rm -R "$GNUPGHOME" /usr/local/bin/gosu.asc && \
-    chmod +x /usr/local/bin/gosu && \
+    apt-get update -y && apt-get install -y --no-install-recommends ${BUILD_DEPS} && \
     \
     \
     # Download nodejs
     # Download nodejs
     wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
     wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
@@ -119,7 +108,6 @@ 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 && \
-    gosu wekan:wekan sed -i "s|build\/Release\/bson|browser_build\/bson|g" /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/cfs_gridfs/node_modules/mongodb/node_modules/bson/ext/index.js && \
     cd /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt && \
     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 rm -rf node_modules/bcrypt && \
     gosu wekan:wekan npm install bcrypt && \
     gosu wekan:wekan npm install bcrypt && \

+ 1 - 1
i18n/ar.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "الوقت",
     "time": "الوقت",
     "title": "عنوان",
     "title": "عنوان",
     "tracking": "تتبع",
     "tracking": "تتبع",

+ 1 - 1
i18n/br.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Time",
     "time": "Time",
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",

+ 1 - 1
i18n/ca.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Hora",
     "time": "Hora",
     "title": "Títol",
     "title": "Títol",
     "tracking": "En seguiment",
     "tracking": "En seguiment",

+ 1 - 1
i18n/cs.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Time",
     "time": "Time",
     "title": "Název",
     "title": "Název",
     "tracking": "Tracking",
     "tracking": "Tracking",

+ 1 - 1
i18n/de.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Überzeit (Stunden)",
     "overtime-hours": "Überzeit (Stunden)",
     "overtime": "Überzeit",
     "overtime": "Überzeit",
     "has-overtime-cards": "Hat Karten mit Überzeit",
     "has-overtime-cards": "Hat Karten mit Überzeit",
-    "has-spenttime-cards": "Hat Karten mit aufgewendeter Zeit",
+    "has-spenttime-cards": "Hat Karten mit aufgewendeten Zeiten",
     "time": "Zeit",
     "time": "Zeit",
     "title": "Titel",
     "title": "Titel",
     "tracking": "Folgen",
     "tracking": "Folgen",

+ 1 - 1
i18n/el.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Ώρα",
     "time": "Ώρα",
     "title": "Τίτλος",
     "title": "Τίτλος",
     "tracking": "Tracking",
     "tracking": "Tracking",

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

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Time",
     "time": "Time",
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",

+ 1 - 1
i18n/en.i18n.json

@@ -350,7 +350,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Time",
     "time": "Time",
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",

+ 1 - 1
i18n/eo.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Tempo",
     "time": "Tempo",
     "title": "Titolo",
     "title": "Titolo",
     "tracking": "Tracking",
     "tracking": "Tracking",

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

@@ -346,7 +346,7 @@
     "overtime-hours": "Sobretiempo (horas)",
     "overtime-hours": "Sobretiempo (horas)",
     "overtime": "Sobretiempo",
     "overtime": "Sobretiempo",
     "has-overtime-cards": "Tiene tarjetas con sobretiempo",
     "has-overtime-cards": "Tiene tarjetas con sobretiempo",
-    "has-spenttime-cards": "Tiene tarjetas con tiempo empleado",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Hora",
     "time": "Hora",
     "title": "Título",
     "title": "Título",
     "tracking": "Seguimiento",
     "tracking": "Seguimiento",

+ 11 - 11
i18n/es.i18n.json

@@ -72,7 +72,7 @@
     "archived-items": "Elementos archivados",
     "archived-items": "Elementos archivados",
     "archived-boards": "Tableros archivados",
     "archived-boards": "Tableros archivados",
     "restore-board": "Restaurar el tablero",
     "restore-board": "Restaurar el tablero",
-    "no-archived-boards": "No hay tableros archivados",
+    "no-archived-boards": "No hay tableros archivados.",
     "archives": "Archivos",
     "archives": "Archivos",
     "assign-member": "Asignar miembros",
     "assign-member": "Asignar miembros",
     "attached": "adjuntado",
     "attached": "adjuntado",
@@ -172,8 +172,8 @@
     "edit": "Editar",
     "edit": "Editar",
     "edit-avatar": "Cambiar el avatar",
     "edit-avatar": "Cambiar el avatar",
     "edit-profile": "Editar el perfil",
     "edit-profile": "Editar el perfil",
-    "edit-wip-limit": "Cambiar el límite del WIP",
-    "soft-wip-limit": "Límite flexible del WIP",
+    "edit-wip-limit": "Cambiar el límite del TEP",
+    "soft-wip-limit": "Límite del TEP flexible",
     "editCardStartDatePopup-title": "Cambiar la fecha de inicio",
     "editCardStartDatePopup-title": "Cambiar la fecha de inicio",
     "editCardDueDatePopup-title": "Cambiar la fecha de vencimiento",
     "editCardDueDatePopup-title": "Cambiar la fecha de vencimiento",
     "editCardSpentTimePopup-title": "Cambiar el tiempo consumido",
     "editCardSpentTimePopup-title": "Cambiar el tiempo consumido",
@@ -194,7 +194,7 @@
     "email-sent": "Correo enviado",
     "email-sent": "Correo enviado",
     "email-verifyEmail-subject": "Verifica tu dirección de correo en __siteName__",
     "email-verifyEmail-subject": "Verifica tu dirección de correo en __siteName__",
     "email-verifyEmail-text": "Hola __user__,\n\nPara verificar tu cuenta de correo electrónico, haz clic en el siguiente enlace.\n\n__url__\n\nGracias.",
     "email-verifyEmail-text": "Hola __user__,\n\nPara verificar tu cuenta de correo electrónico, haz clic en el siguiente enlace.\n\n__url__\n\nGracias.",
-    "enable-wip-limit": "Activar el límite del WIP",
+    "enable-wip-limit": "Activar el límite del TEP",
     "error-board-doesNotExist": "El tablero no existe",
     "error-board-doesNotExist": "El tablero no existe",
     "error-board-notAdmin": "Es necesario ser administrador de este tablero para hacer eso",
     "error-board-notAdmin": "Es necesario ser administrador de este tablero para hacer eso",
     "error-board-notAMember": "Es necesario ser miembro de este tablero para hacer eso",
     "error-board-notAMember": "Es necesario ser miembro de este tablero para hacer eso",
@@ -225,7 +225,7 @@
     "import-board-c": "Importar un tablero",
     "import-board-c": "Importar un tablero",
     "import-board-title-trello": "Importar un tablero desde Trello",
     "import-board-title-trello": "Importar un tablero desde Trello",
     "import-board-title-wekan": "Importar un tablero desde Wekan",
     "import-board-title-wekan": "Importar un tablero desde Wekan",
-    "import-sandstorm-warning": "El tablero importado eliminará todos los datos existentes en este tablero y a reemplazarlos con los datos del tablero importado.",
+    "import-sandstorm-warning": "El tablero importado eliminará todos los datos existentes en este tablero y los reemplazará con los datos del tablero importado.",
     "from-trello": "Desde Trello",
     "from-trello": "Desde Trello",
     "from-wekan": "Desde Wekan",
     "from-wekan": "Desde Wekan",
     "import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego 'Más' > 'Imprimir y exportar' > 'Exportar JSON', y copia el texto resultante.",
     "import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego 'Más' > 'Imprimir y exportar' > 'Exportar JSON', y copia el texto resultante.",
@@ -320,8 +320,8 @@
     "save": "Guardar",
     "save": "Guardar",
     "search": "Buscar",
     "search": "Buscar",
     "select-color": "Selecciona un color",
     "select-color": "Selecciona un color",
-    "set-wip-limit-value": "Fija un límite para el número máximo de tareas en esta lista",
-    "setWipLimitPopup-title": "Fijar el límite del WIP",
+    "set-wip-limit-value": "Fija un límite para el número máximo de tareas en esta lista.",
+    "setWipLimitPopup-title": "Fijar el límite del TEP",
     "shortcut-assign-self": "Asignarte a ti mismo a la tarjeta actual",
     "shortcut-assign-self": "Asignarte a ti mismo a la tarjeta actual",
     "shortcut-autocomplete-emoji": "Autocompletar emoji",
     "shortcut-autocomplete-emoji": "Autocompletar emoji",
     "shortcut-autocomplete-members": "Autocompletar miembros",
     "shortcut-autocomplete-members": "Autocompletar miembros",
@@ -346,7 +346,7 @@
     "overtime-hours": "Tiempo excesivo (horas)",
     "overtime-hours": "Tiempo excesivo (horas)",
     "overtime": "Tiempo excesivo",
     "overtime": "Tiempo excesivo",
     "has-overtime-cards": "Hay tarjetas con el tiempo excedido",
     "has-overtime-cards": "Hay tarjetas con el tiempo excedido",
-    "has-spenttime-cards": "Hay tarjetas con el tiempo consumido",
+    "has-spenttime-cards": "Se ha excedido el tiempo de las tarjetas",
     "time": "Hora",
     "time": "Hora",
     "title": "Título",
     "title": "Título",
     "tracking": "Seguimiento",
     "tracking": "Seguimiento",
@@ -367,9 +367,9 @@
     "welcome-list1": "Básicos",
     "welcome-list1": "Básicos",
     "welcome-list2": "Avanzados",
     "welcome-list2": "Avanzados",
     "what-to-do": "¿Qué deseas hacer?",
     "what-to-do": "¿Qué deseas hacer?",
-    "wipLimitErrorPopup-title": "Límite del WIP no válido",
-    "wipLimitErrorPopup-dialog-pt1": "El número de tareas en esta lista es mayor que el límite del WIP que has definido.",
-    "wipLimitErrorPopup-dialog-pt2": "Por favor, mueve algunas tareas fuera de esta lista, o fija un límite del WIP más alto.",
+    "wipLimitErrorPopup-title": "Límite del TEP no válido",
+    "wipLimitErrorPopup-dialog-pt1": "El número de tareas en esta lista es mayor que el límite del TEP que has definido.",
+    "wipLimitErrorPopup-dialog-pt2": "Por favor, mueve algunas tareas fuera de esta lista, o fija un límite del TEP más alto.",
     "admin-panel": "Panel del administrador",
     "admin-panel": "Panel del administrador",
     "settings": "Ajustes",
     "settings": "Ajustes",
     "people": "Personas",
     "people": "Personas",

+ 1 - 1
i18n/eu.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Luzapena (orduak)",
     "overtime-hours": "Luzapena (orduak)",
     "overtime": "Luzapena",
     "overtime": "Luzapena",
     "has-overtime-cards": "Luzapen txartelak ditu",
     "has-overtime-cards": "Luzapen txartelak ditu",
-    "has-spenttime-cards": "Erabilitako dendoran txartelak ditu",
+    "has-spenttime-cards": "Erabilitako denbora txartelak ditu",
     "time": "Ordua",
     "time": "Ordua",
     "title": "Izenburua",
     "title": "Izenburua",
     "tracking": "Jarraitzen",
     "tracking": "Jarraitzen",

+ 1 - 1
i18n/fa.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "زمان",
     "time": "زمان",
     "title": "عنوان",
     "title": "عنوان",
     "tracking": "پیگردی",
     "tracking": "پیگردی",

+ 1 - 1
i18n/fi.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Ylityö (tuntia)",
     "overtime-hours": "Ylityö (tuntia)",
     "overtime": "Ylityö",
     "overtime": "Ylityö",
     "has-overtime-cards": "Sisältää ylityö kortteja",
     "has-overtime-cards": "Sisältää ylityö kortteja",
-    "has-spenttime-cards": "Sisältää käytetty aika kortteja",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Aika",
     "time": "Aika",
     "title": "Otsikko",
     "title": "Otsikko",
     "tracking": "Ilmoitukset",
     "tracking": "Ilmoitukset",

+ 1 - 1
i18n/gl.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Hora",
     "time": "Hora",
     "title": "Título",
     "title": "Título",
     "tracking": "Seguimento",
     "tracking": "Seguimento",

+ 1 - 1
i18n/he.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "שעות נוספות",
     "overtime-hours": "שעות נוספות",
     "overtime": "שעות נוספות",
     "overtime": "שעות נוספות",
     "has-overtime-cards": "יש כרטיסי שעות נוספות",
     "has-overtime-cards": "יש כרטיסי שעות נוספות",
-    "has-spenttime-cards": "יש כרטיסי זמן שהושקע",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "זמן",
     "time": "זמן",
     "title": "כותרת",
     "title": "כותרת",
     "tracking": "מעקב",
     "tracking": "מעקב",

+ 1 - 1
i18n/hu.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Túlóra (óra)",
     "overtime-hours": "Túlóra (óra)",
     "overtime": "Túlóra",
     "overtime": "Túlóra",
     "has-overtime-cards": "Van túlórás kártyája",
     "has-overtime-cards": "Van túlórás kártyája",
-    "has-spenttime-cards": "Van eltöltött idő kártyája",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Idő",
     "time": "Idő",
     "title": "Cím",
     "title": "Cím",
     "tracking": "Követés",
     "tracking": "Követés",

+ 1 - 1
i18n/id.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Waktu",
     "time": "Waktu",
     "title": "Judul",
     "title": "Judul",
     "tracking": "Pelacakan",
     "tracking": "Pelacakan",

+ 1 - 1
i18n/it.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (ore)",
     "overtime-hours": "Overtime (ore)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Ora",
     "time": "Ora",
     "title": "Titolo",
     "title": "Titolo",
     "tracking": "Monitoraggio",
     "tracking": "Monitoraggio",

+ 1 - 1
i18n/ja.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "時間",
     "time": "時間",
     "title": "タイトル",
     "title": "タイトル",
     "tracking": "トラッキング",
     "tracking": "トラッキング",

+ 1 - 1
i18n/ko.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "시간",
     "time": "시간",
     "title": "제목",
     "title": "제목",
     "tracking": "추적",
     "tracking": "추적",

+ 1 - 1
i18n/lv.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Time",
     "time": "Time",
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",

+ 424 - 0
i18n/mn.i18n.json

@@ -0,0 +1,424 @@
+{
+    "accept": "Зөвшөөрөх",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "_attachment__ хавсралтыг __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-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
+    "actions": "Actions",
+    "activities": "Activities",
+    "activity": "Activity",
+    "activity-added": "added %s to %s",
+    "activity-archived": "archived %s",
+    "activity-attached": "attached %s to %s",
+    "activity-created": "created %s",
+    "activity-excluded": "excluded %s from %s",
+    "activity-imported": "imported %s into %s from %s",
+    "activity-imported-board": "imported %s from %s",
+    "activity-joined": "joined %s",
+    "activity-moved": "moved %s from %s to %s",
+    "activity-on": "on %s",
+    "activity-removed": "removed %s from %s",
+    "activity-sent": "sent %s to %s",
+    "activity-unjoined": "unjoined %s",
+    "activity-checklist-added": "added checklist to %s",
+    "activity-checklist-item-added": "added checklist item to '%s' in %s",
+    "add": "Нэмэх",
+    "add-attachment": "Хавсралт нэмэх",
+    "add-board": "Самбар нэмэх",
+    "add-card": "Карт нэмэх",
+    "add-checklist": "Чеклист нэмэх",
+    "add-checklist-item": "Add an item to checklist",
+    "add-cover": "Add Cover",
+    "add-label": "Шошго нэмэх",
+    "add-list": "Жагсаалт нэмэх",
+    "add-members": "Гишүүд нэмэх",
+    "added": "Нэмсэн",
+    "addMemberPopup-title": "Гишүүд",
+    "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": "Бүх самбарууд",
+    "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": "Archive",
+    "archive-all": "Archive All",
+    "archive-board": "Archive Board",
+    "archive-card": "Archive Card",
+    "archive-list": "Archive List",
+    "archive-selection": "Archive selection",
+    "archiveBoardPopup-title": "Archive Board?",
+    "archived-items": "Archived Items",
+    "archived-boards": "Archived Boards",
+    "restore-board": "Restore Board",
+    "no-archived-boards": "No Archived Boards.",
+    "archives": "Archives",
+    "assign-member": "Assign member",
+    "attached": "attached",
+    "attachment": "Attachment",
+    "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
+    "attachmentDeletePopup-title": "Delete Attachment?",
+    "attachments": "Attachments",
+    "auto-watch": "Automatically watch boards when 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",
+    "bucket-example": "Like “Bucket List” for example",
+    "cancel": "Cancel",
+    "card-archived": "This card is archived.",
+    "card-comments-title": "This card has %s comment.",
+    "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
+    "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
+    "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
+    "card-spent": "Spent Time",
+    "card-edit-attachments": "Edit attachments",
+    "card-edit-labels": "Edit labels",
+    "card-edit-members": "Edit members",
+    "card-labels-title": "Change the labels for the card.",
+    "card-members-title": "Add or remove members of the board from the card.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
+    "cardAttachmentsPopup-title": "Attach From",
+    "cardDeletePopup-title": "Delete Card?",
+    "cardDetailsActionsPopup-title": "Card Actions",
+    "cardLabelsPopup-title": "Labels",
+    "cardMembersPopup-title": "Гишүүд",
+    "cardMorePopup-title": "More",
+    "cards": "Cards",
+    "change": "Change",
+    "change-avatar": "Change Avatar",
+    "change-password": "Change Password",
+    "change-permissions": "Change permissions",
+    "change-settings": "Change Settings",
+    "changeAvatarPopup-title": "Change Avatar",
+    "changeLanguagePopup-title": "Change Language",
+    "changePasswordPopup-title": "Change Password",
+    "changePermissionsPopup-title": "Change Permissions",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
+    "click-to-star": "Click to star this board.",
+    "click-to-unstar": "Click to unstar this board.",
+    "clipboard": "Clipboard or drag & drop",
+    "close": "Close",
+    "close-board": "Close Board",
+    "close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
+    "color-black": "black",
+    "color-blue": "blue",
+    "color-green": "green",
+    "color-lime": "lime",
+    "color-orange": "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",
+    "create": "Create",
+    "createBoardPopup-title": "Create Board",
+    "chooseBoardSourcePopup-title": "Import board",
+    "createLabelPopup-title": "Create Label",
+    "current": "current",
+    "date": "Date",
+    "decline": "Decline",
+    "default-avatar": "Default avatar",
+    "delete": "Delete",
+    "deleteLabelPopup-title": "Delete Label?",
+    "description": "Description",
+    "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
+    "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
+    "discard": "Discard",
+    "done": "Done",
+    "download": "Download",
+    "edit": "Edit",
+    "edit-avatar": "Change Avatar",
+    "edit-profile": "Edit Profile",
+    "edit-wip-limit": "Edit WIP Limit",
+    "soft-wip-limit": "Soft WIP Limit",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
+    "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-on": "Filter is on",
+    "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
+    "filter-to-selection": "Filter to selection",
+    "fullname": "Full Name",
+    "header-logo-title": "Go back to your boards page.",
+    "hide-system-messages": "Hide system messages",
+    "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": "Archive all cards in this list",
+    "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
+    "list-move-cards": "Move all cards in this list",
+    "list-select-cards": "Select all cards in this list",
+    "listActionPopup-title": "List Actions",
+    "listImportCardPopup-title": "Import a Trello card",
+    "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 archive a list to remove it from the board and preserve the activity.",
+    "lists": "Lists",
+    "log-out": "Log Out",
+    "log-in": "Log In",
+    "loginPopup-title": "Log In",
+    "memberMenuPopup-title": "Member Settings",
+    "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 archived cards.",
+    "no-archived-lists": "No archived lists.",
+    "no-results": "No results",
+    "normal": "Normal",
+    "normal-desc": "Can view and edit cards. Can't change settings.",
+    "not-accepted-yet": "Invitation not accepted yet",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
+    "optional": "optional",
+    "or": "or",
+    "page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
+    "page-not-found": "Page not found.",
+    "password": "Password",
+    "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
+    "participating": "Participating",
+    "preview": "Preview",
+    "previewAttachedImagePopup-title": "Preview",
+    "previewClipboardImagePopup-title": "Preview",
+    "private": "Private",
+    "private-desc": "This board is private. Only people added to the board can view and edit it.",
+    "profile": "Profile",
+    "public": "Public",
+    "public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
+    "quick-access-description": "Star a board to add a shortcut in this bar.",
+    "remove-cover": "Remove Cover",
+    "remove-from-board": "Remove from Board",
+    "remove-label": "Remove 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",
+    "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": "Close Dialog",
+    "shortcut-filter-my-cards": "Filter my cards",
+    "shortcut-show-shortcuts": "Bring up this shortcuts list",
+    "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
+    "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
+    "sidebar-open": "Open Sidebar",
+    "sidebar-close": "Close Sidebar",
+    "signupPopup-title": "Create an Account",
+    "star-board-title": "Click to star this board. It will show up at top of your boards list.",
+    "starred-boards": "Starred Boards",
+    "starred-boards-description": "Starred boards show up at the top of your boards list.",
+    "subscribe": "Subscribe",
+    "team": "Team",
+    "this-board": "this board",
+    "this-card": "this card",
+    "spent-time-hours": "Spent time (hours)",
+    "overtime-hours": "Overtime (hours)",
+    "overtime": "Overtime",
+    "has-overtime-cards": "Has overtime cards",
+    "has-spenttime-cards": "Has spent time cards",
+    "time": "Time",
+    "title": "Title",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "unassign-member": "Unassign member",
+    "unsaved-description": "You have an unsaved description.",
+    "unwatch": "Unwatch",
+    "upload": "Upload",
+    "upload-avatar": "Upload an avatar",
+    "uploaded-avatar": "Uploaded an avatar",
+    "username": "Username",
+    "view-it": "View it",
+    "warn-list-archived": "warning: this card is in an archived list",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
+    "what-to-do": "What do you want to do?",
+    "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",
+    "yes": "Yes",
+    "no": "No",
+    "accounts": "Accounts",
+    "accounts-allowEmailChange": "Allow Email Change",
+    "createdAt": "Created at",
+    "verified": "Verified",
+    "active": "Active"
+}

+ 1 - 1
i18n/nb.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Time",
     "time": "Time",
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",

+ 1 - 1
i18n/nl.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overwerk (in uren)",
     "overtime-hours": "Overwerk (in uren)",
     "overtime": "Overwerk",
     "overtime": "Overwerk",
     "has-overtime-cards": "Heeft kaarten met overwerk",
     "has-overtime-cards": "Heeft kaarten met overwerk",
-    "has-spenttime-cards": "Heeft kaarten met gespendeerde tijd",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Tijd",
     "time": "Tijd",
     "title": "Titel",
     "title": "Titel",
     "tracking": "Volgen",
     "tracking": "Volgen",

+ 1 - 1
i18n/pl.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Time",
     "time": "Time",
     "title": "Tytuł",
     "title": "Tytuł",
     "tracking": "Tracking",
     "tracking": "Tracking",

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

@@ -346,7 +346,7 @@
     "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": "Gastou cartões de tempo",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Tempo",
     "time": "Tempo",
     "title": "Título",
     "title": "Título",
     "tracking": "Tracking",
     "tracking": "Tracking",

+ 424 - 0
i18n/pt.i18n.json

@@ -0,0 +1,424 @@
+{
+    "accept": "Aceitar",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "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-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
+    "actions": "Actions",
+    "activities": "Activities",
+    "activity": "Activity",
+    "activity-added": "added %s to %s",
+    "activity-archived": "Arquivo %s",
+    "activity-attached": "attached %s to %s",
+    "activity-created": "Criado %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": "Adicionar",
+    "add-attachment": "Add Attachment",
+    "add-board": "Add Board",
+    "add-card": "Add Card",
+    "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": "Membros",
+    "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": "Archive",
+    "archive-all": "Archive All",
+    "archive-board": "Archive Board",
+    "archive-card": "Archive Card",
+    "archive-list": "Archive List",
+    "archive-selection": "Archive selection",
+    "archiveBoardPopup-title": "Archive Board?",
+    "archived-items": "Archived Items",
+    "archived-boards": "Archived Boards",
+    "restore-board": "Restore Board",
+    "no-archived-boards": "No Archived Boards.",
+    "archives": "Archives",
+    "assign-member": "Assign member",
+    "attached": "attached",
+    "attachment": "Attachment",
+    "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
+    "attachmentDeletePopup-title": "Delete Attachment?",
+    "attachments": "Attachments",
+    "auto-watch": "Automatically watch boards when 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": "Renomear Quadro",
+    "boardChangeVisibilityPopup-title": "Change Visibility",
+    "boardChangeWatchPopup-title": "Change Watch",
+    "boardMenuPopup-title": "Board Menu",
+    "boards": "Boards",
+    "bucket-example": "Like “Bucket List” for example",
+    "cancel": "Cancel",
+    "card-archived": "This card is archived.",
+    "card-comments-title": "This card has %s comment.",
+    "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
+    "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
+    "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
+    "card-spent": "Spent Time",
+    "card-edit-attachments": "Edit attachments",
+    "card-edit-labels": "Edit labels",
+    "card-edit-members": "Edit members",
+    "card-labels-title": "Change the labels for the card.",
+    "card-members-title": "Add or remove members of the board from the card.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
+    "cardAttachmentsPopup-title": "Attach From",
+    "cardDeletePopup-title": "Delete Card?",
+    "cardDetailsActionsPopup-title": "Card Actions",
+    "cardLabelsPopup-title": "Etiquetas",
+    "cardMembersPopup-title": "Membros",
+    "cardMorePopup-title": "Mais",
+    "cards": "Cartões",
+    "change": "Alterar",
+    "change-avatar": "Change Avatar",
+    "change-password": "Change Password",
+    "change-permissions": "Change permissions",
+    "change-settings": "Change Settings",
+    "changeAvatarPopup-title": "Change Avatar",
+    "changeLanguagePopup-title": "Change Language",
+    "changePasswordPopup-title": "Change Password",
+    "changePermissionsPopup-title": "Change Permissions",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
+    "click-to-star": "Click to star this board.",
+    "click-to-unstar": "Click to unstar this board.",
+    "clipboard": "Clipboard or drag & drop",
+    "close": "Close",
+    "close-board": "Close Board",
+    "close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
+    "color-black": "black",
+    "color-blue": "blue",
+    "color-green": "green",
+    "color-lime": "lime",
+    "color-orange": "orange",
+    "color-pink": "pink",
+    "color-purple": "purple",
+    "color-red": "red",
+    "color-sky": "sky",
+    "color-yellow": "yellow",
+    "comment": "Comentário",
+    "comment-placeholder": "Write Comment",
+    "comment-only": "Comment only",
+    "comment-only-desc": "Can comment on cards only.",
+    "computer": "Computador",
+    "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",
+    "create": "Create",
+    "createBoardPopup-title": "Create Board",
+    "chooseBoardSourcePopup-title": "Import board",
+    "createLabelPopup-title": "Create Label",
+    "current": "current",
+    "date": "Date",
+    "decline": "Decline",
+    "default-avatar": "Default avatar",
+    "delete": "Delete",
+    "deleteLabelPopup-title": "Delete Label?",
+    "description": "Description",
+    "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
+    "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
+    "discard": "Discard",
+    "done": "Done",
+    "download": "Download",
+    "edit": "Edit",
+    "edit-avatar": "Change Avatar",
+    "edit-profile": "Edit Profile",
+    "edit-wip-limit": "Edit WIP Limit",
+    "soft-wip-limit": "Soft WIP Limit",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
+    "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-on": "Filter is on",
+    "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
+    "filter-to-selection": "Filter to selection",
+    "fullname": "Full Name",
+    "header-logo-title": "Go back to your boards page.",
+    "hide-system-messages": "Hide system messages",
+    "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": "Etiquetas",
+    "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": "Archive all cards in this list",
+    "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
+    "list-move-cards": "Move all cards in this list",
+    "list-select-cards": "Select all cards in this list",
+    "listActionPopup-title": "List Actions",
+    "listImportCardPopup-title": "Import a Trello card",
+    "listMorePopup-title": "Mais",
+    "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 archive a list to remove it from the board and preserve the activity.",
+    "lists": "Lists",
+    "log-out": "Log Out",
+    "log-in": "Log In",
+    "loginPopup-title": "Log In",
+    "memberMenuPopup-title": "Member Settings",
+    "members": "Membros",
+    "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": "Nome",
+    "no-archived-cards": "Nenhum cartão arquivado.",
+    "no-archived-lists": "Nenhuma lista arquivada.",
+    "no-results": "Nenhum resultado",
+    "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": "Remover Membro?",
+    "rename": "Renomear",
+    "rename-board": "Renomear Quadro",
+    "restore": "Restore",
+    "save": "Save",
+    "search": "Search",
+    "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": "Close Dialog",
+    "shortcut-filter-my-cards": "Filter my cards",
+    "shortcut-show-shortcuts": "Bring up this shortcuts list",
+    "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
+    "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
+    "sidebar-open": "Open Sidebar",
+    "sidebar-close": "Close Sidebar",
+    "signupPopup-title": "Create an Account",
+    "star-board-title": "Click to star this board. It will show up at top of your boards list.",
+    "starred-boards": "Starred Boards",
+    "starred-boards-description": "Starred boards show up at the top of your boards list.",
+    "subscribe": "Subscribe",
+    "team": "Team",
+    "this-board": "this board",
+    "this-card": "this card",
+    "spent-time-hours": "Spent time (hours)",
+    "overtime-hours": "Overtime (hours)",
+    "overtime": "Overtime",
+    "has-overtime-cards": "Has overtime cards",
+    "has-spenttime-cards": "Has spent time cards",
+    "time": "Time",
+    "title": "Title",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "unassign-member": "Unassign member",
+    "unsaved-description": "You have an unsaved description.",
+    "unwatch": "Unwatch",
+    "upload": "Upload",
+    "upload-avatar": "Upload an avatar",
+    "uploaded-avatar": "Uploaded an avatar",
+    "username": "Username",
+    "view-it": "View it",
+    "warn-list-archived": "warning: this card is in an archived list",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
+    "what-to-do": "What do you want to do?",
+    "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",
+    "yes": "Yes",
+    "no": "Não",
+    "accounts": "Contas",
+    "accounts-allowEmailChange": "Allow Email Change",
+    "createdAt": "Created at",
+    "verified": "Verificado",
+    "active": "Ativo"
+}

+ 1 - 1
i18n/ro.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Time",
     "time": "Time",
     "title": "Titlu",
     "title": "Titlu",
     "tracking": "Tracking",
     "tracking": "Tracking",

+ 1 - 1
i18n/ru.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Переработка (в часах)",
     "overtime-hours": "Переработка (в часах)",
     "overtime": "Переработка",
     "overtime": "Переработка",
     "has-overtime-cards": "Имеются карточки с переработкой",
     "has-overtime-cards": "Имеются карточки с переработкой",
-    "has-spenttime-cards": "Имеются карточки с учетом затраченного времени",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Время",
     "time": "Время",
     "title": "Название",
     "title": "Название",
     "tracking": "Отслеживание",
     "tracking": "Отслеживание",

+ 1 - 1
i18n/sr.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Vreme",
     "time": "Vreme",
     "title": "Naslov",
     "title": "Naslov",
     "tracking": "Praćenje",
     "tracking": "Praćenje",

+ 1 - 1
i18n/sv.i18n.json

@@ -346,7 +346,7 @@
     "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 spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Tid",
     "time": "Tid",
     "title": "Titel",
     "title": "Titel",
     "tracking": "Spårning",
     "tracking": "Spårning",

+ 1 - 1
i18n/ta.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Time",
     "time": "Time",
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",

+ 1 - 1
i18n/th.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "เวลา",
     "time": "เวลา",
     "title": "หัวข้อ",
     "title": "หัวข้อ",
     "tracking": "ติดตาม",
     "tracking": "ติดตาม",

+ 1 - 1
i18n/tr.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Aşılan süre (saat)",
     "overtime-hours": "Aşılan süre (saat)",
     "overtime": "Aşılan süre",
     "overtime": "Aşılan süre",
     "has-overtime-cards": "Süresi aşılmış kartlar",
     "has-overtime-cards": "Süresi aşılmış kartlar",
-    "has-spenttime-cards": "Zaman geçirilmiş kartlar",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Zaman",
     "time": "Zaman",
     "title": "Başlık",
     "title": "Başlık",
     "tracking": "Takip",
     "tracking": "Takip",

+ 1 - 1
i18n/uk.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Time",
     "time": "Time",
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",

+ 1 - 1
i18n/vi.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "Time",
     "time": "Time",
     "title": "Title",
     "title": "Title",
     "tracking": "Tracking",
     "tracking": "Tracking",

+ 1 - 1
i18n/zh-CN.i18n.json

@@ -346,7 +346,7 @@
     "overtime-hours": "超时 (小时)",
     "overtime-hours": "超时 (小时)",
     "overtime": "超时",
     "overtime": "超时",
     "has-overtime-cards": "有超时卡片",
     "has-overtime-cards": "有超时卡片",
-    "has-spenttime-cards": "有耗时卡片",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "时间",
     "time": "时间",
     "title": "标题",
     "title": "标题",
     "tracking": "跟踪",
     "tracking": "跟踪",

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

@@ -346,7 +346,7 @@
     "overtime-hours": "Overtime (hours)",
     "overtime-hours": "Overtime (hours)",
     "overtime": "Overtime",
     "overtime": "Overtime",
     "has-overtime-cards": "Has overtime cards",
     "has-overtime-cards": "Has overtime cards",
-    "has-spenttime-cards": "Has spenttime cards",
+    "has-spenttime-cards": "Has spent time cards",
     "time": "時間",
     "time": "時間",
     "title": "標題",
     "title": "標題",
     "tracking": "追蹤",
     "tracking": "追蹤",

+ 4 - 0
models/attachments.js

@@ -1,3 +1,5 @@
+try {
+
 Attachments = new FS.Collection('attachments', {
 Attachments = new FS.Collection('attachments', {
   stores: [
   stores: [
 
 
@@ -25,6 +27,8 @@ Attachments = new FS.Collection('attachments', {
   ],
   ],
 });
 });
 
 
+} catch (err) { console.log(err); throw err; }
+
 if (Meteor.isServer) {
 if (Meteor.isServer) {
   Attachments.allow({
   Attachments.allow({
     insert(userId, doc) {
     insert(userId, doc) {

+ 3 - 3
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "wekan",
   "name": "wekan",
-  "version": "0.63.0",
+  "version": "0.64.0",
   "description": "The open-source Trello-like kanban",
   "description": "The open-source Trello-like kanban",
   "private": true,
   "private": true,
   "scripts": {
   "scripts": {
@@ -24,8 +24,8 @@
   },
   },
   "dependencies": {
   "dependencies": {
     "babel-runtime": "^6.23.0",
     "babel-runtime": "^6.23.0",
-    "bcrypt": "^1.0.2",
-    "bson": "^1.0.4",
+    "bcrypt": "^1.0.3",
+    "bson-ext": "^1.0.5",
     "es6-promise": "^4.1.0",
     "es6-promise": "^4.1.0",
     "meteor-node-stubs": "^0.2.6",
     "meteor-node-stubs": "^0.2.6",
     "os": "^0.1.1",
     "os": "^0.1.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 = 48,
+    appVersion = 49,
     # Increment this for every release.
     # Increment this for every release.
 
 
-    appMarketingVersion = (defaultText = "0.63.0~2017-12-20"),
+    appMarketingVersion = (defaultText = "0.64.0~2018-01-22"),
     # Human-readable presentation of the app version.
     # Human-readable presentation of the app version.
 
 
     minUpgradableAppVersion = 0,
     minUpgradableAppVersion = 0,

+ 1 - 1
sandstorm.js

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

+ 7 - 6
snapcraft.yaml

@@ -70,14 +70,16 @@ parts:
     wekan:
     wekan:
         source: .
         source: .
         plugin: nodejs
         plugin: nodejs
-        node-engine: 4.8.7
+        node-engine: 8.9.3
         node-packages:
         node-packages:
-            - npm@4.6.1
+            - npm@5.5.1
             - node-gyp
             - node-gyp
             - node-pre-gyp
             - node-pre-gyp
-            - fibers@1.0.15
-        build-packages:
+            - fibers@2.0.0
+        stage-packages:
             - ca-certificates
             - ca-certificates
+        build-packages:
+            - apt-utils
             - python
             - python
             - g++
             - g++
             - capnproto
             - capnproto
@@ -91,7 +93,7 @@ parts:
             paxctl -mC `which node`
             paxctl -mC `which node`
             echo "Installing meteor"
             echo "Installing meteor"
             curl https://install.meteor.com/ -o install_meteor.sh
             curl https://install.meteor.com/ -o install_meteor.sh
-            sed -i "s|RELEASE=.*|RELEASE=\"1.4.4.1\"|g" install_meteor.sh
+            sed -i "s|RELEASE=.*|RELEASE=\"1.6.0.1\"|g" install_meteor.sh
             chmod +x install_meteor.sh
             chmod +x install_meteor.sh
             sh install_meteor.sh
             sh install_meteor.sh
             rm install_meteor.sh
             rm install_meteor.sh
@@ -107,7 +109,6 @@ 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
-            sed -i "s|build\/Release\/bson|browser_build\/bson|g" .build/bundle/programs/server/npm/node_modules/meteor/cfs_gridfs/node_modules/mongodb/node_modules/bson/ext/index.js
             cd .build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
             cd .build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
             rm -rf node_modules/bcrypt
             rm -rf node_modules/bcrypt
             meteor npm install --save bcrypt
             meteor npm install --save bcrypt