mirror of https://github.com/requarks/wiki
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.
79 lines
2.6 KiB
79 lines
2.6 KiB
const fs = require('fs-extra')
|
|
const path = require('path')
|
|
const _ = require('lodash')
|
|
|
|
/* global WIKI */
|
|
|
|
module.exports = {
|
|
async init () {
|
|
if (!WIKI.config.offline) {
|
|
return
|
|
}
|
|
|
|
const sideloadExists = await fs.pathExists(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'sideload'))
|
|
|
|
if (!sideloadExists) {
|
|
return
|
|
}
|
|
|
|
WIKI.logger.info('Sideload directory detected. Looking for packages...')
|
|
|
|
try {
|
|
await this.importLocales()
|
|
} catch (err) {
|
|
WIKI.logger.warn(err)
|
|
}
|
|
},
|
|
async importLocales() {
|
|
const localeExists = await fs.pathExists(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'sideload/locales.json'))
|
|
if (localeExists) {
|
|
WIKI.logger.info('Found locales master file. Importing locale packages...')
|
|
let importedLocales = 0
|
|
|
|
const locales = await fs.readJson(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'sideload/locales.json'))
|
|
if (locales && _.has(locales, 'data.localization.locales')) {
|
|
for (const locale of locales.data.localization.locales) {
|
|
try {
|
|
const localeData = await fs.readJson(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `sideload/${locale.code}.json`))
|
|
if (localeData) {
|
|
WIKI.logger.info(`Importing ${locale.name} locale package...`)
|
|
|
|
let lcObj = {}
|
|
_.forOwn(localeData, (value, key) => {
|
|
if (_.includes(key, '::')) { return }
|
|
if (_.isEmpty(value)) { value = key }
|
|
_.set(lcObj, key.replace(':', '.'), value)
|
|
})
|
|
|
|
const localeDbExists = await WIKI.models.locales.query().select('code').where('code', locale.code).first()
|
|
if (localeDbExists) {
|
|
await WIKI.models.locales.query().update({
|
|
code: locale.code,
|
|
strings: lcObj,
|
|
isRTL: locale.isRTL,
|
|
name: locale.name,
|
|
nativeName: locale.nativeName,
|
|
availability: locale.availability || 0
|
|
}).where('code', locale.code)
|
|
} else {
|
|
await WIKI.models.locales.query().insert({
|
|
code: locale.code,
|
|
strings: lcObj,
|
|
isRTL: locale.isRTL,
|
|
name: locale.name,
|
|
nativeName: locale.nativeName,
|
|
availability: locale.availability || 0
|
|
})
|
|
}
|
|
importedLocales++
|
|
}
|
|
} catch (err) {
|
|
// skip
|
|
}
|
|
}
|
|
WIKI.logger.info(`Imported ${importedLocales} locale packages: [COMPLETED]`)
|
|
}
|
|
}
|
|
}
|
|
}
|