Browse Source

gluon-status-page: JS translations (#1044)

Add translation support to gluon-status-page, including English, German and Russian translations.
Andrey Perliev 7 years ago
parent
commit
26a0cbd1cc

+ 4 - 4
package/gluon-status-page/src/js/lib/gui/neighbours.js

@@ -132,7 +132,7 @@ function (Helper, SignalGraph, Signal) {
     table.classList.add("datatable")
 
     var th = document.createElement("th")
-    th.textContent = "Knoten"
+    th.textContent = Helper._("Node")
     tr.appendChild(th)
 
     th = document.createElement("th")
@@ -144,11 +144,11 @@ function (Helper, SignalGraph, Signal) {
     tr.appendChild(th)
 
     th = document.createElement("th")
-    th.textContent = "Entfernung"
+    th.textContent = Helper._("Distance")
     tr.appendChild(th)
 
     th = document.createElement("th")
-    th.textContent = "Inaktiv"
+    th.textContent = Helper._("Inactive")
     tr.appendChild(th)
 
     el.appendChild(table)
@@ -266,7 +266,7 @@ function (Helper, SignalGraph, Signal) {
       }
     }
 
-    return { title: document.createTextNode("Nachbarknoten")
+    return { title: document.createTextNode(Helper._("Neighbors"))
            , render: render
            , destroy: destroy
            }

+ 9 - 9
package/gluon-status-page/src/js/lib/gui/nodeinfo.js

@@ -33,20 +33,20 @@ define(["lib/helper"], function (Helper) {
     function update(nodeInfo) {
       var list = document.createElement("dl")
 
-      dlEntry(list, nodeInfo, "hostname", "Knotenname")
-      dlEntry(list, nodeInfo, "owner.contact", "Kontakt")
-      dlEntry(list, nodeInfo, "hardware.model", "Modell")
-      dlEntry(list, nodeInfo, "network.mac", "Primäre MAC")
-      dlEntry(list, nodeInfo, "network.addresses", "IP-Adresse")
-      dlEntry(list, nodeInfo, "software.firmware.release", "Firmware")
+      dlEntry(list, nodeInfo, "hostname", Helper._("Node name"))
+      dlEntry(list, nodeInfo, "owner.contact", Helper._("Contact"))
+      dlEntry(list, nodeInfo, "hardware.model", Helper._("Model"))
+      dlEntry(list, nodeInfo, "network.mac", Helper._("Primary MAC"))
+      dlEntry(list, nodeInfo, "network.addresses", Helper._("IP Address"))
+      dlEntry(list, nodeInfo, "software.firmware.release", Helper._("Firmware"))
       dlEntry(list, nodeInfo, "software.fastd.enabled", "Mesh-VPN")
-      dlEntry(list, nodeInfo, "software.autoupdater.enabled", "Automatische Updates")
-      dlEntry(list, nodeInfo, "software.autoupdater.branch", "Branch")
+      dlEntry(list, nodeInfo, "software.autoupdater.enabled", Helper._("Automatic updates"))
+      dlEntry(list, nodeInfo, "software.autoupdater.branch", Helper._("Branch"))
 
       el.appendChild(list)
     }
 
-    return { title: document.createTextNode("Übersicht")
+    return { title: document.createTextNode(Helper._("Overview"))
            , render: function (d) { d.appendChild(el) }
            , destroy: function () {}
            }

+ 15 - 15
package/gluon-status-page/src/js/lib/gui/statistics.js

@@ -171,14 +171,14 @@ define(["lib/helper"], function (Helper) {
 
   function prettyPeer(d) {
     if (d === null)
-      return "nicht verbunden"
+      return Helper._("not connected")
     else
-      return "verbunden (" + prettyUptime(d.established) + ")"
+      return Helper._("connected") + " (" + prettyUptime(d.established) + ")"
   }
 
   function prettyPackets(d) {
     var v = Helper.formatNumberFixed(d, 0)
-    return v + " Pakete/s"
+    return v + " "+ Helper._("Packets/s")
   }
 
   function prettyPrefix(prefixes, step, d) {
@@ -215,9 +215,9 @@ define(["lib/helper"], function (Helper) {
     var out = ""
 
     if (days === 1)
-      out += "1 Tag, "
+      out += "1 " + Helper._("Day") + ", "
     else if (days > 1)
-      out += days + " Tage, "
+      out += days + " " + Helper._("Days") + ", "
 
     out += hours + ":"
 
@@ -230,7 +230,7 @@ define(["lib/helper"], function (Helper) {
   }
 
   function prettyNVRAM(usage) {
-    return Helper.formatNumber(usage * 100, 3) + "% belegt"
+    return Helper.formatNumber(usage * 100, 3) + "% " + Helper._("used")
   }
 
   function prettyLoad(load) {
@@ -247,24 +247,24 @@ define(["lib/helper"], function (Helper) {
     var el = document.createElement("div")
     var table = document.createElement("table")
 
-    children.push(mkRow(table, "Laufzeit", stream.map(".uptime").map(prettyUptime)))
-    children.push(mkRow(table, "Systemlast", stream.map(".loadavg").map(prettyLoad)))
+    children.push(mkRow(table, Helper._("Uptime"), stream.map(".uptime").map(prettyUptime)))
+    children.push(mkRow(table, Helper._("Load average"), stream.map(".loadavg").map(prettyLoad)))
     children.push(mkRow(table, "RAM", stream.map(".memory").map(prettyRAM)))
     children.push(mkRow(table, "NVRAM", stream.map(".rootfs_usage").map(prettyNVRAM)))
-    children.push(mkRow(table, "Gateway", stream.map(".gateway")))
-    children.push(mkRow(table, "Clients", stream.map(".clients.total")))
+    children.push(mkRow(table, Helper._("Gateway"), stream.map(".gateway")))
+    children.push(mkRow(table, Helper._("Clients"), stream.map(".clients.total")))
 
     el.appendChild(table)
 
     var h = document.createElement("h3")
-    h.textContent = "Traffic"
+    h.textContent = Helper._("Traffic")
     el.appendChild(h)
 
     table = document.createElement("table")
 
-    mkTrafficRow(table, children, "Gesendet", stream, ".traffic.tx")
-    mkTrafficRow(table, children, "Empfangen", stream, ".traffic.rx")
-    mkTrafficRow(table, children, "Weitergeleitet", stream, ".traffic.forward")
+    mkTrafficRow(table, children, Helper._("Transmitted"), stream, ".traffic.tx")
+    mkTrafficRow(table, children, Helper._("Received"), stream, ".traffic.rx")
+    mkTrafficRow(table, children, Helper._("Forwarded"), stream, ".traffic.forward")
 
     el.appendChild(table)
 
@@ -274,7 +274,7 @@ define(["lib/helper"], function (Helper) {
       children.forEach(function (d) {d.destroy()})
     }
 
-    return { title: document.createTextNode("Statistik")
+    return { title: document.createTextNode(Helper._("Statistic"))
            , render: function (d) { d.appendChild(el) }
            , destroy: destroy
            }

+ 73 - 0
package/gluon-status-page/src/js/lib/helper.js

@@ -81,6 +81,78 @@ define([ "bacon" ], function (Bacon) {
     return R * c
   }
 
+  function _(s) {
+    var i, lang, langs, dict = {
+      "de": {
+        "Node": "Knoten",
+        "Distance": "Entfernung",
+        "Inactive": "Inaktiv",
+        "Node name": "Knotenname",
+        "Contact": "Kontakt",
+        "Model": "Modell",
+        "Primary MAC": "Primäre MAC",
+        "IP Address": "IP-Adresse",
+        "Automatic updates": "Automatische Updates",
+        "Overview": "Übersicht",
+        "used": "belegt",
+        "Uptime": "Laufzeit",
+        "Load average": "Systemlast",
+        "Transmitted": "Gesendet",
+        "Received": "Empfangen",
+        "Forwarded": "Weitergeleitet",
+        "Day": "Tag",
+        "Days": "Tage",
+        "connected": "verbunden",
+        "not connected": "nicht verbunden",
+        "Packets/s": "Pakete/s",
+        "Statistic": "Statistik",
+        "Neighbors": "Nachbarknoten"
+      },
+      "ru": {
+        "Node": "Узел",
+        "Distance": "Дальность",
+        "Inactive": "Не активен",
+        "Node name": "Имя узла",
+        "Contact": "Контакт",
+        "Model": "Модель",
+        "Primary MAC": "Основной MAC",
+        "IP Address": "IP Адрес",
+        "Automatic updates": "Автоматические обновления",
+        "Overview": "Обзор",
+        "used": "используется",
+        "Uptime": "Время работы",
+        "Load average": "Загрузка системы",
+        "Gateway": "Шлюз",
+        "Clients": "Клиенты",
+        "Transmitted": "Передано",
+        "Received": "Получено",
+        "Forwarded": "Переправленно",
+        "Day": "День",
+        "Days": "Дней",
+        "connected": "подключено",
+        "not connected": "не подключено",
+        "Packets/s": "Пакетов/c",
+        "Statistic": "Статистика",
+        "Traffic": "Трафик",
+        "Neighbors": "Соседи",
+        "Firmware": "Прошивка",
+        "Branch": "Ветка"
+      }
+    }
+    if (navigator.userLanguage)
+        langs =  [ navigator.userLanguage ]
+    else
+        langs = navigator.languages
+    for (i=0; i<langs.length; i++) {
+      lang = langs[i].split('-')[0]
+      if (lang == "en")
+        return s
+      else if (lang in dict && s in dict[lang])
+        return dict[lang][s]
+    }
+    return s
+  }
+
   return { buildUrl: buildUrl
          , request: request
          , getJSON: getJSON
@@ -88,5 +160,6 @@ define([ "bacon" ], function (Bacon) {
          , formatNumber: formatNumber
          , formatNumberFixed: formatNumberFixed
          , haversine: haversine
+         , _: _
          }
 })