【问题标题】:Krakenjs routes with i18n URLs带有 i18n URL 的 Krakenjs 路由
【发布时间】:2016-06-05 02:22:30
【问题描述】:

我想在 Kraken.JS 中构建一个包含多语言内容的博客。 我应该如何构建控制器/模型/路由来获取这些 URL:

/en-US/article/hello-world
/de-DE/article/hello-world
/it-IT/article/hello-world

slug (hello-world) 不必国际化。 我不想将控制器复制到以下文件中:

controllers/en-US/article/index.js
controllers/de-DE/article/index.js
controllers/it-IT/article/index.js

有没有更漂亮的方法可以只用一个控制器文件来做到这一点?

【问题讨论】:

    标签: node.js express kraken.js


    【解决方案1】:

    是的,它可以使用单个控制器来完成:

    查看此示例以获取有关如何完成此操作的说明https://github.com/krakenjs/kraken-example-with-i18n#adding-a-hook-to-set-the-locale-on-the-fly

    执行此操作的一种方法可能如下:

    router.get('/:locale/article/:article_name', function (req, res) {
        res.cookie('locale', req.params.locale);
        res.redirect('/article/:article_name');
    });
    

    只有一个控制器: controller/article/index.js

    【讨论】:

    • 抱歉,这不是一个非常糟糕的解决方案吗?每个请求都会导致重定向到没有区域设置的 URL,并且仍然依赖于 cookie。
    • @Nick 这是一个糟糕的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 2015-12-26
    • 2016-11-14
    相关资源
    最近更新 更多