From 26a0cbd1ccbcde080d63d9d0334438f6025b353d Mon Sep 17 00:00:00 2001 From: Andrey Perliev <andrey.perliev@gmail.com> Date: Tue, 21 Feb 2017 10:40:09 +0200 Subject: [PATCH] gluon-status-page: JS translations (#1044) Add translation support to gluon-status-page, including English, German and Russian translations. --- .../src/js/lib/gui/neighbours.js | 8 +- .../src/js/lib/gui/nodeinfo.js | 18 ++--- .../src/js/lib/gui/statistics.js | 30 ++++---- .../gluon-status-page/src/js/lib/helper.js | 73 +++++++++++++++++++ 4 files changed, 101 insertions(+), 28 deletions(-) diff --git a/package/gluon-status-page/src/js/lib/gui/neighbours.js b/package/gluon-status-page/src/js/lib/gui/neighbours.js index 569336670..f6ce9e42b 100644 --- a/package/gluon-status-page/src/js/lib/gui/neighbours.js +++ b/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 } diff --git a/package/gluon-status-page/src/js/lib/gui/nodeinfo.js b/package/gluon-status-page/src/js/lib/gui/nodeinfo.js index 75910aae4..1441b34ea 100644 --- a/package/gluon-status-page/src/js/lib/gui/nodeinfo.js +++ b/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 () {} } diff --git a/package/gluon-status-page/src/js/lib/gui/statistics.js b/package/gluon-status-page/src/js/lib/gui/statistics.js index 244a2e960..2f3e6e27a 100644 --- a/package/gluon-status-page/src/js/lib/gui/statistics.js +++ b/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 } diff --git a/package/gluon-status-page/src/js/lib/helper.js b/package/gluon-status-page/src/js/lib/helper.js index c0c0ce2fb..125a9b2d1 100644 --- a/package/gluon-status-page/src/js/lib/helper.js +++ b/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 + , _: _ } }) -- GitLab