如何在Pug模板文件中使用i18n变量?

时间:2017-02-03 09:26:38

标签: node.js internationalization pug

我是Node.js的新手,我正在尝试学习如何在我的Pug模板中使用i18n而无法在任何地方找到答案。

文档说

  模板中的

(取决于您的模板引擎)

<%= __('Hello') %>

${__('Hello')}

到目前为止,我尝试过(在我的哈巴狗模板中)

${__('Hello')}

__('Hello')

这些语法都不起作用,使用的是什么?

我知道配置得当,因为使用时

i18n.__('Hello')

并将其发送到我的模板中,它正在变量中运行。

4 个答案:

答案 0 :(得分:3)

答案在文档中是正确的,只需要将其添加到我的配置中。

app.use(function(req, res, next) {
    // express helper for natively supported engines
    res.locals.__ = res.__ = function() {
        return i18n.__.apply(req, arguments);
    };

    next();
});

答案 1 :(得分:0)

除了Sam的回答之外,请记住你应该使用#{__('Hello')}模板语法来使用这个i18n助手。

答案 2 :(得分:0)

不确定这是否有用。就像分享一样。我遇到了同样的问题,我可以使用req.i18n .__()查看翻译后的文本,但无法在使用i18n-2的哈巴狗中看到。我是如何解决的: 1.确保i18n配置在app.use(cookieParser());

之后
// add i18n config after app used the cookieParser
var i18n = require('i18n-2');

// Attach the i18n property to the express request object
// And attach helper methods for use in templates
i18n.expressBind(app, {
    // setup some locales - other locales default to en silently
    locales: ['en', 'zh'],
    defaultLocale: 'en',
    // change the cookie name from 'lang' to 'locale'
    cookieName: 'locale'
});

app.use(function(req, res, next) {
  req.i18n.setLocaleFromQuery();
  req.i18n.setLocaleFromCookie();
  next();
});
  1. 确保在上述i18n配置之后放置以下模板设置。

    app.set(&#39; views&#39;,path.join(__ dirname,&#39; views&#39;)); app.set(&#39;查看引擎&#39;,&#39; pug&#39;);

  2. 在哈巴狗中,使用如下语法:#{__(&#39;登录&#39;)}

答案 3 :(得分:0)

您只需要npm我新的一个,并如下注册全局。然后,您可以使用__('Hello')

const i18n = require("i18n");

app.use(i18n.init);
i18n.configure({
    locales: ['en', 'de', 'vi'],
    directory: './locales',
    register: global
});
i18n.setLocale('vi');

祝你好运!