如何在nodejs koa2和ejs中支持多语言
How to support multi-language in nodejs koa2 and ejs
我试着写一个网页,应该支持多国语言,在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.js
和index.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%>
我试着写一个网页,应该支持多国语言,在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.js
和index.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%>