diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2017-10-25 20:29:14 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2017-10-25 20:29:14 +0900 |
| commit | 4cac6316f77e4c31d8caa1e7bb74ea9a063e02c7 (patch) | |
| tree | 0a2cafb0343923e075a52ad9471afdd97ad8e881 | |
| parent | メジャーバージョンを明記 (diff) | |
| download | sharkey-4cac6316f77e4c31d8caa1e7bb74ea9a063e02c7.tar.gz sharkey-4cac6316f77e4c31d8caa1e7bb74ea9a063e02c7.tar.bz2 sharkey-4cac6316f77e4c31d8caa1e7bb74ea9a063e02c7.zip | |
[Client] Fix bug
| -rw-r--r-- | webpack/module/rules/i18n.ts | 70 |
1 files changed, 41 insertions, 29 deletions
diff --git a/webpack/module/rules/i18n.ts b/webpack/module/rules/i18n.ts index 3023253cab..9a4acde686 100644 --- a/webpack/module/rules/i18n.ts +++ b/webpack/module/rules/i18n.ts @@ -4,34 +4,46 @@ const StringReplacePlugin = require('string-replace-webpack-plugin'); -export default (lang, locale) => ({ - enforce: 'pre', - test: /\.(tag|js)$/, - exclude: /node_modules/, - loader: StringReplacePlugin.replace({ - replacements: [ - { +export default (lang, locale) => { + function get(key: string) { + let text = locale; + + // Check the key existance + const error = key.split('.').some(k => { + if (text.hasOwnProperty(k)) { + text = text[k]; + return false; + } else { + return true; + } + }); + + if (error) { + console.warn(`key '${key}' not found in '${lang}'`); + return key; // Fallback + } else { + return text; + } + } + + return { + enforce: 'pre', + test: /\.(tag|js)$/, + exclude: /node_modules/, + loader: StringReplacePlugin.replace({ + replacements: [{ + pattern: /"%i18n:(.+?)%"/g, replacement: (_, key) => { + return '"' + get(key).replace(/"/g, '\\"') + '"'; + } + }, { + pattern: /'%i18n:(.+?)%'/g, replacement: (_, key) => { + return '\'' + get(key).replace(/'/g, '\\\'') + '\''; + } + }, { pattern: /%i18n:(.+?)%/g, replacement: (_, key) => { - let text = locale; - - // Check the key existance - const error = key.split('.').some(k => { - if (text.hasOwnProperty(k)) { - text = text[k]; - return false; - } else { - return true; - } - }); - - if (error) { - console.warn(`key '${key}' not found in '${lang}'`); - return key; // Fallback - } else { - return text.replace(/'/g, '\\\'').replace(/"/g, '\\"'); - } + return get(key); } - } - ] - }) -}); + }] + }) + }; +}; |