mirror of https://github.com/Requarks/wiki.git
NGPixel
6 years ago
8 changed files with 139 additions and 14 deletions
Split View
Diff Options
-
39client/components/admin/admin-locale.vue
-
12client/graph/admin-locale-mutation-download.gql
-
3server/app/data.yml
-
10server/core/queue.js
-
17server/graph/resolvers/localization.js
-
4server/graph/schemas/localization.graphql
-
57server/jobs/fetch-graph-locale.js
-
11server/jobs/sync-graph-locales.js
@ -0,0 +1,12 @@ |
|||
mutation($locale: String!) { |
|||
localization { |
|||
downloadLocale(locale: $locale) { |
|||
responseResult { |
|||
succeeded |
|||
errorCode |
|||
slug |
|||
message |
|||
} |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,57 @@ |
|||
require('../core/worker') |
|||
const _ = require('lodash') |
|||
const { createApolloFetch } = require('apollo-fetch') |
|||
|
|||
/* global WIKI */ |
|||
|
|||
WIKI.redis = require('../core/redis').init() |
|||
WIKI.db = require('../core/db').init() |
|||
|
|||
const apollo = createApolloFetch({ |
|||
uri: 'https://graph.requarks.io' |
|||
}) |
|||
|
|||
module.exports = async (job) => { |
|||
WIKI.logger.info(`Fetching locale ${job.data.locale} from Graph endpoint...`) |
|||
|
|||
try { |
|||
const respStrings = await apollo({ |
|||
query: `query ($code: String!) {
|
|||
localization { |
|||
strings(code: $code) { |
|||
key |
|||
value |
|||
} |
|||
} |
|||
}`,
|
|||
variables: { |
|||
code: job.data.locale |
|||
} |
|||
}) |
|||
const strings = _.get(respStrings, 'data.localization.strings', []) |
|||
let lcObj = {} |
|||
_.forEach(strings, row => { |
|||
if (_.includes(row.key, '::')) { return } |
|||
_.set(lcObj, row.key.replace(':', '.'), row.value) |
|||
}) |
|||
|
|||
const locales = await WIKI.redis.get('locales') |
|||
if (locales) { |
|||
const currentLocale = _.find(JSON.parse(locales), ['code', job.data.locale]) || {} |
|||
await WIKI.db.Locale.upsert({ |
|||
code: job.data.locale, |
|||
strings: lcObj, |
|||
isRTL: currentLocale.isRTL, |
|||
name: currentLocale.name, |
|||
nativeName: currentLocale.nativeName |
|||
}) |
|||
} else { |
|||
throw new Error('Failed to fetch cached locales list! Restart server to resolve this issue.') |
|||
} |
|||
|
|||
WIKI.logger.info(`Fetching locale ${job.data.locale} from Graph endpoint: [ COMPLETED ]`) |
|||
} catch (err) { |
|||
WIKI.logger.error(`Fetching locale ${job.data.locale} from Graph endpoint: [ FAILED ]`) |
|||
WIKI.logger.error(err.message) |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save