From 90e9a1aeaa2dfd4a6dbd2a2c54766c788f8d8527 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Thu, 6 Feb 2014 17:17:21 +0100 Subject: [PATCH] i18n(refactor): load all files in a locale, not the ones defined in app.json, move env.t client code to own file, add env.isStaticPage (from isFrontPage) --- public/js/app.js | 18 ------------------ public/js/directives/directives.js | 4 ++-- public/js/env.js | 20 ++++++++++++++++++++ public/manifest.json | 3 +++ src/middleware.js | 11 ++++++++--- src/routes/pages.js | 4 +--- views/shared/footer.jade | 2 +- 7 files changed, 35 insertions(+), 27 deletions(-) create mode 100644 public/js/env.js diff --git a/public/js/app.js b/public/js/app.js index 01e307245c..c642aea407 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1,23 +1,5 @@ "use strict"; -window.env = window.env || {}; //FIX tests - -if(window.env.language && window.env.language.momentLang && window.env.language.momentLangCode){ - var head = document.getElementsByTagName('head')[0]; - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.text = window.env.language.momentLang; - head.appendChild(script); - moment.lang(window.env.language.momentLangCode); -} - -window.env.t = function(stringName, vars){ - var string = window.env.translations[stringName]; - if(!string) return window._.template(window.env.translations.stringNotFound, {string: stringName}); - - return vars === undefined ? string : window._.template(string, vars); -} - window.habitrpg = angular.module('habitrpg', ['ngResource', 'ngSanitize', 'userServices', 'groupServices', 'memberServices', 'challengeServices', 'authServices', 'notificationServices', 'guideServices', 'authCtrl', diff --git a/public/js/directives/directives.js b/public/js/directives/directives.js index 879c3c603d..7a8e9d71fd 100644 --- a/public/js/directives/directives.js +++ b/public/js/directives/directives.js @@ -9,7 +9,7 @@ habitrpg.directive('taskFocus', return function(scope, elem, attrs) { scope.$watch(attrs.taskFocus, function(newval) { if ( newval ) { - $timeounvt(function() { + $timeout(function() { elem[0].focus(); }, 0, false); } @@ -26,7 +26,7 @@ habitrpg.directive('habitrpgAdsense', function() { template: '
', link: function ($scope, element, attrs) {} } -}) +}); habitrpg.directive('whenScrolled', function() { return function(scope, elm, attr) { diff --git a/public/js/env.js b/public/js/env.js new file mode 100644 index 0000000000..8a6611cd90 --- /dev/null +++ b/public/js/env.js @@ -0,0 +1,20 @@ +"use strict"; + +window.env = window.env || {}; //FIX tests + +// If Moment.js is loaded, +if(window.moment && window.env.language && window.env.language.momentLang && window.env.language.momentLangCode){ + var head = document.getElementsByTagName('head')[0]; + var script = document.createElement('script'); + script.type = 'text/javascript'; + script.text = window.env.language.momentLang; + head.appendChild(script); + window.moment.lang(window.env.language.momentLangCode); +} + +window.env.t = function(stringName, vars){ + var string = window.env.translations[stringName]; + if(!string) return window._.template(window.env.translations.stringNotFound, {string: stringName}); + + return vars === undefined ? string : window._.template(string, vars); +} \ No newline at end of file diff --git a/public/manifest.json b/public/manifest.json index 416553e18e..61bed2cdae 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -33,6 +33,8 @@ "bower_components/habitrpg-shared/dist/habitrpg-shared.js", + "js/env.js", + "js/app.js", "js/services/sharedServices.js", "js/services/authServices.js", @@ -81,6 +83,7 @@ "bower_components/angular-bootstrap/ui-bootstrap-tpls.js", "bower_components/angular-loading-bar/build/loading-bar.js", + "js/env.js", "js/static.js", "js/services/notificationServices.js", "bower_components/habitrpg-shared/script/userServices.js", diff --git a/src/middleware.js b/src/middleware.js index 4450133f01..edda3917a5 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -113,12 +113,12 @@ var getManifestFiles = function(page){ var translations = {}; var loadTranslations = function(locale){ - var files = require(path.join(__dirname, "/../node_modules/habitrpg-shared/locales/", locale, 'app.json')).files; + var files = fs.readdirSync(path.join(__dirname, "/../node_modules/habitrpg-shared/locales/", locale)); translations[locale] = {}; _.each(files, function(file){ _.merge(translations[locale], require(path.join(__dirname, "/../node_modules/habitrpg-shared/locales/", locale, file))); }); -} +}; // First fetch english so we can merge with missing strings in other languages loadTranslations('en'); @@ -193,7 +193,11 @@ module.exports.locals = function(req, res, next) { getUserLanguage(req, function(err, language){ if(err) return res.json(500, {err: err}); - language.momentLang = (momentLangs[language.code] || undefined); + var isStaticPage = req.url.split('/')[1] === 'static'; // If url contains '/static/' + console.log(isStaticPage) + + // Load moment.js language file only when not on static pages + language.momentLang = ((!isStaticPage && momentLangs[language.code])|| undefined); res.locals.habitrpg = { NODE_ENV: nconf.get('NODE_ENV'), @@ -205,6 +209,7 @@ module.exports.locals = function(req, res, next) { getBuildUrl: getBuildUrl, avalaibleLanguages: avalaibleLanguages, language: language, + isStaticPage: isStaticPage, translations: translations[language.code], t: function(stringName, vars){ var string = translations[language.code][stringName]; diff --git a/src/routes/pages.js b/src/routes/pages.js index a5ef570e2c..1c8dae8dc0 100644 --- a/src/routes/pages.js +++ b/src/routes/pages.js @@ -18,9 +18,7 @@ router.get('/', middleware.locals, function(req, res) { // -------- Marketing -------- router.get('/static/front', middleware.locals, function(req, res) { - var env = res.locals.habitrpg; - env.isFrontPage = true; - res.render('static/front', {env: env}); + res.render('static/front', {env: res.locals.habitrpg}); }); router.get('/static/privacy', middleware.locals, function(req, res) { diff --git a/views/shared/footer.jade b/views/shared/footer.jade index d85a8ce8f7..099fc27065 100644 --- a/views/shared/footer.jade +++ b/views/shared/footer.jade @@ -11,7 +11,7 @@ footer.footer(ng-controller='FooterCtrl') .span3 h4=env.t('footerCompany') ul.unstyled - if (!env.isFrontPage) + if (!env.isStaticPage) li .btn.btn-small.btn-success(ng-click='modals.buyGems = true') i.icon-heart.icon-white