refactor(i18n): refactor & fix

This commit is contained in:
Matteo Pagliazzi 2014-03-10 19:36:07 +01:00
parent 62637cf676
commit b887127fb0
4 changed files with 20 additions and 12 deletions

View file

@ -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()}

View file

@ -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();

View file

@ -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

View file

@ -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');