【问题标题】:Node Express i18n maintainable linksNode Express i18n 可维护链接
【发布时间】:2017-10-25 11:23:24
【问题描述】:

考虑到我正在使用“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",
  ...
}

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

【问题讨论】:

    标签: node.js express internationalization locale


    【解决方案1】:

    我现在会说,几乎没有测试,最好的方法是(我不建议使用 i18n)为 urls 创建一个中间件。我已经创建了这样的:

    创建一个 url.json 文件:

    {
      "en": {
          "home": "/",
          "terms": "/terms"
      "es": {
          "home": "/es",
          "terms": "/es/terms"
    }
    

    然后我根据 cookie 中的语言使用我的方法(这是当路由是 terms (我正在使用点模板)locale 是我的 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>
    

    【讨论】:

      猜你喜欢
      • 2018-01-21
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2016-07-11
      • 2012-02-22
      • 2017-01-20
      • 1970-01-01
      相关资源
      最近更新 更多