new language priority logic

Massimo Melina committed Mar 18, 2023 at 16:02 UTC eacc22f2c939be665695bfd5243603e4e317863f
1 file changed +12 -10
src/frontEndApis.ts
+12 -10
@@ -75,19 +75,21 @@ export const frontEndApis: ApiHandlers = {
75
76 async load_lang({ lang, embedded }) {
77 const ret: any = {}
78 - const langs = wantArray(lang)
79 - for (let k of langs) {
80 - k = k.toLowerCase()
81 - if (k === embedded) break
82 - try { ret[k] = JSON.parse(await readFile(`hfs-lang-${k}.json`, 'utf8')) }
78 + const langs = wantArray(lang).map(x => x.toLowerCase())
79 + let i = 0
80 + while (i < langs.length) {
81 + let x = langs[i]
82 + if (x === embedded) break
83 + try { ret[x] = JSON.parse(await readFile(`hfs-lang-${x}.json`, 'utf8')) }
84 catch {
84 - while (1) {
85 - k = k.substring(0, k.lastIndexOf('-'))
86 - if (!k) break
87 - if (!langs.includes(k))
88 - langs.push(k)
85 + do { x = x.substring(0, x.lastIndexOf('-'))
86 + } while (x && langs.includes(x))
87 + if (x) {
88 + langs[i] = x // overwrite and retry
89 + continue
90 }
91 }
92 + i++
93 }
94 return ret
95 }