You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import { setTimeout } from 'node:timers/promises'
|
|
|
|
|
|
|
|
export async function task (payload) {
|
|
|
|
if (WIKI.config.update?.locales === false) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
WIKI.logger.info('Fetching latest localization data...')
|
|
|
|
|
|
|
|
try {
|
|
|
|
const metadata = await fetch('https://github.com/requarks/wiki-locales/raw/main/locales/metadata.json').then(r => r.json())
|
|
|
|
for (const lang of metadata.languages) {
|
|
|
|
// -> Build filename
|
|
|
|
const langFilenameParts = [lang.language]
|
|
|
|
if (lang.region) {
|
|
|
|
langFilenameParts.push(lang.region)
|
|
|
|
}
|
|
|
|
if (lang.script) {
|
|
|
|
langFilenameParts.push(lang.script)
|
|
|
|
}
|
|
|
|
const langFilename = langFilenameParts.join('-')
|
|
|
|
|
|
|
|
WIKI.logger.debug(`Fetching updates for language ${langFilename}...`)
|
|
|
|
|
|
|
|
const strings = await fetch(`https://github.com/requarks/wiki-locales/raw/main/locales/${langFilename}.json`).then(r => r.json())
|
|
|
|
if (strings) {
|
|
|
|
await WIKI.db.knex('locales').insert({
|
|
|
|
code: langFilename,
|
|
|
|
name: lang.name,
|
|
|
|
nativeName: lang.localizedName,
|
|
|
|
language: lang.language,
|
|
|
|
region: lang.region,
|
|
|
|
script: lang.script,
|
|
|
|
isRTL: lang.isRtl,
|
|
|
|
strings
|
|
|
|
}).onConflict('code').merge({
|
|
|
|
strings,
|
|
|
|
updatedAt: new Date()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
WIKI.logger.debug(`Updated strings for language ${langFilename}.`)
|
|
|
|
|
|
|
|
await setTimeout(100)
|
|
|
|
}
|
|
|
|
|
|
|
|
WIKI.logger.info('Fetched latest localization data: [ COMPLETED ]')
|
|
|
|
} catch (err) {
|
|
|
|
WIKI.logger.error('Fetching latest localization data: [ FAILED ]')
|
|
|
|
WIKI.logger.error(err.message)
|
|
|
|
throw err
|
|
|
|
}
|
|
|
|
}
|