# nuxt项目

// 执行 BUILD_ENV=global-base yarn dev
// nuxt.config.js
hooks: {
    "render:route" (_, res) {
        console.log(res.html)
        res.html = res.html.replace(/{#(.*?)#}/g, replaceFn);
        console.log(res.html)
    }
}
// replace.js
const { maps } = require('../langmap');
const customLang = (process.env.LANG || '').match(/^\w{2}-\w{2}$/) ? process.env.LANG : 'zh-cn';

module.exports = (_, $1) => {
    let _str;
    switch ($1) {
        case 'ENV':
            _str = 'dev';
            break;
        case 'LANG':
            _str = customLang;
            break;
        default:
            _str = maps[customLang][$1] || $1;
    }
    return _str;
};

// langmap
const jet = require('fs-jetpack');
const path = require('path');
const os = require('os');
const dirVars = {
    lang: path.resolve(__dirname, 'lang'),
    langVar: path.resolve(__dirname, 'lang/variable.json'),
};
const allJSON = jet.find(dirVars.lang, { matching: ['*.json', '!variable.json'] });
const langListObj = jet.read(dirVars.langVar, 'json');
const maps = langListObj;
const langdoc = {};
allJSON.forEach(filePath => {
    const json = jet.read(filePath, 'json');
    const [_, name] = os.platform() === 'win32' ? filePath.split('\\') : filePath.split('/');
    const lang = name.substr(0, 5);
    if (path.basename(filePath).split('-').pop() === 'Tdoc.json') {
        langdoc[lang] = json[lang];
    }
    if (maps[lang]) { // 翻译存在再进行合并
        maps[lang] = Object.assign(maps[lang], json[lang]);
    }
});
Reflect.ownKeys(maps).forEach(lang => {
    Object.assign(maps[lang] || {}, langdoc[lang] || {});
});
module.exports = {
    langs: Object.keys(langListObj),
    maps,
};

# 资料

react多语言