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}