如何在节点中创建语言选择器

时间:2013-12-21 21:12:16

标签: node.js internationalization pug

我对node.js比较新,我正在使用node,express和mongoose。 我已经实现了i18n模块并进行了配置 现在我需要使用带有标志图标的受支持语言下拉,然后单击想要调用setLocale()但不知道如何执行此操作 欢迎所有的想法。

同样在所有的jade模板中,__('hello')翻译被选中,例如

.dropdown
    button.btn.dropdown-toggle(type='button', id='dropdown1',data-toggle='dropdown')
        img(src='/img/navbar-list.png', alt='Cloud iBeacon')
    ul.dropdown-menu(role='menu',aria-labelledby="dropdownMenu1")
        li(role='presentation')
            a(role='menuitem',href="/") __('home')

不起作用

1 个答案:

答案 0 :(得分:3)

这取决于您如何配置i18n,如果您使用名为“locale”的cookie来存储区域设置:

// minimal config
i18n.configure({
  locales: ['en', 'fr'],
  cookie: 'locale',
  directory: __dirname + '/locales'
});

// express.cookieParser然后i18n.init

  app.use(express.cookieParser());
  app.use(i18n.init);

然后您可以通过cookie设置区域设置,将此路线设置为您的应用程序:

// set a cookie to requested locale
app.get('setlocale/:locale', function (req, res) {
  res.cookie('locale', req.params.locale);
  res.redirect('back');
});

然后创建包含2个项目en,fr的菜单。 (作为你的例子,bootstrap?)

.dropdown
    button.btn.dropdown-toggle(type="button" data-toggle="dropdown") Dropdown
    ul.dropdown-menu
        li: a(href="/setlocale/en") en
        li: a(href="/setlocale/fr") fr

这里的例子:

https://github.com/mashpie/i18n-node/blob/master/examples/express-jade/express-jade.js