Browse Source

Merge branch 'nztqa-improve-info' into devel

Add display Wekan version number and runtime environment.
Thanks to nztqa! Closes #963 #356
Lauri Ojansivu 8 years ago
parent
commit
6a7d7d04b1

+ 6 - 4
CHANGELOG.md

@@ -2,16 +2,18 @@
 
 This release adds the following new features:
 
- * [Add Bounties and Commercial Support to wiki](https://github.com/wekan/wekan/wiki).
+* [Add Bounties and Commercial Support to wiki](https://github.com/wekan/wekan/wiki);
+* [Add display wekan version number and runtime
+   environment](https://github.com/wekan/wekan/pull/1156).
 
-Thanks to GitHub user xet7 for contributions.
+Thanks to GitHub users nztqa and xet7 for their contributions.
 
 # v0.32 2017-07-30 Wekan release
 
 This release adds the following new features:
 
- * [Add dwrensha's Sandstorm patch to Wekan so it does not need to be maintained
-    separately](https://github.com/wekan/wekan/commit/bda15daa78556223117a5846941aafd1212f14d3).
+* [Add dwrensha's Sandstorm patch to Wekan so it does not need to be maintained
+   separately](https://github.com/wekan/wekan/commit/bda15daa78556223117a5846941aafd1212f14d3).
 
 and fixes the following bugs:
 

+ 51 - 0
client/components/settings/informationBody.jade

@@ -0,0 +1,51 @@
+template(name='information')
+  .setting-content
+    unless currentUser.isAdmin
+      | {{_ 'error-notAuthorized'}}
+    else
+      .content-title
+        span {{_ 'info'}}
+      .content-body
+        .side-menu
+          ul
+            li.active
+              a.js-setting-menu(data-id="information-display") {{_ 'info'}}
+        .main-body
+          +statistics
+
+template(name='statistics')
+    table
+      tbody
+        tr
+          th {{_ 'Wekan_version'}}
+          td {{statistics.version}}
+        tr
+          th {{_ 'Node_version'}}
+          td {{statistics.process.nodeVersion}}
+        tr
+          th {{_ 'OS_Type'}}
+          td {{statistics.os.type}}
+        tr
+          th {{_ 'OS_Platform'}}
+          td {{statistics.os.platform}}
+        tr
+          th {{_ 'OS_Arch'}}
+          td {{statistics.os.arch}}
+        tr
+          th {{_ 'OS_Release'}}
+          td {{statistics.os.release}}
+        tr
+          th {{_ 'OS_Uptime'}}
+          td {{humanReadableTime statistics.os.uptime}}
+        tr
+          th {{_ 'OS_Loadavg'}}
+          td {{numFormat statistics.os.loadavg.[0]}}, {{numFormat statistics.os.loadavg.[1]}}, {{numFormat statistics.os.loadavg.[2]}}
+        tr
+          th {{_ 'OS_Totalmem'}}
+          td {{bytesToSize statistics.os.totalmem}}
+        tr
+          th {{_ 'OS_Freemem'}}
+          td {{bytesToSize statistics.os.freemem}}
+        tr
+          th {{_ 'OS_Cpus'}}
+          td {{statistics.os.cpus.length}}

+ 48 - 0
client/components/settings/informationBody.js

@@ -0,0 +1,48 @@
+BlazeComponent.extendComponent({
+  onCreated() {
+    this.info = new ReactiveVar({});
+    Meteor.call('getStatistics', (error, ret) => {
+      if (!error && ret) {
+        this.info.set(ret);
+      }
+    });
+  },
+
+  statistics() {
+    return this.info.get();
+  },
+
+  humanReadableTime(time) {
+    const days = Math.floor(time / 86400);
+    const hours = Math.floor((time % 86400) / 3600);
+    const minutes = Math.floor(((time % 86400) % 3600) / 60);
+    const seconds = Math.floor(((time % 86400) % 3600) % 60);
+    let out = '';
+    if (days > 0) {
+      out += `${days} ${TAPi18n.__('days')}, `;
+    }
+    if (hours > 0) {
+      out += `${hours} ${TAPi18n.__('hours')}, `;
+    }
+    if (minutes > 0) {
+      out += `${minutes} ${TAPi18n.__('minutes')}, `;
+    }
+    if (seconds > 0) {
+      out += `${seconds} ${TAPi18n.__('seconds')}`;
+    }
+    return out;
+  },
+
+  numFormat(number) {
+    return parseFloat(number).toFixed(2);
+  },
+
+  bytesToSize(bytes) {
+    const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
+    if (bytes === 0) {
+      return '0 Byte';
+    }
+    const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);
+    return `${Math.round(bytes / Math.pow(1024, i), 2)}  ${sizes[i]}`;
+  },
+}).register('statistics');

+ 5 - 2
client/components/settings/settingHeader.jade

@@ -6,10 +6,13 @@ template(name="settingHeaderBar")
     unless isMiniScreen
       unless isSandstorm
         if currentUser
-          a.setting-header-btn.settings.active
+          a.setting-header-btn.settings(href="{{pathFor 'setting'}}")
             i.fa(class="fa-cog")
             span {{_ 'settings'}}
-//TODO 
+          a.setting-header-btn.informations(href="{{pathFor 'information'}}")
+            i.fa(class="fa-info-circle")
+            span {{_ 'info'}}
+//TODO
 //          a.setting-header-btn.people
 //            i.fa(class="fa-users")
 //            span {{_ 'people'}}

+ 20 - 0
config/router.js

@@ -120,6 +120,26 @@ FlowRouter.route('/setting', {
   },
 });
 
+FlowRouter.route('/information', {
+  name: 'information',
+  triggersEnter: [
+    AccountsTemplates.ensureSignedIn,
+    () => {
+      Session.set('currentBoard', null);
+      Session.set('currentCard', null);
+
+      Filter.reset();
+      EscapeActions.executeAll();
+    },
+  ],
+  action() {
+    BlazeLayout.render('defaultLayout', {
+      headerBar: 'settingHeaderBar',
+      content: 'information',
+    });
+  },
+});
+
 FlowRouter.notFound = {
   action() {
     BlazeLayout.render('defaultLayout', { content: 'notFound' });

+ 16 - 2
i18n/ar.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "حدّد عضو ويكان",
-    "info": "معلومات",
+    "info": "Version",
     "initials": "أولية",
     "invalid-date": "تاريخ غير صالح",
     "joined": "انضمّ",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/br.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Infos",
+    "info": "Version",
     "initials": "Initials",
     "invalid-date": "Invalid date",
     "joined": "joined",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/ca.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Revisa l'assignació de membres",
     "import-user-select": "Selecciona l'usuari Wekan que vulguis associar a aquest membre",
     "importMapMembersAddPopup-title": "Selecciona un membre de Wekan",
-    "info": "Informacions",
+    "info": "Version",
     "initials": "Inicials",
     "invalid-date": "Data invàlida",
     "joined": "s'ha unit",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "El codi d'invitació no existeix",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/cs.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Zkontrolovat namapování členů",
     "import-user-select": "Vyber uživatele Wekan, kterého chceš použít pro tohoto člena",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Informace",
+    "info": "Version",
     "initials": "Iniciály",
     "invalid-date": "Invalid date",
     "joined": "spojeno",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/de.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Mitgliederzuordnung überprüfen",
     "import-user-select": "Wählen Sie den Wekan-Nutzer aus, der dieses Mitglied sein soll",
     "importMapMembersAddPopup-title": "Wekan-Nutzer auswählen",
-    "info": "Informationen",
+    "info": "Version",
     "initials": "Initialen",
     "invalid-date": "Ungültiges Datum",
     "joined": "beigetreten",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Ungültiger Einladungscode",
     "error-notAuthorized": "Sie sind nicht berechtigt diese Seite zu sehen.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/en-GB.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Infos",
+    "info": "Version",
     "initials": "Initials",
     "invalid-date": "Invalid date",
     "joined": "joined",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorised to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/en.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Infos",
+    "info": "Version",
     "initials": "Initials",
     "invalid-date": "Invalid date",
     "joined": "joined",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/eo.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Informoj",
+    "info": "Version",
     "initials": "Initials",
     "invalid-date": "Invalid date",
     "joined": "joined",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/es.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Seleccionar un miembro de Wekan",
-    "info": "Informaciones",
+    "info": "Version",
     "initials": "Iniciales",
     "invalid-date": "Fecha no Válida",
     "joined": "se ha unido",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "El Código de Invitación no existe",
     "error-notAuthorized": "No estás autorizado a ver esta página.",
     "outgoing-webhooks": "Webhooks salientes",
-    "outgoingWebhooksPopup-title": "Webhooks salientes"
+    "outgoingWebhooksPopup-title": "Webhooks salientes",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 18 - 4
i18n/eu.i18n.json

@@ -37,7 +37,7 @@
     "activity-sent": "%s %s(e)ri bidalita",
     "activity-unjoined": "%s utzita",
     "activity-checklist-added": "egiaztaketa zerrenda %s(e)ra gehituta",
-    "activity-checklist-item-added": "added checklist item to '%s' in %s",
+    "activity-checklist-item-added": "egiaztaketa zerrendako elementuak '%s'(e)ra gehituta %s(e)n",
     "add": "Gehitu",
     "add-attachment": "Gehitu eranskina",
     "add-board": "Gehitu arbela",
@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Berrikusi kideen mapa",
     "import-user-select": "Hautatu kide hau bezala erabili nahi duzun Wekan erabiltzailea",
     "importMapMembersAddPopup-title": "Aukeratu Wekan kidea",
-    "info": "Informazioak",
+    "info": "Version",
     "initials": "Inizialak",
     "invalid-date": "Baliogabeko data",
     "joined": "elkartu da",
@@ -364,6 +364,20 @@
     "email-invite-register-text": "Kaixo __user__,\n\n__inviter__ erabiltzaileak Wekanera gonbidatu zaitu elkar-lanean aritzeko.\n\nJarraitu mesedez lotura hau:\n__url__\n\nZure gonbidapen kodea hau da: __icode__\n\nEskerrik asko.",
     "error-invitation-code-not-exist": "Gonbidapen kodea ez da existitzen",
     "error-notAuthorized": "Ez duzu orri hau ikusteko baimenik.",
-    "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoing-webhooks": "Irteerako Webhook-ak",
+    "outgoingWebhooksPopup-title": "Irteerako Webhook-ak",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/fa.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "بررسی نقشه کاربران",
     "import-user-select": "کاربری از نرم افزار را که می خواهید بعنوان این عضو جایگزین شود را انتخاب کنید.",
     "importMapMembersAddPopup-title": "انتخاب کاربر Wekan",
-    "info": "اطلاعات",
+    "info": "Version",
     "initials": "تخصیصات اولیه",
     "invalid-date": "تاریخ نامعتبر",
     "joined": "متصل",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "چنین کد دعوتی یافت نشد",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/fi.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Tarkasta vastaavat jäsenet",
     "import-user-select": "Valitse Wekan käyttäjä jota haluat käyttää tänä käyttäjänä",
     "importMapMembersAddPopup-title": "Valitse Wekan käyttäjä",
-    "info": "Tietoja",
+    "info": "Versio",
     "initials": "Nimikirjaimet",
     "invalid-date": "Virheellinen päivämäärä",
     "joined": "liittyi",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Kutsukoodi ei ole olemassa",
     "error-notAuthorized": "Sinulla ei ole oikeutta tarkastella tätä sivua.",
     "outgoing-webhooks": "Lähtevät Webkoukut",
-    "outgoingWebhooksPopup-title": "Lähtevät Webkoukut"
+    "outgoingWebhooksPopup-title": "Lähtevät Webkoukut",
+    "Wekan_version": "Wekan versio",
+    "Node_version": "Node versio",
+    "OS_Arch": "Käyttöjärjestelmän arkkitehtuuri",
+    "OS_Cpus": "Käyttöjärjestelmän CPU määrä",
+    "OS_Freemem": "Käyttöjärjestelmän vapaa muisti",
+    "OS_Loadavg": "Käyttöjärjestelmän kuorman keskiarvo",
+    "OS_Platform": "Käyttöjärjestelmäalusta",
+    "OS_Release": "Käyttöjärjestelmän julkaisu",
+    "OS_Totalmem": "Käyttöjärjestelmän muistin kokonaismäärä",
+    "OS_Type": "Käyttöjärjestelmän tyyppi",
+    "OS_Uptime": "Käyttöjärjestelmä ollut käynnissä",
+    "hours": "tuntia",
+    "minutes": "minuuttia",
+    "seconds": "sekuntia"
 }

+ 16 - 2
i18n/fr.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Contrôler l'association des membres",
     "import-user-select": "Sélectionnez l'utilisateur Wekan que vous voulez associer à ce membre",
     "importMapMembersAddPopup-title": "Sélectionner le membre Wekan",
-    "info": "Infos",
+    "info": "Version",
     "initials": "Initiales",
     "invalid-date": "Date invalide",
     "joined": "a rejoint",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Ce code d'invitation n'existe pas.",
     "error-notAuthorized": "Vous n'êtes pas autorisé à accéder à cette page.",
     "outgoing-webhooks": "Webhooks sortants",
-    "outgoingWebhooksPopup-title": "Webhooks sortants"
+    "outgoingWebhooksPopup-title": "Webhooks sortants",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/gl.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Informacións",
+    "info": "Version",
     "initials": "Iniciais",
     "invalid-date": "A data é incorrecta",
     "joined": "joined",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 18 - 4
i18n/he.i18n.json

@@ -37,7 +37,7 @@
     "activity-sent": "%s נשלח ל%s",
     "activity-unjoined": "בטל צירוף %s",
     "activity-checklist-added": "נוספה רשימת משימות אל %s",
-    "activity-checklist-item-added": "added checklist item to '%s' in %s",
+    "activity-checklist-item-added": "נוסף פריט רשימת משימות אל ‚%s‘ תחת %s",
     "add": "הוספה",
     "add-attachment": "הוספת קובץ מצורף",
     "add-board": "הוספת לוח",
@@ -210,7 +210,7 @@
     "import-board-c": "יבוא לוח",
     "import-board-title-trello": "ייבוא לוח מטרלו",
     "import-board-title-wekan": "יבוא לוח מ־Wekan",
-    "import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
+    "import-sandstorm-warning": "הלוח שייובא ימחק את כל הנתונים הקיימים בלוח ויחליף אותם בלוח שייובא.",
     "from-trello": "מ־Trello",
     "from-wekan": "מ־Wekan",
     "import-board-instruction-trello": "בלוח הטרלו שלך, עליך ללחוץ על ‚תפריט‘, ואז על ‚עוד‘, ‚הדפסה וייצוא‘, ‚יצוא JSON‘ ולהעתיק את הטקסט שנוצר.",
@@ -221,7 +221,7 @@
     "import-show-user-mapping": "סקירת מיפוי חברים",
     "import-user-select": "נא לבחור את המשתמש ב־Wekan בו ברצונך להשתמש עבור חבר זה",
     "importMapMembersAddPopup-title": "בחירת משתמש Wekan",
-    "info": "מידע",
+    "info": "Version",
     "initials": "ראשי תיבות",
     "invalid-date": "תאריך שגוי",
     "joined": "הצטרף",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "קוד ההזמנה אינו קיים",
     "error-notAuthorized": "אין לך הרשאה לצפות בעמוד זה.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/hu.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Információk",
+    "info": "Version",
     "initials": "Kezdőbetűk",
     "invalid-date": "Hibás dátum",
     "joined": "becsatlakozott",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "A meghívó kódja nem érvényes",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/id.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review pemetaan partisipan",
     "import-user-select": "Pilih nama pengguna yang Anda mau gunakan sebagai anggota ini",
     "importMapMembersAddPopup-title": "Pilih anggota Wekan",
-    "info": "Info",
+    "info": "Version",
     "initials": "Inisial",
     "invalid-date": "Tanggal tidak sah",
     "joined": "bergabung",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Kode undangan tidak ada",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 18 - 4
i18n/it.i18n.json

@@ -37,7 +37,7 @@
     "activity-sent": "inviato %s a %s",
     "activity-unjoined": "ha abbandonato %s",
     "activity-checklist-added": "aggiunta checklist a %s",
-    "activity-checklist-item-added": "added checklist item to '%s' in %s",
+    "activity-checklist-item-added": "Aggiunto l'elemento checklist a '%s' in %s",
     "add": "Aggiungere",
     "add-attachment": "Aggiungi Allegato",
     "add-board": "Aggiungi Bacheca",
@@ -210,7 +210,7 @@
     "import-board-c": "Importa bacheca",
     "import-board-title-trello": "Importa una bacheca da Trello",
     "import-board-title-wekan": "Importa bacheca da Wekan",
-    "import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
+    "import-sandstorm-warning": "La bacheca importata cancellerà tutti i dati esistenti su questa bacheca e li rimpiazzerà con quelli della bacheca importata.",
     "from-trello": "Da Trello",
     "from-wekan": "Da Wekan",
     "import-board-instruction-trello": "Nella tua bacheca Trello vai a 'Menu', poi 'Altro', 'Stampa ed esporta', 'Esporta JSON', e copia il testo che compare.",
@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Rivedi la mappatura dei membri",
     "import-user-select": "Scegli l'utente Wekan che vuoi utilizzare come questo membro",
     "importMapMembersAddPopup-title": "Seleziona i membri di Wekan",
-    "info": "Info",
+    "info": "Version",
     "initials": "Iniziali",
     "invalid-date": "Data non valida",
     "joined": "si è unito a",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Il codice d'invito non esiste",
     "error-notAuthorized": "Non sei autorizzato ad accedere a questa pagina.",
     "outgoing-webhooks": "Server esterni",
-    "outgoingWebhooksPopup-title": "Server esterni"
+    "outgoingWebhooksPopup-title": "Server esterni",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 23 - 9
i18n/ja.i18n.json

@@ -176,17 +176,17 @@
     "email-invite": "メールで招待",
     "email-invite-subject": "__inviter__ sent you an invitation",
     "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
-    "email-resetPassword-subject": "Reset your password on __siteName__",
+    "email-resetPassword-subject": "あなたの __siteName__ のパスワードをリセットする",
     "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
-    "email-sent": "Email sent",
-    "email-verifyEmail-subject": "Verify your email address on __siteName__",
+    "email-sent": "メールを送信しました",
+    "email-verifyEmail-subject": "あなたの __siteName__ のメールアドレスを確認する",
     "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
     "error-board-doesNotExist": "ボードがありません",
     "error-board-notAdmin": "You need to be admin of this board to do that",
     "error-board-notAMember": "You need to be a member of this board to do that",
-    "error-json-malformed": "Your text is not valid JSON",
+    "error-json-malformed": "このテキストは、有効なJSON形式ではありません",
     "error-json-schema": "Your JSON data does not include the proper information in the correct format",
-    "error-list-doesNotExist": "This list does not exist",
+    "error-list-doesNotExist": "このリストは存在しません",
     "error-user-doesNotExist": "ユーザーが存在しません",
     "error-user-notAllowSelf": "自分を招待することはできません。",
     "error-user-notCreated": "ユーザーが作成されていません",
@@ -221,11 +221,11 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Wekanメンバーを選択",
-    "info": "情報",
+    "info": "Version",
     "initials": "Initials",
     "invalid-date": "無効な日付",
     "joined": "参加しました",
-    "just-invited": "You are just invited to this board",
+    "just-invited": "このボードのメンバーに招待されています",
     "keyboard-shortcuts": "キーボード・ショートカット",
     "label-create": "ラベルの作成",
     "label-default": "%s ラベル(デフォルト)",
@@ -297,7 +297,7 @@
     "removeMemberPopup-title": "メンバーを外しますか?",
     "rename": "名前変更",
     "rename-board": "ボード名の変更",
-    "restore": "Restore",
+    "restore": "復元",
     "save": "保存",
     "search": "検索",
     "select-color": "色を選択",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "招待コードが存在しません",
     "error-notAuthorized": "このページを参照する権限がありません。",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/ko.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "멤버 매핑 미리보기",
     "import-user-select": "이 멤버로 사용하려는 Wekan 유저를 선택하십시오.",
     "importMapMembersAddPopup-title": "Wekan 멤버 선택",
-    "info": "정보",
+    "info": "Version",
     "initials": "이니셜",
     "invalid-date": "잘못된 날짜",
     "joined": "참가함",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "초대 코드가 존재하지 않습니다.",
     "error-notAuthorized": "이 페이지를 볼 수있는 권한이 없습니다.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/nb.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Infos",
+    "info": "Version",
     "initials": "Initials",
     "invalid-date": "Invalid date",
     "joined": "joined",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/nl.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Infos",
+    "info": "Version",
     "initials": "Initials",
     "invalid-date": "Invalid date",
     "joined": "joined",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/pl.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Przejrzyj wybranych członków",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Informacje",
+    "info": "Version",
     "initials": "Initials",
     "invalid-date": "Invalid date",
     "joined": "dołączył",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/pt-BR.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Revisar mapeamento dos membros",
     "import-user-select": "Selecione o usuário Wekan que você gostaria de usar como este membro",
     "importMapMembersAddPopup-title": "Seleciona um membro",
-    "info": "Informações",
+    "info": "Version",
     "initials": "Iniciais",
     "invalid-date": "Data inválida",
     "joined": "juntou-se",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "O código do convite não existe",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/ro.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Infos",
+    "info": "Version",
     "initials": "Iniţiale",
     "invalid-date": "Invalid date",
     "joined": "joined",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/ru.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Пересмотреть карту пользователей",
     "import-user-select": "Выберите Wekan-пользователя, которого вы хотите использовать в качестве пользователя",
     "importMapMembersAddPopup-title": "Выбрать Wekan пользователя",
-    "info": "Информация",
+    "info": "Version",
     "initials": "Инициалы",
     "invalid-date": "Неверная дата",
     "joined": "вступил",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Код приглашения не существует",
     "error-notAuthorized": "У вас нет доступа на просмотр этой страницы.",
     "outgoing-webhooks": "Исходящие Веб-хуки",
-    "outgoingWebhooksPopup-title": "Исходящие Веб-хуки"
+    "outgoingWebhooksPopup-title": "Исходящие Веб-хуки",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/sr.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Izaberi člana Wekan-a",
-    "info": "Infos",
+    "info": "Version",
     "initials": "Initials",
     "invalid-date": "Neispravan datum",
     "joined": "joined",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/sv.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Granska medlemskartläggning",
     "import-user-select": "Välj Wekan-användare du vill använda som denna medlem",
     "importMapMembersAddPopup-title": "Välj Wekan member",
-    "info": "Infos",
+    "info": "Version",
     "initials": "Initialer ",
     "invalid-date": "Ogiltigt datum",
     "joined": "gick med",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Inbjudningskod finns inte",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/ta.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Infos",
+    "info": "Version",
     "initials": "Initials",
     "invalid-date": "Invalid date",
     "joined": "joined",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/th.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review การทำแผนที่สมาชิก",
     "import-user-select": "เลือกผู้ใช้ Wekan ที่คุณต้องการใช้เป็นเหมือนสมาชิกนี้",
     "importMapMembersAddPopup-title": "เลือกสมาชิก",
-    "info": "ข่าวสาร",
+    "info": "Version",
     "initials": "ชื่อย่อ",
     "invalid-date": "วันที่ไม่ถูกต้อง",
     "joined": "เข้าร่วม",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/tr.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Üye eşleştirmesini kontrol et",
     "import-user-select": "Bu üyenin sistemdeki hangi kullanıcı olduğunu seçin",
     "importMapMembersAddPopup-title": "Üye seç",
-    "info": "Bilgiler",
+    "info": "Version",
     "initials": "İlk Harfleri",
     "invalid-date": "Geçersiz tarih",
     "joined": "katıldı",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Davetiye kodu bulunamadı",
     "error-notAuthorized": "Bu sayfayı görmek için yetkiniz yok.",
     "outgoing-webhooks": "Dışarı giden bağlantılar",
-    "outgoingWebhooksPopup-title": "Dışarı giden bağlantılar"
+    "outgoingWebhooksPopup-title": "Dışarı giden bağlantılar",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/uk.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Infos",
+    "info": "Version",
     "initials": "Initials",
     "invalid-date": "Invalid date",
     "joined": "joined",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/vi.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
     "importMapMembersAddPopup-title": "Select Wekan member",
-    "info": "Infos",
+    "info": "Version",
     "initials": "Initials",
     "invalid-date": "Invalid date",
     "joined": "joined",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "Invitation code doesn't exist",
     "error-notAuthorized": "You are not authorized to view this page.",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/zh-CN.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "核对成员映射",
     "import-user-select": "选择您想将此成员映射到的 Wekan 用户",
     "importMapMembersAddPopup-title": "选择Wekan成员",
-    "info": "信息",
+    "info": "Version",
     "initials": "缩写",
     "invalid-date": "无效日期",
     "joined": "关联",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "邀请码不存在",
     "error-notAuthorized": "您无权查看此页面。",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 16 - 2
i18n/zh-TW.i18n.json

@@ -221,7 +221,7 @@
     "import-show-user-mapping": "核對成員映射",
     "import-user-select": "選擇您想將此成員映射到的 Wekan 使用者",
     "importMapMembersAddPopup-title": "選擇 Wekan 成員",
-    "info": "資訊",
+    "info": "Version",
     "initials": "縮寫",
     "invalid-date": "無效的日期",
     "joined": "關聯",
@@ -365,5 +365,19 @@
     "error-invitation-code-not-exist": "邀請碼不存在",
     "error-notAuthorized": "沒有適合的權限觀看",
     "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+    "Wekan_version": "Wekan version",
+    "Node_version": "Node version",
+    "OS_Arch": "OS Arch",
+    "OS_Cpus": "OS CPU Count",
+    "OS_Freemem": "OS Free Memory",
+    "OS_Loadavg": "OS Load Average",
+    "OS_Platform": "OS Platform",
+    "OS_Release": "OS Release",
+    "OS_Totalmem": "OS Total Memory",
+    "OS_Type": "OS Type",
+    "OS_Uptime": "OS Uptime",
+    "hours": "hours",
+    "minutes": "minutes",
+    "seconds": "seconds"
 }

+ 1 - 0
package.json

@@ -28,6 +28,7 @@
     "bson": "^1.0.4",
     "es6-promise": "^4.1.0",
     "meteor-node-stubs": "^0.2.6",
+    "os": "^0.1.1",
     "winston": "^2.3.1",
     "winston-zulip": "0.0.6",
     "xss": "^0.3.3"

+ 26 - 0
server/statistics.js

@@ -0,0 +1,26 @@
+Meteor.methods({
+  getStatistics() {
+    const os = require('os');
+    const pjson = require('/package.json');
+    const statistics = {};
+    statistics.version = pjson.version;
+    statistics.os = {
+      type: os.type(),
+      platform: os.platform(),
+      arch: os.arch(),
+      release: os.release(),
+      uptime: os.uptime(),
+      loadavg: os.loadavg(),
+      totalmem: os.totalmem(),
+      freemem: os.freemem(),
+      cpus: os.cpus(),
+    };
+    statistics.process = {
+      nodeVersion: process.version,
+      pid: process.pid,
+      uptime: process.uptime(),
+    };
+
+    return statistics;
+  },
+});