hapi-i18next

2.2.0 • Public • Published

hapi-i18next

i18next integration for hapijs

Installation

This plugin is available as an npm module. Simply run: npm install --save hapi-i18next.

Getting Started

This plugin sets up and registers two methods in your hapi server: server.methods.i18n.getInstance() and server.methods.i18n.translateWithCache. Using hapi server methods allows us to set up caching schemes for the translate method. Examples of how to integrate these server methods into your application:

 
// Registering plugin exposes two server methods that you can use immediately in your handlers
// server.methods.i18n.getInstance
// server.methods.i18n.translateWithCache
server.register({
    register: require('hapi-i18next'),
    options: {
        // Standard options passed into i18next initialization http://i18next.com/node/pages/doc_init.html
        i18nextOptions: {
            resGetPath: path.join(__dirname, 'locales/__lng__/__ns__.json'),
            ns: 'translations',
            detectLngFromQueryString: 'lang',
            detectLngFromPath: 0,
            cookieName: 'test',
            supportedLngs: ['en', 'de']
        }
    },
    cookieOptions: {
      // http://hapijs.com/tutorials/cookies
    }
}, function (err) {});
 
// Using it in views requires a few additional steps
server.views({
    // pass our server methods to global view context, so that we may use it in helpers
    context: {
        i18n: {
            // This step is left up to the developer, but the most declarative way to use this plugin is to add it's methods
            // to the global context of your views. That way you can declare a template helper such as the {{t 'hello-world'}}
            // in this folder to use as common interface for i18n messages.
            translateWithCache: server.methods.i18n.translateWithCache,
            getInstance: server.methods.i18n.getInstance
        }
    }
});

In your helper, t.js:

function i18nHelper(key, options) {
    var translateWithCache = this.i18n.translateWithCache,
        params = {},
        namespace = '',
        instance = this.i18n.getInstance();
 
    Object.keys(options.hash).forEach(function (key) {
        if (key === 'ns') {
            namespace = options.hash[key] + ':';
        }
        else if (options.hasOwnProperty(key)) {
            params[key] = String(options.hash[key]);
        }
    });
    return translateWithCache(namespace + key, instance.lng(), params);
}
module.exports = i18nHelper;

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 2.2.0
    0
    • latest

Version History

Package Sidebar

Install

npm i hapi-i18next

Weekly Downloads

0

Version

2.2.0

License

MIT

Last publish

Collaborators

  • kenkouot
  • lizlux
  • brtkowal