Add Multilanguage support for creator notes

This commit is contained in:
kwaroran
2024-03-16 14:40:10 +09:00
parent c46744f4e4
commit 527520566d
8 changed files with 158 additions and 28 deletions

View File

@@ -383,4 +383,43 @@ export function BufferToText(data:Uint8Array){
return Buffer.from(data).toString('utf-8')
}
return new TextDecoder().decode(data)
}
}
export function encodeMultilangString(data:{[code:string]:string}){
let result = ''
if(data.en){
result = data.en
}
for(const key in data){
result = `${result}\n<div hidden x-recc-lang="${key}">${data[key]}</div>`
}
return result
}
export function parseMultilangString(data:string){
let result:{[code:string]:string} = {}
const regex = /<div hidden x-recc-lang="(.+?)">(.*?)<\/div>/g
let m:RegExpExecArray
while ((m = regex.exec(data)) !== null) {
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
result[m[1]] = m[2]
}
result.xx = data.replace(regex, '')
return result
}
export const toLangName = (code:string) => {
switch(code){
case 'xx':{ //Special case for unknown language
return 'Unknown Language'
}
default:{
return new Intl.DisplayNames([code, 'en'], {type: 'language'}).of(code)
}
}
}
export const languageCodes = ["af","ak","am","an","ar","as","ay","az","be","bg","bh","bm","bn","br","bs","ca","co","cs","cy","da","de","dv","ee","el","en","eo","es","et","eu","fa","fi","fo","fr","fy","ga","gd","gl","gn","gu","ha","he","hi","hr","ht","hu","hy","ia","id","ig","is","it","iu","ja","jv","ka","kk","km","kn","ko","ku","ky","la","lb","lg","ln","lo","lt","lv","mg","mi","mk","ml","mn","mr","ms","mt","my","nb","ne","nl","nn","no","ny","oc","om","or","pa","pl","ps","pt","qu","rm","ro","ru","rw","sa","sd","si","sk","sl","sm","sn","so","sq","sr","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ug","uk","ur","uz","vi","wa","wo","xh","yi","yo","zh","zu"]