diff --git a/src/controllers/auth.js b/src/controllers/auth.js index 861a813e6a..71b40bbc17 100644 --- a/src/controllers/auth.js +++ b/src/controllers/auth.js @@ -88,7 +88,8 @@ api.registerUser = function(req, res, next) { timestamps: {created: +new Date(), loggedIn: +new Date()} } }; - user.language = req.language; // User language detected from browser, not saved + newUser.preferences = {}; + newUser.preferences.language = req.language; // User language detected from browser, not saved user = new User(newUser); // temporary for conventions @@ -258,7 +259,9 @@ api.setupPassport = function(router) { if (user) return cb(null, user); user = new User({ - language: req.language, // User language detected from browser, not saved + preferences: { + language: req.language // User language detected from browser, not saved + }, auth: { facebook: req.user, timestamps: {created: +new Date(), loggedIn: +new Date()} diff --git a/src/i18n.js b/src/i18n.js index b09e84f1c7..5ea96380af 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -65,9 +65,10 @@ var getUserLanguage = function(req, res, next){ var getFromUser = function(user){ var lang; if(user && user.preferences.language && translations[user.preferences.language]){ - lang = _.find(avalaibleLanguages, {code: user.preferences.language}) || 'en'; + lang = user.preferences.language; }else{ - lang = _.find(avalaibleLanguages, {code: getFromBrowser()}) || 'en'; + var preferred = getFromBrowser(); + lang = translations[preferred] ? preferred : 'en'; } req.language = lang; next(); diff --git a/src/middleware.js b/src/middleware.js index 60e4e3f0ae..79df5f8608 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -142,7 +142,7 @@ var getManifestFiles = function(page){ } module.exports.locals = function(req, res, next) { - var language = req.language; + var language = _.find(i18n.avalaibleLanguages, {code: req.language}); var isStaticPage = req.url.split('/')[1] === 'static'; // If url contains '/static/' // Load moment.js language file only when not on static pages diff --git a/src/models/user.js b/src/models/user.js index 6a7d468da4..f261d72498 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -352,21 +352,25 @@ UserSchema.pre('save', function(next) { if (this.isNew){ //TODO for some reason this doesn't work here: `_.merge(this, shared.content.userDefaults);` var self = this; - - _.each('habits', 'dailys', 'todos', 'rewards', 'tags', function(taskType){ - self.taskType = _.map(shared.content.userDefaults[taskType], function(task){ + _.each(['habits', 'dailys', 'todos', 'rewards', 'tags'], function(taskType){ + self[taskType] = _.map(shared.content.userDefaults[taskType], function(task){ var newTask = task; // Render task's text and notes in user's language - newTask.text = task.text(this.language); - newTask.notes = task.notes(this.language); + if(taskType === 'tags'){ + // tasks automatically get id=helpers.uuid() from TaskSchema id.default, but tags are Schema.Types.Mixed - so we need to manually invoke here + newTask.id = shared.uuid(); + newTask.name = task.name(self.preferences.language); + }else{ + newTask.text = task.text(self.preferences.language); + newTask.notes = task.notes(self.preferences.language); + } return newTask; }); }); - // tasks automatically get id=helpers.uuid() from TaskSchema id.default, but tags are Schema.Types.Mixed - so we need to manually invoke here - _.each(this.tags, function(tag){tag.id = shared.uuid();}) + this.preferences.language = undefined; } //this.markModified('tasks');