vail

Internet morse code repeater
git clone https://git.woozle.org/neale/vail.git

vail / static / scripts
Neale Pickett  ·  2022-06-06

i18n.mjs

 1import {Xlat} from "./xlat.mjs"
 2
 3class I18n {
 4    constructor() {
 5        for (let lang of navigator.languages) {
 6            this.table = Xlat[lang]
 7            if (this.table) {
 8                break
 9            }
10        }
11    }
12
13    Fill() {
14        if (!this.table) {
15            return
16        }
17
18        for (let e of document.querySelectorAll("[data-i18n]")) {
19            e.innerHTML =  this.lookup(e.dataset.i18n, e.innerHTML)
20        }
21
22        for (let e of document.querySelectorAll("[data-i18n-placeholder]")) {
23            e.placeholder = this.lookup(e.dataset.i18nPlaceholder, e.placeholder)
24        }
25
26        for (let e of document.querySelectorAll("[data-i18n-title")) {
27            e.title = this.lookup(e.dataset.i18nTitle, e.title)
28        }
29    }
30
31    lookup(key, dfl=null) {
32        let obj = this.table
33        for (let k of key.split(".")) {
34            obj = obj[k]
35        }
36        return obj || dfl
37    }
38}
39
40async function Setup() {
41    let i = new I18n()
42    i.Fill()
43}
44
45export {
46    Setup,
47}