如何在Node.js中路由多语言URL

时间:2019-08-01 04:22:17

标签: javascript node.js express routing middleware

我想知道如何在nodejs中进行路由以获得多语言网址,

我目前有以下路线,每种语言在该语言下的生成路线如下所示, 由于有5种以上的语言,因此如何高效地进行操作。

app.js

app.use('/:lang/detail/:service', serviceRouter);
app.use('/:lang/xhixhi/:service', serviceRouter);
app.use('/:lang/servise/:service', serviceRouter);

app.use('/:lang/about', aboutRouter);
app.use('/:lang/guan-yu-wo-men', aboutRouter);
app.use('/:lang/tentang-kami', serviceRouter);

app.use('/:lang/contact', contactRouter);
app.use('/:lang/lian-xi-wo-men', contactRouter);
app.use('/:lang/kontak', contactRouter);

1 个答案:

答案 0 :(得分:0)

您可以尽可能多地使用表驱动而不是重复代码。

const routeInfo = [
   {url: "/:lang/{tag}/:service", words: ["detail", "xhixhi", "servise"], router: serviceRouter}, 
   {url: "/:lang/{tag}", words: ["about", "guan-yu-wo-men", "tentang-kami"], router: aboutRouter}, 
   {url: "/:lang/{tag}", words: ["contact", "lian-xi-wo-men", "kontak"], router: contactRouter}, 
];

然后,遍历表以构建所有路由:

for (let info of routeInfo) {
    for (let word of info.words) {
       let url = info.url.replace("{tag}", word);
       app.use(url, info.router);
    }
}

添加语言只会涉及向每个单词数组添加另一个条目。