1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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
- }
- }
|