12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 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
- }).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
- })
- }
- importedLocales++
- }
- } catch (err) {
- // skip
- }
- }
- WIKI.logger.info(`Imported ${importedLocales} locale packages: [COMPLETED]`)
- }
- }
- }
- }
|