10. Installation and Configuration
5. For view
app.locals({
__i: i18n.__ // so we can use i18n method in view
});
6. Resource file
i18n module will create a locales folder within the directory
where you execute your node server
11. app.use(i18n.init)? Language detection
Loot at http request headers
request['headers']['accept-language']
zh-TW,zh;q=0.8,en-US;q=0.6,en;q=0.4
would mean: "I prefer Chinese-Taiwan, but will accept United States English
and other types of English."
(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html)
guessLanguage(request)
12. Easy to code
Code in node.js
console.log(i18n.__('HelloWorld'));
console.log(i18n.__('HelloGroup', 'Node.js', 30));
Code in view (using Jade)
div #{__i('HelloWorld')}
div #{__i('HelloGroup', 'node.js', 30)}
13. Hi, Taiwan
We need zh-TW rather than zh(Chinese)
in i18n.js, add the region detection
request.language_region = request.language ;
if (request.region){
request.language_region = request.language_region +'-'+ request.region;
}
i18n.setLocale(request, request.language_region);
14. Hi, Mr. Trouble
Can’t switch language? Because defaultLocale is
changed, but we can fix it
if (locales[target_locale]) {
request.locale = target_locale;
defaultLocale = target_locale;
}
else {
defaultLocale = 'en';
request.locale = defaultLocale;
}