i18n-узел не работает при смене языка - PullRequest
0 голосов
/ 04 июня 2019

Хотелось бы узнать, как реализовать i18n-узел (https://github.com/mashpie/i18n-node) для разных языков

У меня выпадающий список с несколькими языками, когда я выбираю язык, отличный от языка по умолчанию, текст не меняется, меняются только URL-адреса.

Язык по умолчанию английский EN работает, когда я выбираю китайский ZH, URL меняется, но setLocale не работает, проверьте код ниже

app.js
var express = require('express');
var languageRouter = require('./routes/language');
var i18n = require("i18n");

var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'node_modules')));

i18n.configure({
locales:['en', 'zh'],
directory: __dirname + '/locales',
defaultLocale: 'en',
cookie: 'i18n'
});
app.use(i18n.init);

app.use('/:lang', languageRouter);


// language.js

var express = require('express');
var router = express.Router();
var util = require('../util.js');
var i18n = require("i18n");
var getcountries = null;

router.get('/', function (req, res) {
   i18n.setLocale(req, locale); 
   if(getCountries===null){
       getCountries={"sg": "Singapore", "th":"Thailand"};
       res.render("index.ejs", {i18n: res,countries:getCountries})
    }
   else{
      res.render("index.ejs", {i18n: res,countries:getCountries})
   }
}

//index.ejs 
        <ul>
          <li class="nav-item dropdown" style="list-style-type: none;">
            <a class="dropdown-item" href="/en">EN</a></li>
            <li class="nav-item dropdown" style="list-style-type: none;">
            <a class="dropdown-item" href="/zh">ZH</a>
         </ul>
<p><%=i18n.__("Welcome")%></p>


// en.json
{
    "Welcome": "Hi, welcome to our site",
    "Language": "Please choose your language",
    "Contact Information" : "1 Elf rd, Unicorn Village, Wonderland, Earth"
}
//zh.json
{
    "Welcome": "欢迎",
    "Language": "请选择语言",
    "Contact Information" : "一号 精灵路, 独角兽村, 幸福国, 地球"
}
...