0.1.2 • Published 9 years ago
internationalization v0.1.2
internationalization
setup
i18n = require('internationalization');
app.use(i18n.middleware({
directory: path.join(__dirname, 'locales'),
fallback: "en",
cookie: "lang" // default is "lang"
}));directory layout
files under then same directory will be merged(file name does not matter)
locales
├── en
│ ├── foo.ini
│ └── bar.ini
└── zh
└── index.iniusage
span= _("Hello {username}", {username: username})
span= _("Hello {1}", username)
input(placeholder=_("Password") type="password")Hello {username} = Guten Tag {username}
Hello {1} = Guten Tag {1}
Password = Passwortnamespace
span= _("profile:Hello {username}", {username: username})[profile]
Hello {username} = Guten Tag {username}client side
app.use(i18n.javascript({
directory: path.join(__dirname, 'locales'),
}));include in html
<script src="/i18n.js"></script>
<script>
console.log(i18n.resource);
console.log(i18n.lang);
</script>more options:
cookiedefaultlangpathdefault/i18n.jsexportAsdefaulti18n
angularjs intergartion
app.use(i18n.angular({
directory: path.join(__dirname, 'locales'),
module: 'i18n',
service: 'i18n',
filter: 'translate'
}));include in html
<script src="/path/to/angularjs.js"></script>
<script src="/i18n.js"></script>using filter
<p>{{'delete warning'| translate:resource.name}}</p>
<button>{{'action:delete' | translate}}</button>using service
app.directive("", function(i18n)->
return {
link: function(){
console.log(i18n.translate("resource key", {name: "foo"}));
}
};generate/update language files(TBD)
directory: 'locales'
views: 'views/**.jade'grunt i18n will scan the view direcotry for _() and __()
$ grunt i18n de