简体   繁体   English

快递,使用不同进口的相同路线?

[英]Express, using same routes with different imports?

I'm trying to make the a multi-language website.我正在尝试制作一个多语言网站。 I've decided to go with data objects, to fill in all the text necessary.我决定使用数据对象来填充所有必要的文本。 The routes I'm using for the 2 languages are exactly the same with only a difference in the import.我用于 2 种语言的路由完全相同,只是导入有所不同。 Is there any way to make this happen without code duplication?有没有办法在没有代码重复的情况下实现这一点?

The templating engine is Express Handlebars, so if there is another solution for making a website multi-language, I'm open to implementing it :) Thanks in advance for taking the time to read this.模板引擎是 Express Handlebars,所以如果有另一种使网站多语言的解决方案,我愿意实施它:) 在此先感谢您抽出时间阅读本文。

The code in my routes for Sl language:我的 Sl 语言路线中的代码:

const express = require("express"),
    router = express.Router(),
    data = require("../Views/res/lang/sl");

router.get("/", (req, res) => {
    data.Home = setupDataObject(data.Home, req.originalUrl, "Home");
    res.render("homepage", data.Home);
});

router.get("/About", (req, res) => {
    data.About = setupDataObject(data.About, req.originalUrl, "About");
    res.render("About", data.About);
});

function setupDataObject(data, url, active) {
    data.current = url.substring(4);
    data.active = { [active]: true };
    return data;
}
module.exports = router;

And the English version还有英文版

const express = require("express"),
    router = express.Router(),
    data = require("../Views/res/lang/en");

router.get("/", (req, res) => {
    data.Home = setupDataObject(data.Home, req.originalUrl, "Home");
    res.render("homepage", data.Home);
});

router.get("/About", (req, res) => {
    data.About = setupDataObject(data.About, req.originalUrl, "About");
    res.render("About", data.About);
});

function setupDataObject(data, url, active) {
    data.current = url.substring(4);
    data.active = { [active]: true };
    return data;
}
module.exports = router;

You can handle the locale in using with the url params, no ?您可以使用 url 参数处理语言环境,不是吗?

const express = require("express"),
    router = express.Router();


router.get("/:locale/", (req, res) => {
    const data = require("../Views/res/lang/" + locale);
    data.Home = setupDataObject(data.Home, req.originalUrl, "Home");
    res.render("homepage", data.Home);
});

router.get("/:locale/About", (req, res) => {
    const data = require("../Views/res/lang/" + locale);
    data.About = setupDataObject(data.About, req.originalUrl, "About");
    res.render("About", data.About);
});

function setupDataObject(data, url, active) {    
    data.current = url.substring(4);
    data.active = { [active]: true };
    return data;
}

module.exports = router;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM