diff options
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 @@ -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: @@ -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: |