我是Node.js的新手,我正在尝试学习如何在我的Pug模板中使用i18n而无法在任何地方找到答案。
文档说
模板中的(取决于您的模板引擎)
<%= __('Hello') %>
${__('Hello')}
到目前为止,我尝试过(在我的哈巴狗模板中)
${__('Hello')}
__('Hello')
这些语法都不起作用,使用的是什么?
我知道配置得当,因为使用时
i18n.__('Hello')
并将其发送到我的模板中,它正在变量中运行。
答案 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();
});
确保在上述i18n配置之后放置以下模板设置。
app.set(&#39; views&#39;,path.join(__ dirname,&#39; views&#39;)); app.set(&#39;查看引擎&#39;,&#39; pug&#39;);
在哈巴狗中,使用如下语法:#{__(&#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');
祝你好运!