diff --git a/public/js/controllers/authCtrl.js b/public/js/controllers/authCtrl.js index 6a4c1d2cd0..7bd7618890 100644 --- a/public/js/controllers/authCtrl.js +++ b/public/js/controllers/authCtrl.js @@ -47,7 +47,9 @@ angular.module('authCtrl', []) if ($scope.registrationForm.$invalid) { return; } - $http.post(API_URL + "/api/v2/register", $scope.registerVals).success(function(data, status, headers, config) { + var url = API_URL + "/api/v2/register"; + if($rootScope.selectedLanguage) url = url + '?lang=' + $rootScope.selectedLanguage.code; + $http.post(url, $scope.registerVals).success(function(data, status, headers, config) { runAuth(data.id, data.apiToken); }).error(errorAlert); }; diff --git a/public/js/controllers/footerCtrl.js b/public/js/controllers/footerCtrl.js index c2243eacfa..72a763df7b 100644 --- a/public/js/controllers/footerCtrl.js +++ b/public/js/controllers/footerCtrl.js @@ -4,6 +4,17 @@ .controller("FooterCtrl", ['$scope', '$rootScope', 'User', '$http', 'Notification', 'API_URL', function($scope, $rootScope, User, $http, Notification, API_URL) { + if(typeof habitrpg === "undefined"){ + $scope.languages = env.avalaibleLanguages; + $scope.selectedLanguage = _.find(env.avalaibleLanguages, {code: env.language.code}); + + $rootScope.selectedLanguage = $scope.selectedLanguage; + + $scope.changeLang = function(){ + window.location = '?lang='+$scope.selectedLanguage.code; + } + } + /** External Scripts JS files not needed right away (google charts) or entirely optional (analytics) diff --git a/src/i18n.js b/src/i18n.js index 78e96f8f42..109e610afb 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -81,8 +81,11 @@ var getUserLanguage = function(req, res, next){ req.language = lang; next(); }; - - if(req.locals && req.locals.user){ + console.log(req.query.lang) + if(req.query.lang){ + req.language = translations[req.query.lang] ? (req.query.lang) : 'en'; + next(); + }else if(req.locals && req.locals.user){ getFromUser(req.locals.user); }else if(req.session && req.session.userId){ User.findOne({_id: req.session.userId}, function(err, user){ diff --git a/src/models/user.js b/src/models/user.js index 31aa149db8..2877256b14 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -380,8 +380,6 @@ UserSchema.pre('save', function(next) { return newTask; }); }); - - this.preferences.language = undefined; } //this.markModified('tasks'); diff --git a/views/shared/footer.jade b/views/shared/footer.jade index 5858a3b024..e90b69acb7 100644 --- a/views/shared/footer.jade +++ b/views/shared/footer.jade @@ -8,6 +8,10 @@ footer.footer(ng-controller='FooterCtrl') a(href='https://itunes.apple.com/us/app/habitrpg/id689569235?mt=8', target='_blank')=env.t('mobileIOS') li a(href='https://play.google.com/store/apps/details?id=com.ocdevel.habitrpg', target='_blank')=env.t('mobileAndroid') + if env.isStaticPage + h4=env.t('language') + select(ng-change='changeLang()', ng-model='selectedLanguage', ng-options='language.name for language in languages') + .col-sm-3 h4=env.t('footerCompany') ul.list-unstyled