Multilanguage express app

I would suggest to keep only one template, as if you use one template per language it will get out of hand very quickly, let alone duplicate much content (and the small amount of "logic" you would put in a template too). Many applications use a tool called gettext to do the internationalization thing. There is a node.js library for it at https://github.com/DanielBaulig/node-gettext

Alternatively there is also i18n-node. It appears to have a bit more integration with express js.


The i18n-node is the simplest and greatest module that you should use. You can use directly in Javascript code or with Jade/Handlebar templates with express js.

Why should you use i18n?

  • Auto detection of locale from the browser by header, cookie or query parameter depending on your setup.
  • It comes with examples as well.
  • It automatically generates a en.json by default inside ./locales/. This acts as a master file for you to start building new translations.
  • Supports Singular and plural forms
  • Support for parameters: __('Hello %s', 'Marcus') returns Hallo Marcus