在PUG模板中使用i18n变量

时间:2018-07-09 21:40:53

标签: node.js express internationalization

我对StackOverflow进行了大量搜索,但找不到解决问题的方法。

我有3个文件:app.jsroutes.jshome.pug

app.js

const express = require("express");
const http = require("http");
const i18n = require("i18n");
const routes= require("./routes.js");
const app = express();
//PUG
app.set("view engine", "pug");
app.set("views", "./");
//i18n
i18n.configure({
    locales:["it", "en"],
    directory: __dir + "./locals"
});
app.use(i18n.init);
app.use(function(req, res, next) {
    // express helper for natively supported engines
    res.locals.__ = res.__ = function() {
        return i18n.__.apply(req, arguments);
    };
    next();
});

//Route
app.use("/", routes);

//Server
const serverHTTP = http.createServer(app);
serverHTTP.listen(8080, () => {
  console.log("Server HTTP avviato");
});

routes.js

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

//Root
router.get("/", function(req, res){
    res.render("home");
});

//Default
router.get("*", function(req, res){
    res.send("URL non valido");
});

// Export
module.exports = router;

home.pug

html
    body
        p __('test')

../ locals / it.json的内容

{
    "test":"ciao"
}

但是当我打开浏览器时,它的字面意思是__('test')

1 个答案:

答案 0 :(得分:0)

您需要编辑home.pug文件。在home.pug中使用以下代码

html
    body
        p= __('test')

您可以在i18n-x(https://www.npmjs.com/package/i18n-x)的文档中找到与i18n软件包相似的文档。

以下是屏幕截图,说明了如何在帕格文件(https://prnt.sc/m8fziy)中访问语言json。

如果遇到任何问题,请在下面评论。