node-yaml-localize

node-yaml-localize ========= A simple nodejs module to localize your applications with yaml files (rails-like)

node-yaml-localize

A simple nodejs module to localize your applications with yaml files (rails-like)

npm install node-yaml-localize

You can use the provided middleware to install node-yaml-localize in your application

var localize = require('node-yaml-localize');
 
...
 
app.use(localize.middleware({
    path: __dirname + "/config/locales",
    locale: function() {
        // Check if we are using sessions
        if (typeof req.session !== '') {
            return req.session.locale || 'en';
        } else {
            return req.param('locale') || 'en';
        }
    }
});

where path is the root of the directory structure containing your yaml files (defaults to <__dirname>/config/locales) and locale is a string or a function returning a string identifying a locale to use on each request (edit the implementation for your needs, this is just an example).

If you want to use the library as an helper in your view, you can simply do this in your app.js

app.locals.t = localize.translate;

Example of using the helper in a Jade view

div.greetings
    p= t("home.greetings.welcome")

Having somewhere in your path a YML file containing

en:
  home:
    greetings:
      welcome:  "Welcome to nodejs"

will output

Welcome to nodejs

First entry in the YML file denotes the locale its children are for (in the example, english). Just add more files with different roots and same structure for more localizations.

Example of using the helper in a Jade view with placeholders

div.greetings
    p= t("home.greetings.welcome", {name : "John Doe"})

Having somewhere in your path a YML file containing

en:
  home:
    greetings:
      welcome:  "Welcome to nodejs %{name}"

will output the localized string with the replaced placeholder

Welcome to nodejs John Doe

node-yaml-localize assumes well formed utf-8 YAML files. Do not mess up.

Released under BSD license.