Как поддерживать многоязычность в nodejs koa2 и ejs - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь написать веб-страницу, и она должна поддерживать многоязычность, в 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?

1 Ответ

0 голосов
/ 02 мая 2018
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%>

...