From a12e48debddc242312578a705607c9e4ce894800 Mon Sep 17 00:00:00 2001 From: Luis Eduardo Brito Date: Wed, 25 Sep 2013 01:46:46 -0300 Subject: [PATCH] language improved --- api/controllers/error.js | 11 +++++++---- language/en-US.js | 6 ++++-- language/index.js | 30 ++++++++++++++++++++++++++++++ language/pt-BR.js | 4 +++- package.json | 3 ++- tests/language/language_test.js | 6 ++++++ 6 files changed, 52 insertions(+), 8 deletions(-) diff --git a/api/controllers/error.js b/api/controllers/error.js index 7f5557a..34eb433 100644 --- a/api/controllers/error.js +++ b/api/controllers/error.js @@ -1,14 +1,17 @@ var response = require("../adapters/response"); +var language = require("../../language"); +var lang = language.getDefault(); + module.exports = { index: function(req, res) { response(res).json({ - result: "error", + result: lang.response.error || "error", code: 500, - message: "unknown" + message: lang.error.unknown || "unknown" }, 500); }, @@ -17,9 +20,9 @@ module.exports = { response(res).json({ - result: "error", + result: lang.response.error || "error", code: 404, - message: "not found" + message: lang.error.not_found || "not found" }, 404); } diff --git a/language/en-US.js b/language/en-US.js index 79684d9..e4ae612 100644 --- a/language/en-US.js +++ b/language/en-US.js @@ -11,7 +11,7 @@ module.exports = { // Error Handling error: { - unknown: "Unknown error", + unknown: "Unknown error: %s", // Error Levels critical: "Critical", @@ -65,6 +65,8 @@ module.exports = { login_error: "User could not be logged in", logout_success: "User logged out successfully", - logout_error: "User could not be logged out" + logout_error: "User could not be logged out", + + forbidden_access: "Forbidden access. You're not a root user" } } \ No newline at end of file diff --git a/language/index.js b/language/index.js index f35c6a2..fc71579 100644 --- a/language/index.js +++ b/language/index.js @@ -1,4 +1,5 @@ var config = require("../config/general"); +var vsprintf = require("format").vsprintf; var Language = function(default_lang) { @@ -19,6 +20,35 @@ var Language = function(default_lang) { }; exports.get = get; + var val = function() { + + if(!arguments.length) + throw new Error("No string id supplied"); + + // args: id, var1, var2, var3 + var id = arguments[0]; + id = id.split('.') || id; + + var args = []; + + for(var k in arguments) + args.push(arguments[k]); + + var str = getDefault()[id[0] || id + ""]; + + for(var i = 1; i < id.length; i++) + str = str[id[i]]; + + if(!args.length) + return str; + else + return vsprintf(str, args); + + }; + + exports.val = val; + exports.value = val; + var getDefault = function() { var lang = config.language || diff --git a/language/pt-BR.js b/language/pt-BR.js index 8d379d8..b9edc04 100644 --- a/language/pt-BR.js +++ b/language/pt-BR.js @@ -66,6 +66,8 @@ module.exports = { login_error: "O login não pode ser efetuado", logout_success: "Logout efetuado com sucesso", - logout_error: "O logout não pode ser efetuado" + logout_error: "O logout não pode ser efetuado", + + forbidden_access: "Acesso restrito, vocẽ não tem permissões administrativas" } } \ No newline at end of file diff --git a/package.json b/package.json index 76156a9..be8c231 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "async": "~0.2.9", "express-ejs-layouts": "~0.3.1", "ejs": "~0.8.4", - "forever": "~0.10.8" + "forever": "~0.10.8", + "format": "~0.2.1" }, "devDependencies": { "nodeunit": "~0.8.1" diff --git a/tests/language/language_test.js b/tests/language/language_test.js index c7deada..dd0d6ad 100644 --- a/tests/language/language_test.js +++ b/tests/language/language_test.js @@ -11,4 +11,10 @@ exports.test_simpleError = function(test) { var lang = language.get("en-US"); test.ok(lang.error.unknown); test.done(); +} + +exports.test_simpleValTest = function(test) { + + test.ok(language.val("error.unknown")); + test.done(); } \ No newline at end of file