topic.json en lang; tested serverside internationalization in favourites; fixed some keys in login

v1.18.x
psychobunny 12 years ago
parent a631707db4
commit 5645bcee2d

@ -86,7 +86,8 @@
global.templates = {}; global.templates = {};
translator.loadAll(function () { translator.loadServer();
// todo: replace below with read directory code, derp. // todo: replace below with read directory code, derp.
templates.init([ templates.init([
'header', 'footer', 'logout', 'outgoing', 'admin/header', 'admin/footer', 'admin/index', 'header', 'footer', 'logout', 'outgoing', 'admin/header', 'admin/footer', 'admin/index',
@ -99,9 +100,6 @@
templates.ready(webserver.init); templates.ready(webserver.init);
}); });
});
} else if (nconf.get('upgrade')) { } else if (nconf.get('upgrade')) {
meta = require('./src/meta.js'); meta = require('./src/meta.js');

@ -4,5 +4,7 @@
"password": "Password", "password": "Password",
"remember_me": "Remember Me?", "remember_me": "Remember Me?",
"forgot_password": "Forgot Password?", "forgot_password": "Forgot Password?",
"alternative_logins": "Alternative Logins" "alternative_logins": "Alternative Logins",
"failed_login_attempt": "Failed login attempt, please try again.",
"login_successful": "You have successfully logged in!"
} }

@ -0,0 +1,4 @@
{
"favourites.not_logged_in.title": "Not Logged In",
"favourites.not_logged_in.message": "Please log in in order to favourite this post"
}

@ -3,7 +3,10 @@
/*global RELATIVE_PATH*/ /*global RELATIVE_PATH*/
/* /*
* TODO: language en is hardcoded while system is developed. * TODO:
*
* 1. language en is hardcoded while system is developed.
* 2. recursion needed when parsing language keys (ex. topics:modal.delete.title), right now json is all one level deep
*/ */
var translator = {}, var translator = {},
@ -11,11 +14,20 @@
loaded: {}, loaded: {},
loading: {}, loading: {},
callbacks: {} callbacks: {}
}; },
isServer = false;
module.exports = translator; module.exports = translator;
translator.load = function (filename, callback) { translator.load = function (filename, callback) {
if (isServer === true) {
if (callback) {
callback(files.loaded[filename]);
}
return files.loaded[filename];
}
if (files.loaded[filename] && !files.loading[filename]) { if (files.loaded[filename] && !files.loading[filename]) {
if (callback) { if (callback) {
callback(files.loaded[filename]); callback(files.loaded[filename]);
@ -46,7 +58,9 @@
} }
}; };
translator.loadAll = function (callback) { translator.loadServer = function () {
isServer = true;
var utils = require('./utils.js'), var utils = require('./utils.js'),
path = require('path'), path = require('path'),
fs = require('fs'); fs = require('fs');
@ -56,16 +70,7 @@
for (var d in data) { for (var d in data) {
if (data.hasOwnProperty(d)) { if (data.hasOwnProperty(d)) {
(function (file) { files.loaded[path.basename(data[d]).replace('.json', '')] = require(data[d]);
fs.readFile(file, function (err, json) {
files.loaded[path.basename(file).replace('json', '')] = json;
loaded--;
if (loaded === 0) {
callback();
}
});
}(data[d]));
} }
} }
}); });
@ -74,13 +79,22 @@
/* /*
* TODO: DRY, see translator.translate. The hard part is to make sure both work node.js / js side * TODO: DRY, see translator.translate. The hard part is to make sure both work node.js / js side
*/ */
translator.get = function (key) { translator.get = function (key, callback) {
//console.log(files.loaded);
var parsedKey = key.split(':'), var parsedKey = key.split(':'),
languageFile = parsedKey[0]; languageFile = parsedKey[0];
parsedKey = parsedKey[1]; parsedKey = parsedKey[1];
console.log(parsedKey);
translator.load(languageFile, function (languageData) {
console.log(languageData[parsedKey]);
if (callback) {
console.log('herped');
callback(languageData[parsedKey]);
}
return files.loaded[languageFile][parsedKey]; return languageData[parsedKey];
});
}; };

@ -1,16 +1,22 @@
var RDB = require('./redis.js'), var RDB = require('./redis.js'),
posts = require('./posts.js'), posts = require('./posts.js'),
user = require('./user.js'); user = require('./user.js'),
translator = require('./../public/src/translator.js');
(function (Favourites) { (function (Favourites) {
"use strict"; "use strict";
Favourites.favourite = function (pid, room_id, uid, socket) { Favourites.favourite = function (pid, room_id, uid, socket) {
if (uid === 0) { if (uid === 0) {
var not_logged_in = {
message: translator.get('topic:favourites.not_logged_in.message'),
title: translator.get('topic:favourites.not_logged_in.title')
};
socket.emit('event:alert', { socket.emit('event:alert', {
alert_id: 'post_favourite', alert_id: 'post_favourite',
title: 'Not Logged In', title: not_logged_in.title,
message: 'Please log in in order to favourite this post', message: not_logged_in.message,
type: 'danger', type: 'danger',
timeout: 5000 timeout: 5000
}); });

Loading…
Cancel
Save