【问题标题】:Response API in different languages JSON不同语言的响应API JSON
【发布时间】:2020-10-08 17:35:05
【问题描述】:

我在尝试从我的 API 中以所选语言从标题中做出响应时遇到问题:

接受语言:es-MX 或接受语言:en-US

function getLanguage (req, res, next) {
  let lang = req.acceptsLanguages('en-US', 'es-ES');
  console.log(lang)
  next()
}

app.use(getLanguage)

嗯,我得到了正确的语言,但我不知道如何发送仅包含所选语言的数据的 json。回复给我两种颜色。

我的 JSON 示例:

"teams": [
  {
    "id": 0,
     "color": {
        "en": "Blue",
        "es": "Azul"
      }
    },
    {
     "id": 1,
     "color": {
        "en": "Red",
        "es": "Rojo"
    }
  }
]

【问题讨论】:

    标签: javascript node.js json express


    【解决方案1】:

    也许这个解决方案对你有帮助。

    let lang = "en"
    
    let teams= [
      {
        "id": 0,
         "color": {
            "en": "Blue",
            "es": "Azul"
          }
        },
        {
         "id": 1,
         "color": {
            "en": "Red",
            "es": "Rojo"
        }
      }
    ]
    
    teams = teams.map(item => {
      item.color = item.color[lang]
      return item
    })
    
    console.log(teams)

    【讨论】:

      【解决方案2】:

      我更喜欢使用类似本地化模块的东西

      var Localize = require('localize');
      
      var myLocalize = new Localize({"color": {
              "en": "Blue",
              "es": "Azul",
              "de" : "Blau"
            }
           });
      
      myLocalize.setLocale("es")
      console.log(myLocalize.translate("color")); // prints Azul 
      myLocalize.setLocale("de")
      console.log(myLocalize.translate("color")); // prints Blau 
      

      更多详情请阅读 https://github.com/AGROSICA/node-localize

      【讨论】:

        【解决方案3】:

        为所选语言创建函数,例如:

        const teamsOnString = `[
          {
            "id": 0,
             "color": {
                "en": "Blue",
                "es": "Azul"
              }
            },
            {
             "id": 1,
             "color": {
                "en": "Red",
                "es": "Rojo"
            }
          }
        ]`
        
        const teamsOnJson = JSON.parse(teamsOnString)
        
        function selectLanguage(lang) {
          let filteredLang = teamsOnJson.map((items) => {
            items.color = items.color[lang]
            return items
          })
          return filteredLang
        }
        
        let enLanguage = selectLanguage('en')
        console.log(enLanguage)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-02
          • 2012-06-28
          • 2021-07-05
          • 1970-01-01
          相关资源
          最近更新 更多