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
}