From ef018fa87f29b7c59dbc70c21fe5a83ae1577fda Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 15 Apr 2018 06:16:50 +0900 Subject: [PATCH] :v: --- src/build/i18n.ts | 2 ++ src/client/app/boot.js | 8 +++----- webpack.config.ts | 8 +++++--- webpack/loaders/replace.js | 3 ++- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/build/i18n.ts b/src/build/i18n.ts index 35204c34a..279019119 100644 --- a/src/build/i18n.ts +++ b/src/build/i18n.ts @@ -63,6 +63,8 @@ export default class Replacer { key = key.substr(1); } + if (ctx && ctx.lang) this.lang = ctx.lang; + if (match[0] == '"') { return '"' + this.get(name, key).replace(/"/g, '\\"') + '"'; } else if (match[0] == "'") { diff --git a/src/client/app/boot.js b/src/client/app/boot.js index 2675fa233..12b0d220a 100644 --- a/src/client/app/boot.js +++ b/src/client/app/boot.js @@ -31,11 +31,9 @@ // Detect the user language // Note: The default language is Japanese - //let lang = navigator.language.split('-')[0]; - //if (!/^(en|ja)$/.test(lang)) lang = 'ja'; - //if (localStorage.getItem('lang')) lang = localStorage.getItem('lang'); - //if (ENV != 'production') lang = 'ja'; - const lang = 'ja'; + let lang = navigator.language.split('-')[0]; + if (!/^(en|ja)$/.test(lang)) lang = 'ja'; + if (localStorage.getItem('lang')) lang = localStorage.getItem('lang'); // Detect the user agent const ua = navigator.userAgent.toLowerCase(); diff --git a/webpack.config.ts b/webpack.config.ts index b0b06c739..bc876e067 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -42,7 +42,7 @@ const langs = Object.keys(locales); const entries = process.env.NODE_ENV == 'production' ? langs.map(l => [l, false]).concat(langs.map(l => [l, true])) - : [['ja', false]]; + : langs.map(l => [l, false]); module.exports = entries.map(x => { const [lang, isProduction] = x; @@ -144,7 +144,8 @@ module.exports = entries.map(x => { query: { search: i18nReplacer.pattern.toString(), replace: 'i18nReplacement', - i18n: true + i18n: true, + lang } }, { loader: 'replace', @@ -216,7 +217,8 @@ module.exports = entries.map(x => { query: { search: i18nReplacer.pattern.toString(), replace: 'i18nReplacement', - i18n: true + i18n: true, + lang } }, { loader: 'replace', diff --git a/webpack/loaders/replace.js b/webpack/loaders/replace.js index 9897fe37d..0326dcdab 100644 --- a/webpack/loaders/replace.js +++ b/webpack/loaders/replace.js @@ -11,7 +11,8 @@ module.exports = function(src) { const g = search[search.length - 1] == 'g'; const file = this.resourcePath.replace(/\\/g, '/'); const replace = options.i18n ? global[options.replace].bind(null, { - src: file + src: file, + lang: options.lang }) : global[options.replace]; if (typeof search != 'string' || search.length == 0) console.error('invalid search'); if (typeof replace != 'function') console.error('invalid replacer:', replace, this.request);