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

Add translation support to gluon-status-page, including English, German and Russian translations.
This commit is contained in:
Andrey Perliev 2017-02-21 10:40:09 +02:00 committed by Matthias Schiffer
parent 134ddd411c
commit 26a0cbd1cc
4 changed files with 101 additions and 28 deletions

View File

@ -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
}

View File

@ -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 () {}
}

View File

@ -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
}

View File

@ -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
, _: _
}
})