javascript - 如何在nodejs koa2和ejs中支持多语言

标签 javascript node.js ejs koa2

我尝试写一个网页,它应该支持多国语言,在index.js

const Koa = require('koa');
const views = require('koa-views');
const path = require('path');
app.use(views(path.join(__dirname, './view'), {
    extension: 'ejs'
}));

app.use( async ( ctx ) => {
let title;
//some codes
if(language == "en") { //if the language is English
    title="Title";
}
else if(language == "de") { //if the language is German
    title="Titel";
}
await ctx.render('index', {
    title
});
});
app.listen(3000, ()=>{
  console.log('app runs on port 3000');
});

index.ejs

 <%=title%>

然后我运行这段代码,它会显示很好,现在我想在这个项目中添加一个语言包,比如language.json

{
"en":  {
    "site":  {
        "title":  "Title"
    }
},
"de": {
    "site":  {
        "title":  "Titel"
    }
 }
}

那么index.jsindex.ejs应该怎么改呢?

最佳答案

const Koa = require('koa');
const views = require('koa-views');
const path = require('path');
app.use(views(path.join(__dirname, './view'), {
    extension: 'ejs'
}));



const siteTitleLibrary = {
"en":  {
    "site":  {
        "title":  "Title"
    }
},
"de": {
    "site":  {
        "title":  "Titel"
    }
 }
};
// or 
// const siteTitleLibrary = require('language.json');

app.use( async ( ctx ) => {
await ctx.render('index', {
  site: siteTitleLibrary[language]
});
});
app.listen(3000, ()=>{
  console.log('app runs on port 3000');
});

然后在你的 ejs 中使用 <%=site.title%>

关于javascript - 如何在nodejs koa2和ejs中支持多语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50139568/

相关文章:

javascript - 使用 jquery 或 javascript 从 json 变量数据获取值

javascript - 完整日历在事件标题显示结束时附加 'x'

javascript - 使用 jQuery 包装元素组

javascript - 为什么 Express 模块没有安装在其默认目录中,例如 npm\node_modules?

node.js - Azure 中使用 Node.js 的长时间运行间隔

javascript - 无法从 req.user 获取用户名以 Express 输出

javascript - 连接在收到握手响应之前关闭 WebSocket

jquery - CORS 与 Express.js 和 jQuery.ajax

node.js - 使用 html-pdf 创建 pdf 时出错

javascript - 如何在 express.js 中显示来自 ajax 的解析数据