Node Express i18n 可维护链接



考虑到我正在使用"express","i18n","express-session","cookie-parse",如果需要,可以使用"npm locale"或类似内容。假设我有这样的路线:

"/", "/es/" , "/de/"
"/terms", "/es/terms", "/de/terms"
"/privacy", "/es/privacy", "/de/privacy"
...

我应该如何以这种方式设置可维护和自动的链接,如果用户在他的 cookie 或标头上有类似"es"的语言......向他们显示页面上"es"版本页面的链接,并考虑使用 URL 设置一个变量,以防万一我必须更新链接,我只会更改一次。

我想到的一件事是:

设置在 i18n 文件中,如"es.json"

{ 
  "url_home" : "/es/" ,
  "url_terms" : "/es/terms",
  ...
}

那么其他文件将像"de.json"一样

{ 
  "url_home" : "/de/" ,
  "url_terms" : "/de/terms",
  ...
}

我这是正确的方式 ? 还是我应该遵循任何其他推荐的方式?

我现在要说的是,通过很少的测试,最好的方法是(我不建议使用 i18n)为 url 创建一个中间件。我像这样创建这个:

使用以下命令创建 url.json 文件:

{
  "en": {
      "home": "/",
      "terms": "/terms"
  "es": {
      "home": "/es",
      "terms": "/es/terms"
}
然后我根据 cookie

中的语言在我的方法上使用(这是当路由是术语(我使用的是点模板)语言环境是我的 cookie,所以在这种情况下:

  const urls = require('urls.json');
  ...
  app.get('/:lang/terms', function(req, res) {
    if (req.params.lang === 'es') {
      res.render('terms',{
        // get urls for locale cookie language 
        urls: urls[req.locale],
      });
    } 
  ...
   //more languages
});

然后在我的模板中简单地:

 <li><a href="{%= it.urls.terms%}">{%=it.__n('help')%}</a></li>

最新更新