为了账号安全,请及时绑定邮箱和手机立即绑定

根据 req.headers['accept-language'] 导入动态文件夹

根据 req.headers['accept-language'] 导入动态文件夹

慕田峪7331174 2021-11-18 20:23:28
我正在尝试实现一项新功能 - 使用 Nodejs 发送多语言邮件。我有这样的目录结构:mail-templates__index.js__jp____index.js____mail1.js____mail2.js__en____index.js____mail1.js____mail2.js在indexof enand 中jp,我将导入和导出当前文件夹中的所有文件在indexof 中mail-teamplates,我想根据req.headers['accept-language']动态导入文件夹,如下所示:import * as Mail from `./${variable}` // variable are en or jp depending on accept-language我的问题:我怎么能做到这一点?我如何在此处获取接受语言以动态导入文件夹?
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

不建议在 http 回调中这样做。解决您的问题的最佳解决方案是导入所有可用语言,并为每个请求仅使用首选语言。


例子:


在您的mail-templates/index.js:


import * as en from './en';

import * as es from './es';


const defaultLanguage = 'en';

const availableLanguages = { en, es }; 


function getMailByLanguage(language) {

    return availableLanguages[language] || availableLanguages[defaultLanguage];

}


module.exports = getMailByLanguage;

当您想使用它时,只需执行以下操作:


import * as MailTemplates from './mail-templates';


app.get("/", (req, res) => {

    const language = req.headers["language"];

    const Mail  = MailTemplates.getMailByLanguage(language);


    // Do your stuff's here

    ...

});


查看完整回答
反对 回复 2021-11-18
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

您需要在请求处理程序函数中 require 模块。


如果使用快速服务器,您可以尝试这样的操作。


app.get("/", async(req, res) => {

  const language = req.headers["language"] || "en";

  const module  = `./${language}.js`;

  const greet =  require(module);

  res.json(greet());

  }

)

REPL 链接。 https://repl.it/repls/UsedSelfishVisitor


您可以运行以下代码段来检查基于language标题的响应


//Fetching data using laguage: es


fetch("https://UsedSelfishVisitor--five-nine.repl.co", {

  method:"GET",

  headers: {

  language: "es"

}

}).then(res => res.json()).then(data => console.log(data));



//Fetching data using language: en

fetch("https://UsedSelfishVisitor--five-nine.repl.co", {

  method:"GET",

  headers: {

  language: "en"

}

}).then(res => res.json()).then(data => console.log(data));


查看完整回答
反对 回复 2021-11-18
  • 2 回答
  • 0 关注
  • 217 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信