diff options
author | Lauri Ojansivu <x@xet7.org> | 2020-05-13 05:27:28 +0300 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2020-05-13 05:27:28 +0300 |
commit | aa084b7a7e56402aed36c1f50e0aef4ea9fd2266 (patch) | |
tree | a52c12297ebe06241b3e16849ab0a6c01d20bc7c | |
parent | ba01ebe05d80cb468c22f9d780855af1cf14124a (diff) | |
parent | 8a2509007c21a1056f79d183c71cb9f1b3e0857d (diff) | |
download | wekan-aa084b7a7e56402aed36c1f50e0aef4ea9fd2266.tar.gz wekan-aa084b7a7e56402aed36c1f50e0aef4ea9fd2266.tar.bz2 wekan-aa084b7a7e56402aed36c1f50e0aef4ea9fd2266.zip |
Merge branch 'brymut-add-more-import-export-options'
63 files changed, 1820 insertions, 267 deletions
diff --git a/client/components/import/csvMembersMapper.js b/client/components/import/csvMembersMapper.js new file mode 100644 index 00000000..cf8d5837 --- /dev/null +++ b/client/components/import/csvMembersMapper.js @@ -0,0 +1,37 @@ +export function getMembersToMap(data) { + // we will work on the list itself (an ordered array of objects) when a + // mapping is done, we add a 'wekan' field to the object representing the + // imported member + + const membersToMap = []; + const importedMembers = []; + let membersIndex; + + for (let i = 0; i < data[0].length; i++) { + if (data[0][i].toLowerCase() === 'members') { + membersIndex = i; + } + } + + for (let i = 1; i < data.length; i++) { + if (data[i][membersIndex]) { + for (const importedMember of data[i][membersIndex].split(' ')) { + if (importedMember && importedMembers.indexOf(importedMember) === -1) { + importedMembers.push(importedMember); + } + } + } + } + + for (let importedMember of importedMembers) { + importedMember = { + username: importedMember, + id: importedMember, + }; + const wekanUser = Users.findOne({ username: importedMember.username }); + if (wekanUser) importedMember.wekanId = wekanUser._id; + membersToMap.push(importedMember); + } + + return membersToMap; +} diff --git a/client/components/import/import.jade b/client/components/import/import.jade index 1551a7dd..2bea24ae 100644 --- a/client/components/import/import.jade +++ b/client/components/import/import.jade @@ -13,7 +13,7 @@ template(name="import") template(name="importTextarea") form p: label(for='import-textarea') {{_ instruction}} {{_ 'import-board-instruction-about-errors'}} - textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus) + textarea.js-import-json(placeholder="{{_ importPlaceHolder}}" autofocus) | {{jsonText}} input.primary.wide(type="submit" value="{{_ 'import'}}") diff --git a/client/components/import/import.js b/client/components/import/import.js index 6368885b..673900fd 100644 --- a/client/components/import/import.js +++ b/client/components/import/import.js @@ -1,5 +1,8 @@ import trelloMembersMapper from './trelloMembersMapper'; import wekanMembersMapper from './wekanMembersMapper'; +import csvMembersMapper from './csvMembersMapper'; + +const Papa = require('papaparse'); BlazeComponent.extendComponent({ title() { @@ -30,20 +33,30 @@ BlazeComponent.extendComponent({ } }, - importData(evt) { + importData(evt, dataSource) { evt.preventDefault(); - const dataJson = this.find('.js-import-json').value; - try { - const dataObject = JSON.parse(dataJson); - this.setError(''); - this.importedData.set(dataObject); - const membersToMap = this._prepareAdditionalData(dataObject); - // store members data and mapping in Session - // (we go deep and 2-way, so storing in data context is not a viable option) + const input = this.find('.js-import-json').value; + if (dataSource === 'csv') { + const csv = input.indexOf('\t') > 0 ? input.replace(/(\t)/g, ',') : input; + const ret = Papa.parse(csv); + if (ret && ret.data && ret.data.length) this.importedData.set(ret.data); + else throw new Meteor.Error('error-csv-schema'); + const membersToMap = this._prepareAdditionalData(ret.data); this.membersToMap.set(membersToMap); this.nextStep(); - } catch (e) { - this.setError('error-json-malformed'); + } else { + try { + const dataObject = JSON.parse(input); + this.setError(''); + this.importedData.set(dataObject); + const membersToMap = this._prepareAdditionalData(dataObject); + // store members data and mapping in Session + // (we go deep and 2-way, so storing in data context is not a viable option) + this.membersToMap.set(membersToMap); + this.nextStep(); + } catch (e) { + this.setError('error-json-malformed'); + } } }, @@ -91,6 +104,9 @@ BlazeComponent.extendComponent({ case 'wekan': membersToMap = wekanMembersMapper.getMembersToMap(dataObject); break; + case 'csv': + membersToMap = csvMembersMapper.getMembersToMap(dataObject); + break; } return membersToMap; }, @@ -109,11 +125,23 @@ BlazeComponent.extendComponent({ return `import-board-instruction-${Session.get('importSource')}`; }, + importPlaceHolder() { + const importSource = Session.get('importSource'); + if (importSource === 'csv') { + return 'import-csv-placeholder'; + } else { + return 'import-json-placeholder'; + } + }, + events() { return [ { submit(evt) { - return this.parentComponent().importData(evt); + return this.parentComponent().importData( + evt, + Session.get('importSource'), + ); }, }, ]; diff --git a/client/components/sidebar/sidebar.jade b/client/components/sidebar/sidebar.jade index 6bfedc9c..280eaeaf 100644 --- a/client/components/sidebar/sidebar.jade +++ b/client/components/sidebar/sidebar.jade @@ -230,6 +230,8 @@ template(name="chooseBoardSource") a(href="{{pathFor '/import/trello'}}") {{_ 'from-trello'}} li a(href="{{pathFor '/import/wekan'}}") {{_ 'from-wekan'}} + li + a(href="{{pathFor '/import/csv'}}") {{_ 'from-csv'}} template(name="archiveBoardPopup") p {{_ 'close-board-pop'}} @@ -300,7 +302,7 @@ template(name="boardMenuPopup") ul.pop-over-list if withApi li - a(href="{{exportUrl}}", download="{{exportFilename}}") + a.js-export-board i.fa.fa-share-alt | {{_ 'export-board'}} li @@ -360,6 +362,21 @@ template(name="boardMenuPopup") i.fa.fa-sitemap | {{_ 'subtask-settings'}} +template(name="exportBoard") + ul.pop-over-list + li + a(href="{{exportUrl}}", download="{{exportJsonFilename}}") + i.fa.fa-share-alt + | {{_ 'export-board-json'}} + li + a(href="{{exportCsvUrl}}", download="{{exportCsvFilename}}") + i.fa.fa-share-alt + | {{_ 'export-board-csv'}} + li + a(href="{{exportTsvUrl}}", download="{{exportTsvFilename}}") + i.fa.fa-share-alt + | {{_ 'export-board-tsv'}} + template(name="labelsWidget") .board-widget.board-widget-labels h3 diff --git a/client/components/sidebar/sidebar.js b/client/components/sidebar/sidebar.js index cbe00797..2c1cfd75 100644 --- a/client/components/sidebar/sidebar.js +++ b/client/components/sidebar/sidebar.js @@ -213,6 +213,7 @@ Template.boardMenuPopup.events({ 'click .js-import-board': Popup.open('chooseBoardSource'), 'click .js-subtask-settings': Popup.open('boardSubtaskSettings'), 'click .js-card-settings': Popup.open('boardCardSettings'), + 'click .js-export-board': Popup.open('exportBoard'), }); Template.boardMenuPopup.onCreated(function() { @@ -405,6 +406,63 @@ BlazeComponent.extendComponent({ }, }).register('chooseBoardSourcePopup'); +BlazeComponent.extendComponent({ + template() { + return 'exportBoard'; + }, + withApi() { + return Template.instance().apiEnabled.get(); + }, + exportUrl() { + const params = { + boardId: Session.get('currentBoard'), + }; + const queryParams = { + authToken: Accounts._storedLoginToken(), + }; + return FlowRouter.path('/api/boards/:boardId/export', params, queryParams); + }, + exportCsvUrl() { + const params = { + boardId: Session.get('currentBoard'), + }; + const queryParams = { + authToken: Accounts._storedLoginToken(), + }; + return FlowRouter.path( + '/api/boards/:boardId/export/csv', + params, + queryParams, + ); + }, + exportTsvUrl() { + const params = { + boardId: Session.get('currentBoard'), + }; + const queryParams = { + authToken: Accounts._storedLoginToken(), + delimiter: '\t', + }; + return FlowRouter.path( + '/api/boards/:boardId/export/csv', + params, + queryParams, + ); + }, + exportJsonFilename() { + const boardId = Session.get('currentBoard'); + return `wekan-export-board-${boardId}.json`; + }, + exportCsvFilename() { + const boardId = Session.get('currentBoard'); + return `wekan-export-board-${boardId}.csv`; + }, + exportTsvFilename() { + const boardId = Session.get('currentBoard'); + return `wekan-export-board-${boardId}.tsv`; + }, +}).register('exportBoardPopup'); + Template.labelsWidget.events({ 'click .js-label': Popup.open('editLabel'), 'click .js-add-label': Popup.open('createLabel'), diff --git a/i18n/ar.i18n.json b/i18n/ar.i18n.json index 04313159..b2e3801a 100644 --- a/i18n/ar.i18n.json +++ b/i18n/ar.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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": "لا يمكنك دعوة نفسك", @@ -316,6 +317,10 @@ "error-username-taken": "إسم المستخدم مأخوذ مسبقا", "error-email-taken": "البريد الإلكتروني مأخوذ بالفعل", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "استيراد لوحة", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "من تريلو", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "رسم خريطة الأعضاء", "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "المزيد", "link-list": "رابط إلى هذه القائمة", "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/bg.i18n.json b/i18n/bg.i18n.json index 68226d83..d1623fed 100644 --- a/i18n/bg.i18n.json +++ b/i18n/bg.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "За да направите това трябва да сте член на това табло", "error-json-malformed": "Текстът Ви не е валиден JSON", "error-json-schema": "JSON информацията Ви не съдържа информация във валиден формат", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Този списък не съществува", "error-user-doesNotExist": "Този потребител не съществува", "error-user-notAllowSelf": "Не можете да поканите себе си", @@ -316,6 +317,10 @@ "error-username-taken": "Това потребителско име е вече заето", "error-email-taken": "Имейлът е вече зает", "export-board": "Експортиране на Табло", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Експортиране на Табло", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Импортирай Табло", "import-board-title-trello": "Импорт на табло от Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "От Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Копирайте валидната Ви JSON информация тук", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Импорт на карта от Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Още", "link-list": "Връзка към този списък", "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/br.i18n.json b/i18n/br.i18n.json index c9e576ed..0cb28623 100644 --- a/i18n/br.i18n.json +++ b/i18n/br.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Muioc’h", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/ca.i18n.json b/i18n/ca.i18n.json index e70a4a26..0538fe0e 100644 --- a/i18n/ca.i18n.json +++ b/i18n/ca.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Necessites ser membre d'aquest tauler per dur a terme aquesta acció", "error-json-malformed": "El text no és JSON vàlid", "error-json-schema": "La dades JSON no contenen la informació en el format correcte", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "La llista no existeix", "error-user-doesNotExist": "L'usuari no existeix", "error-user-notAllowSelf": "No et pots convidar a tu mateix", @@ -316,6 +317,10 @@ "error-username-taken": "Aquest usuari ja existeix", "error-email-taken": "L'adreça de correu electrònic ja és en ús", "export-board": "Exporta tauler", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Exporta tauler", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Importa tauler", "import-board-title-trello": "Importa tauler des de Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Des de Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "En el teu tauler Trello, ves a 'Menú', 'Més'.' Imprimir i Exportar', 'Exportar JSON', i copia el text resultant.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Aferra codi JSON vàlid aquí", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Mapeja el membres", "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", "import-show-user-mapping": "Revisa l'assignació de membres", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Accions de Carril de Natació", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "importa una fitxa de Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Més", "link-list": "Enllaça a aquesta llista", "list-delete-pop": "Totes les accions seran esborrades de la llista d'activitats i no serà possible recuperar la llista", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json index 05d818d6..74ac2c08 100644 --- a/i18n/cs.i18n.json +++ b/i18n/cs.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "K provedení změny musíš být členem tohoto tabla", "error-json-malformed": "Tvůj text není validní JSON", "error-json-schema": "Tato JSON data neobsahují správné informace v platném formátu", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Tento sloupec ;neexistuje", "error-user-doesNotExist": "Tento uživatel neexistuje", "error-user-notAllowSelf": "Nemůžeš pozvat sám sebe", @@ -316,6 +317,10 @@ "error-username-taken": "Toto uživatelské jméno již existuje", "error-email-taken": "Tento email byl již použit", "export-board": "Exportovat tablo", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Exportovat tablo", "sort": "řadit", "sort-desc": "Click to Sort List", "list-sort-by": "řadit seznam podle", @@ -351,12 +356,16 @@ "import-board-c": "Importovat tablo", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Importovat tablo z předchozího exportu", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Z Trella", "from-wekan": "Z předchozího exportu", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "Na svém Trello tablu, otevři 'Menu', pak 'More', 'Print and Export', 'Export JSON', a zkopíruj výsledný text", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "Ve vašem tablu jděte do 'Menu', klikněte na 'Exportovat tablo' a zkopírujte text ze staženého souboru.", "import-board-instruction-about-errors": "Někdy import funguje i přestože dostáváte chyby při importování tabla, které se zobrazí na stránce Všechna tabla.", "import-json-placeholder": "Sem vlož validní JSON data", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Mapovat členy", "import-members-map": "Toto importované tablo obsahuje několik osob. Prosím namapujte osoby z importu na místní uživatelské účty.", "import-show-user-mapping": "Zkontrolovat namapování členů", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Akce swimlane", "swimlaneAddPopup-title": "Přidat swimlane dolů", "listImportCardPopup-title": "Importovat Trello kartu", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Více", "link-list": "Odkaz na tento sloupec", "list-delete-pop": "Všechny akce budou odstraněny z kanálu aktivity a nebude možné sloupec obnovit. Toto nelze vrátit zpět.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/da.i18n.json b/i18n/da.i18n.json index 2f4df9d6..8a32fadc 100644 --- a/i18n/da.i18n.json +++ b/i18n/da.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Du skal være medlem af denne tavle for at gøre dette", "error-json-malformed": "Din tekst er ikke gyldig JSON", "error-json-schema": "Dine JSON-data indeholder ikke den rette information i det rette format", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Listen findes ikke", "error-user-doesNotExist": "Brugeren findes ikke", "error-user-notAllowSelf": "Du kan ikke invitere dig selv", @@ -316,6 +317,10 @@ "error-username-taken": "Brugernavnet er optaget", "error-email-taken": "E-mailadressen er allerede optaget", "export-board": "Eksportér tavle", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Eksportér tavle", "sort": "Sortér", "sort-desc": "Klik for at sortere listen", "list-sort-by": "Sortér listen efter:", @@ -351,12 +356,16 @@ "import-board-c": "Importér tavle", "import-board-title-trello": "Importér tavle fra Trello", "import-board-title-wekan": "Importér tavler fra tidligere eksport", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Fra Trello", "from-wekan": "Fra forrige eksport", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "I din Trello-tavle, gå til 'Menu', dernæst 'More', 'Print and Export', 'Export JSON', og kopiér den tekst som vises.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "På din tavle, gå til 'Menu', dernæst 'Eksportér tavle', og kopiér teksten i den hentede fil.", "import-board-instruction-about-errors": "Hvis du får fejl når der importeres en tavle, så vil importen undertiden stadig fungere, og tavlen vil være under side Alle tavler.", "import-json-placeholder": "Indsæt dine gyldige JSON-data her", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Kortlæg medlemmer", "import-members-map": "Dine importerede tavler rummer medlemmer. Kortlæg venligst de medlemmer du ønsker at importere til dine brugere.", "import-show-user-mapping": "Gennemse kortlægning af medlemmer", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Handlinger for svømmebane", "swimlaneAddPopup-title": "Tilføj en svømmebane nedenfor", "listImportCardPopup-title": "Importér et Trello-kort", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Mere", "link-list": "Link til denne liste", "list-delete-pop": "Alle handlinger vil blive fjernet fra aktivitetsfeedet og du vil ikke have mulighed for at genskabe listen. Der er ingen måder at fortryde. ", @@ -786,5 +796,12 @@ "thursday": "Torsdag", "friday": "Fredag", "saturday": "Lørdag", - "sunday": "Søndag" + "sunday": "Søndag", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index 687bf801..0a321b55 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Um das zu tun, müssen Sie Mitglied dieses Boards sein", "error-json-malformed": "Ihre Eingabe ist kein gültiges JSON", "error-json-schema": "Ihre JSON-Daten enthalten nicht die gewünschten Informationen im richtigen Format", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Diese Liste existiert nicht", "error-user-doesNotExist": "Dieser Nutzer existiert nicht", "error-user-notAllowSelf": "Sie können sich nicht selbst einladen.", @@ -316,6 +317,10 @@ "error-username-taken": "Dieser Benutzername ist bereits vergeben", "error-email-taken": "E-Mail wird schon verwendet", "export-board": "Board exportieren", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Board exportieren", "sort": "Sortieren", "sort-desc": "Zum Sortieren der Liste klicken", "list-sort-by": "Sortieren der Liste nach:", @@ -351,12 +356,16 @@ "import-board-c": "Board importieren", "import-board-title-trello": "Board von Trello importieren", "import-board-title-wekan": "Board aus vorherigem Export importieren", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Von Trello", "from-wekan": "Aus vorherigem Export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "Gehen Sie in ihrem Trello-Board auf 'Menü', dann 'Mehr', 'Drucken und Exportieren', 'JSON-Export' und kopieren Sie den dort angezeigten Text", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "Gehen Sie in Ihrem Board auf 'Menü', danach auf 'Board exportieren' und kopieren Sie den Text aus der heruntergeladenen Datei.", "import-board-instruction-about-errors": "Treten beim importieren eines Board Fehler auf, so kann der Import dennoch erfolgreich abgeschlossen sein und das Board ist auf der Seite \"Alle Boards\" zusehen.", "import-json-placeholder": "Fügen Sie die korrekten JSON-Daten hier ein", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Mitglieder zuordnen", "import-members-map": "Das importierte Board hat einige Mitglieder. Bitte ordnen sie die Mitglieder, die Sie importieren wollen, Ihren Benutzern zu.", "import-show-user-mapping": "Mitgliederzuordnung überprüfen", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlaneaktionen", "swimlaneAddPopup-title": "Swimlane unterhalb einfügen", "listImportCardPopup-title": "Eine Trello-Karte importieren", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Mehr", "link-list": "Link zu dieser Liste", "list-delete-pop": "Alle Aktionen werden aus dem Verlauf gelöscht und die Liste kann nicht wiederhergestellt werden.", @@ -786,5 +796,12 @@ "thursday": "Donnerstag", "friday": "Freitag", "saturday": "Samstag", - "sunday": "Sonntag" + "sunday": "Sonntag", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/el.i18n.json b/i18n/el.i18n.json index 3bc4f7f3..948eea19 100644 --- a/i18n/el.i18n.json +++ b/i18n/el.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "You need to be a member of this board to do that", "error-json-malformed": "Το κείμενο δεν είναι έγκυρο JSON", "error-json-schema": "Your JSON data does not include the proper information in the correct format", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Η λίστα δεν υπάρχει", "error-user-doesNotExist": "Ο χρήστης δεν υπάρχει", "error-user-notAllowSelf": "You can not invite yourself", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Εξαγωγή πίνακα", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Εξαγωγή πίνακα", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Εισαγωγή πίνακα", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Από το Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Εισαγωγή μιας κάρτας Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Περισσότερα", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/en-GB.i18n.json b/i18n/en-GB.i18n.json index 4458c5d3..057f8ccf 100644 --- a/i18n/en-GB.i18n.json +++ b/i18n/en-GB.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index ee399f9d..c5838460 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json index 7bd1f27e..8e1a1e43 100644 --- a/i18n/eo.i18n.json +++ b/i18n/eo.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "You need to be a member of this board to do that", "error-json-malformed": "Via teksto estas nevalida JSON", "error-json-schema": "Via JSON ne enhavas la ĝustajn informojn en ĝusta formato", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Tio listo ne ekzistas", "error-user-doesNotExist": "Tio uzanto ne ekzistas", "error-user-notAllowSelf": "You can not invite yourself", @@ -316,6 +317,10 @@ "error-username-taken": "Uzantnomo jam prenita", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Pli", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/es-AR.i18n.json b/i18n/es-AR.i18n.json index 2455623e..39d89f64 100644 --- a/i18n/es-AR.i18n.json +++ b/i18n/es-AR.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Necesitás ser miembro de este tablero para hacer eso", "error-json-malformed": "Tu texto no es JSON válido", "error-json-schema": "Tus datos JSON no incluyen la información correcta en el formato adecuado", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Esta lista no existe", "error-user-doesNotExist": "Este usuario no existe", "error-user-notAllowSelf": "No podés invitarte a vos mismo", @@ -316,6 +317,10 @@ "error-username-taken": "El nombre de usuario ya existe", "error-email-taken": "El email ya existe", "export-board": "Exportar tablero", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Exportar tablero", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Importar tablero", "import-board-title-trello": "Importar tablero de Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "De Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego a 'Más', 'Imprimir y Exportar', 'Exportar JSON', y copia el texto resultante.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Pegá tus datos JSON válidos acá", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Mapear Miembros", "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", "import-show-user-mapping": "Revisar mapeo de miembros", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Acciones de la Calle", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Importar una tarjeta Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Mas", "link-list": "Enlace a esta lista", "list-delete-pop": "Todas las acciones van a ser eliminadas del agregador de actividad y no podás recuperar la lista. No se puede deshacer.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json index e84f98c1..dbc8bbd8 100644 --- a/i18n/es.i18n.json +++ b/i18n/es.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Es necesario ser miembro de este tablero para hacer eso", "error-json-malformed": "El texto no es un JSON válido", "error-json-schema": "Sus datos JSON no incluyen la información apropiada en el formato correcto", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "La lista no existe", "error-user-doesNotExist": "El usuario no existe", "error-user-notAllowSelf": "No puedes invitarte a ti mismo", @@ -316,6 +317,10 @@ "error-username-taken": "Este nombre de usuario ya está en uso", "error-email-taken": "Esta dirección de correo ya está en uso", "export-board": "Exportar el tablero", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Exportar el tablero", "sort": "Ordenar", "sort-desc": "Click para ordenar la lista", "list-sort-by": "Ordenar la lista por:", @@ -351,12 +356,16 @@ "import-board-c": "Importar un tablero", "import-board-title-trello": "Importar un tablero desde Trello", "import-board-title-wekan": "Importar tablero desde una exportación previa", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Desde Trello", "from-wekan": "Desde exportación previa", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego 'Más' > 'Imprimir y exportar' > 'Exportar JSON', y copia el texto resultante.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "En tu tablero, vete a 'Menú', luego 'Exportar tablero', y copia el texto en el archivo descargado.", "import-board-instruction-about-errors": "Aunque obtengas errores cuando importes el tablero, a veces la importación funciona igualmente, y el tablero se encontrará en la página de tableros.", "import-json-placeholder": "Pega tus datos JSON válidos aquí", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Mapa de miembros", "import-members-map": "Tu tablero importado tiene algunos miembros. Por favor, mapea los miembros que quieres importar con tus usuarios.", "import-show-user-mapping": "Revisión de la asignación de miembros", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Acciones del carril de flujo", "swimlaneAddPopup-title": "Añadir un carril de flujo debajo", "listImportCardPopup-title": "Importar una tarjeta de Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Más", "link-list": "Enlazar a esta lista", "list-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar la lista. Esta acción no puede deshacerse.", @@ -786,5 +796,12 @@ "thursday": "Jueves", "friday": "Viernes", "saturday": "Sábado", - "sunday": "Domingo" + "sunday": "Domingo", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/eu.i18n.json b/i18n/eu.i18n.json index 82ef2da9..49c681eb 100644 --- a/i18n/eu.i18n.json +++ b/i18n/eu.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Arbel honetako kidea izan behar zara hori egin ahal izateko", "error-json-malformed": "Zure testua ez da baliozko JSON", "error-json-schema": "Zure JSON datuek ez dute formatu zuzenaren informazio egokia", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Zerrenda hau ez da existitzen", "error-user-doesNotExist": "Erabiltzaile hau ez da existitzen", "error-user-notAllowSelf": "Ezin duzu zure burua gonbidatu", @@ -316,6 +317,10 @@ "error-username-taken": "Erabiltzaile-izen hori hartuta dago", "error-email-taken": "E-mail hori hartuta dago", "export-board": "Esportatu arbela", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Esportatu arbela", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Inportatu arbela", "import-board-title-trello": "Inportatu arbela Trellotik", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Trellotik", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "Zure Trello arbelean, aukeratu 'Menu\", 'More', 'Print and Export', 'Export JSON', eta kopiatu jasotako testua hemen.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Isatsi baliozko JSON datuak hemen", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Kideen mapa", "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", "import-show-user-mapping": "Berrikusi kideen mapa", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Inportatu Trello txartel bat", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Gehiago", "link-list": "Lotura zerrenda honetara", "list-delete-pop": "Ekintza guztiak ekintza jariotik kenduko dira eta ezin izango duzu zerrenda berreskuratu. Ez dago desegiterik.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json index bd50b8f1..00575d99 100644 --- a/i18n/fa.i18n.json +++ b/i18n/fa.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "شما برای انجام آن، باید عضو این برد باشید", "error-json-malformed": "متن درغالب صحیح Json نمی باشد.", "error-json-schema": "داده های Json شما، شامل اطلاعات صحیح در غالب درستی نمی باشد.", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "این لیست موجود نیست", "error-user-doesNotExist": "این کاربر وجود ندارد", "error-user-notAllowSelf": "عدم امکان دعوت خود", @@ -316,6 +317,10 @@ "error-username-taken": "این نام کاربری استفاده شده است", "error-email-taken": "رایانامه توسط گیرنده دریافت شده است", "export-board": "انتقال به بیرون برد", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "انتقال به بیرون برد", "sort": "مرتب سازی", "sort-desc": "برای مرتب سازی لیست کلیک کنید", "list-sort-by": "مرتب سازی لیست بر اساس:", @@ -351,12 +356,16 @@ "import-board-c": "وارد کردن برد", "import-board-title-trello": "وارد کردن برد از Trello", "import-board-title-wekan": "بارگذاری برد ها از آخرین خروجی", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "از Trello", "from-wekan": "از آخرین خروجی", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "در Trello-ی خود به 'Menu'، 'More'، 'Print'، 'Export to JSON رفته و متن نهایی را دراینجا وارد نمایید.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "در هیئت مدیره خود، به 'Menu' بروید، سپس 'Export Board'، و متن را در فایل دانلود شده کپی کنید.", "import-board-instruction-about-errors": "اگر هنگام بازگردانی با خطا مواجه شدید بعضی اوقات بازگردانی انجام می شود و تمامی برد ها در داخل صفحه All Boards هستند", "import-json-placeholder": "اطلاعات Json معتبر خود را اینجا وارد کنید.", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "نگاشت اعضا", "import-members-map": "برد ها بازگردانده شده تعدادی کاربر دارند . لطفا کاربر های که می خواهید را انتخاب نمایید", "import-show-user-mapping": "بررسی نقشه کاربران", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "اضافه کردن مسیر شناور", "listImportCardPopup-title": "وارد کردن کارت Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "بیشتر", "link-list": "پیوند به این فهرست", "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.", @@ -786,5 +796,12 @@ "thursday": "پنجشنبه", "friday": "جمعه", "saturday": "شنبه", - "sunday": "یکشنبه" + "sunday": "یکشنبه", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/fi.i18n.json b/i18n/fi.i18n.json index 31b294c1..e4ab5a5e 100644 --- a/i18n/fi.i18n.json +++ b/i18n/fi.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Tehdäksesi tämän sinun täytyy olla tämän taulun jäsen", "error-json-malformed": "Tekstisi ei ole kelvollisessa JSON-muodossa", "error-json-schema": "JSON-tietosi ei sisällä oikeaa tietoa oikeassa muodossa", + "error-csv-schema": "CSV tietosi (pilkulla erotetut arvot)/TSV (tabilla erotetut arvot) ei sisällä oikeaa tietoa oikeassa muodossa", "error-list-doesNotExist": "Tätä listaa ei ole olemassa", "error-user-doesNotExist": "Tätä käyttäjää ei ole olemassa", "error-user-notAllowSelf": "Et voi kutsua itseäsi", @@ -316,6 +317,10 @@ "error-username-taken": "Tämä käyttäjätunnus on jo käytössä", "error-email-taken": "Sähköpostiosoite on jo käytössä", "export-board": "Vie taulu", + "export-board-json": "Vie taulu JSON", + "export-board-csv": "Vie taulu CSV", + "export-board-tsv": "Vie taulu TSV", + "exportBoardPopup-title": "Vie taulu", "sort": "Lajittele", "sort-desc": "Klikkaa lajitellaksesi listan", "list-sort-by": "Lajittele lista:", @@ -351,12 +356,16 @@ "import-board-c": "Tuo taulu", "import-board-title-trello": "Tuo taulu Trellosta", "import-board-title-wekan": "Tuo taulu edellisestä viennistä", + "import-board-title-csv": "Tuo taulu CSV/TSV", "from-trello": "Trellosta", "from-wekan": "Edellisestä viennistä", + "from-csv": "CSV/TSV muodosta", "import-board-instruction-trello": "Mene Trello-taulullasi 'Menu', sitten 'More', 'Print and Export', 'Export JSON', ja kopioi tuloksena saamasi teksti", + "import-board-instruction-csv": "Liitä pilkulla erotellut arvot (CSV)/ tabilla erotetut arvot (TSV).", "import-board-instruction-wekan": "Taulullasi, mene 'Valikko', sitten 'Vie taulu', ja kopioi teksti ladatusta tiedostosta.", "import-board-instruction-about-errors": "Jos virheitä tulee taulua tuotaessa, joskus tuonti silti toimii, ja taulu on Kaikki taulut sivulla.", "import-json-placeholder": "Liitä kelvollinen JSON-tietosi tähän", + "import-csv-placeholder": "Liitä kelvollinen CSV/TSV tietosi tähän", "import-map-members": "Vastaavat jäsenet", "import-members-map": "Tuomallasi taululla on muutamia jäseniä. Ole hyvä ja valitse tuomiasi jäseniä vastaavat käyttäjäsi", "import-show-user-mapping": "Tarkasta vastaavat jäsenet", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane-toimet", "swimlaneAddPopup-title": "Lisää Swimlane alle", "listImportCardPopup-title": "Tuo Trello-kortti", + "listImportCardsTsvPopup-title": "Tuo Excel CSV/TSV", "listMorePopup-title": "Lisää", "link-list": "Linkki tähän listaan", "list-delete-pop": "Kaikki toimet poistetaan toimintasyötteestä ja listan poistaminen on lopullista. Tätä ei pysty peruuttamaan.", @@ -786,5 +796,12 @@ "thursday": "Torstai", "friday": "Perjantai", "saturday": "Lauantai", - "sunday": "Sunnuntai" + "sunday": "Sunnuntai", + "status": "Tilanne", + "swimlane": "Swimlane", + "owner": "Omistaja", + "last-modified-at": "Viimeksi muokattu", + "last-activity": "Viimeisin toiminta", + "voting": "Äänestys", + "archived": "Arkistoitu" } diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index 554aa6ae..dd51ff43 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Vous devez être participant de ce tableau pour faire cela", "error-json-malformed": "Votre texte JSON n'est pas valide", "error-json-schema": "Vos données JSON ne contiennent pas l'information appropriée dans un format correct", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Cette liste n'existe pas", "error-user-doesNotExist": "Cet utilisateur n'existe pas", "error-user-notAllowSelf": "Vous ne pouvez pas vous inviter vous-même", @@ -316,6 +317,10 @@ "error-username-taken": "Ce nom d'utilisateur est déjà utilisé", "error-email-taken": "Cette adresse mail est déjà utilisée", "export-board": "Exporter le tableau", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Exporter le tableau", "sort": "Tri", "sort-desc": "Cliquez pour trier la liste", "list-sort-by": "Trier la liste par:", @@ -351,12 +356,16 @@ "import-board-c": "Importer un tableau", "import-board-title-trello": "Importer un tableau depuis Trello", "import-board-title-wekan": "Importer un tableau depuis un export précédent", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Depuis Trello", "from-wekan": "Depuis un export précédent", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "Dans votre tableau Trello, allez sur 'Menu', puis sur 'Plus', 'Imprimer et exporter', 'Exporter en JSON' et copiez le texte du résultat", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "Dans votre tableau, allez dans 'Menu', puis 'Exporter un tableau', et copier le texte du fichier téléchargé.", "import-board-instruction-about-errors": "Si une erreur survient en important le tableau, il se peut que l'import ait fonctionné, et que le tableau se trouve sur la page \"Tous les tableaux\".", "import-json-placeholder": "Collez ici les données JSON valides", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Assigner des participants", "import-members-map": "Le tableau que vous venez d'importer contient des participants. Veuillez assigner les participants que vous souhaitez importer à vos utilisateurs.", "import-show-user-mapping": "Contrôler l'assignation des participants", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Actions du couloir", "swimlaneAddPopup-title": "Ajouter un couloir en dessous", "listImportCardPopup-title": "Importer une carte Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Plus", "link-list": "Lien vers cette liste", "list-delete-pop": "Toutes les actions seront supprimées du fil d'activité et il ne sera plus possible de les récupérer. Cette action est irréversible.", @@ -786,5 +796,12 @@ "thursday": "Jeudi", "friday": "Vendredi", "saturday": "Samedi", - "sunday": "Dimanche" + "sunday": "Dimanche", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/gl.i18n.json b/i18n/gl.i18n.json index 3badd7dd..905bc5df 100644 --- a/i18n/gl.i18n.json +++ b/i18n/gl.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Esta lista non existe", "error-user-doesNotExist": "Este usuario non existe", "error-user-notAllowSelf": "Non é posíbel convidarse a un mesmo", @@ -316,6 +317,10 @@ "error-username-taken": "Este nome de usuario xa está collido", "error-email-taken": "Email has already been taken", "export-board": "Exportar taboleiro", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Exportar taboleiro", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Importar taboleiro", "import-board-title-trello": "Importar taboleiro de Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "De Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Máis", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json index fc2d38ae..89c16d3c 100644 --- a/i18n/he.i18n.json +++ b/i18n/he.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "עליך לקבל חברות בלוח זה כדי לעשות זאת", "error-json-malformed": "הטקסט שלך אינו JSON תקין", "error-json-schema": "נתוני ה־JSON שלך לא כוללים את המידע הנכון בתבנית הנכונה", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "רשימה זו לא קיימת", "error-user-doesNotExist": "משתמש זה לא קיים", "error-user-notAllowSelf": "אינך יכול להזמין את עצמך", @@ -316,6 +317,10 @@ "error-username-taken": "המשתמש כבר קיים במערכת", "error-email-taken": "כתובת הדוא״ל כבר נמצאת בשימוש", "export-board": "ייצוא לוח", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "ייצוא לוח", "sort": "מיון", "sort-desc": "לחיצה למיון הרשימה", "list-sort-by": "מיון הרשימה לפי:", @@ -351,12 +356,16 @@ "import-board-c": "יבוא לוח", "import-board-title-trello": "ייבוא לוח מטרלו", "import-board-title-wekan": "ייבוא לוח מייצוא קודם", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "מ־Trello", "from-wekan": "מייצוא קודם", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "בלוח הטרלו שלך, עליך ללחוץ על ‚תפריט‘, ואז על ‚עוד‘, ‚הדפסה וייצוא‘, ‚יצוא JSON‘ ולהעתיק את הטקסט שנוצר.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "בלוח שלך עליך לגשת אל ‚תפריט’, לאחר מכן ‚ייצוא לוח’ ואז להעתיק את הטקסט מהקובץ שהתקבל.", "import-board-instruction-about-errors": "גם אם התקבלו שגיאות בעת יבוא לוח, ייתכן שהייבוא עבד. כדי לבדוק זאת, יש להיכנס ל„כל הלוחות”.", "import-json-placeholder": "יש להדביק את נתוני ה־JSON התקינים לכאן", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "מיפוי חברים", "import-members-map": "הלוחות המיובאים שלך מכילים חברים. נא למפות את החברים שברצונך לייבא למשתמשים שלך", "import-show-user-mapping": "סקירת מיפוי חברים", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "פעולות על מסלול", "swimlaneAddPopup-title": "הוספת מסלול מתחת", "listImportCardPopup-title": "יבוא כרטיס מ־Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "עוד", "link-list": "קישור לרשימה זו", "list-delete-pop": "כל הפעולות תוסרנה מרצף הפעילות ולא תהיה לך אפשרות לשחזר את הרשימה. אין ביטול.", @@ -786,5 +796,12 @@ "thursday": "יום חמישי", "friday": "יום שישי", "saturday": "שבת", - "sunday": "יום ראשון" + "sunday": "יום ראשון", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/hi.i18n.json b/i18n/hi.i18n.json index 34a0c7ae..bf6e2f57 100644 --- a/i18n/hi.i18n.json +++ b/i18n/hi.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "You need तक be एक सदस्य of यह बोर्ड तक do that", "error-json-malformed": "Your text is not valid JSON", "error-json-schema": "आपके JSON डेटा में सही प्रारूप में सही जानकारी शामिल नहीं है", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "यह सूची does not exist", "error-user-doesNotExist": "यह user does not exist", "error-user-notAllowSelf": "You can not invite yourself", @@ -316,6 +317,10 @@ "error-username-taken": "यह username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export बोर्ड", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export बोर्ड", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import बोर्ड", "import-board-title-trello": "Import बोर्ड से Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "In your Trello बोर्ड, go तक 'Menu', then 'More', 'Print और Export', 'Export JSON', और copy the resulting text.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Map सदस्य", "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", "import-show-user-mapping": "Re आलोकन सदस्य mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "तैरन Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import एक Trello कार्ड", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "More", "link-list": "Link तक यह list", "list-delete-pop": "All actions हो जाएगा हटा दिया से the activity feed और you won't be able तक recover the list. There is no undo.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/hu.i18n.json b/i18n/hu.i18n.json index 8a2821b2..8f587103 100644 --- a/i18n/hu.i18n.json +++ b/i18n/hu.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "A tábla tagjának kell lennie, hogy ezt megtehesse", "error-json-malformed": "A szöveg nem érvényes JSON", "error-json-schema": "A JSON adatok nem a helyes formátumban tartalmazzák a megfelelő információkat", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Ez a lista nem létezik", "error-user-doesNotExist": "Ez a felhasználó nem létezik", "error-user-notAllowSelf": "Nem hívhatja meg saját magát", @@ -316,6 +317,10 @@ "error-username-taken": "Ez a felhasználónév már foglalt", "error-email-taken": "Az e-mail már foglalt", "export-board": "Tábla exportálása", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Tábla exportálása", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Tábla importálása", "import-board-title-trello": "Tábla importálása a Trello oldalról", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "A Trello oldalról", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "A Trello tábláján menjen a „Menü”, majd a „Több”, „Nyomtatás és exportálás”, „JSON exportálása” menüpontokra, és másolja ki az eredményül kapott szöveget.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Illessze be ide az érvényes JSON adatokat", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Tagok leképezése", "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", "import-show-user-mapping": "Tagok leképezésének vizsgálata", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Trello kártya importálása", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Több", "link-list": "Összekapcsolás ezzel a listával", "list-delete-pop": "Az összes művelet el lesz távolítva a tevékenységlistából, és nem lesz lehetősége visszaállítani a listát. Nincs visszavonás.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/hy.i18n.json b/i18n/hy.i18n.json index 983c7110..2bd3dd45 100644 --- a/i18n/hy.i18n.json +++ b/i18n/hy.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json index 3d2581fa..62968cbf 100644 --- a/i18n/id.i18n.json +++ b/i18n/id.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Anda harus jadi member panel ini untuk melakukannya", "error-json-malformed": "Teks Anda bukan JSON yang sah", "error-json-schema": "Data JSON Anda tidak mengikutsertakan informasi yang sesuai format", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Daftar ini tidak ada", "error-user-doesNotExist": "Nama pengguna ini tidak ada", "error-user-notAllowSelf": "Anda tidak bisa mengundang diri sendiri", @@ -316,6 +317,10 @@ "error-username-taken": "Nama pengguna ini sudah dipakai", "error-email-taken": "Email has already been taken", "export-board": "Exspor Panel", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Exspor Panel", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Impor panel dari Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "Di panel Trello anda, ke 'Menu', terus 'More', 'Print and Export','Export JSON', dan salin hasilnya", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Tempelkan data JSON yang sah disini", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Petakan partisipan", "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", "import-show-user-mapping": "Review pemetaan partisipan", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Impor dari Kartu Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Lainnya", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/ig.i18n.json b/i18n/ig.i18n.json index c16115ee..169953b7 100644 --- a/i18n/ig.i18n.json +++ b/i18n/ig.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json index d5b510ae..e954e284 100644 --- a/i18n/it.i18n.json +++ b/i18n/it.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Devi essere un membro di questa bacheca per poterlo fare", "error-json-malformed": "Il tuo testo non è un JSON valido", "error-json-schema": "Il tuo file JSON non contiene le giuste informazioni nel formato corretto", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Questa lista non esiste", "error-user-doesNotExist": "Questo utente non esiste", "error-user-notAllowSelf": "Non puoi invitare te stesso", @@ -316,6 +317,10 @@ "error-username-taken": "Questo username è già utilizzato", "error-email-taken": "L'email è già stata presa", "export-board": "Esporta bacheca", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Esporta bacheca", "sort": "Ordina", "sort-desc": "Clicca per ordinare la lista", "list-sort-by": "Ordina la lista per:", @@ -351,12 +356,16 @@ "import-board-c": "Importa bacheca", "import-board-title-trello": "Importa una bacheca da Trello", "import-board-title-wekan": "Importa bacheca dall'esportazione precedente", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Da Trello", "from-wekan": "Dall'esportazione precedente", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "Nella tua bacheca Trello vai a 'Menu', poi 'Altro', 'Stampa ed esporta', 'Esporta JSON', e copia il testo che compare.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "Nella tua bacheca vai su \"Menu\", poi \"Esporta la bacheca\", e copia il testo nel file scaricato", "import-board-instruction-about-errors": "Se hai degli errori quando importi una bacheca, qualche volta l'importazione funziona comunque, e la bacheca si trova nella pagina \"Tutte le bacheche\"", "import-json-placeholder": "Incolla un JSON valido qui", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Mappatura dei membri", "import-members-map": "La bacheca che hai importato contiene alcuni membri. Per favore scegli i membri che vuoi importare tra i tuoi utenti", "import-show-user-mapping": "Rivedi la mappatura dei membri", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Azioni diagramma Swimlane", "swimlaneAddPopup-title": "Aggiungi un diagramma Swimlane di seguito", "listImportCardPopup-title": "Importa una scheda di Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Altro", "link-list": "Link a questa lista", "list-delete-pop": "Tutte le azioni saranno rimosse dal flusso attività e non sarai in grado di recuperare la lista. Non potrai tornare indietro.", @@ -786,5 +796,12 @@ "thursday": "Giovedi", "friday": "Venerdi", "saturday": "Sabato", - "sunday": "Domenica" + "sunday": "Domenica", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json index 5c305b31..6f0f8e00 100644 --- a/i18n/ja.i18n.json +++ b/i18n/ja.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "操作にはボードメンバーである必要があります", "error-json-malformed": "このテキストは、有効なJSON形式ではありません", "error-json-schema": "JSONデータが不正な値を含んでいます", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "このリストは存在しません", "error-user-doesNotExist": "ユーザーが存在しません", "error-user-notAllowSelf": "自分を招待することはできません。", @@ -316,6 +317,10 @@ "error-username-taken": "このユーザ名は既に使用されています", "error-email-taken": "メールは既に受け取られています", "export-board": "ボードのエクスポート", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "ボードのエクスポート", "sort": "並べ替え", "sort-desc": "クリックでリストをソート", "list-sort-by": "次によりリストを並べ替え:", @@ -351,12 +356,16 @@ "import-board-c": "ボードをインポート", "import-board-title-trello": "Trelloからボードをインポート", "import-board-title-wekan": "以前のエクスポートからボードをインポート", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Trelloから", "from-wekan": "以前のエクスポートから", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "Trelloボードの、 'Menu' → 'More' → 'Print and Export' → 'Export JSON'を選択し、テキストをコピーしてください。", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "ボードの、 'メニュー' → 'ボードのエクスポート'を選択し、ダウンロードされたファイルの中のテキストをコピーしてください。", "import-board-instruction-about-errors": "ボードのインポート中にエラーが発生した場合、インポートがまだ進行中のまま、全てのボードページに表示されている場合があります。", "import-json-placeholder": "JSONデータをここに貼り付けする", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "メンバーを紐付け", "import-members-map": "インポートしたボードにはいくつかのメンバーが含まれています。インポートしたいメンバーをユーザーにマッピングしてください", "import-show-user-mapping": "メンバー紐付けの確認", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "スイムレーン操作", "swimlaneAddPopup-title": "直下にスイムレーンを追加", "listImportCardPopup-title": "Trelloのカードをインポート", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "さらに見る", "link-list": "このリストへのリンク", "list-delete-pop": "すべての内容がアクティビティから削除されます。この削除は元に戻すことができません。", @@ -786,5 +796,12 @@ "thursday": "木曜", "friday": "金曜", "saturday": "土曜", - "sunday": "日曜" + "sunday": "日曜", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/ka.i18n.json b/i18n/ka.i18n.json index c8c2eaf9..e90ce108 100644 --- a/i18n/ka.i18n.json +++ b/i18n/ka.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "ამის გასაკეთებლად საჭიროა იყოთ დაფის წევრი", "error-json-malformed": "შენი ტექსტი არ არის ვალიდური JSON", "error-json-schema": "თქვენი JSON მონაცემები არ შეიცავს ზუსტ ინფორმაციას სწორ ფორმატში ", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "ეს ცხრილი არ არსებობს", "error-user-doesNotExist": "მსგავსი მომხმარებელი არ არსებობს", "error-user-notAllowSelf": "თქვენ არ შეგიძლიათ საკუთარი თავის მოწვევა", @@ -316,6 +317,10 @@ "error-username-taken": "არსებობს მსგავსი მომხმარებელი", "error-email-taken": "უკვე არსებობს მსგავსი ელ.ფოსტა", "export-board": "დაფის ექსპორტი", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "დაფის ექსპორტი", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "დაფის იმპორტი", "import-board-title-trello": "დაფის იმპორტი Trello-დან", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Trello-დან", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "თქვენს Trello დაფაზე, შედით \"მენიუ\"-ში, შემდეგ დააკლიკეთ \"მეტი\", \"ამოპრინტერება და ექსპორტი\", \"JSON-ის ექსპორტი\" და დააკოპირეთ შედეგი. ", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "მოათავსეთ თქვენი ვალიდური JSON მონაცემები აქ. ", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "რუკის წევრები", "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", "import-show-user-mapping": "მომხმარებლის რუკების განხილვა", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "ბილიკის მოქმედებები", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Trello ბარათის იმპორტი", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "მეტი", "link-list": "დააკავშირეთ ამ ჩამონათვალთან", "list-delete-pop": "ყველა მოქმედება წაიშლება აქტივობების ველიდან და თქვენ ვეღარ შეძლებთ მის აღდგენას ჩამონათვალში", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/km.i18n.json b/i18n/km.i18n.json index 80eeb598..e1480c7d 100644 --- a/i18n/km.i18n.json +++ b/i18n/km.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/ko.i18n.json b/i18n/ko.i18n.json index 17066e44..4176e592 100644 --- a/i18n/ko.i18n.json +++ b/i18n/ko.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "이 작업은 보드의 멤버만 실행할 수 있습니다.", "error-json-malformed": "텍스트가 JSON 형식에 유효하지 않습니다.", "error-json-schema": "JSON 데이터에 정보가 올바른 형식으로 포함되어 있지 않습니다.", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "목록이 없습니다.", "error-user-doesNotExist": "멤버의 정보가 없습니다.", "error-user-notAllowSelf": "자기 자신을 초대할 수 없습니다.", @@ -316,6 +317,10 @@ "error-username-taken": "중복된 아이디 입니다.", "error-email-taken": "Email has already been taken", "export-board": "보드 내보내기", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "보드 내보내기", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "보드 가져오기", "import-board-title-trello": "Trello에서 보드 가져오기", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "Trello 게시판에서 'Menu' -> 'More' -> 'Print and Export', 'Export JSON' 선택하여 텍스트 결과값 복사", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "유효한 JSON 데이터를 여기에 붙여 넣으십시오.", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "보드 멤버들", "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", "import-show-user-mapping": "멤버 매핑 미리보기", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Trello 카드 가져 오기", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "더보기", "link-list": "이 리스트에 링크", "list-delete-pop": "모든 작업이 활동내역에서 제거되며 리스트를 복구 할 수 없습니다. 실행 취소는 불가능 합니다.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/lv.i18n.json b/i18n/lv.i18n.json index 669dc605..1ac67898 100644 --- a/i18n/lv.i18n.json +++ b/i18n/lv.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/mk.i18n.json b/i18n/mk.i18n.json index 0f2dd63e..ed33c299 100644 --- a/i18n/mk.i18n.json +++ b/i18n/mk.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "За да направите това трябва да сте член на това табло", "error-json-malformed": "Текстът Ви не е валиден JSON", "error-json-schema": "JSON информацията Ви не съдържа информация във валиден формат", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Този списък не съществува", "error-user-doesNotExist": "Този потребител не съществува", "error-user-notAllowSelf": "Не можете да поканите себе си", @@ -316,6 +317,10 @@ "error-username-taken": "Това потребителско име е вече заето", "error-email-taken": "Имейлът е вече зает", "export-board": "Експортиране на Табло", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Експортиране на Табло", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Импортирай Табло", "import-board-title-trello": "Импорт на табло от Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "От Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Копирайте валидната Ви JSON информация тук", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Импорт на карта от Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Още", "link-list": "Връзка към този списък", "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/mn.i18n.json b/i18n/mn.i18n.json index 0bddd870..83459c9f 100644 --- a/i18n/mn.i18n.json +++ b/i18n/mn.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/nb.i18n.json b/i18n/nb.i18n.json index 418b31fc..035f2283 100644 --- a/i18n/nb.i18n.json +++ b/i18n/nb.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Du må være medlem av denne tavlen for å gjøre dette", "error-json-malformed": "Denne teksten er ikke gyldig JSON", "error-json-schema": "Your JSON data does not include the proper information in the correct format", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Denne listen finnes ikke", "error-user-doesNotExist": "This user does not exist", "error-user-notAllowSelf": "You can not invite yourself", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Mer", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/nl.i18n.json b/i18n/nl.i18n.json index 04c18fd7..aec7a637 100644 --- a/i18n/nl.i18n.json +++ b/i18n/nl.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Je moet een lid zijn van dit bord om dat te doen.", "error-json-malformed": "JSON format klopt niet", "error-json-schema": "De JSON data bevat niet de juiste informatie in de juiste format", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Deze lijst bestaat niet", "error-user-doesNotExist": "Deze gebruiker bestaat niet", "error-user-notAllowSelf": "Je kan jezelf niet uitnodigen", @@ -316,6 +317,10 @@ "error-username-taken": "Deze gebruikersnaam is al in gebruik", "error-email-taken": "Dit e-mailadres is al in gebruik", "export-board": "Exporteer bord", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Exporteer bord", "sort": "Sorteer", "sort-desc": "Klik om lijst te sorteren", "list-sort-by": "Sorteer lijst op", @@ -351,12 +356,16 @@ "import-board-c": "Importeer bord", "import-board-title-trello": "Importeer bord vanuit Trello", "import-board-title-wekan": "Importeer bord vanuit eerdere export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Vanuit Trello", "from-wekan": "Vanuit eerdere export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "Op jouw Trello bord, ga naar 'Menu', dan naar 'Meer', 'Print en Exporteer', 'Exporteer JSON', en kopieer de tekst.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "Ga op je bord naar 'Menu' en klik dan 'Export board' en kopieer de tekst in het gedownloade bestand.", "import-board-instruction-about-errors": "Als je tijdens de import van het bord foutmeldingen krijgt is de import soms toch gelukt en vind je het bord terug op de 'Alle borden' scherm.", "import-json-placeholder": "Plak geldige JSON data hier", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Breng leden in kaart", "import-members-map": "Je geïmporteerde bord heeft een aantal leden. Koppel de leden die je wilt importeren aan je gebruikers.", "import-show-user-mapping": "Breng leden overzicht tevoorschijn", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane handelingen", "swimlaneAddPopup-title": "Voeg hieronder een Swimlane toe", "listImportCardPopup-title": "Importeer een Trello kaart", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Meer", "link-list": "Link naar deze lijst", "list-delete-pop": "Alle acties zullen verwijderd worden van de activiteiten feed, en je zult deze niet meer kunnen herstellen. Er is geen herstelmogelijkheid.", @@ -786,5 +796,12 @@ "thursday": "Donderdag", "friday": "Vrijdag", "saturday": "Zaterdag", - "sunday": "Zondag" + "sunday": "Zondag", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/oc.i18n.json b/i18n/oc.i18n.json index aa46954f..223e63dd 100644 --- a/i18n/oc.i18n.json +++ b/i18n/oc.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Devètz èsser un participant del tablèu per far aquò", "error-json-malformed": "Vòstre tèxte es pas valid JSON", "error-json-schema": "Vòstre JSON es pas al format correct ", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Aqueste tièra existís pas", "error-user-doesNotExist": "Aqueste utilizator existís pas", "error-user-notAllowSelf": "Vos podètz pas convidar vautres meteisses", @@ -316,6 +317,10 @@ "error-username-taken": "Lo nom es ja pres", "error-email-taken": "Lo corrièl es ja pres ", "export-board": "Exportar lo tablèu", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Exportar lo tablèu", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Importar un tablèu", "import-board-title-trello": "Importar un tablèu dempuèi Trello", "import-board-title-wekan": "Importar un tablèu dempuèi un export passat", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Dempuèi Trello", "from-wekan": "Dempuèi un export passat", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "Dins vòstre tablèu Trello, vos cal anar dins \"Menut\", puèi \"Mai\", \"Export\", \"Export JSON\", e copiar lo tèxte balhat.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "Dins vòstre tablèu, vos cal anar dins \"Menut\", puèi \"Exportar lo tablèu\", e de copiar lo tèxte del fichièr telecargat.", "import-board-instruction-about-errors": "Se avètz de errors al moment d'importar un tablèu, es possible que l'importacion as fonccionat, lo tablèu es belèu a la pagina \"Totes los tablèus\".", "import-json-placeholder": "Pegar las donadas del fichièr JSON aicí", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Mapa dels participants", "import-members-map": "Lo tablèu qu'avètz importat as ja de participants, vos cal far la migracion amb los utilizators actual", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Importar una carta de Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Mai", "link-list": "Ligam d'aquesta tièra", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json index fd6281e8..ee1ed06e 100644 --- a/i18n/pl.i18n.json +++ b/i18n/pl.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Musisz być członkiem tej tablicy, żeby wykonać tę czynność", "error-json-malformed": "Twoja fraza nie jest w formacie JSON", "error-json-schema": "Twoje dane JSON nie zawierają prawidłowych informacji w poprawnym formacie", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Ta lista nie isnieje", "error-user-doesNotExist": "Ten użytkownik nie istnieje", "error-user-notAllowSelf": "Nie możesz zaprosić samego siebie", @@ -316,6 +317,10 @@ "error-username-taken": "Ta nazwa jest już zajęta", "error-email-taken": "Adres email jest już zarezerwowany", "export-board": "Eksportuj tablicę", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Eksportuj tablicę", "sort": "Sortuj", "sort-desc": "Kliknij by sortować listę", "list-sort-by": "Sortuj listę przez:", @@ -351,12 +356,16 @@ "import-board-c": "Import tablicy", "import-board-title-trello": "Importuj tablicę z Trello", "import-board-title-wekan": "Importuj tablicę z poprzedniego eksportu", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Z Trello", "from-wekan": "Z poprzedniego eksportu", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "W twojej tablicy na Trello przejdź do 'Menu', następnie 'Więcej', 'Drukuj i eksportuj', 'Eksportuj jako JSON' i skopiuj wynik", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "Na Twojej tablicy przejdź do 'Menu', a następnie wybierz 'Eksportuj tablicę' i skopiuj tekst w pobranym pliku.", "import-board-instruction-about-errors": "W przypadku, gdy otrzymujesz błędy importowania tablicy, czasami importowanie pomimo wszystko działa poprawnie i tablica znajduje się w oknie Wszystkie tablice.", "import-json-placeholder": "Wklej Twoje dane JSON tutaj", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Przypisz członków", "import-members-map": "Twoje zaimportowane tablice mają kilku członków. Proszę wybierz członków których chcesz zaimportować dla Twoich użytkowników", "import-show-user-mapping": "Przejrzyj wybranych członków", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Opcje diagramu czynności", "swimlaneAddPopup-title": "Dodaj diagram czynności poniżej", "listImportCardPopup-title": "Zaimportuj kartę z Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Więcej", "link-list": "Podepnij do tej listy", "list-delete-pop": "Wszystkie czynności zostaną usunięte z Aktywności i nie będziesz w stanie przywrócić listy. Nie ma możliwości cofnięcia tej operacji.", @@ -786,5 +796,12 @@ "thursday": "Czwartek", "friday": "Piątek", "saturday": "Sobota", - "sunday": "Niedziela" + "sunday": "Niedziela", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json index db8cdf27..29951be8 100644 --- a/i18n/pt-BR.i18n.json +++ b/i18n/pt-BR.i18n.json @@ -164,15 +164,15 @@ "cardStartVotingPopup-title": "Iniciar uma votação", "positiveVoteMembersPopup-title": "Proponentes", "negativeVoteMembersPopup-title": "Oponentes", - "card-edit-voting": "Edit voting", - "editVoteEndDatePopup-title": "Change vote end date", - "allowNonBoardMembers": "Allow all logged in users", + "card-edit-voting": "Editar votação", + "editVoteEndDatePopup-title": "Mudar votação e data", + "allowNonBoardMembers": "Permitir todos os usuários logados", "vote-question": "Questão em votação", "vote-public": "Mostrar quem votou no quê", "vote-for-it": "a favor", "vote-against": "contra", - "deleteVotePopup-title": "Delete vote?", - "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.", + "deleteVotePopup-title": "Excluir votação?", + "vote-delete-pop": "A exclusão é permanente. Você perderá todas as ações associadas a esta votação.", "cardDeletePopup-title": "Excluir Cartão?", "cardDetailsActionsPopup-title": "Ações do cartão", "cardLabelsPopup-title": "Etiquetas", @@ -309,6 +309,7 @@ "error-board-notAMember": "Você precisa ser um membro desse quadro para fazer isto", "error-json-malformed": "Seu texto não é um JSON válido", "error-json-schema": "Seu JSON não inclui as informações no formato correto", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Esta lista não existe", "error-user-doesNotExist": "Este usuário não existe", "error-user-notAllowSelf": "Você não pode convidar a si mesmo", @@ -316,6 +317,10 @@ "error-username-taken": "Esse username já existe", "error-email-taken": "E-mail já está em uso", "export-board": "Exportar quadro", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Exportar quadro", "sort": "Ordenar", "sort-desc": "Clique para Ordenar Lista", "list-sort-by": "Ordenar a Lista por:", @@ -351,12 +356,16 @@ "import-board-c": "Importar quadro", "import-board-title-trello": "Importar quadro do Trello", "import-board-title-wekan": "Importar quadro a partir de exportação prévia", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Do Trello", "from-wekan": "A partir de exportação prévia", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "No seu quadro do Trello, vá em 'Menu', depois em 'Mais', 'Imprimir e Exportar', 'Exportar JSON', então copie o texto emitido", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "Em seu quadro vá para 'Menu', depois 'Exportar quadro' e copie o texto no arquivo baixado.", "import-board-instruction-about-errors": "Se você receber erros ao importar o quadro, às vezes a importação ainda funciona e o quadro está na página Todos os Quadros.", "import-json-placeholder": "Cole seus dados JSON válidos aqui", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Mapear membros", "import-members-map": "Seu quadro importado possui alguns membros. Por favor, mapeie os membros que você deseja importar para seus usuários", "import-show-user-mapping": "Revisar mapeamento dos membros", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Ações de Raia", "swimlaneAddPopup-title": "Adicionar uma Raia abaixo", "listImportCardPopup-title": "Importe um cartão do Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Mais", "link-list": "Vincular a esta lista", "list-delete-pop": "Todas as ações serão excluidas da lista de atividades e você não poderá recuperar a lista. Não há como desfazer.", @@ -628,7 +638,7 @@ "r-when-a-card": "Quando um cartão", "r-is": "é", "r-is-moved": "é movido", - "r-added-to": "Added to", + "r-added-to": "adicionado a", "r-removed-from": "Removido de", "r-the-board": "o quadro", "r-list": "lista", @@ -786,5 +796,12 @@ "thursday": "Quinta", "friday": "Sexta", "saturday": "Sábado", - "sunday": "Domingo" + "sunday": "Domingo", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/pt.i18n.json b/i18n/pt.i18n.json index 0ead762e..10f2d59f 100644 --- a/i18n/pt.i18n.json +++ b/i18n/pt.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Precisa de ser um membro deste quadro para fazer isso", "error-json-malformed": "O seu texto não é um JSON válido", "error-json-schema": "O seu JSON não inclui as informações apropriadas no formato correto", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Esta lista não existe", "error-user-doesNotExist": "Este utilizador não existe", "error-user-notAllowSelf": "Não se pode convidar a si mesmo", @@ -316,6 +317,10 @@ "error-username-taken": "Esse nome de utilizador já existe", "error-email-taken": "Endereço de e-mail já está em uso", "export-board": "Exportar quadro", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Exportar quadro", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Importar quadro", "import-board-title-trello": "Importar quadro do Trello", "import-board-title-wekan": "Importar quadro a partir de exportação prévia", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Do Trello", "from-wekan": "A partir de exportação prévia", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "No seu quadro do Trello, vá em 'Menu', depois em 'Mais', 'Imprimir e Exportar', 'Exportar JSON', e copie o texto resultante.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "No seu quadro vá para 'Menu', depois 'Exportar quadro' e copie o texto no ficheiro descarregado.", "import-board-instruction-about-errors": "Se receber erros ao importar o quadro, às vezes a importação ainda funciona e o quadro está na página Todos os Quadros.", "import-json-placeholder": "Cole seus dados JSON válidos aqui", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Mapear membros", "import-members-map": "O seu quadro importado possui alguns membros. Por favor, mapeie os membros que deseja importar para seus utilizadores", "import-show-user-mapping": "Rever mapeamento dos membros", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Acções de Pista", "swimlaneAddPopup-title": "Adicionar uma Pista abaixo", "listImportCardPopup-title": "Importe um cartão do Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Mais", "link-list": "Ligar a esta lista", "list-delete-pop": "Todas as acções serão removidas do feed de actividade e não poderá recuperar a lista. Não há como desfazer.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/ro.i18n.json b/i18n/ro.i18n.json index b7a74e13..0cb092b9 100644 --- a/i18n/ro.i18n.json +++ b/i18n/ro.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json index f6611b33..8e574266 100644 --- a/i18n/ru.i18n.json +++ b/i18n/ru.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Вы должны быть участником доски, чтобы сделать это", "error-json-malformed": "Ваше текст не является правильным JSON", "error-json-schema": "Содержимое вашего JSON не содержит информацию в корректном формате", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Список не найден", "error-user-doesNotExist": "Пользователь не найден", "error-user-notAllowSelf": "Вы не можете пригласить себя", @@ -316,6 +317,10 @@ "error-username-taken": "Это имя пользователя уже занято", "error-email-taken": "Этот адрес уже занят", "export-board": "Экспортировать доску", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Экспортировать доску", "sort": "Сортировать", "sort-desc": "Нажмите, чтобы отсортировать список", "list-sort-by": "Сортировать список по:", @@ -351,12 +356,16 @@ "import-board-c": "Импортировать доску", "import-board-title-trello": "Импортировать доску из Trello", "import-board-title-wekan": "Импортировать доску, сохраненную ранее.", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Из Trello", "from-wekan": "Сохраненную ранее", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "На вашей Trello доске нажмите “Menu” - “More” - “Print and export - “Export JSON” и скопируйте полученный текст", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "На вашей доске перейдите в “Меню”, далее “Экспортировать доску” и скопируйте текст из скачаного файла", "import-board-instruction-about-errors": "Даже если при импорте возникли ошибки, иногда импортирование проходит успешно – тогда доска появится на странице «Все доски».", "import-json-placeholder": "Вставьте JSON сюда", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Составить карту участников", "import-members-map": "Вы импортировали доску с участниками. Пожалуйста, отметьте участников, которых вы хотите импортировать в качестве пользователей", "import-show-user-mapping": "Проверить карту участников", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Действия с дорожкой", "swimlaneAddPopup-title": "Добавить дорожку ниже", "listImportCardPopup-title": "Импортировать Trello карточку", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Поделиться", "link-list": "Ссылка на список", "list-delete-pop": "Все действия будут удалены из ленты активности участников, и вы не сможете восстановить список. Данное действие необратимо.", @@ -786,5 +796,12 @@ "thursday": "Четверг", "friday": "Пятница", "saturday": "Суббота", - "sunday": "Воскресенье" + "sunday": "Воскресенье", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/sl.i18n.json b/i18n/sl.i18n.json index 49b07077..06676309 100644 --- a/i18n/sl.i18n.json +++ b/i18n/sl.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Niste član table.", "error-json-malformed": "Vaše besedilo ni veljaven JSON", "error-json-schema": "Vaši JSON podatki ne vsebujejo pravilnih informacij v ustreznem formatu", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Seznam ne obstaja", "error-user-doesNotExist": "Uporabnik ne obstaja", "error-user-notAllowSelf": "Ne morete povabiti sebe", @@ -316,6 +317,10 @@ "error-username-taken": "To up. ime že obstaja", "error-email-taken": "E-poštni naslov je že zaseden", "export-board": "Izvozi tablo", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Izvozi tablo", "sort": "Sortiraj", "sort-desc": "Klikni za sortiranje seznama", "list-sort-by": "Sortiraj po:", @@ -351,12 +356,16 @@ "import-board-c": "Uvozi tablo", "import-board-title-trello": "Uvozi tablo iz orodja Trello", "import-board-title-wekan": "Uvozi tablo iz prejšnjega izvoza", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Iz orodja Trello", "from-wekan": "Od prejšnjega izvoza", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "V vaši Trello tabli pojdite na 'Meni', 'Več', 'Natisni in Izvozi', 'Izvozi JSON', in kopirajte prikazano besedilo.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "V vaši tabli pojdite na 'Meni', 'Izvozi tablo' in kopirajte besedilo iz prenesene datoteke.", "import-board-instruction-about-errors": "Pri napakah med uvozom table v nekaterih primerih uvažanje še deluje, uvožena tabla pa je na strani Vse Table.", "import-json-placeholder": "Tukaj prilepite veljavne JSON podatke", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Mapiraj člane", "import-members-map": "Vaša uvožena tabla vsebuje nekaj članov. Prosimo mapirajte člane, ki jih želite uvoziti, z vašimi uporabniki.", "import-show-user-mapping": "Preglejte povezane člane", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Dejanja plavalnih stez", "swimlaneAddPopup-title": "Dodaj plavalno stezo spodaj", "listImportCardPopup-title": "Uvozi Trello kartico", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Več", "link-list": "Poveži s seznamom", "list-delete-pop": "Vsa dejanja bodo odstranjena iz vira dejavnosti in seznama ne boste mogli obnoviti. Razveljavitve ni.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/sr.i18n.json b/i18n/sr.i18n.json index d3b35967..f741003b 100644 --- a/i18n/sr.i18n.json +++ b/i18n/sr.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "This list does not exist", "error-user-doesNotExist": "Korisnik ne postoji", "error-user-notAllowSelf": "Ne možeš pozvati samog sebe", @@ -316,6 +317,10 @@ "error-username-taken": "Korisničko ime je već zauzeto", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sortiraj", "sort-desc": "Kliknite da biste sortirali listu", "list-sort-by": "Poredaj listu po:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Uvezi tablu iz Trella", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Mapiraj članove", "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Više", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/sv.i18n.json b/i18n/sv.i18n.json index 4ba2a277..3546e21c 100644 --- a/i18n/sv.i18n.json +++ b/i18n/sv.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Du måste vara medlem i denna anslagstavla för att göra det", "error-json-malformed": "Din text är inte giltigt JSON", "error-json-schema": "Din JSON data inkluderar inte korrekt information i rätt format", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Denna lista finns inte", "error-user-doesNotExist": "Denna användare finns inte", "error-user-notAllowSelf": "Du kan inte bjuda in dig själv", @@ -316,6 +317,10 @@ "error-username-taken": "Detta användarnamn är redan taget", "error-email-taken": "E-post har redan tagits", "export-board": "Exportera anslagstavla", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Exportera anslagstavla", "sort": "Sortera", "sort-desc": "Klicka för att sortera listan", "list-sort-by": "Sortera listan efter:", @@ -351,12 +356,16 @@ "import-board-c": "Importera anslagstavla", "import-board-title-trello": "Importera anslagstavla från Trello", "import-board-title-wekan": "Importera anslagstavla från tidigare export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Från Trello", "from-wekan": "Från tidigare export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "I din Trello-anslagstavla, gå till 'Meny', sedan 'Mera', 'Skriv ut och exportera', 'Exportera JSON' och kopiera den resulterande text.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "På din anslagstavla, gå till \"Meny\", sedan \"Exportera anslagstavla\" och kopiera texten i den hämtade filen.", "import-board-instruction-about-errors": "Om du får fel vid import av anslagstavla, ibland importerar fortfarande fungerar, och styrelsen är på alla sidor för anslagstavlor.", "import-json-placeholder": "Klistra in giltigt JSON data här", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Kartlägg medlemmar", "import-members-map": "Din importerade anslagstavla har några medlemmar. Vänligen kartlägg medlemmarna du vill importera till dina användare", "import-show-user-mapping": "Granska medlemskartläggning", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Simbana-åtgärder", "swimlaneAddPopup-title": "Lägg till en simbana nedan", "listImportCardPopup-title": "Importera ett Trello kort", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Mera", "link-list": "Länk till den här listan", "list-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsmatningen och du kommer inte att kunna återställa listan. Det går inte att ångra.", @@ -786,5 +796,12 @@ "thursday": "Torsdag", "friday": "Fredag", "saturday": "Lördag", - "sunday": "Söndag" + "sunday": "Söndag", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/sw.i18n.json b/i18n/sw.i18n.json index 76bfb09f..24364276 100644 --- a/i18n/sw.i18n.json +++ b/i18n/sw.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/ta.i18n.json b/i18n/ta.i18n.json index c75700ba..a6b25be0 100644 --- a/i18n/ta.i18n.json +++ b/i18n/ta.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Trello ல் இருந்து ", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "மேலும் ", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/th.i18n.json b/i18n/th.i18n.json index 4b571a49..8e39398f 100644 --- a/i18n/th.i18n.json +++ b/i18n/th.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "คุณต้องเป็นสมาชิกของบอร์ดนี้ถึงจะทำได้", "error-json-malformed": "ข้อความของคุณไม่ใช่ JSON", "error-json-schema": "รูปแบบข้้้อมูล JSON ของคุณไม่ถูกต้อง", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "รายการนี้ไม่มีอยู่", "error-user-doesNotExist": "ผู้ใช้นี้ไม่มีอยู่", "error-user-notAllowSelf": "You can not invite yourself", @@ -316,6 +317,10 @@ "error-username-taken": "ชื่อนี้ถูกใช้งานแล้ว", "error-email-taken": "Email has already been taken", "export-board": "ส่งออกกระดาน", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "ส่งออกกระดาน", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "นำเข้าบอร์ดจาก Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "ใน Trello ของคุณให้ไปที่ 'Menu' และไปที่ More -> Print and Export -> Export JSON และคัดลอกข้อความจากนั้น", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "วางข้อมูล JSON ที่ถูกต้องของคุณที่นี่", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "แผนที่สมาชิก", "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", "import-show-user-mapping": "Review การทำแผนที่สมาชิก", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "นำเข้าการ์ด Trello", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "เพิ่มเติม", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json index 1e5d7ad2..0941988b 100644 --- a/i18n/tr.i18n.json +++ b/i18n/tr.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "Bu işlemi yapmak için panoya üye olmalısın.", "error-json-malformed": "Girilen metin geçerli bir JSON formatında değil", "error-json-schema": "Girdiğin JSON metni tüm bilgileri doğru biçimde barındırmıyor", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "Liste bulunamadı", "error-user-doesNotExist": "Kullanıcı bulunamadı", "error-user-notAllowSelf": "Kendi kendini davet edemezsin", @@ -316,6 +317,10 @@ "error-username-taken": "Kullanıcı adı zaten alınmış", "error-email-taken": "Bu e-posta adresi daha önceden alınmış", "export-board": "Panoyu dışarı aktar", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Panoyu dışarı aktar", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Panoyu içe aktar", "import-board-title-trello": "Trello'dan panoyu içeri aktar", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "Trello'dan", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "Trello panonuzda 'Menü'ye gidip 'Daha fazlası'na tıklayın, ardından 'Yazdır ve Çıktı Al'ı seçip 'JSON biçiminde çıktı al' diyerek çıkan metni buraya kopyalayın.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Geçerli JSON verisini buraya yapıştırın", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "Üyeleri eşleştirme", "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", "import-show-user-mapping": "Üye eşleştirmesini kontrol et", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Kulvar İşlemleri", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Bir Trello kartını içeri aktar", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "Daha", "link-list": "Listeye doğrudan bağlantı", "list-delete-pop": "Etkinlik akışınızdaki tüm eylemler geri kurtarılamaz şekilde kaldırılacak. Bu işlem geri alınamaz.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/uk.i18n.json b/i18n/uk.i18n.json index 3246eaa2..069fc458 100644 --- a/i18n/uk.i18n.json +++ b/i18n/uk.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/vi.i18n.json b/i18n/vi.i18n.json index 466c937e..216a6dc0 100644 --- a/i18n/vi.i18n.json +++ b/i18n/vi.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json index 7665fbfd..3846467e 100644 --- a/i18n/zh-CN.i18n.json +++ b/i18n/zh-CN.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "需要成为看板成员才能执行此操作", "error-json-malformed": "文本不是合法的 JSON", "error-json-schema": "JSON 数据没有用正确的格式包含合适的信息", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "不存在此列表", "error-user-doesNotExist": "该用户不存在", "error-user-notAllowSelf": "无法邀请自己", @@ -316,6 +317,10 @@ "error-username-taken": "此用户名已存在", "error-email-taken": "此EMail已存在", "export-board": "导出看板", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "导出看板", "sort": "排序", "sort-desc": "点此来将列表排序", "list-sort-by": "按此来将列表排序:", @@ -351,12 +356,16 @@ "import-board-c": "导入看板", "import-board-title-trello": "从Trello导入看板", "import-board-title-wekan": "从以前的导出数据导入看板", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "自 Trello", "from-wekan": "自以前的导出", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "在你的Trello看板中,点击“菜单”,然后选择“更多”,“打印与导出”,“导出为 JSON” 并拷贝结果文本", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "在您的看板,点击“菜单”,然后“导出看板”,复制下载文件中的文本。", "import-board-instruction-about-errors": "如果在导入看板时出现错误,导入工作可能仍然在进行中,并且看板已经出现在全部看板页。", "import-json-placeholder": "粘贴您有效的 JSON 数据至此", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "映射成员", "import-members-map": "您导入的看板有一些成员,请映射这些成员到您导入的用户。", "import-show-user-mapping": "核对成员映射", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "泳道图操作", "swimlaneAddPopup-title": "在下面添加一个泳道", "listImportCardPopup-title": "导入 Trello 卡片", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "更多", "link-list": "关联到这个列表", "list-delete-pop": "所有活动将被从活动动态中删除并且你无法恢复他们,此操作无法撤销。", @@ -786,5 +796,12 @@ "thursday": "周四", "friday": "周五", "saturday": "周六", - "sunday": "周日" + "sunday": "周日", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/zh-HK.i18n.json b/i18n/zh-HK.i18n.json index 3fa93f10..89b426a8 100644 --- a/i18n/zh-HK.i18n.json +++ b/i18n/zh-HK.i18n.json @@ -309,6 +309,7 @@ "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) 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", @@ -316,6 +317,10 @@ "error-username-taken": "This username is already taken", "error-email-taken": "Email has already been taken", "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "Export board", "sort": "Sort", "sort-desc": "Click to Sort List", "list-sort-by": "Sort the List By:", @@ -351,12 +356,16 @@ "import-board-c": "Import board", "import-board-title-trello": "Import board from Trello", "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "From Trello", "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV 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 your users", "import-show-user-mapping": "Review members mapping", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "Swimlane Actions", "swimlaneAddPopup-title": "Add a Swimlane below", "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "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.", @@ -786,5 +796,12 @@ "thursday": "Thursday", "friday": "Friday", "saturday": "Saturday", - "sunday": "Sunday" + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/i18n/zh-TW.i18n.json b/i18n/zh-TW.i18n.json index 87fc574b..7f6d3558 100644 --- a/i18n/zh-TW.i18n.json +++ b/i18n/zh-TW.i18n.json @@ -309,6 +309,7 @@ "error-board-notAMember": "需要成為看板成員才能執行此操作", "error-json-malformed": "不是有效的 JSON", "error-json-schema": "JSON 資料沒有用正確的格式包含合適的資訊", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", "error-list-doesNotExist": "不存在此列表", "error-user-doesNotExist": "該使用者不存在", "error-user-notAllowSelf": "不允許對自己執行此操作", @@ -316,6 +317,10 @@ "error-username-taken": "這個使用者名稱已被使用", "error-email-taken": "Email 已被使用", "export-board": "匯出看板", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "exportBoardPopup-title": "匯出看板", "sort": "排序", "sort-desc": "點選排序清單", "list-sort-by": "清單排序依照:", @@ -351,12 +356,16 @@ "import-board-c": "匯入看板", "import-board-title-trello": "匯入在 Trello 的看板", "import-board-title-wekan": "從上次的匯出檔匯入看板", + "import-board-title-csv": "Import board from CSV/TSV", "from-trello": "來自 Trello", "from-wekan": "從上次的匯出檔", + "from-csv": "From CSV/TSV", "import-board-instruction-trello": "在你的Trello看板中,點選“功能表”,然後選擇“更多”,“列印與匯出”,“匯出為 JSON” 並拷貝結果文本", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", "import-board-instruction-wekan": "在您的看板,點擊“選單”,然後“匯出看板”,複製下載文件中的文本。", "import-board-instruction-about-errors": "如果在匯入看板時出現錯誤,匯入工作可能仍然在進行中,並且看板已經出現在全部看板頁。", "import-json-placeholder": "貼上您有效的 JSON 資料至此", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", "import-map-members": "複製成員", "import-members-map": "您匯入的看板有一些成員,請複製這些成員到您匯入的用戶。", "import-show-user-mapping": "核對複製的成員", @@ -389,6 +398,7 @@ "swimlaneActionPopup-title": "泳道動作", "swimlaneAddPopup-title": "在下面新增泳道", "listImportCardPopup-title": "匯入 Trello 卡片", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", "listMorePopup-title": "更多", "link-list": "連結到這個清單", "list-delete-pop": "所有的動作都將從活動動態中被移除且您將無法再開啟該清單\b。此操作無法復原。", @@ -786,5 +796,12 @@ "thursday": "週四", "friday": "週五", "saturday": "週六", - "sunday": "週日" + "sunday": "週日", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived" } diff --git a/models/csvCreator.js b/models/csvCreator.js new file mode 100644 index 00000000..025a3179 --- /dev/null +++ b/models/csvCreator.js @@ -0,0 +1,313 @@ +import Boards from './boards'; + +export class CsvCreator { + constructor(data) { + // date to be used for timestamps during import + this._nowDate = new Date(); + // index to help keep track of what information a column stores + // each row represents a card + this.fieldIndex = {}; + this.lists = {}; + // Map of members using username => wekanid + this.members = data.membersMapping ? data.membersMapping : {}; + this.swimlane = null; + } + + /** + * If dateString is provided, + * return the Date it represents. + * If not, will return the date when it was first called. + * This is useful for us, as we want all import operations to + * have the exact same date for easier later retrieval. + * + * @param {String} dateString a properly formatted Date + */ + _now(dateString) { + if (dateString) { + return new Date(dateString); + } + if (!this._nowDate) { + this._nowDate = new Date(); + } + return this._nowDate; + } + + _user(wekanUserId) { + if (wekanUserId && this.members[wekanUserId]) { + return this.members[wekanUserId]; + } + return Meteor.userId(); + } + + /** + * Map the header row titles to an index to help assign proper values to the cards' fields + * Valid headers (name of card fields): + * title, description, status, owner, member, label, due date, start date, finish date, created at, updated at + * Some header aliases can also be accepted. + * Headers are NOT case-sensitive. + * + * @param {Array} headerRow array from row of headers of imported CSV/TSV for cards + */ + mapHeadertoCardFieldIndex(headerRow) { + const index = {}; + for (let i = 0; i < headerRow.length; i++) { + switch (headerRow[i].trim().toLowerCase()) { + case 'title': + index.title = i; + break; + case 'description': + index.description = i; + break; + case 'stage': + case 'status': + case 'state': + index.stage = i; + break; + case 'owner': + index.owner = i; + break; + case 'members': + case 'member': + index.members = i; + break; + case 'labels': + case 'label': + index.labels = i; + break; + case 'due date': + case 'deadline': + case 'due at': + index.dueAt = i; + break; + case 'start date': + case 'start at': + index.startAt = i; + break; + case 'finish date': + case 'end at': + index.endAt = i; + break; + case 'creation date': + case 'created at': + index.createdAt = i; + break; + case 'update date': + case 'updated at': + case 'modified at': + case 'modified on': + index.modifiedAt = i; + break; + } + } + this.fieldIndex = index; + } + + createBoard(csvData) { + const boardToCreate = { + archived: false, + color: 'belize', + createdAt: this._now(), + labels: [], + members: [ + { + userId: Meteor.userId(), + wekanId: Meteor.userId(), + isActive: true, + isAdmin: true, + isNoComments: false, + isCommentOnly: false, + swimlaneId: false, + }, + ], + modifiedAt: this._now(), + //default is private, should inform user. + permission: 'private', + slug: 'board', + stars: 0, + title: `Imported Board ${this._now()}`, + }; + + // create labels + const labelsToCreate = new Set(); + for (let i = 1; i < csvData.length; i++) { + if (csvData[i][this.fieldIndex.labels]) { + for (const importedLabel of csvData[i][this.fieldIndex.labels].split( + ' ', + )) { + if (importedLabel && importedLabel.length > 0) { + labelsToCreate.add(importedLabel); + } + } + } + } + for (const label of labelsToCreate) { + let labelName, labelColor; + if (label.indexOf('-') > -1) { + labelName = label.split('-')[0]; + labelColor = label.split('-')[1]; + } else { + labelName = label; + } + const labelToCreate = { + _id: Random.id(6), + color: labelColor ? labelColor : 'black', + name: labelName, + }; + boardToCreate.labels.push(labelToCreate); + } + + const boardId = Boards.direct.insert(boardToCreate); + Boards.direct.update(boardId, { + $set: { + modifiedAt: this._now(), + }, + }); + // log activity + Activities.direct.insert({ + activityType: 'importBoard', + boardId, + createdAt: this._now(), + source: { + id: boardId, + system: 'CSV/TSV', + }, + // We attribute the import to current user, + // not the author from the original object. + userId: this._user(), + }); + return boardId; + } + + createSwimlanes(boardId) { + const swimlaneToCreate = { + archived: false, + boardId, + createdAt: this._now(), + title: 'Default', + sort: 1, + }; + const swimlaneId = Swimlanes.direct.insert(swimlaneToCreate); + Swimlanes.direct.update(swimlaneId, { $set: { updatedAt: this._now() } }); + this.swimlane = swimlaneId; + } + + createLists(csvData, boardId) { + let numOfCreatedLists = 0; + for (let i = 1; i < csvData.length; i++) { + const listToCreate = { + archived: false, + boardId, + createdAt: this._now(), + }; + if (csvData[i][this.fieldIndex.stage]) { + const existingList = Lists.find({ + title: csvData[i][this.fieldIndex.stage], + boardId, + }).fetch(); + if (existingList.length > 0) { + continue; + } else { + listToCreate.title = csvData[i][this.fieldIndex.stage]; + } + } else listToCreate.title = `Imported List ${this._now()}`; + + const listId = Lists.direct.insert(listToCreate); + this.lists[csvData[i][this.fieldIndex.stage]] = listId; + numOfCreatedLists++; + Lists.direct.update(listId, { + $set: { + updatedAt: this._now(), + sort: numOfCreatedLists, + }, + }); + } + } + + createCards(csvData, boardId) { + for (let i = 1; i < csvData.length; i++) { + const cardToCreate = { + archived: false, + boardId, + createdAt: csvData[i][this.fieldIndex.createdAt] + ? this._now(new Date(csvData[i][this.fieldIndex.createdAt])) + : null, + dateLastActivity: this._now(), + description: csvData[i][this.fieldIndex.description], + listId: this.lists[csvData[i][this.fieldIndex.stage]], + swimlaneId: this.swimlane, + sort: -1, + title: csvData[i][this.fieldIndex.title], + userId: this._user(), + startAt: csvData[i][this.fieldIndex.startAt] + ? this._now(new Date(csvData[i][this.fieldIndex.startAt])) + : null, + dueAt: csvData[i][this.fieldIndex.dueAt] + ? this._now(new Date(csvData[i][this.fieldIndex.dueAt])) + : null, + endAt: csvData[i][this.fieldIndex.endAt] + ? this._now(new Date(csvData[i][this.fieldIndex.endAt])) + : null, + spentTime: null, + labelIds: [], + modifiedAt: csvData[i][this.fieldIndex.modifiedAt] + ? this._now(new Date(csvData[i][this.fieldIndex.modifiedAt])) + : null, + }; + // add the labels + if (csvData[i][this.fieldIndex.labels]) { + const board = Boards.findOne(boardId); + for (const importedLabel of csvData[i][this.fieldIndex.labels].split( + ' ', + )) { + if (importedLabel && importedLabel.length > 0) { + let labelToApply; + if (importedLabel.indexOf('-') === -1) { + labelToApply = board.getLabel(importedLabel, 'black'); + } else { + labelToApply = board.getLabel( + importedLabel.split('-')[0], + importedLabel.split('-')[1], + ); + } + cardToCreate.labelIds.push(labelToApply._id); + } + } + } + // add the members + if (csvData[i][this.fieldIndex.members]) { + const wekanMembers = []; + for (const importedMember of csvData[i][this.fieldIndex.members].split( + ' ', + )) { + if (this.members[importedMember]) { + const wekanId = this.members[importedMember]; + if (!wekanMembers.find(wId => wId === wekanId)) { + wekanMembers.push(wekanId); + } + } + } + if (wekanMembers.length > 0) { + cardToCreate.members = wekanMembers; + } + } + Cards.direct.insert(cardToCreate); + } + } + + create(board, currentBoardId) { + const isSandstorm = + Meteor.settings && + Meteor.settings.public && + Meteor.settings.public.sandstorm; + if (isSandstorm && currentBoardId) { + const currentBoard = Boards.findOne(currentBoardId); + currentBoard.archive(); + } + this.mapHeadertoCardFieldIndex(board[0]); + const boardId = this.createBoard(board); + this.createLists(board, boardId); + this.createSwimlanes(boardId); + this.createCards(board, boardId); + return boardId; + } +} diff --git a/models/export.js b/models/export.js index 339123c8..c3783679 100644 --- a/models/export.js +++ b/models/export.js @@ -1,3 +1,4 @@ +import { Exporter } from './exporter'; /* global JsonRoutes */ if (Meteor.isServer) { // todo XXX once we have a real API in place, move that route there @@ -7,10 +8,10 @@ if (Meteor.isServer) { // on the client instead of copy/pasting the route path manually between the // client and the server. /** - * @operation export + * @operation exportJson * @tag Boards * - * @summary This route is used to export the board. + * @summary This route is used to export the board to a json file format. * * @description If user is already logged-in, pass loginToken as param * "authToken": '/api/boards/:boardId/export?authToken=:token' @@ -46,199 +47,52 @@ if (Meteor.isServer) { JsonRoutes.sendResult(res, 403); } }); -} - -// exporter maybe is broken since Gridfs introduced, add fs and path - -export class Exporter { - constructor(boardId) { - this._boardId = boardId; - } - - build() { - const fs = Npm.require('fs'); - const os = Npm.require('os'); - const path = Npm.require('path'); - - const byBoard = { boardId: this._boardId }; - const byBoardNoLinked = { - boardId: this._boardId, - linkedId: { $in: ['', null] }, - }; - // we do not want to retrieve boardId in related elements - const noBoardId = { - fields: { - boardId: 0, - }, - }; - const result = { - _format: 'wekan-board-1.0.0', - }; - _.extend( - result, - Boards.findOne(this._boardId, { - fields: { - stars: 0, - }, - }), - ); - result.lists = Lists.find(byBoard, noBoardId).fetch(); - result.cards = Cards.find(byBoardNoLinked, noBoardId).fetch(); - result.swimlanes = Swimlanes.find(byBoard, noBoardId).fetch(); - result.customFields = CustomFields.find( - { boardIds: { $in: [this.boardId] } }, - { fields: { boardId: 0 } }, - ).fetch(); - result.comments = CardComments.find(byBoard, noBoardId).fetch(); - result.activities = Activities.find(byBoard, noBoardId).fetch(); - result.rules = Rules.find(byBoard, noBoardId).fetch(); - result.checklists = []; - result.checklistItems = []; - result.subtaskItems = []; - result.triggers = []; - result.actions = []; - result.cards.forEach(card => { - result.checklists.push( - ...Checklists.find({ - cardId: card._id, - }).fetch(), - ); - result.checklistItems.push( - ...ChecklistItems.find({ - cardId: card._id, - }).fetch(), - ); - result.subtaskItems.push( - ...Cards.find({ - parentId: card._id, - }).fetch(), - ); - }); - result.rules.forEach(rule => { - result.triggers.push( - ...Triggers.find( - { - _id: rule.triggerId, - }, - noBoardId, - ).fetch(), - ); - result.actions.push( - ...Actions.find( - { - _id: rule.actionId, - }, - noBoardId, - ).fetch(), - ); - }); - - // [Old] for attachments we only export IDs and absolute url to original doc - // [New] Encode attachment to base64 - - const getBase64Data = function(doc, callback) { - let buffer = Buffer.allocUnsafe(0); - buffer.fill(0); - - // callback has the form function (err, res) {} - const tmpFile = path.join( - os.tmpdir(), - `tmpexport${process.pid}${Math.random()}`, - ); - const tmpWriteable = fs.createWriteStream(tmpFile); - const readStream = doc.createReadStream(); - readStream.on('data', function(chunk) { - buffer = Buffer.concat([buffer, chunk]); - }); - - readStream.on('error', function(err) { - callback(null, null); - }); - readStream.on('end', function() { - // done - fs.unlink(tmpFile, () => { - //ignored - }); - callback(null, buffer.toString('base64')); + /** + * @operation exportCSV/TSV + * @tag Boards + * + * @summary This route is used to export the board to a CSV or TSV file format. + * + * @description If user is already logged-in, pass loginToken as param + * + * See https://blog.kayla.com.au/server-side-route-authentication-in-meteor/ + * for detailed explanations + * + * @param {string} boardId the ID of the board we are exporting + * @param {string} authToken the loginToken + * @param {string} delimiter delimiter to use while building export. Default is comma ',' + */ + Picker.route('/api/boards/:boardId/export/csv', function(params, req, res) { + const boardId = params.boardId; + let user = null; + const loginToken = params.query.authToken; + if (loginToken) { + const hashToken = Accounts._hashLoginToken(loginToken); + user = Meteor.users.findOne({ + 'services.resume.loginTokens.hashedToken': hashToken, }); - readStream.pipe(tmpWriteable); - }; - const getBase64DataSync = Meteor.wrapAsync(getBase64Data); - result.attachments = Attachments.find(byBoard) - .fetch() - .map(attachment => { - let filebase64 = null; - filebase64 = getBase64DataSync(attachment); - - return { - _id: attachment._id, - cardId: attachment.cardId, - //url: FlowRouter.url(attachment.url()), - file: filebase64, - name: attachment.original.name, - type: attachment.original.type, - }; + } else if (!Meteor.settings.public.sandstorm) { + Authentication.checkUserId(req.userId); + user = Users.findOne({ + _id: req.userId, + isAdmin: true, }); - - // we also have to export some user data - as the other elements only - // include id but we have to be careful: - // 1- only exports users that are linked somehow to that board - // 2- do not export any sensitive information - const users = {}; - result.members.forEach(member => { - users[member.userId] = true; - }); - result.lists.forEach(list => { - users[list.userId] = true; - }); - result.cards.forEach(card => { - users[card.userId] = true; - if (card.members) { - card.members.forEach(memberId => { - users[memberId] = true; - }); - } - }); - result.comments.forEach(comment => { - users[comment.userId] = true; - }); - result.activities.forEach(activity => { - users[activity.userId] = true; - }); - result.checklists.forEach(checklist => { - users[checklist.userId] = true; - }); - const byUserIds = { - _id: { - $in: Object.getOwnPropertyNames(users), - }, - }; - // we use whitelist to be sure we do not expose inadvertently - // some secret fields that gets added to User later. - const userFields = { - fields: { - _id: 1, - username: 1, - 'profile.fullname': 1, - 'profile.initials': 1, - 'profile.avatarUrl': 1, - }, - }; - result.users = Users.find(byUserIds, userFields) - .fetch() - .map(user => { - // user avatar is stored as a relative url, we export absolute - if ((user.profile || {}).avatarUrl) { - user.profile.avatarUrl = FlowRouter.url(user.profile.avatarUrl); - } - return user; + } + const exporter = new Exporter(boardId); + if (exporter.canExport(user)) { + body = params.query.delimiter + ? exporter.buildCsv(params.query.delimiter) + : exporter.buildCsv(); + res.writeHead(200, { + 'Content-Length': body[0].length, + 'Content-Type': params.query.delimiter ? 'text/csv' : 'text/tsv', }); - return result; - } - - canExport(user) { - const board = Boards.findOne(this._boardId); - return board && board.isVisibleBy(user); - } + res.write(body[0]); + res.end(); + } else { + res.writeHead(403); + res.end('Permission Error'); + } + }); } diff --git a/models/exporter.js b/models/exporter.js new file mode 100644 index 00000000..3fa8ca3a --- /dev/null +++ b/models/exporter.js @@ -0,0 +1,344 @@ +const stringify = require('csv-stringify'); + +// exporter maybe is broken since Gridfs introduced, add fs and path +export class Exporter { + constructor(boardId) { + this._boardId = boardId; + } + + build() { + const fs = Npm.require('fs'); + const os = Npm.require('os'); + const path = Npm.require('path'); + + const byBoard = { boardId: this._boardId }; + const byBoardNoLinked = { + boardId: this._boardId, + linkedId: { $in: ['', null] }, + }; + // we do not want to retrieve boardId in related elements + const noBoardId = { + fields: { + boardId: 0, + }, + }; + const result = { + _format: 'wekan-board-1.0.0', + }; + _.extend( + result, + Boards.findOne(this._boardId, { + fields: { + stars: 0, + }, + }), + ); + result.lists = Lists.find(byBoard, noBoardId).fetch(); + result.cards = Cards.find(byBoardNoLinked, noBoardId).fetch(); + result.swimlanes = Swimlanes.find(byBoard, noBoardId).fetch(); + result.customFields = CustomFields.find( + { boardIds: { $in: [this.boardId] } }, + { fields: { boardId: 0 } }, + ).fetch(); + result.comments = CardComments.find(byBoard, noBoardId).fetch(); + result.activities = Activities.find(byBoard, noBoardId).fetch(); + result.rules = Rules.find(byBoard, noBoardId).fetch(); + result.checklists = []; + result.checklistItems = []; + result.subtaskItems = []; + result.triggers = []; + result.actions = []; + result.cards.forEach(card => { + result.checklists.push( + ...Checklists.find({ + cardId: card._id, + }).fetch(), + ); + result.checklistItems.push( + ...ChecklistItems.find({ + cardId: card._id, + }).fetch(), + ); + result.subtaskItems.push( + ...Cards.find({ + parentId: card._id, + }).fetch(), + ); + }); + result.rules.forEach(rule => { + result.triggers.push( + ...Triggers.find( + { + _id: rule.triggerId, + }, + noBoardId, + ).fetch(), + ); + result.actions.push( + ...Actions.find( + { + _id: rule.actionId, + }, + noBoardId, + ).fetch(), + ); + }); + + // [Old] for attachments we only export IDs and absolute url to original doc + // [New] Encode attachment to base64 + + const getBase64Data = function(doc, callback) { + let buffer = Buffer.allocUnsafe(0); + buffer.fill(0); + + // callback has the form function (err, res) {} + const tmpFile = path.join( + os.tmpdir(), + `tmpexport${process.pid}${Math.random()}`, + ); + const tmpWriteable = fs.createWriteStream(tmpFile); + const readStream = doc.createReadStream(); + readStream.on('data', function(chunk) { + buffer = Buffer.concat([buffer, chunk]); + }); + + readStream.on('error', function() { + callback(null, null); + }); + readStream.on('end', function() { + // done + fs.unlink(tmpFile, () => { + //ignored + }); + + callback(null, buffer.toString('base64')); + }); + readStream.pipe(tmpWriteable); + }; + const getBase64DataSync = Meteor.wrapAsync(getBase64Data); + result.attachments = Attachments.find(byBoard) + .fetch() + .map(attachment => { + let filebase64 = null; + filebase64 = getBase64DataSync(attachment); + + return { + _id: attachment._id, + cardId: attachment.cardId, + //url: FlowRouter.url(attachment.url()), + file: filebase64, + name: attachment.original.name, + type: attachment.original.type, + }; + }); + + // we also have to export some user data - as the other elements only + // include id but we have to be careful: + // 1- only exports users that are linked somehow to that board + // 2- do not export any sensitive information + const users = {}; + result.members.forEach(member => { + users[member.userId] = true; + }); + result.lists.forEach(list => { + users[list.userId] = true; + }); + result.cards.forEach(card => { + users[card.userId] = true; + if (card.members) { + card.members.forEach(memberId => { + users[memberId] = true; + }); + } + }); + result.comments.forEach(comment => { + users[comment.userId] = true; + }); + result.activities.forEach(activity => { + users[activity.userId] = true; + }); + result.checklists.forEach(checklist => { + users[checklist.userId] = true; + }); + const byUserIds = { + _id: { + $in: Object.getOwnPropertyNames(users), + }, + }; + // we use whitelist to be sure we do not expose inadvertently + // some secret fields that gets added to User later. + const userFields = { + fields: { + _id: 1, + username: 1, + 'profile.fullname': 1, + 'profile.initials': 1, + 'profile.avatarUrl': 1, + }, + }; + result.users = Users.find(byUserIds, userFields) + .fetch() + .map(user => { + // user avatar is stored as a relative url, we export absolute + if ((user.profile || {}).avatarUrl) { + user.profile.avatarUrl = FlowRouter.url(user.profile.avatarUrl); + } + return user; + }); + return result; + } + + buildCsv(delimiter = ',') { + const result = this.build(); + const columnHeaders = []; + const cardRows = []; + columnHeaders.push( + 'Title', + 'Description', + 'Status', + 'Swimlane', + 'Owner', + 'Requested by', + 'Assigned by', + 'Members', + 'Assignees', + 'Labels', + 'Start at', + 'Due at', + 'End at', + 'Over time', + 'Spent time (hours)', + 'Created at', + 'Last modified at', + 'Last activity', + 'Vote', + 'Archived', + ); + + /* TODO: Try to get translations working. + These currently only bring English translations. + TAPi18n.__('title'), + TAPi18n.__('description'), + TAPi18n.__('status'), + TAPi18n.__('swimlane'), + TAPi18n.__('owner'), + TAPi18n.__('requested-by'), + TAPi18n.__('assigned-by'), + TAPi18n.__('members'), + TAPi18n.__('assignee'), + TAPi18n.__('labels'), + TAPi18n.__('card-start'), + TAPi18n.__('card-due'), + TAPi18n.__('card-end'), + TAPi18n.__('overtime-hours'), + TAPi18n.__('spent-time-hours'), + TAPi18n.__('createdAt'), + TAPi18n.__('last-modified-at'), + TAPi18n.__('last-activity'), + TAPi18n.__('voting'), + TAPi18n.__('archived'), + */ + + const stringifier = stringify({ + header: true, + delimiter, + columns: columnHeaders, + }); + + stringifier.on('readable', function() { + let row; + while ((row = stringifier.read())) { + cardRows.push(row); + } + }); + + stringifier.on('error', function(err) { + // eslint-disable-next-line no-console + console.error(err.message); + }); + + result.cards.forEach(card => { + const currentRow = []; + currentRow.push(card.title); + currentRow.push(card.description); + currentRow.push( + result.lists.find(({ _id }) => _id === card.listId).title, + ); + currentRow.push( + result.swimlanes.find(({ _id }) => _id === card.swimlaneId).title, + ); + currentRow.push( + result.users.find(({ _id }) => _id === card.userId).username, + ); + currentRow.push(card.requestedBy ? card.requestedBy : ' '); + currentRow.push(card.assignedBy ? card.assignedBy : ' '); + let usernames = ''; + card.members.forEach(memberId => { + const user = result.users.find(({ _id }) => _id === memberId); + usernames = `${usernames + user.username} `; + }); + currentRow.push(usernames.trim()); + let assignees = ''; + card.assignees.forEach(assigneeId => { + const user = result.users.find(({ _id }) => _id === assigneeId); + assignees = `${assignees + user.username} `; + }); + currentRow.push(assignees.trim()); + let labels = ''; + card.labelIds.forEach(labelId => { + const label = result.labels.find(({ _id }) => _id === labelId); + labels = `${labels + label.name}-${label.color} `; + }); + currentRow.push(labels.trim()); + currentRow.push(card.startAt ? moment(card.startAt).format('LLLL') : ' '); + currentRow.push(card.dueAt ? moment(card.dueAt).format('LLLL') : ' '); + currentRow.push(card.endAt ? moment(card.endAt).format('LLLL') : ' '); + currentRow.push(card.isOvertime ? 'true' : 'false'); + currentRow.push(card.spentTime); + currentRow.push( + card.createdAt ? moment(card.createdAt).format('LLLL') : ' ', + ); + currentRow.push( + card.modifiedAt ? moment(card.modifiedAt).format('LLLL') : ' ', + ); + currentRow.push( + card.dateLastActivity + ? moment(card.dateLastActivity).format('LLLL') + : ' ', + ); + if (card.vote.question) { + let positiveVoters = ''; + let negativeVoters = ''; + card.vote.positive.forEach(userId => { + const user = result.users.find(({ _id }) => _id === userId); + positiveVoters = `${positiveVoters + user.username} `; + }); + card.vote.negative.forEach(userId => { + const user = result.users.find(({ _id }) => _id === userId); + negativeVoters = `${negativeVoters + user.username} `; + }); + const votingResult = `${ + card.vote.public + ? `yes-${ + card.vote.positive.length + }-${positiveVoters.trimRight()}-no-${ + card.vote.negative.length + }-${negativeVoters.trimRight()}` + : `yes-${card.vote.positive.length}-no-${card.vote.negative.length}` + }`; + currentRow.push(`${card.vote.question}-${votingResult}`); + } else { + currentRow.push(' '); + } + currentRow.push(card.archived ? 'true' : 'false'); + stringifier.write(currentRow); + }); + stringifier.end(); + return cardRows; + } + + canExport(user) { + const board = Boards.findOne(this._boardId); + return board && board.isVisibleBy(user); + } +} diff --git a/models/import.js b/models/import.js index fbfb1483..f3cbaa9b 100644 --- a/models/import.js +++ b/models/import.js @@ -1,22 +1,28 @@ import { TrelloCreator } from './trelloCreator'; import { WekanCreator } from './wekanCreator'; -import { Exporter } from './export'; +import { CsvCreator } from './csvCreator'; +import { Exporter } from './exporter'; import wekanMembersMapper from './wekanmapper'; Meteor.methods({ importBoard(board, data, importSource, currentBoard) { - check(board, Object); check(data, Object); check(importSource, String); check(currentBoard, Match.Maybe(String)); let creator; switch (importSource) { case 'trello': + check(board, Object); creator = new TrelloCreator(data); break; case 'wekan': + check(board, Object); creator = new WekanCreator(data); break; + case 'csv': + check(board, Array); + creator = new CsvCreator(data); + break; } // 1. check all parameters are ok from a syntax point of view diff --git a/package-lock.json b/package-lock.json index 61c32c66..93ab5e39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1033,6 +1033,11 @@ "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" }, + "csv-stringify": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.5.0.tgz", + "integrity": "sha512-G05575DSO/9vFzQxZN+Srh30cNyHk0SM0ePyiTChMD5WVt7GMTVPBQf4rtgMF6mqhNCJUPw4pN8LDe8MF9EYOA==" + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -3864,6 +3869,11 @@ "path-to-regexp": "~1.2.1" } }, + "papaparse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.2.0.tgz", + "integrity": "sha512-ylq1wgUSnagU+MKQtNeVqrPhZuMYBvOSL00DHycFTCxownF95gpLAk1HiHdUW77N8yxRq1qHXLdlIPyBSG9NSA==" + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", diff --git a/package.json b/package.json index de729564..50ce8f24 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "bcrypt": "^3.0.7", "bson": "^4.0.3", "bunyan": "^1.8.12", + "csv-stringify": "^5.5.0", "es6-promise": "^4.2.4", "flatted": "^2.0.1", "gridfs-stream": "^0.5.3", @@ -70,6 +71,7 @@ "mongodb": "^3.5.7", "os": "^0.1.1", "page": "^1.11.5", + "papaparse": "^5.2.0", "qs": "^6.9.4", "source-map-support": "^0.5.19", "xss": "^1.0.6" |