summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.meteor/.finished-upgraders1
-rw-r--r--.meteor/packages1
-rw-r--r--.meteor/versions1
-rw-r--r--.tx/config2
-rw-r--r--CHANGELOG.md24
-rw-r--r--Dockerfile2
-rw-r--r--client/components/activities/activities.styl4
-rw-r--r--client/components/boards/boardsList.js3
-rw-r--r--client/components/cards/attachments.jade4
-rw-r--r--client/components/cards/attachments.js8
-rw-r--r--client/components/cards/cardDetails.jade11
-rw-r--r--client/components/cards/cardDetails.js2
-rw-r--r--client/components/cards/checklists.js4
-rw-r--r--client/components/lists/list.styl1
-rwxr-xr-xclient/components/main/editor.js2
-rw-r--r--client/components/main/header.js3
-rw-r--r--client/components/settings/peopleBody.jade7
-rw-r--r--client/components/settings/peopleBody.js14
-rw-r--r--client/components/settings/settingBody.js12
-rw-r--r--client/components/users/userAvatar.js4
-rw-r--r--client/components/users/userHeader.js10
-rw-r--r--client/lib/emoji-values.js302
-rw-r--r--client/lib/modal.js2
-rw-r--r--client/lib/popup.js2
-rw-r--r--client/lib/unsavedEdits.js2
-rw-r--r--docker-compose.yml2
-rw-r--r--i18n/de.i18n.json10
-rw-r--r--i18n/eo.i18n.json38
-rw-r--r--i18n/es-AR.i18n.json34
-rw-r--r--i18n/es.i18n.json10
-rw-r--r--i18n/he.i18n.json10
-rw-r--r--i18n/it.i18n.json20
-rw-r--r--i18n/lv.i18n.json424
-rw-r--r--i18n/pl.i18n.json84
-rw-r--r--i18n/pt-BR.i18n.json8
-rw-r--r--i18n/sv.i18n.json20
-rw-r--r--i18n/zh-CN.i18n.json36
-rw-r--r--models/cards.js36
-rw-r--r--models/invitationCodes.js4
-rw-r--r--models/users.js7
-rw-r--r--package.json2
-rw-r--r--sandstorm-pkgdef.capnp4
-rw-r--r--server/migrations.js6
-rw-r--r--server/notifications/outgoing.js4
-rw-r--r--snapcraft.yaml2
45 files changed, 831 insertions, 358 deletions
diff --git a/.meteor/.finished-upgraders b/.meteor/.finished-upgraders
index a8020370..2a56593d 100644
--- a/.meteor/.finished-upgraders
+++ b/.meteor/.finished-upgraders
@@ -15,3 +15,4 @@ notices-for-facebook-graph-api-2
1.4.0-remove-old-dev-bundle-link
1.4.1-add-shell-server-package
1.4.3-split-account-service-packages
+1.5-add-dynamic-import-package
diff --git a/.meteor/packages b/.meteor/packages
index 7e67c10d..0bbe54df 100644
--- a/.meteor/packages
+++ b/.meteor/packages
@@ -80,3 +80,4 @@ simple:rest-accounts-password
useraccounts:core
email@1.2.3
horka:swipebox
+mixmax:smart-disconnect
diff --git a/.meteor/versions b/.meteor/versions
index 38ee1e3f..e3f904be 100644
--- a/.meteor/versions
+++ b/.meteor/versions
@@ -92,6 +92,7 @@ minifier-css@1.2.16
minifier-js@2.0.0
minifiers@1.1.8-faster-rebuild.0
minimongo@1.0.21
+mixmax:smart-disconnect@0.0.4
mobile-status-bar@1.0.14
modules@0.8.2
modules-runtime@0.7.10
diff --git a/.tx/config b/.tx/config
index 29ab4576..278d87f9 100644
--- a/.tx/config
+++ b/.tx/config
@@ -39,7 +39,7 @@ host = https://www.transifex.com
# tap:i18n requires us to use `-` separator in the language identifiers whereas
# Transifex uses a `_` separator, without an option to customize it on one side
# or the other, so we need to do a Manual mapping.
-lang_map = 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, 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, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, zh_CN:zh-CN, zh_TW:zh-TW
[wekan.application]
file_filter = i18n/<lang>.i18n.json
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a63c8a7b..237be519 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,27 @@
+# v0.61 2017-12-12 Wekan release
+
+This release adds the following new features:
+
+* [Change password of any user in Standalone Wekan Admin Panel](https://github.com/wekan/wekan/pull/1372);
+* [Performance optimization: Move more global subscriptions to template subscription](https://github.com/wekan/wekan/pull/1373);
+* [Auto update card cover with latest uploaded image attachment](https://github.com/wekan/wekan/pull/1387);
+* [Always display attachment section for uploading file quickly](https://github.com/wekan/wekan/pull/1391);
+* [Make it easier to see the Add Card button at top of list](https://github.com/wekan/wekan/pull/1392);
+* [Add mixmax:smart-disconnect to lower CPU usage when browser tab is not selected](https://github.com/wekan/wekan-mongodb/issues/2);
+* Update tranlations. Add Latvian language;
+* Update to Node 4.8.4 and MongoDB 3.2.18.
+
+and fixes the following bugs:
+
+* [Bug on not being able to see Admin Panel if not having access to Board List](https://github.com/wekan/wekan/pull/1371);
+* [Bug on not able to see member avatar on sidebar activity](https://github.com/wekan/wekan/pull/1380);
+* [Don't open swipebox on update card cover / download file / delete file](https://github.com/wekan/wekan/pull/1386);
+* [Boards subscription should be placed at header for all other component can be used](https://github.com/wekan/wekan/pull/1381);
+* [Bug on long url of attachment in card activity log](https://github.com/wekan/wekan/pull/1388).
+
+Thanks to GitHub users mfshiu, thuanpq and xet7 for their contributions.
+Thanks to translators for their translations.
+
# v0.60 2017-11-29 Wekan release
This release adds the following new features:
diff --git a/Dockerfile b/Dockerfile
index 7c8c9bf3..f8027594 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -15,7 +15,7 @@ ARG SRC_PATH
# 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.4}
+ENV NODE_VERSION ${NODE_VERSION:-v4.8.6}
ENV METEOR_RELEASE ${METEOR_RELEASE:-1.4.4.1}
ENV USE_EDGE ${USE_EDGE:-false}
ENV METEOR_EDGE ${METEOR_EDGE:-1.5-beta.17}
diff --git a/client/components/activities/activities.styl b/client/components/activities/activities.styl
index 36efd771..380e7b40 100644
--- a/client/components/activities/activities.styl
+++ b/client/components/activities/activities.styl
@@ -17,10 +17,14 @@
height: @width
.activity-desc
+ word-wrap: break-word
+ overflow: hidden
flex: 1
align-self: center
margin: 0
margin-left: 3px
+ overflow: hidden;
+ word-break: break-word;
.activity-comment
display: block
diff --git a/client/components/boards/boardsList.js b/client/components/boards/boardsList.js
index 6c9600a1..1ed88146 100644
--- a/client/components/boards/boardsList.js
+++ b/client/components/boards/boardsList.js
@@ -2,10 +2,7 @@ const subManager = new SubsManager();
BlazeComponent.extendComponent({
onCreated() {
- // Here is the only place that boards data needed, all boards data will stop sync when leaving this template.
- Meteor.subscribe('boards');
Meteor.subscribe('setting');
- Meteor.subscribe('user-admin');
},
boards() {
diff --git a/client/components/cards/attachments.jade b/client/components/cards/attachments.jade
index c8442691..0f79323b 100644
--- a/client/components/cards/attachments.jade
+++ b/client/components/cards/attachments.jade
@@ -21,8 +21,8 @@ template(name="attachmentDeletePopup")
template(name="attachmentsGalery")
.attachments-galery
each attachments
- a.attachment-item.swipebox(href="{{url}}" title="{{name}}")
- .attachment-thumbnail
+ .attachment-item
+ a.attachment-thumbnail.swipebox(href="{{url}}" title="{{name}}")
if isUploaded
if isImage
img.attachment-thumbnail-img(src="{{url}}")
diff --git a/client/components/cards/attachments.js b/client/components/cards/attachments.js
index 36e8a5ec..b1f88bf1 100644
--- a/client/components/cards/attachments.js
+++ b/client/components/cards/attachments.js
@@ -60,7 +60,13 @@ Template.cardAttachmentsPopup.events({
file.boardId = card.boardId;
file.cardId = card._id;
file.userId = Meteor.userId();
- Attachments.insert(file);
+
+ const attachment = Attachments.insert(file);
+
+ if (attachment && attachment._id && attachment.isImage()) {
+ card.setCover(attachment._id);
+ }
+
Popup.close();
});
},
diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade
index 4c68c2f7..0a7a8cd6 100644
--- a/client/components/cards/cardDetails.jade
+++ b/client/components/cards/cardDetails.jade
@@ -85,13 +85,12 @@ template(name="cardDetails")
hr
+checklists(cardId = _id)
- if attachments.count
- hr
- h2
- i.fa.fa-paperclip
- | {{_ 'attachments'}}
+ hr
+ h2
+ i.fa.fa-paperclip
+ | {{_ 'attachments'}}
- +attachmentsGalery
+ +attachmentsGalery
hr
.activity-title
diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js
index b62f31d4..f4e6e773 100644
--- a/client/components/cards/cardDetails.js
+++ b/client/components/cards/cardDetails.js
@@ -23,6 +23,8 @@ BlazeComponent.extendComponent({
this.parentComponent().showOverlay.set(true);
this.parentComponent().mouseHasEnterCardDetails = false;
this.calculateNextPeak();
+
+ Meteor.subscribe('unsaved-edits');
},
isWatching() {
diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js
index d3a946f0..5c0e3d2e 100644
--- a/client/components/cards/checklists.js
+++ b/client/components/cards/checklists.js
@@ -181,8 +181,8 @@ BlazeComponent.extendComponent({
Template.checklistDeleteDialog.onCreated(() => {
const $cardDetails = this.$('.card-details');
this.scrollState = { position: $cardDetails.scrollTop(), //save current scroll position
- top: false, //required for smooth scroll animation
- };
+ top: false, //required for smooth scroll animation
+ };
//Callback's purpose is to only prevent scrolling after animation is complete
$cardDetails.animate({ scrollTop: 0 }, 500, () => { this.scrollState.top = true; });
diff --git a/client/components/lists/list.styl b/client/components/lists/list.styl
index 04685137..d5800140 100644
--- a/client/components/lists/list.styl
+++ b/client/components/lists/list.styl
@@ -81,6 +81,7 @@
.list-header-plus-icon
color: #a6a6a6
+ margin-right: 10px
.highlight
color: #ce1414
diff --git a/client/components/main/editor.js b/client/components/main/editor.js
index 5987b772..5f384ece 100755
--- a/client/components/main/editor.js
+++ b/client/components/main/editor.js
@@ -6,7 +6,7 @@ Template.editor.onRendered(() => {
$textarea.escapeableTextComplete([
// Emoji
{
- match: /\B:([\-+\w]*)$/,
+ match: /\B:([-+\w]*)$/,
search(term, callback) {
callback(Emoji.values.map((emoji) => {
return emoji.includes(term) ? emoji : null;
diff --git a/client/components/main/header.js b/client/components/main/header.js
index b005775a..7fbc5716 100644
--- a/client/components/main/header.js
+++ b/client/components/main/header.js
@@ -1,3 +1,6 @@
+Meteor.subscribe('user-admin');
+Meteor.subscribe('boards');
+
Template.header.helpers({
wrappedHeader() {
return !Session.get('currentBoard');
diff --git a/client/components/settings/peopleBody.jade b/client/components/settings/peopleBody.jade
index d6568720..a3506a24 100644
--- a/client/components/settings/peopleBody.jade
+++ b/client/components/settings/peopleBody.jade
@@ -68,9 +68,6 @@ template(name="editUserPopup")
| {{_ 'error-username-taken'}}
input.js-profile-username(type="text" value=user.username)
label
- | {{_ 'initials'}}
- input.js-profile-initials(type="text" value=user.profile.initials)
- label
| {{_ 'email'}}
span.error.hide.email-taken
| {{_ 'error-email-taken'}}
@@ -85,5 +82,9 @@ template(name="editUserPopup")
select.select-active.js-profile-isactive
option(value="false") {{_ 'yes'}}
option(value="true" selected="{{user.loginDisabled}}") {{_ 'no'}}
+ hr
+ label
+ | {{_ 'password'}}
+ input.js-profile-password(type="password")
input.primary.wide(type="submit" value="{{_ 'save'}}")
diff --git a/client/components/settings/peopleBody.js b/client/components/settings/peopleBody.js
index d0da60d0..7cc992f2 100644
--- a/client/components/settings/peopleBody.js
+++ b/client/components/settings/peopleBody.js
@@ -87,24 +87,26 @@ Template.editUserPopup.events({
const user = Users.findOne(this.userId);
const fullname = tpl.find('.js-profile-fullname').value.trim();
const username = tpl.find('.js-profile-username').value.trim();
- const initials = tpl.find('.js-profile-initials').value.trim();
+ const password = tpl.find('.js-profile-password').value;
const isAdmin = tpl.find('.js-profile-isadmin').value.trim();
const isActive = tpl.find('.js-profile-isactive').value.trim();
const email = tpl.find('.js-profile-email').value.trim();
- let isChangeUserName = false;
- let isChangeEmail = false;
+
+ const isChangePassword = password.length > 0;
+ const isChangeUserName = username !== user.username;
+ const isChangeEmail = email.toLowerCase() !== user.emails[0].address.toLowerCase();
Users.update(this.userId, {
$set: {
'profile.fullname': fullname,
- 'profile.initials': initials,
'isAdmin': isAdmin === 'true',
'loginDisabled': isActive === 'true',
},
});
- isChangeUserName = username !== user.username;
- isChangeEmail = email.toLowerCase() !== user.emails[0].address.toLowerCase();
+ if(isChangePassword){
+ Meteor.call('setPassword', password, this.userId);
+ }
if (isChangeUserName && isChangeEmail) {
Meteor.call('setUsernameAndEmail', username, email.toLowerCase(), this.userId, function (error) {
diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js
index 5b015918..8c1ff1c7 100644
--- a/client/components/settings/settingBody.js
+++ b/client/components/settings/settingBody.js
@@ -1,8 +1,3 @@
-Meteor.subscribe('setting');
-Meteor.subscribe('mailServer');
-Meteor.subscribe('accountSettings');
-Meteor.subscribe('announcements');
-
BlazeComponent.extendComponent({
onCreated() {
this.error = new ReactiveVar('');
@@ -11,6 +6,11 @@ BlazeComponent.extendComponent({
this.emailSetting = new ReactiveVar(false);
this.accountSetting = new ReactiveVar(false);
this.announcementSetting = new ReactiveVar(false);
+
+ Meteor.subscribe('setting');
+ Meteor.subscribe('mailServer');
+ Meteor.subscribe('accountSettings');
+ Meteor.subscribe('announcements');
},
setError(error) {
@@ -116,7 +116,7 @@ BlazeComponent.extendComponent({
const from = this.checkField('#mail-server-from');
const tls = $('#mail-server-tls.is-checked').length > 0;
Settings.update(Settings.findOne()._id, {$set:{'mailServer.host':host, 'mailServer.port': port, 'mailServer.username': username,
- 'mailServer.password': password, 'mailServer.enableTLS': tls, 'mailServer.from': from}});
+ 'mailServer.password': password, 'mailServer.enableTLS': tls, 'mailServer.from': from}});
} catch (e) {
return;
} finally {
diff --git a/client/components/users/userAvatar.js b/client/components/users/userAvatar.js
index 1066c632..be7a85d2 100644
--- a/client/components/users/userAvatar.js
+++ b/client/components/users/userAvatar.js
@@ -1,5 +1,3 @@
-Meteor.subscribe('my-avatars');
-
Template.userAvatar.helpers({
userData() {
// We need to handle a special case for the search results provided by the
@@ -54,6 +52,8 @@ Template.userAvatarInitials.helpers({
BlazeComponent.extendComponent({
onCreated() {
this.error = new ReactiveVar('');
+
+ Meteor.subscribe('my-avatars');
},
avatarUrlOptions() {
diff --git a/client/components/users/userHeader.js b/client/components/users/userHeader.js
index 481b13c3..f8a1c8b7 100644
--- a/client/components/users/userHeader.js
+++ b/client/components/users/userHeader.js
@@ -35,10 +35,12 @@ Template.editProfilePopup.events({
const email = tpl.find('.js-profile-email').value.trim();
let isChangeUserName = false;
let isChangeEmail = false;
- Users.update(Meteor.userId(), {$set: {
- 'profile.fullname': fullname,
- 'profile.initials': initials,
- }});
+ Users.update(Meteor.userId(), {
+ $set: {
+ 'profile.fullname': fullname,
+ 'profile.initials': initials,
+ },
+ });
isChangeUserName = username !== Meteor.user().username;
isChangeEmail = email.toLowerCase() !== Meteor.user().emails[0].address.toLowerCase();
if (isChangeUserName && isChangeEmail) {
diff --git a/client/lib/emoji-values.js b/client/lib/emoji-values.js
index 1f07ac62..4debfbc0 100644
--- a/client/lib/emoji-values.js
+++ b/client/lib/emoji-values.js
@@ -1,152 +1,152 @@
Emoji.values = ['+1', '-1', '100', '1234', '8ball', 'a', 'ab', 'abc', 'abcd',
-'accept', 'aerial_tramway', 'airplane', 'alarm_clock', 'alien', 'ambulance',
-'anchor', 'angel', 'anger', 'angry', 'anguished', 'ant', 'apple', 'aquarius',
-'aries', 'arrow_backward', 'arrow_double_down', 'arrow_double_up', 'arrow_down',
-'arrow_down_small', 'arrow_forward', 'arrow_heading_down', 'arrow_heading_up',
-'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right',
-'arrow_right_hook', 'arrow_up', 'arrow_up_down', 'arrow_up_small',
-'arrow_upper_left', 'arrow_upper_right', 'arrows_clockwise',
-'arrows_counterclockwise', 'art', 'articulated_lorry', 'astonished', 'atm', 'b',
-'baby', 'baby_bottle', 'baby_chick', 'baby_symbol', 'baggage_claim', 'balloon',
-'ballot_box_with_check', 'bamboo', 'banana', 'bangbang', 'bank', 'bar_chart',
-'barber', 'baseball', 'basketball', 'bath', 'bathtub', 'battery', 'bear', 'bee',
-'beer', 'beers', 'beetle', 'beginner', 'bell', 'bento', 'bicyclist', 'bike',
-'bikini', 'bird', 'birthday', 'black_circle', 'black_joker', 'black_nib',
-'black_square', 'black_square_button', 'blossom', 'blowfish', 'blue_book',
-'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'bookmark',
-'bookmark_tabs', 'books', 'boom', 'boot', 'bouquet', 'bow', 'bowling', 'bowtie',
-'boy', 'bread', 'bride_with_veil', 'bridge_at_night', 'briefcase',
-'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus',
-'busstop', 'bust_in_silhouette', 'busts_in_silhouette', 'cactus', 'cake',
-'calendar', 'calling', 'camel', 'camera', 'cancer', 'candy', 'capital_abcd',
-'capricorn', 'car', 'card_index', 'carousel_horse', 'cat', 'cat2', 'cd',
-'chart', 'chart_with_downwards_trend', 'chart_with_upwards_trend',
-'checkered_flag', 'cherries', 'cherry_blossom', 'chestnut', 'chicken',
-'children_crossing', 'chocolate_bar', 'christmas_tree', 'church', 'cinema',
-'circus_tent', 'city_sunrise', 'city_sunset', 'cl', 'clap', 'clapper',
-'clipboard', 'clock1', 'clock10', 'clock1030', 'clock11', 'clock1130',
-'clock12', 'clock1230', 'clock130', 'clock2', 'clock230', 'clock3', 'clock330',
-'clock4', 'clock430', 'clock5', 'clock530', 'clock6', 'clock630', 'clock7',
-'clock730', 'clock8', 'clock830', 'clock9', 'clock930', 'closed_book',
-'closed_lock_with_key', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail',
-'coffee', 'cold_sweat', 'collision', 'computer', 'confetti_ball', 'confounded',
-'confused', 'congratulations', 'construction', 'construction_worker',
-'convenience_store', 'cookie', 'cool', 'cop', 'copyright', 'corn', 'couple',
-'couple_with_heart', 'couplekiss', 'cow', 'cow2', 'credit_card', 'crocodile',
-'crossed_flags', 'crown', 'cry', 'crying_cat_face', 'crystal_ball', 'cupid',
-'curly_loop', 'currency_exchange', 'curry', 'custard', 'customs', 'cyclone',
-'dancer', 'dancers', 'dango', 'dart', 'dash', 'date', 'de', 'deciduous_tree',
-'department_store', 'diamond_shape_with_a_dot_inside', 'diamonds',
-'disappointed', 'disappointed_relieved', 'dizzy', 'dizzy_face', 'do_not_litter',
-'dog', 'dog2', 'dollar', 'dolls', 'dolphin', 'donut', 'door', 'doughnut',
-'dragon', 'dragon_face', 'dress', 'dromedary_camel', 'droplet', 'dvd', 'e-mail',
-'ear', 'ear_of_rice', 'earth_africa', 'earth_americas', 'earth_asia', 'egg',
-'eggplant', 'eight', 'eight_pointed_black_star', 'eight_spoked_asterisk',
-'electric_plug', 'elephant', 'email', 'end', 'envelope', 'es', 'euro',
-'european_castle', 'european_post_office', 'evergreen_tree', 'exclamation',
-'expressionless', 'eyeglasses', 'eyes', 'facepunch', 'factory', 'fallen_leaf',
-'family', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel',
-'file_folder', 'finnadie', 'fire', 'fire_engine', 'fireworks',
-'first_quarter_moon', 'first_quarter_moon_with_face', 'fish', 'fish_cake',
-'fishing_pole_and_fish', 'fist', 'five', 'flags', 'flashlight', 'floppy_disk',
-'flower_playing_cards', 'flushed', 'foggy', 'football', 'fork_and_knife',
-'fountain', 'four', 'four_leaf_clover', 'fr', 'free', 'fried_shrimp', 'fries',
-'frog', 'frowning', 'fu', 'fuelpump', 'full_moon', 'full_moon_with_face',
-'game_die', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl',
-'globe_with_meridians', 'goat', 'goberserk', 'godmode', 'golf', 'grapes',
-'green_apple', 'green_book', 'green_heart', 'grey_exclamation', 'grey_question',
-'grimacing', 'grin', 'grinning', 'guardsman', 'guitar', 'gun', 'haircut',
-'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash',
-'hatched_chick', 'hatching_chick', 'headphones', 'hear_no_evil', 'heart',
-'heart_decoration', 'heart_eyes', 'heart_eyes_cat', 'heartbeat', 'heartpulse',
-'hearts', 'heavy_check_mark', 'heavy_division_sign', 'heavy_dollar_sign',
-'heavy_exclamation_mark', 'heavy_minus_sign', 'heavy_multiplication_x',
-'heavy_plus_sign', 'helicopter', 'herb', 'hibiscus', 'high_brightness',
-'high_heel', 'hocho', 'honey_pot', 'honeybee', 'horse', 'horse_racing',
-'hospital', 'hotel', 'hotsprings', 'hourglass', 'hourglass_flowing_sand',
-'house', 'house_with_garden', 'hurtrealbad', 'hushed', 'ice_cream', 'icecream',
-'id', 'ideograph_advantage', 'imp', 'inbox_tray', 'incoming_envelope',
-'information_desk_person', 'information_source', 'innocent', 'interrobang',
-'iphone', 'it', 'izakaya_lantern', 'jack_o_lantern', 'japan', 'japanese_castle',
-'japanese_goblin', 'japanese_ogre', 'jeans', 'joy', 'joy_cat', 'jp', 'key',
-'keycap_ten', 'kimono', 'kiss', 'kissing', 'kissing_cat', 'kissing_closed_eyes',
-'kissing_face', 'kissing_heart', 'kissing_smiling_eyes', 'koala', 'koko', 'kr',
-'large_blue_circle', 'large_blue_diamond', 'large_orange_diamond',
-'last_quarter_moon', 'last_quarter_moon_with_face', 'laughing', 'leaves',
-'ledger', 'left_luggage', 'left_right_arrow', 'leftwards_arrow_with_hook',
-'lemon', 'leo', 'leopard', 'libra', 'light_rail', 'link', 'lips', 'lipstick',
-'lock', 'lock_with_ink_pen', 'lollipop', 'loop', 'loudspeaker', 'love_hotel',
-'love_letter', 'low_brightness', 'm', 'mag', 'mag_right', 'mahjong', 'mailbox',
-'mailbox_closed', 'mailbox_with_mail', 'mailbox_with_no_mail', 'man',
-'man_with_gua_pi_mao', 'man_with_turban', 'mans_shoe', 'maple_leaf', 'mask',
-'massage', 'meat_on_bone', 'mega', 'melon', 'memo', 'mens', 'metal', 'metro',
-'microphone', 'microscope', 'milky_way', 'minibus', 'minidisc',
-'mobile_phone_off', 'money_with_wings', 'moneybag', 'monkey', 'monkey_face',
-'monorail', 'moon', 'mortar_board', 'mount_fuji', 'mountain_bicyclist',
-'mountain_cableway', 'mountain_railway', 'mouse', 'mouse2', 'movie_camera',
-'moyai', 'muscle', 'mushroom', 'musical_keyboard', 'musical_note',
-'musical_score', 'mute', 'nail_care', 'name_badge', 'neckbeard', 'necktie',
-'negative_squared_cross_mark', 'neutral_face', 'new', 'new_moon',
-'new_moon_with_face', 'newspaper', 'ng', 'nine', 'no_bell', 'no_bicycles',
-'no_entry', 'no_entry_sign', 'no_good', 'no_mobile_phones', 'no_mouth',
-'no_pedestrians', 'no_smoking', 'non-potable_water', 'nose', 'notebook',
-'notebook_with_decorative_cover', 'notes', 'nut_and_bolt', 'o', 'o2', 'ocean',
-'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman',
-'older_man', 'older_woman', 'on', 'oncoming_automobile', 'oncoming_bus',
-'oncoming_police_car', 'oncoming_taxi', 'one', 'open_file_folder', 'open_hands',
-'open_mouth', 'ophiuchus', 'orange_book', 'outbox_tray', 'ox', 'page_facing_up',
-'page_with_curl', 'pager', 'palm_tree', 'panda_face', 'paperclip', 'parking',
-'part_alternation_mark', 'partly_sunny', 'passport_control', 'paw_prints',
-'peach', 'pear', 'pencil', 'pencil2', 'penguin', 'pensive', 'performing_arts',
-'persevere', 'person_frowning', 'person_with_blond_hair',
-'person_with_pouting_face', 'phone', 'pig', 'pig2', 'pig_nose', 'pill',
-'pineapple', 'pisces', 'pizza', 'plus1', 'point_down', 'point_left',
-'point_right', 'point_up', 'point_up_2', 'police_car', 'poodle', 'poop',
-'post_office', 'postal_horn', 'postbox', 'potable_water', 'pouch',
-'poultry_leg', 'pound', 'pouting_cat', 'pray', 'princess', 'punch',
-'purple_heart', 'purse', 'pushpin', 'put_litter_in_its_place', 'question',
-'rabbit', 'rabbit2', 'racehorse', 'radio', 'radio_button', 'rage', 'rage1',
-'rage2', 'rage3', 'rage4', 'railway_car', 'rainbow', 'raised_hand',
-'raised_hands', 'raising_hand', 'ram', 'ramen', 'rat', 'recycle', 'red_car',
-'red_circle', 'registered', 'relaxed', 'relieved', 'repeat', 'repeat_one',
-'restroom', 'revolving_hearts', 'rewind', 'ribbon', 'rice', 'rice_ball',
-'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rooster',
-'rose', 'rotating_light', 'round_pushpin', 'rowboat', 'ru', 'rugby_football',
-'runner', 'running', 'running_shirt_with_sash', 'sa', 'sagittarius', 'sailboat',
-'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school',
-'school_satchel', 'scissors', 'scorpius', 'scream', 'scream_cat', 'scroll',
-'seat', 'secret', 'see_no_evil', 'seedling', 'seven', 'shaved_ice', 'sheep',
-'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'shower', 'signal_strength',
-'six', 'six_pointed_star', 'ski', 'skull', 'sleeping', 'sleepy', 'slot_machine',
-'small_blue_diamond', 'small_orange_diamond', 'small_red_triangle',
-'small_red_triangle_down', 'smile', 'smile_cat', 'smiley', 'smiley_cat',
-'smiling_imp', 'smirk', 'smirk_cat', 'smoking', 'snail', 'snake', 'snowboarder',
-'snowflake', 'snowman', 'sob', 'soccer', 'soon', 'sos', 'sound',
-'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles',
-'sparkling_heart', 'speak_no_evil', 'speaker', 'speech_balloon', 'speedboat',
-'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty',
-'steam_locomotive', 'stew', 'straight_ruler', 'strawberry', 'stuck_out_tongue',
-'stuck_out_tongue_closed_eyes', 'stuck_out_tongue_winking_eye', 'sun_with_face',
-'sunflower', 'sunglasses', 'sunny', 'sunrise', 'sunrise_over_mountains',
-'surfer', 'sushi', 'suspect', 'suspension_railway', 'sweat', 'sweat_drops',
-'sweat_smile', 'sweet_potato', 'swimmer', 'symbols', 'syringe', 'tada',
-'tanabata_tree', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone',
-'telephone_receiver', 'telescope', 'tennis', 'tent', 'thought_balloon', 'three',
-'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tiger2', 'tired_face', 'tm',
-'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'tractor',
-'traffic_light', 'train', 'train2', 'tram', 'triangular_flag_on_post',
-'triangular_ruler', 'trident', 'triumph', 'trolleybus', 'trollface', 'trophy',
-'tropical_drink', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip',
-'turtle', 'tv', 'twisted_rightwards_arrows', 'two', 'two_hearts',
-'two_men_holding_hands', 'two_women_holding_hands', 'u5272', 'u5408', 'u55b6',
-'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7981', 'u7a7a', 'uk',
-'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v',
-'vertical_traffic_light', 'vhs', 'vibration_mode', 'video_camera', 'video_game',
-'violin', 'virgo', 'volcano', 'vs', 'walking', 'waning_crescent_moon',
-'waning_gibbous_moon', 'warning', 'watch', 'water_buffalo', 'watermelon',
-'wave', 'wavy_dash', 'waxing_crescent_moon', 'waxing_gibbous_moon', 'wc',
-'weary', 'wedding', 'whale', 'whale2', 'wheelchair', 'white_check_mark',
-'white_circle', 'white_flower', 'white_square', 'white_square_button',
-'wind_chime', 'wine_glass', 'wink', 'wolf', 'woman', 'womans_clothes',
-'womans_hat', 'womens', 'worried', 'wrench', 'x', 'yellow_heart', 'yen', 'yum',
-'zap', 'zero', 'zzz'];
+ 'accept', 'aerial_tramway', 'airplane', 'alarm_clock', 'alien', 'ambulance',
+ 'anchor', 'angel', 'anger', 'angry', 'anguished', 'ant', 'apple', 'aquarius',
+ 'aries', 'arrow_backward', 'arrow_double_down', 'arrow_double_up', 'arrow_down',
+ 'arrow_down_small', 'arrow_forward', 'arrow_heading_down', 'arrow_heading_up',
+ 'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right',
+ 'arrow_right_hook', 'arrow_up', 'arrow_up_down', 'arrow_up_small',
+ 'arrow_upper_left', 'arrow_upper_right', 'arrows_clockwise',
+ 'arrows_counterclockwise', 'art', 'articulated_lorry', 'astonished', 'atm', 'b',
+ 'baby', 'baby_bottle', 'baby_chick', 'baby_symbol', 'baggage_claim', 'balloon',
+ 'ballot_box_with_check', 'bamboo', 'banana', 'bangbang', 'bank', 'bar_chart',
+ 'barber', 'baseball', 'basketball', 'bath', 'bathtub', 'battery', 'bear', 'bee',
+ 'beer', 'beers', 'beetle', 'beginner', 'bell', 'bento', 'bicyclist', 'bike',
+ 'bikini', 'bird', 'birthday', 'black_circle', 'black_joker', 'black_nib',
+ 'black_square', 'black_square_button', 'blossom', 'blowfish', 'blue_book',
+ 'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'bookmark',
+ 'bookmark_tabs', 'books', 'boom', 'boot', 'bouquet', 'bow', 'bowling', 'bowtie',
+ 'boy', 'bread', 'bride_with_veil', 'bridge_at_night', 'briefcase',
+ 'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus',
+ 'busstop', 'bust_in_silhouette', 'busts_in_silhouette', 'cactus', 'cake',
+ 'calendar', 'calling', 'camel', 'camera', 'cancer', 'candy', 'capital_abcd',
+ 'capricorn', 'car', 'card_index', 'carousel_horse', 'cat', 'cat2', 'cd',
+ 'chart', 'chart_with_downwards_trend', 'chart_with_upwards_trend',
+ 'checkered_flag', 'cherries', 'cherry_blossom', 'chestnut', 'chicken',
+ 'children_crossing', 'chocolate_bar', 'christmas_tree', 'church', 'cinema',
+ 'circus_tent', 'city_sunrise', 'city_sunset', 'cl', 'clap', 'clapper',
+ 'clipboard', 'clock1', 'clock10', 'clock1030', 'clock11', 'clock1130',
+ 'clock12', 'clock1230', 'clock130', 'clock2', 'clock230', 'clock3', 'clock330',
+ 'clock4', 'clock430', 'clock5', 'clock530', 'clock6', 'clock630', 'clock7',
+ 'clock730', 'clock8', 'clock830', 'clock9', 'clock930', 'closed_book',
+ 'closed_lock_with_key', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail',
+ 'coffee', 'cold_sweat', 'collision', 'computer', 'confetti_ball', 'confounded',
+ 'confused', 'congratulations', 'construction', 'construction_worker',
+ 'convenience_store', 'cookie', 'cool', 'cop', 'copyright', 'corn', 'couple',
+ 'couple_with_heart', 'couplekiss', 'cow', 'cow2', 'credit_card', 'crocodile',
+ 'crossed_flags', 'crown', 'cry', 'crying_cat_face', 'crystal_ball', 'cupid',
+ 'curly_loop', 'currency_exchange', 'curry', 'custard', 'customs', 'cyclone',
+ 'dancer', 'dancers', 'dango', 'dart', 'dash', 'date', 'de', 'deciduous_tree',
+ 'department_store', 'diamond_shape_with_a_dot_inside', 'diamonds',
+ 'disappointed', 'disappointed_relieved', 'dizzy', 'dizzy_face', 'do_not_litter',
+ 'dog', 'dog2', 'dollar', 'dolls', 'dolphin', 'donut', 'door', 'doughnut',
+ 'dragon', 'dragon_face', 'dress', 'dromedary_camel', 'droplet', 'dvd', 'e-mail',
+ 'ear', 'ear_of_rice', 'earth_africa', 'earth_americas', 'earth_asia', 'egg',
+ 'eggplant', 'eight', 'eight_pointed_black_star', 'eight_spoked_asterisk',
+ 'electric_plug', 'elephant', 'email', 'end', 'envelope', 'es', 'euro',
+ 'european_castle', 'european_post_office', 'evergreen_tree', 'exclamation',
+ 'expressionless', 'eyeglasses', 'eyes', 'facepunch', 'factory', 'fallen_leaf',
+ 'family', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel',
+ 'file_folder', 'finnadie', 'fire', 'fire_engine', 'fireworks',
+ 'first_quarter_moon', 'first_quarter_moon_with_face', 'fish', 'fish_cake',
+ 'fishing_pole_and_fish', 'fist', 'five', 'flags', 'flashlight', 'floppy_disk',
+ 'flower_playing_cards', 'flushed', 'foggy', 'football', 'fork_and_knife',
+ 'fountain', 'four', 'four_leaf_clover', 'fr', 'free', 'fried_shrimp', 'fries',
+ 'frog', 'frowning', 'fu', 'fuelpump', 'full_moon', 'full_moon_with_face',
+ 'game_die', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl',
+ 'globe_with_meridians', 'goat', 'goberserk', 'godmode', 'golf', 'grapes',
+ 'green_apple', 'green_book', 'green_heart', 'grey_exclamation', 'grey_question',
+ 'grimacing', 'grin', 'grinning', 'guardsman', 'guitar', 'gun', 'haircut',
+ 'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash',
+ 'hatched_chick', 'hatching_chick', 'headphones', 'hear_no_evil', 'heart',
+ 'heart_decoration', 'heart_eyes', 'heart_eyes_cat', 'heartbeat', 'heartpulse',
+ 'hearts', 'heavy_check_mark', 'heavy_division_sign', 'heavy_dollar_sign',
+ 'heavy_exclamation_mark', 'heavy_minus_sign', 'heavy_multiplication_x',
+ 'heavy_plus_sign', 'helicopter', 'herb', 'hibiscus', 'high_brightness',
+ 'high_heel', 'hocho', 'honey_pot', 'honeybee', 'horse', 'horse_racing',
+ 'hospital', 'hotel', 'hotsprings', 'hourglass', 'hourglass_flowing_sand',
+ 'house', 'house_with_garden', 'hurtrealbad', 'hushed', 'ice_cream', 'icecream',
+ 'id', 'ideograph_advantage', 'imp', 'inbox_tray', 'incoming_envelope',
+ 'information_desk_person', 'information_source', 'innocent', 'interrobang',
+ 'iphone', 'it', 'izakaya_lantern', 'jack_o_lantern', 'japan', 'japanese_castle',
+ 'japanese_goblin', 'japanese_ogre', 'jeans', 'joy', 'joy_cat', 'jp', 'key',
+ 'keycap_ten', 'kimono', 'kiss', 'kissing', 'kissing_cat', 'kissing_closed_eyes',
+ 'kissing_face', 'kissing_heart', 'kissing_smiling_eyes', 'koala', 'koko', 'kr',
+ 'large_blue_circle', 'large_blue_diamond', 'large_orange_diamond',
+ 'last_quarter_moon', 'last_quarter_moon_with_face', 'laughing', 'leaves',
+ 'ledger', 'left_luggage', 'left_right_arrow', 'leftwards_arrow_with_hook',
+ 'lemon', 'leo', 'leopard', 'libra', 'light_rail', 'link', 'lips', 'lipstick',
+ 'lock', 'lock_with_ink_pen', 'lollipop', 'loop', 'loudspeaker', 'love_hotel',
+ 'love_letter', 'low_brightness', 'm', 'mag', 'mag_right', 'mahjong', 'mailbox',
+ 'mailbox_closed', 'mailbox_with_mail', 'mailbox_with_no_mail', 'man',
+ 'man_with_gua_pi_mao', 'man_with_turban', 'mans_shoe', 'maple_leaf', 'mask',
+ 'massage', 'meat_on_bone', 'mega', 'melon', 'memo', 'mens', 'metal', 'metro',
+ 'microphone', 'microscope', 'milky_way', 'minibus', 'minidisc',
+ 'mobile_phone_off', 'money_with_wings', 'moneybag', 'monkey', 'monkey_face',
+ 'monorail', 'moon', 'mortar_board', 'mount_fuji', 'mountain_bicyclist',
+ 'mountain_cableway', 'mountain_railway', 'mouse', 'mouse2', 'movie_camera',
+ 'moyai', 'muscle', 'mushroom', 'musical_keyboard', 'musical_note',
+ 'musical_score', 'mute', 'nail_care', 'name_badge', 'neckbeard', 'necktie',
+ 'negative_squared_cross_mark', 'neutral_face', 'new', 'new_moon',
+ 'new_moon_with_face', 'newspaper', 'ng', 'nine', 'no_bell', 'no_bicycles',
+ 'no_entry', 'no_entry_sign', 'no_good', 'no_mobile_phones', 'no_mouth',
+ 'no_pedestrians', 'no_smoking', 'non-potable_water', 'nose', 'notebook',
+ 'notebook_with_decorative_cover', 'notes', 'nut_and_bolt', 'o', 'o2', 'ocean',
+ 'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman',
+ 'older_man', 'older_woman', 'on', 'oncoming_automobile', 'oncoming_bus',
+ 'oncoming_police_car', 'oncoming_taxi', 'one', 'open_file_folder', 'open_hands',
+ 'open_mouth', 'ophiuchus', 'orange_book', 'outbox_tray', 'ox', 'page_facing_up',
+ 'page_with_curl', 'pager', 'palm_tree', 'panda_face', 'paperclip', 'parking',
+ 'part_alternation_mark', 'partly_sunny', 'passport_control', 'paw_prints',
+ 'peach', 'pear', 'pencil', 'pencil2', 'penguin', 'pensive', 'performing_arts',
+ 'persevere', 'person_frowning', 'person_with_blond_hair',
+ 'person_with_pouting_face', 'phone', 'pig', 'pig2', 'pig_nose', 'pill',
+ 'pineapple', 'pisces', 'pizza', 'plus1', 'point_down', 'point_left',
+ 'point_right', 'point_up', 'point_up_2', 'police_car', 'poodle', 'poop',
+ 'post_office', 'postal_horn', 'postbox', 'potable_water', 'pouch',
+ 'poultry_leg', 'pound', 'pouting_cat', 'pray', 'princess', 'punch',
+ 'purple_heart', 'purse', 'pushpin', 'put_litter_in_its_place', 'question',
+ 'rabbit', 'rabbit2', 'racehorse', 'radio', 'radio_button', 'rage', 'rage1',
+ 'rage2', 'rage3', 'rage4', 'railway_car', 'rainbow', 'raised_hand',
+ 'raised_hands', 'raising_hand', 'ram', 'ramen', 'rat', 'recycle', 'red_car',
+ 'red_circle', 'registered', 'relaxed', 'relieved', 'repeat', 'repeat_one',
+ 'restroom', 'revolving_hearts', 'rewind', 'ribbon', 'rice', 'rice_ball',
+ 'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rooster',
+ 'rose', 'rotating_light', 'round_pushpin', 'rowboat', 'ru', 'rugby_football',
+ 'runner', 'running', 'running_shirt_with_sash', 'sa', 'sagittarius', 'sailboat',
+ 'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school',
+ 'school_satchel', 'scissors', 'scorpius', 'scream', 'scream_cat', 'scroll',
+ 'seat', 'secret', 'see_no_evil', 'seedling', 'seven', 'shaved_ice', 'sheep',
+ 'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'shower', 'signal_strength',
+ 'six', 'six_pointed_star', 'ski', 'skull', 'sleeping', 'sleepy', 'slot_machine',
+ 'small_blue_diamond', 'small_orange_diamond', 'small_red_triangle',
+ 'small_red_triangle_down', 'smile', 'smile_cat', 'smiley', 'smiley_cat',
+ 'smiling_imp', 'smirk', 'smirk_cat', 'smoking', 'snail', 'snake', 'snowboarder',
+ 'snowflake', 'snowman', 'sob', 'soccer', 'soon', 'sos', 'sound',
+ 'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles',
+ 'sparkling_heart', 'speak_no_evil', 'speaker', 'speech_balloon', 'speedboat',
+ 'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty',
+ 'steam_locomotive', 'stew', 'straight_ruler', 'strawberry', 'stuck_out_tongue',
+ 'stuck_out_tongue_closed_eyes', 'stuck_out_tongue_winking_eye', 'sun_with_face',
+ 'sunflower', 'sunglasses', 'sunny', 'sunrise', 'sunrise_over_mountains',
+ 'surfer', 'sushi', 'suspect', 'suspension_railway', 'sweat', 'sweat_drops',
+ 'sweat_smile', 'sweet_potato', 'swimmer', 'symbols', 'syringe', 'tada',
+ 'tanabata_tree', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone',
+ 'telephone_receiver', 'telescope', 'tennis', 'tent', 'thought_balloon', 'three',
+ 'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tiger2', 'tired_face', 'tm',
+ 'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'tractor',
+ 'traffic_light', 'train', 'train2', 'tram', 'triangular_flag_on_post',
+ 'triangular_ruler', 'trident', 'triumph', 'trolleybus', 'trollface', 'trophy',
+ 'tropical_drink', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip',
+ 'turtle', 'tv', 'twisted_rightwards_arrows', 'two', 'two_hearts',
+ 'two_men_holding_hands', 'two_women_holding_hands', 'u5272', 'u5408', 'u55b6',
+ 'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7981', 'u7a7a', 'uk',
+ 'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v',
+ 'vertical_traffic_light', 'vhs', 'vibration_mode', 'video_camera', 'video_game',
+ 'violin', 'virgo', 'volcano', 'vs', 'walking', 'waning_crescent_moon',
+ 'waning_gibbous_moon', 'warning', 'watch', 'water_buffalo', 'watermelon',
+ 'wave', 'wavy_dash', 'waxing_crescent_moon', 'waxing_gibbous_moon', 'wc',
+ 'weary', 'wedding', 'whale', 'whale2', 'wheelchair', 'white_check_mark',
+ 'white_circle', 'white_flower', 'white_square', 'white_square_button',
+ 'wind_chime', 'wine_glass', 'wink', 'wolf', 'woman', 'womans_clothes',
+ 'womans_hat', 'womens', 'worried', 'wrench', 'x', 'yellow_heart', 'yen', 'yum',
+ 'zap', 'zero', 'zzz'];
diff --git a/client/lib/modal.js b/client/lib/modal.js
index 1ca8804b..d5350264 100644
--- a/client/lib/modal.js
+++ b/client/lib/modal.js
@@ -31,7 +31,7 @@ window.Modal = new class {
this._currentModal.set({ header, modalName });
this._onCloseGoTo = onCloseGoTo;
}
-};
+}();
Blaze.registerHelper('Modal', Modal);
diff --git a/client/lib/popup.js b/client/lib/popup.js
index d9e29ff1..0a700f82 100644
--- a/client/lib/popup.js
+++ b/client/lib/popup.js
@@ -190,7 +190,7 @@ window.Popup = new class {
return title !== translationKey ? title : defaultTitle;
};
}
-};
+}();
// We close a potential opened popup on any left click on the document, or go
// one step back by pressing escape.
diff --git a/client/lib/unsavedEdits.js b/client/lib/unsavedEdits.js
index 17bb29b5..9c02eb84 100644
--- a/client/lib/unsavedEdits.js
+++ b/client/lib/unsavedEdits.js
@@ -1,5 +1,3 @@
-Meteor.subscribe('unsaved-edits');
-
// `UnsavedEdits` is a global key-value store used to save drafts of user
// inputs. We used to have the notion of a `cachedValue` that was local to a
// component but the global store has multiple advantages:
diff --git a/docker-compose.yml b/docker-compose.yml
index 3e663d86..fd570e5a 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -3,7 +3,7 @@ version: '2'
services:
wekandb:
- image: mongo:3.2.17
+ image: mongo:3.2.18
container_name: wekan-db
restart: always
command: mongod --smallfiles --oplogSize 128
diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json
index 26be8914..d731d587 100644
--- a/i18n/de.i18n.json
+++ b/i18n/de.i18n.json
@@ -184,7 +184,7 @@
"email-enrollAccount-subject": "Ihr Benutzerkonto auf __siteName__ wurde erstellt",
"email-enrollAccount-text": "Hallo __user__,\n\num den Dienst nutzen zu können, klicken Sie bitte auf folgenden Link:\n\n__url__\n\nDanke.",
"email-fail": "Senden der E-Mail fehlgeschlagen",
- "email-fail-text": "Error trying to send email",
+ "email-fail-text": "Fehler beim Senden des E-Mails",
"email-invalid": "Ungültige E-Mail-Adresse",
"email-invite": "via E-Mail einladen",
"email-invite-subject": "__inviter__ hat Ihnen eine Einladung geschickt",
@@ -240,7 +240,7 @@
"initials": "Initialen",
"invalid-date": "Ungültiges Datum",
"invalid-time": "Ungültige Zeitangabe",
- "invalid-user": "Invalid user",
+ "invalid-user": "Ungültiger Benutzer",
"joined": "beigetreten",
"just-invited": "Sie wurden soeben zu diesem Board eingeladen",
"keyboard-shortcuts": "Tastaturkürzel",
@@ -388,12 +388,12 @@
"smtp-password": "Passwort",
"smtp-tls": "TLS Unterstützung",
"send-from": "Absender",
- "send-smtp-test": "Send a test email to yourself",
+ "send-smtp-test": "Test-E-Mail an sich selbst schicken",
"invitation-code": "Einladungscode",
"email-invite-register-subject": "__inviter__ hat Ihnen eine Einladung geschickt",
"email-invite-register-text": "Hallo __user__,\n\n__inviter__ hat Sie für Ihre Zusammenarbeit zu Wekan eingeladen.\n\nBitte klicken Sie auf folgenden Link:\n__url__\n\nIhr Einladungscode lautet: __icode__\n\nDanke.",
- "email-smtp-test-subject": "SMTP Test Email From Wekan",
- "email-smtp-test-text": "You have successfully sent an email",
+ "email-smtp-test-subject": "SMTP-Test-E-Mail von Wekan",
+ "email-smtp-test-text": "Sie haben erfolgreich eine E-Mail versandt",
"error-invitation-code-not-exist": "Ungültiger Einladungscode",
"error-notAuthorized": "Sie sind nicht berechtigt diese Seite zu sehen.",
"outgoing-webhooks": "Ausgehende Webhooks",
diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json
index 815e868a..d2c2552c 100644
--- a/i18n/eo.i18n.json
+++ b/i18n/eo.i18n.json
@@ -5,17 +5,17 @@
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
- "act-createBoard": "kreiis __board__",
- "act-createCard": "aldonis __card__ al __list__",
- "act-createList": "aldonis __card__ al __board__",
- "act-addBoardMember": "aldonis __member__ al __board__",
+ "act-createBoard": "Kreiis __board__",
+ "act-createCard": "Aldonis __card__ al __list__",
+ "act-createList": "Aldonis __card__ al __board__",
+ "act-addBoardMember": "Aldonis __member__ al __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": "aldonis __member__ al __card__",
+ "act-joinMember": "Aldonis __member__ al __card__",
"act-moveCard": "moved __card__ from __oldList__ to __list__",
"act-removeBoardMember": "removed __member__ from __board__",
"act-restoredCard": "restored __card__ to __board__",
@@ -25,10 +25,10 @@
"actions": "Akcioj",
"activities": "Aktivaĵoj",
"activity": "Aktivaĵo",
- "activity-added": "aldonis %s al %s",
+ "activity-added": "Aldonis %s al %s",
"activity-archived": "archived %s",
"activity-attached": "attached %s to %s",
- "activity-created": "kreiis %s",
+ "activity-created": "Kreiis %s",
"activity-excluded": "excluded %s from %s",
"activity-imported": "imported %s into %s from %s",
"activity-imported-board": "imported %s from %s",
@@ -36,7 +36,7 @@
"activity-moved": "moved %s from %s to %s",
"activity-on": "on %s",
"activity-removed": "removed %s from %s",
- "activity-sent": "sendis %s al %s",
+ "activity-sent": "Sendis %s al %s",
"activity-unjoined": "unjoined %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
@@ -96,7 +96,7 @@
"boards": "Boards",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
- "card-archived": "Karto arkivita.",
+ "card-archived": "Karto arkivita",
"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.",
@@ -106,18 +106,18 @@
"card-spent": "Spent Time",
"card-edit-attachments": "Edit attachments",
"card-edit-labels": "Redakti etikedojn",
- "card-edit-members": "Redakti membroj",
+ "card-edit-members": "Redakti membrojn",
"card-labels-title": "Change the labels for the card.",
"card-members-title": "Add or remove members of the board from the card.",
"card-start": "Komenco",
- "card-start-on": "Komencas je ",
+ "card-start-on": "Komencas je la",
"cardAttachmentsPopup-title": "Attach From",
"cardDeletePopup-title": "Delete Card?",
"cardDetailsActionsPopup-title": "Card Actions",
"cardLabelsPopup-title": "Etikedoj",
"cardMembersPopup-title": "Membroj",
"cardMorePopup-title": "Pli",
- "cards": "Karto",
+ "cards": "Kartoj",
"change": "Ŝanĝi",
"change-avatar": "Change Avatar",
"change-password": "Ŝangi pasvorton",
@@ -154,7 +154,7 @@
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"create": "Krei",
- "createBoardPopup-title": "Krei ",
+ "createBoardPopup-title": "Krei tavolon",
"chooseBoardSourcePopup-title": "Import board",
"createLabelPopup-title": "Create Label",
"current": "current",
@@ -171,19 +171,19 @@
"download": "Elŝuti",
"edit": "Redakti",
"edit-avatar": "Change Avatar",
- "edit-profile": "Redakti profilo",
+ "edit-profile": "Redakti profilon",
"edit-wip-limit": "Edit WIP Limit",
"soft-wip-limit": "Soft WIP Limit",
- "editCardStartDatePopup-title": "Redakti komencdato",
+ "editCardStartDatePopup-title": "Redakti komencdaton",
"editCardDueDatePopup-title": "Change due date",
"editCardSpentTimePopup-title": "Change spent time",
- "editLabelPopup-title": "Ŝanĝi etikedo",
+ "editLabelPopup-title": "Ŝanĝi etikedon",
"editNotificationPopup-title": "Edit Notification",
- "editProfilePopup-title": "Redakti profilo",
+ "editProfilePopup-title": "Redakti profilon",
"email": "Retpoŝtadreso",
"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": "Malsukcese sendis retpoŝton",
+ "email-fail": "Malsukcesis sendi retpoŝton",
"email-fail-text": "Error trying to send email",
"email-invalid": "Nevalida retpoŝtadreso",
"email-invite": "Inviti per retpoŝto",
@@ -218,7 +218,7 @@
"fullname": "Full Name",
"header-logo-title": "Go back to your boards page.",
"hide-system-messages": "Hide system messages",
- "headerBarCreateBoardPopup-title": "Krei ",
+ "headerBarCreateBoardPopup-title": "Krei tavolon",
"home": "Hejmo",
"import": "Importi",
"import-board": "import board",
diff --git a/i18n/es-AR.i18n.json b/i18n/es-AR.i18n.json
index 9e3524b3..d232988f 100644
--- a/i18n/es-AR.i18n.json
+++ b/i18n/es-AR.i18n.json
@@ -103,7 +103,7 @@
"card-delete-suggest-archive": "Tu puedes archivar una tarjeta para removerla del tablero y preservar la actividad.",
"card-due": "Vence",
"card-due-on": "Vence en",
- "card-spent": "Spent Time",
+ "card-spent": "Tiempo Empleado",
"card-edit-attachments": "Editar adjuntos",
"card-edit-labels": "Editar etiquetas",
"card-edit-members": "Editar miembros",
@@ -173,10 +173,10 @@
"edit-avatar": "Cambiar Avatar",
"edit-profile": "Editar Perfil",
"edit-wip-limit": "Editar Lìmite de TEP",
- "soft-wip-limit": "Soft WIP Limit",
+ "soft-wip-limit": "Límite TEP suave",
"editCardStartDatePopup-title": "Cambiar fecha de inicio",
"editCardDueDatePopup-title": "Cambiar fecha de vencimiento",
- "editCardSpentTimePopup-title": "Change spent time",
+ "editCardSpentTimePopup-title": "Cambiar tiempo empleado",
"editLabelPopup-title": "Cambiar Etiqueta",
"editNotificationPopup-title": "Editar Notificació",
"editProfilePopup-title": "Editar Perfil",
@@ -184,7 +184,7 @@
"email-enrollAccount-subject": "Una cuenta creada para vos en __siteName__",
"email-enrollAccount-text": "Hola __user__,\n\nPara empezar a usar el servicio, simplemente clickeá en el enlace de abajo.\n\n__url__\n\nGracias.",
"email-fail": "Fallo envío de email",
- "email-fail-text": "Error trying to send email",
+ "email-fail-text": "Error intentando enviar email",
"email-invalid": "Email inválido",
"email-invite": "Invitar vía Email",
"email-invite-subject": "__inviter__ te envió una invitación",
@@ -239,8 +239,8 @@
"info": "Versión",
"initials": "Iniciales",
"invalid-date": "Fecha inválida",
- "invalid-time": "Invalid time",
- "invalid-user": "Invalid user",
+ "invalid-time": "Tiempo inválido",
+ "invalid-user": "Usuario inválido",
"joined": "unido",
"just-invited": "Fuiste invitado a este tablero",
"keyboard-shortcuts": "Atajos de teclado",
@@ -342,11 +342,11 @@
"team": "Equipo",
"this-board": "este tablero",
"this-card": "esta tarjeta",
- "spent-time-hours": "Spent time (hours)",
- "overtime-hours": "Overtime (hours)",
- "overtime": "Overtime",
- "has-overtime-cards": "Has overtime cards",
- "has-spenttime-cards": "Has spenttime cards",
+ "spent-time-hours": "Tiempo empleado (horas)",
+ "overtime-hours": "Sobretiempo (horas)",
+ "overtime": "Sobretiempo",
+ "has-overtime-cards": "Tiene tarjetas con sobretiempo",
+ "has-spenttime-cards": "Tiene tarjetas con tiempo empleado",
"time": "Hora",
"title": "Título",
"tracking": "Seguimiento",
@@ -388,12 +388,12 @@
"smtp-password": "Contraseña",
"smtp-tls": "Soporte TLS",
"send-from": "De",
- "send-smtp-test": "Send a test email to yourself",
+ "send-smtp-test": "Enviarse un email de prueba",
"invitation-code": "Código de Invitación",
"email-invite-register-subject": "__inviter__ te envió una invitación",
"email-invite-register-text": "Querido __user__,\n\n__inviter__ te invita a Wekan para colaborar.\n\nPor favor sigue el enlace de abajo:\n__url__\n\nI tu código de invitación es: __icode__\n\nGracias.",
- "email-smtp-test-subject": "SMTP Test Email From Wekan",
- "email-smtp-test-text": "You have successfully sent an email",
+ "email-smtp-test-subject": "Email de Prueba SMTP de Wekan",
+ "email-smtp-test-text": "Enviaste el correo correctamente",
"error-invitation-code-not-exist": "El código de invitación no existe",
"error-notAuthorized": "No estás autorizado para ver esta página.",
"outgoing-webhooks": "Ganchos Web Salientes",
@@ -418,7 +418,7 @@
"no": "No",
"accounts": "Cuentas",
"accounts-allowEmailChange": "Permitir Cambio de Email",
- "createdAt": "Created at",
- "verified": "Verified",
- "active": "Active"
+ "createdAt": "Creado en",
+ "verified": "Verificado",
+ "active": "Activo"
} \ No newline at end of file
diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json
index ea582c17..b86f99a8 100644
--- a/i18n/es.i18n.json
+++ b/i18n/es.i18n.json
@@ -184,7 +184,7 @@
"email-enrollAccount-subject": "Cuenta creada en __siteName__",
"email-enrollAccount-text": "Hola __user__,\n\nPara empezar a utilizar el servicio, simplemente haz clic en el siguiente enlace.\n\n__url__\n\nGracias.",
"email-fail": "Error al enviar el correo",
- "email-fail-text": "Error trying to send email",
+ "email-fail-text": "Error al intentar enviar el correo",
"email-invalid": "Correo no válido",
"email-invite": "Invitar vía correo electrónico",
"email-invite-subject": "__inviter__ ha enviado una invitación",
@@ -240,7 +240,7 @@
"initials": "Iniciales",
"invalid-date": "Fecha no válida",
"invalid-time": "Tiempo no válido",
- "invalid-user": "Invalid user",
+ "invalid-user": "Usuario no válido",
"joined": "se ha unido",
"just-invited": "Has sido invitado a este tablero",
"keyboard-shortcuts": "Atajos de teclado",
@@ -388,12 +388,12 @@
"smtp-password": "Contraseña",
"smtp-tls": "Soporte TLS",
"send-from": "Desde",
- "send-smtp-test": "Send a test email to yourself",
+ "send-smtp-test": "Enviarte un correo de prueba a ti mismo",
"invitation-code": "Código de Invitación",
"email-invite-register-subject": "__inviter__ te ha enviado una invitación",
"email-invite-register-text": "Estimado __user__,\n\n__inviter__ te invita a unirte a Wekan para colaborar.\n\nPor favor, haz clic en el siguiente enlace:\n__url__\n\nTu código de invitación es: __icode__\n\nGracias.",
- "email-smtp-test-subject": "SMTP Test Email From Wekan",
- "email-smtp-test-text": "You have successfully sent an email",
+ "email-smtp-test-subject": "Prueba de correo SMTP desde Wekan",
+ "email-smtp-test-text": "El correo se ha enviado correctamente",
"error-invitation-code-not-exist": "El código de invitación no existe",
"error-notAuthorized": "No estás autorizado a ver esta página.",
"outgoing-webhooks": "Webhooks salientes",
diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json
index 8dbb37c1..7c377b49 100644
--- a/i18n/he.i18n.json
+++ b/i18n/he.i18n.json
@@ -184,7 +184,7 @@
"email-enrollAccount-subject": "נוצר עבורך חשבון באתר __siteName__",
"email-enrollAccount-text": "__user__ שלום,\n\nכדי להתחיל להשתמש בשירות, יש ללחוץ על הקישור המופיע להלן.\n\n__url__\n\nתודה.",
"email-fail": "שליחת ההודעה בדוא״ל נכשלה",
- "email-fail-text": "Error trying to send email",
+ "email-fail-text": "שגיאה בעת ניסיון לשליחת הודעת דוא״ל",
"email-invalid": "כתובת דוא״ל לא חוקית",
"email-invite": "הזמנה באמצעות דוא״ל",
"email-invite-subject": "נשלחה אליך הזמנה מאת __inviter__",
@@ -240,7 +240,7 @@
"initials": "ראשי תיבות",
"invalid-date": "תאריך שגוי",
"invalid-time": "זמן שגוי",
- "invalid-user": "Invalid user",
+ "invalid-user": "משתמש שגוי",
"joined": "הצטרף",
"just-invited": "הוזמנת ללוח זה",
"keyboard-shortcuts": "קיצורי מקלדת",
@@ -388,12 +388,12 @@
"smtp-password": "ססמה",
"smtp-tls": "תמיכה ב־TLS",
"send-from": "מאת",
- "send-smtp-test": "Send a test email to yourself",
+ "send-smtp-test": "שליחת דוא״ל בדיקה לעצמך",
"invitation-code": "קוד הזמנה",
"email-invite-register-subject": "נשלחה אליך הזמנה מאת __inviter__",
"email-invite-register-text": "__user__ יקר,\n\nקיבלת הזמנה מאת __inviter__ לשתף פעולה ב־Wekan.\n\nנא ללחוץ על הקישור:\n__url__\n\nקוד ההזמנה שלך הוא: __icode__\n\nתודה.",
- "email-smtp-test-subject": "SMTP Test Email From Wekan",
- "email-smtp-test-text": "You have successfully sent an email",
+ "email-smtp-test-subject": "הודעת בדיקה דרך SMTP מאת Wekan",
+ "email-smtp-test-text": "שלחת הודעת דוא״ל בהצלחה",
"error-invitation-code-not-exist": "קוד ההזמנה אינו קיים",
"error-notAuthorized": "אין לך הרשאה לצפות בעמוד זה.",
"outgoing-webhooks": "קרסי רשת יוצאים",
diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json
index 93ca85f1..a1ec14d8 100644
--- a/i18n/it.i18n.json
+++ b/i18n/it.i18n.json
@@ -103,7 +103,7 @@
"card-delete-suggest-archive": "Puoi archiviare una scheda per rimuoverla dalla bacheca e preservare la sua attività.",
"card-due": "Scadenza",
"card-due-on": "Scade",
- "card-spent": "Spent Time",
+ "card-spent": "Tempo trascorso",
"card-edit-attachments": "Modifica allegati",
"card-edit-labels": "Modifica etichette",
"card-edit-members": "Modifica membri",
@@ -176,7 +176,7 @@
"soft-wip-limit": "Limite Work in progress soft",
"editCardStartDatePopup-title": "Cambia data di inizio",
"editCardDueDatePopup-title": "Cambia data di scadenza",
- "editCardSpentTimePopup-title": "Change spent time",
+ "editCardSpentTimePopup-title": "Cambia tempo trascorso",
"editLabelPopup-title": "Cambia etichetta",
"editNotificationPopup-title": "Modifica notifiche",
"editProfilePopup-title": "Modifica profilo",
@@ -184,7 +184,7 @@
"email-enrollAccount-subject": "Creato un account per te su __siteName__",
"email-enrollAccount-text": "Ciao __user__,\n\nPer iniziare ad usare il servizio, clicca sul link seguente:\n\n__url__\n\nGrazie.",
"email-fail": "Invio email fallito",
- "email-fail-text": "Error trying to send email",
+ "email-fail-text": "Errore nel tentativo di invio email",
"email-invalid": "Email non valida",
"email-invite": "Invita via email",
"email-invite-subject": "__inviter__ ti ha inviato un invito",
@@ -240,7 +240,7 @@
"initials": "Iniziali",
"invalid-date": "Data non valida",
"invalid-time": "Invalid time",
- "invalid-user": "Invalid user",
+ "invalid-user": "User non valido",
"joined": "si è unito a",
"just-invited": "Sei stato appena invitato a questa bacheca",
"keyboard-shortcuts": "Scorciatoie da tastiera",
@@ -342,8 +342,8 @@
"team": "Team",
"this-board": "questa bacheca",
"this-card": "questa scheda",
- "spent-time-hours": "Spent time (hours)",
- "overtime-hours": "Overtime (hours)",
+ "spent-time-hours": "Tempo trascorso (ore)",
+ "overtime-hours": "Overtime (ore)",
"overtime": "Overtime",
"has-overtime-cards": "Has overtime cards",
"has-spenttime-cards": "Has spenttime cards",
@@ -388,12 +388,12 @@
"smtp-password": "Password",
"smtp-tls": "Supporto TLS",
"send-from": "Da",
- "send-smtp-test": "Send a test email to yourself",
+ "send-smtp-test": "Invia un'email di test a te stesso",
"invitation-code": "Codice d'invito",
"email-invite-register-subject": "__inviter__ ti ha inviato un invito",
"email-invite-register-text": "Gentile __user__,\n\n__inviter__ ti ha invitato su Wekan per collaborare.\n\nPer favore segui il link qui sotto:\n__url__\n\nIl tuo codice d'invito è: __icode__\n\nGrazie.",
"email-smtp-test-subject": "SMTP Test Email From Wekan",
- "email-smtp-test-text": "You have successfully sent an email",
+ "email-smtp-test-text": "Hai inviato un'email con successo",
"error-invitation-code-not-exist": "Il codice d'invito non esiste",
"error-notAuthorized": "Non sei autorizzato ad accedere a questa pagina.",
"outgoing-webhooks": "Server esterni",
@@ -419,6 +419,6 @@
"accounts": "Profili",
"accounts-allowEmailChange": "Permetti modifica dell'email",
"createdAt": "Created at",
- "verified": "Verified",
- "active": "Active"
+ "verified": "Verificato",
+ "active": "Attivo"
} \ No newline at end of file
diff --git a/i18n/lv.i18n.json b/i18n/lv.i18n.json
new file mode 100644
index 00000000..3e5d3289
--- /dev/null
+++ b/i18n/lv.i18n.json
@@ -0,0 +1,424 @@
+{
+ "accept": "Piekrist",
+ "act-activity-notify": "[Wekan] Aktivitātes paziņojums",
+ "act-addAttachment": "pievienots __attachment__ to __card__",
+ "act-addChecklist": "pievienots checklist __checklist__ to __card__",
+ "act-addChecklistItem": "pievienots __checklistItem__ to checklist __checklist__ on __card__",
+ "act-addComment": "komentēja __card__: __comment__",
+ "act-createBoard": "izveidoja __board__",
+ "act-createCard": "pievienoja __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",
+ "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": "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": "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": "Members",
+ "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": "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 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.",
+ "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"
+} \ No newline at end of file
diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json
index ed76037e..355a7d24 100644
--- a/i18n/pl.i18n.json
+++ b/i18n/pl.i18n.json
@@ -60,7 +60,7 @@
"all-boards": "Wszystkie tablice",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
- "apply": "Apply",
+ "apply": "Zastosuj",
"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": "Zarchiwizuj",
"archive-all": "Zarchiwizuj wszystkie",
@@ -70,9 +70,9 @@
"archive-selection": "Zarchiwizuj zaznaczone",
"archiveBoardPopup-title": "Zarchiwizować tablicę?",
"archived-items": "Archived Items",
- "archived-boards": "Archived Boards",
- "restore-board": "Restore Board",
- "no-archived-boards": "No Archived Boards.",
+ "archived-boards": "Archiwizuj tablicę",
+ "restore-board": "Przywróć tablicę",
+ "no-archived-boards": "Brak zarchiwizowanych tablic",
"archives": "Zarchiwizowane",
"assign-member": "Dodaj członka",
"attached": "załączono",
@@ -81,7 +81,7 @@
"attachmentDeletePopup-title": "Usunąć załącznik?",
"attachments": "Załączniki",
"auto-watch": "Automatically watch boards when they are created",
- "avatar-too-big": "The avatar is too large (70KB max)",
+ "avatar-too-big": "Awatar jest za duży (maksymalnie 70Kb)",
"back": "Wstecz",
"board-change-color": "Zmień kolor",
"board-nb-stars": "%s odznaczeń",
@@ -122,12 +122,12 @@
"change-avatar": "Zmień Avatar",
"change-password": "Zmień hasło",
"change-permissions": "Zmień uprawnienia",
- "change-settings": "Change Settings",
+ "change-settings": "Zmień ustawienia",
"changeAvatarPopup-title": "Zmień Avatar",
"changeLanguagePopup-title": "Zmień język",
"changePasswordPopup-title": "Zmień hasło",
"changePermissionsPopup-title": "Zmień uprawnienia",
- "changeSettingsPopup-title": "Change Settings",
+ "changeSettingsPopup-title": "Zmień ustawienia",
"checklists": "Checklists",
"click-to-star": "Kliknij by odznaczyć tę tablicę.",
"click-to-unstar": "Kliknij by usunąć odznaczenie tej tablicy.",
@@ -146,19 +146,19 @@
"color-sky": "błękitny",
"color-yellow": "żółty",
"comment": "Komentarz",
- "comment-placeholder": "Write Comment",
+ "comment-placeholder": "Dodaj komentarz",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Komputer",
"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",
+ "copyCardPopup-title": "Skopiuj kartę",
"create": "Utwórz",
"createBoardPopup-title": "Utwórz tablicę",
- "chooseBoardSourcePopup-title": "Import board",
+ "chooseBoardSourcePopup-title": "Import tablicy",
"createLabelPopup-title": "Utwórz etykietę",
"current": "obecny",
- "date": "Date",
+ "date": "Data",
"decline": "Odrzuć",
"default-avatar": "Domyślny avatar",
"delete": "Usuń",
@@ -202,32 +202,32 @@
"error-json-schema": "Twój JSON nie zawiera prawidłowych informacji w poprawnym formacie",
"error-list-doesNotExist": "Ta lista nie isnieje",
"error-user-doesNotExist": "Ten użytkownik nie istnieje",
- "error-user-notAllowSelf": "You can not invite yourself",
+ "error-user-notAllowSelf": "Nie możesz zaprosić samego siebie",
"error-user-notCreated": "Ten użytkownik nie został stworzony",
- "error-username-taken": "This username is already taken",
+ "error-username-taken": "Ta nazwa jest już zajęta",
"error-email-taken": "Email has already been taken",
"export-board": "Eksportuj tablicę",
"filter": "Filtr",
"filter-cards": "Odfiltruj karty",
"filter-clear": "Usuń filter",
- "filter-no-label": "No label",
+ "filter-no-label": "Brak etykiety",
"filter-no-member": "No member",
"filter-on": "Filtr jest włączony",
"filter-on-desc": "Filtrujesz karty na tej tablicy. Kliknij tutaj by edytować filtr.",
"filter-to-selection": "Odfiltruj zaznaczenie",
"fullname": "Full Name",
"header-logo-title": "Wróć do swojej strony z tablicami.",
- "hide-system-messages": "Hide system messages",
+ "hide-system-messages": "Ukryj wiadomości systemowe",
"headerBarCreateBoardPopup-title": "Utwórz tablicę",
"home": "Strona główna",
"import": "Importu",
- "import-board": "import board",
- "import-board-c": "Import board",
+ "import-board": "importuj tablice",
+ "import-board-c": "Import tablicy",
"import-board-title-trello": "Import board from Trello",
- "import-board-title-wekan": "Import board from Wekan",
+ "import-board-title-wekan": "Importuj tablice z 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",
+ "from-trello": "Z Trello",
+ "from-wekan": "Z Wekan",
"import-board-instruction-trello": "W twojej tablicy na Trello, idź do 'Menu', następnie 'More', 'Print and Export', 'Export JSON' i skopiuj wynik",
"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": "Wklej twój JSON tutaj",
@@ -236,11 +236,11 @@
"import-show-user-mapping": "Przejrzyj wybranych członków",
"import-user-select": "Pick the Wekan user you want to use as this member",
"importMapMembersAddPopup-title": "Select Wekan member",
- "info": "Version",
+ "info": "Wersja",
"initials": "Initials",
- "invalid-date": "Invalid date",
- "invalid-time": "Invalid time",
- "invalid-user": "Invalid user",
+ "invalid-date": "Błędna data",
+ "invalid-time": "Błędny czas",
+ "invalid-user": "Zła nazwa użytkownika",
"joined": "dołączył",
"just-invited": "Właśnie zostałeś zaproszony do tej tablicy",
"keyboard-shortcuts": "Skróty klawiaturowe",
@@ -278,8 +278,8 @@
"moveSelectionPopup-title": "Przenieś zaznaczone",
"multi-selection": "Wielokrotne zaznaczenie",
"multi-selection-on": "Wielokrotne zaznaczenie jest włączone",
- "muted": "Muted",
- "muted-info": "You will never be notified of any changes in this board",
+ "muted": "Wyciszona",
+ "muted-info": "Nie zostaniesz powiadomiony o zmianach w tablicy",
"my-boards": "Moje tablice",
"name": "Nazwa",
"no-archived-cards": "Brak zarchiwizowanych kart.",
@@ -360,12 +360,12 @@
"username": "Nazwa użytkownika",
"view-it": "Zobacz",
"warn-list-archived": "ostrzeżenie: ta karta jest na zarchiwizowanej liście",
- "watch": "Watch",
- "watching": "Watching",
+ "watch": "Obserwuj",
+ "watching": "Obserwujesz",
"watching-info": "You will be notified of any change in this board",
"welcome-board": "Welcome Board",
- "welcome-list1": "Basics",
- "welcome-list2": "Advanced",
+ "welcome-list1": "Podstawy",
+ "welcome-list2": "Zaawansowane",
"what-to-do": "Co chcesz zrobić?",
"wipLimitErrorPopup-title": "Invalid WIP Limit",
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
@@ -378,18 +378,18 @@
"invite": "Zaproś",
"invite-people": "Zaproś osoby",
"to-boards": "To board(s)",
- "email-addresses": "Email Addresses",
+ "email-addresses": "Adres e-mail",
"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-host": "Serwer SMTP",
+ "smtp-port": "Port SMTP",
"smtp-username": "Nazwa użytkownika",
"smtp-password": "Hasło",
"smtp-tls": "TLS support",
- "send-from": "From",
- "send-smtp-test": "Send a test email to yourself",
- "invitation-code": "Invitation Code",
+ "send-from": "Od",
+ "send-smtp-test": "Wyślij wiadomość testową do siebie",
+ "invitation-code": "Kod z zaproszenia",
"email-invite-register-subject": "__inviter__ wysłał Ci zaproszenie",
"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",
@@ -399,9 +399,9 @@
"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",
+ "no-name": "(nieznany)",
+ "Wekan_version": "Wersja Wekan",
+ "Node_version": "Wersja Node",
"OS_Arch": "OS Arch",
"OS_Cpus": "OS CPU Count",
"OS_Freemem": "OS Free Memory",
@@ -418,7 +418,7 @@
"no": "Nie",
"accounts": "Konto",
"accounts-allowEmailChange": "Zezwól na zmianę adresu email",
- "createdAt": "Created at",
- "verified": "Verified",
- "active": "Active"
+ "createdAt": "Stworzono o",
+ "verified": "Zweryfikowane",
+ "active": "Aktywny"
} \ No newline at end of file
diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json
index d054c413..f668115c 100644
--- a/i18n/pt-BR.i18n.json
+++ b/i18n/pt-BR.i18n.json
@@ -103,7 +103,7 @@
"card-delete-suggest-archive": "Você pode arquivar um cartão para removê-lo do quadro e preservar suas atividades.",
"card-due": "Data fim",
"card-due-on": "Finaliza em",
- "card-spent": "Spent Time",
+ "card-spent": "Tempo Gasto",
"card-edit-attachments": "Editar anexos",
"card-edit-labels": "Editar etiquetas",
"card-edit-members": "Editar membros",
@@ -388,12 +388,12 @@
"smtp-password": "Senha",
"smtp-tls": "Suporte TLS",
"send-from": "De",
- "send-smtp-test": "Send a test email to yourself",
+ "send-smtp-test": "Enviar um email de teste para você mesmo",
"invitation-code": "Código do Convite",
"email-invite-register-subject": "__inviter__ lhe enviou um convite",
"email-invite-register-text": "Caro __user__,\n\n__inviter__ convidou você para colaborar no Wekan.\n\nPor favor, vá no link abaixo:\n__url__\n\nE seu código de convite é: __icode__\n\nObrigado.",
- "email-smtp-test-subject": "SMTP Test Email From Wekan",
- "email-smtp-test-text": "You have successfully sent an email",
+ "email-smtp-test-subject": "Email Teste SMTP de Wekan",
+ "email-smtp-test-text": "Você enviou um email com sucesso",
"error-invitation-code-not-exist": "O código do convite não existe",
"error-notAuthorized": "Você não está autorizado à ver esta página.",
"outgoing-webhooks": "Webhook de saída",
diff --git a/i18n/sv.i18n.json b/i18n/sv.i18n.json
index 88761dee..41e00665 100644
--- a/i18n/sv.i18n.json
+++ b/i18n/sv.i18n.json
@@ -103,7 +103,7 @@
"card-delete-suggest-archive": "Du kan arkivera ett kort för att ta bort det från anslagstavlan och bevara aktiviteten.",
"card-due": "Förfaller",
"card-due-on": "Förfaller på",
- "card-spent": "Spent Time",
+ "card-spent": "Spenderad tid",
"card-edit-attachments": "Redigera bilaga",
"card-edit-labels": "Redigera etiketter",
"card-edit-members": "Redigera medlemmar",
@@ -176,7 +176,7 @@
"soft-wip-limit": "Mjuk WIP-gräns",
"editCardStartDatePopup-title": "Ändra startdatum",
"editCardDueDatePopup-title": "Ändra förfallodatum",
- "editCardSpentTimePopup-title": "Change spent time",
+ "editCardSpentTimePopup-title": "Ändra spenderad tid",
"editLabelPopup-title": "Ändra etikett",
"editNotificationPopup-title": "Redigera avisering",
"editProfilePopup-title": "Redigera profil",
@@ -184,7 +184,7 @@
"email-enrollAccount-subject": "Ett konto skapas för dig på __siteName__",
"email-enrollAccount-text": "Hej __user__,\n\nFör att börja använda tjänsten, klicka på länken nedan.\n\n__url__\n\nTack.",
"email-fail": "Sändning av e-post misslyckades",
- "email-fail-text": "Error trying to send email",
+ "email-fail-text": "Ett fel vid försök att skicka e-post",
"email-invalid": "Ogiltig e-post",
"email-invite": "Bjud in via e-post",
"email-invite-subject": "__inviter__ skickade dig en inbjudan",
@@ -239,8 +239,8 @@
"info": "Version",
"initials": "Initialer ",
"invalid-date": "Ogiltigt datum",
- "invalid-time": "Invalid time",
- "invalid-user": "Invalid user",
+ "invalid-time": "Ogiltig tid",
+ "invalid-user": "Ogiltig användare",
"joined": "gick med",
"just-invited": "Du blev nyss inbjuden till denna anslagstavla",
"keyboard-shortcuts": "Tangentbordsgenvägar",
@@ -342,9 +342,9 @@
"team": "Grupp",
"this-board": "denna anslagstavla",
"this-card": "detta kort",
- "spent-time-hours": "Spent time (hours)",
- "overtime-hours": "Overtime (hours)",
- "overtime": "Overtime",
+ "spent-time-hours": "Spenderad tid (timmar)",
+ "overtime-hours": "Övertid (timmar)",
+ "overtime": "Övertid",
"has-overtime-cards": "Has overtime cards",
"has-spenttime-cards": "Has spenttime cards",
"time": "Tid",
@@ -419,6 +419,6 @@
"accounts": "Konton",
"accounts-allowEmailChange": "Tillåt e-poständring",
"createdAt": "Created at",
- "verified": "Verified",
- "active": "Active"
+ "verified": "Verifierad",
+ "active": "Aktiv"
} \ No newline at end of file
diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json
index 7775f0a3..1c78a461 100644
--- a/i18n/zh-CN.i18n.json
+++ b/i18n/zh-CN.i18n.json
@@ -103,7 +103,7 @@
"card-delete-suggest-archive": "你可以将卡片从看板中归档至回收箱,但保留相关活动。",
"card-due": "到期",
"card-due-on": "期限",
- "card-spent": "Spent Time",
+ "card-spent": "耗时",
"card-edit-attachments": "编辑附件",
"card-edit-labels": "编辑标签",
"card-edit-members": "编辑成员",
@@ -173,10 +173,10 @@
"edit-avatar": "更改头像",
"edit-profile": "编辑资料",
"edit-wip-limit": "编辑最大任务数",
- "soft-wip-limit": "Soft WIP Limit",
+ "soft-wip-limit": "软在制品限制",
"editCardStartDatePopup-title": "修改起始日期",
"editCardDueDatePopup-title": "修改截止日期",
- "editCardSpentTimePopup-title": "Change spent time",
+ "editCardSpentTimePopup-title": "修改耗时",
"editLabelPopup-title": "更改标签",
"editNotificationPopup-title": "编辑通知",
"editProfilePopup-title": "编辑资料",
@@ -184,7 +184,7 @@
"email-enrollAccount-subject": "已为您在 __siteName__ 创建帐号",
"email-enrollAccount-text": "尊敬的 __user__,\n\n点击下面的链接,即刻开始使用这项服务。\n\n__url__\n\n谢谢。",
"email-fail": "邮件发送失败",
- "email-fail-text": "Error trying to send email",
+ "email-fail-text": "尝试发送邮件时出错",
"email-invalid": "邮件地址错误",
"email-invite": "发送邮件邀请",
"email-invite-subject": "__inviter__ 向您发出邀请",
@@ -239,8 +239,8 @@
"info": "版本",
"initials": "缩写",
"invalid-date": "无效日期",
- "invalid-time": "Invalid time",
- "invalid-user": "Invalid user",
+ "invalid-time": "非法时间",
+ "invalid-user": "非法用户",
"joined": "关联",
"just-invited": "您刚刚被邀请加入此看板",
"keyboard-shortcuts": "键盘快捷键",
@@ -342,11 +342,11 @@
"team": "团队",
"this-board": "该看板",
"this-card": "该卡片",
- "spent-time-hours": "Spent time (hours)",
- "overtime-hours": "Overtime (hours)",
- "overtime": "Overtime",
- "has-overtime-cards": "Has overtime cards",
- "has-spenttime-cards": "Has spenttime cards",
+ "spent-time-hours": "耗时 (小时)",
+ "overtime-hours": "超时 (小时)",
+ "overtime": "超时",
+ "has-overtime-cards": "有超时卡片",
+ "has-spenttime-cards": "有耗时卡片",
"time": "时间",
"title": "标题",
"tracking": "跟踪",
@@ -388,12 +388,12 @@
"smtp-password": "密码",
"smtp-tls": "TLS支持",
"send-from": "发件人",
- "send-smtp-test": "Send a test email to yourself",
+ "send-smtp-test": "给自己发送一封测试邮件",
"invitation-code": "邀请码",
"email-invite-register-subject": "__inviter__ 向您发出邀请",
"email-invite-register-text": "亲爱的 __user__,\n\n__inviter__ 邀请您加入 Wekan 进行协作。\n\n请访问下面的链接︰\n__url__\n\n您的的邀请码是︰\n__icode__\n\n非常感谢。",
- "email-smtp-test-subject": "SMTP Test Email From Wekan",
- "email-smtp-test-text": "You have successfully sent an email",
+ "email-smtp-test-subject": "从Wekan发送SMTP测试邮件",
+ "email-smtp-test-text": "你已成功发送邮件",
"error-invitation-code-not-exist": "邀请码不存在",
"error-notAuthorized": "您无权查看此页面。",
"outgoing-webhooks": "外部Web挂钩",
@@ -401,7 +401,7 @@
"new-outgoing-webhook": "新建外部Web挂钩",
"no-name": "(未知)",
"Wekan_version": "Wekan版本",
- "Node_version": "节点版本",
+ "Node_version": "Node.js版本",
"OS_Arch": "系统架构",
"OS_Cpus": "系统 CPU数量",
"OS_Freemem": "系统可用内存",
@@ -418,7 +418,7 @@
"no": "否",
"accounts": "账号",
"accounts-allowEmailChange": "允许邮箱变更",
- "createdAt": "Created at",
- "verified": "Verified",
- "active": "Active"
+ "createdAt": "创建于",
+ "verified": "已验证",
+ "active": "活跃"
} \ No newline at end of file
diff --git a/models/cards.js b/models/cards.js
index b62bfea8..8676dfdc 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -18,9 +18,9 @@ Cards.attachSchema(new SimpleSchema({
listId: {
type: String,
},
- // The system could work without this `boardId` information (we could deduce
- // the board identifier from the card), but it would make the system more
- // difficult to manage and less efficient.
+ // The system could work without this `boardId` information (we could deduce
+ // the board identifier from the card), but it would make the system more
+ // difficult to manage and less efficient.
boardId: {
type: String,
},
@@ -146,8 +146,8 @@ Cards.helpers({
cover() {
const cover = Attachments.findOne(this.coverId);
- // if we return a cover before it is fully stored, we will get errors when we try to display it
- // todo XXX we could return a default "upload pending" image in the meantime?
+ // if we return a cover before it is fully stored, we will get errors when we try to display it
+ // todo XXX we could return a default "upload pending" image in the meantime?
return cover && cover.url() && cover;
},
@@ -339,7 +339,7 @@ function cardMembers(userId, doc, fieldNames, modifier) {
if (!_.contains(fieldNames, 'members'))
return;
let memberId;
- // Say hello to the new member
+ // Say hello to the new member
if (modifier.$addToSet && modifier.$addToSet.members) {
memberId = modifier.$addToSet.members;
if (!_.contains(doc.members, memberId)) {
@@ -353,10 +353,10 @@ function cardMembers(userId, doc, fieldNames, modifier) {
}
}
- // Say goodbye to the former member
+ // Say goodbye to the former member
if (modifier.$pull && modifier.$pull.members) {
memberId = modifier.$pull.members;
- // Check that the former member is member of the card
+ // Check that the former member is member of the card
if (_.contains(doc.members, memberId)) {
Activities.insert({
userId,
@@ -396,8 +396,8 @@ function cardRemover(userId, doc) {
if (Meteor.isServer) {
- // Cards are often fetched within a board, so we create an index to make these
- // queries more efficient.
+ // Cards are often fetched within a board, so we create an index to make these
+ // queries more efficient.
Meteor.startup(() => {
Cards._collection._ensureIndex({boardId: 1, createdAt: -1});
});
@@ -406,24 +406,24 @@ if (Meteor.isServer) {
cardCreation(userId, doc);
});
- // New activity for card (un)archivage
+ // New activity for card (un)archivage
Cards.after.update((userId, doc, fieldNames) => {
cardState(userId, doc, fieldNames);
});
- //New activity for card moves
+ //New activity for card moves
Cards.after.update(function (userId, doc, fieldNames) {
const oldListId = this.previous.listId;
cardMove(userId, doc, fieldNames, oldListId);
});
- // Add a new activity if we add or remove a member to the card
+ // Add a new activity if we add or remove a member to the card
Cards.before.update((userId, doc, fieldNames, modifier) => {
cardMembers(userId, doc, fieldNames, modifier);
});
- // Remove all activities associated with a card if we remove the card
- // Remove also card_comments / checklists / attachments
+ // Remove all activities associated with a card if we remove the card
+ // Remove also card_comments / checklists / attachments
Cards.after.remove((userId, doc) => {
cardRemover(userId, doc);
});
@@ -498,12 +498,12 @@ if (Meteor.isServer) {
if (req.body.hasOwnProperty('title')) {
const newTitle = req.body.title;
Cards.direct.update({_id: paramCardId, listId: paramListId, boardId: paramBoardId, archived: false},
- {$set: {title: newTitle}});
+ {$set: {title: newTitle}});
}
if (req.body.hasOwnProperty('listId')) {
const newParamListId = req.body.listId;
Cards.direct.update({_id: paramCardId, listId: paramListId, boardId: paramBoardId, archived: false},
- {$set: {listId: newParamListId}});
+ {$set: {listId: newParamListId}});
const card = Cards.findOne({_id: paramCardId} );
cardMove(req.body.authorId, card, {fieldName: 'listId'}, paramListId);
@@ -512,7 +512,7 @@ if (Meteor.isServer) {
if (req.body.hasOwnProperty('description')) {
const newDescription = req.body.description;
Cards.direct.update({_id: paramCardId, listId: paramListId, boardId: paramBoardId, archived: false},
- {$set: {description: newDescription}});
+ {$set: {description: newDescription}});
}
JsonRoutes.sendResult(res, {
code: 200,
diff --git a/models/invitationCodes.js b/models/invitationCodes.js
index 5761977a..53163f06 100644
--- a/models/invitationCodes.js
+++ b/models/invitationCodes.js
@@ -34,8 +34,8 @@ InvitationCodes.helpers({
});
// InvitationCodes.before.insert((userId, doc) => {
- // doc.createdAt = new Date();
- // doc.authorId = userId;
+// doc.createdAt = new Date();
+// doc.authorId = userId;
// });
if (Meteor.isServer) {
diff --git a/models/users.js b/models/users.js
index 11a53ce6..92cee9f6 100644
--- a/models/users.js
+++ b/models/users.js
@@ -372,6 +372,13 @@ Meteor.methods({
Meteor.call('setUsername', username, userId);
Meteor.call('setEmail', email, userId);
},
+ setPassword(newPassword, userId) {
+ check(userId, String);
+ check(newPassword, String);
+ if(Meteor.user().isAdmin){
+ Accounts.setPassword(userId, newPassword);
+ }
+ },
});
if (Meteor.isServer) {
diff --git a/package.json b/package.json
index 46e7d234..369bd5d3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "wekan",
- "version": "0.60.0",
+ "version": "0.61.0",
"description": "The open-source Trello-like kanban",
"private": true,
"scripts": {
diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp
index 4d000926..2aa3e1fd 100644
--- a/sandstorm-pkgdef.capnp
+++ b/sandstorm-pkgdef.capnp
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
- appVersion = 45,
+ appVersion = 46,
# Increment this for every release.
- appMarketingVersion = (defaultText = "0.60.0~2017-11-29"),
+ appMarketingVersion = (defaultText = "0.61.0~2017-12-12"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
diff --git a/server/migrations.js b/server/migrations.js
index 76721623..f828a14c 100644
--- a/server/migrations.js
+++ b/server/migrations.js
@@ -109,9 +109,9 @@ Migrations.add('add-member-isactive-field', () => {
Boards.find({}, {fields: {members: 1}}).forEach((board) => {
const allUsersWithSomeActivity = _.chain(
Activities.find({ boardId: board._id }, { fields:{ userId:1 }}).fetch())
- .pluck('userId')
- .uniq()
- .value();
+ .pluck('userId')
+ .uniq()
+ .value();
const currentUsers = _.pluck(board.members, 'userId');
const formerUsers = _.difference(allUsersWithSomeActivity, currentUsers);
diff --git a/server/notifications/outgoing.js b/server/notifications/outgoing.js
index ed3d8df7..779d41a0 100644
--- a/server/notifications/outgoing.js
+++ b/server/notifications/outgoing.js
@@ -30,8 +30,8 @@ Meteor.methods({
};
[ 'cardId', 'listId', 'oldListId',
- 'boardId', 'comment', 'user',
- 'card', 'commentId',
+ 'boardId', 'comment', 'user',
+ 'card', 'commentId',
].forEach((key) => {
if (params[key]) value[key] = params[key];
});
diff --git a/snapcraft.yaml b/snapcraft.yaml
index 5df6b1cd..e4466544 100644
--- a/snapcraft.yaml
+++ b/snapcraft.yaml
@@ -54,7 +54,7 @@ apps:
parts:
mongodb:
- source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.16.tgz
+ source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.18.tgz
plugin: dump
stage-packages: [libssl1.0.0]
filesets: