From 2703f72de818cbc9b5bb535137ae3466f4d19a9d Mon Sep 17 00:00:00 2001 From: Dmitriy Simushev Date: Tue, 14 Oct 2014 12:36:23 +0000 Subject: [PATCH] Fix localization of unknown strings on client --- src/mibew/js/source/default/localization.js | 9 ++++----- .../qunit/test_cases/localization_tests.js | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/mibew/js/source/default/localization.js b/src/mibew/js/source/default/localization.js index d052e8c0..58c38a16 100644 --- a/src/mibew/js/source/default/localization.js +++ b/src/mibew/js/source/default/localization.js @@ -37,15 +37,14 @@ * @returns {String} Localized string. */ Mibew.Localization.trans = function(str) { - if (! localStrings.hasOwnProperty(str)) { - return false; - } - // Replace "{n}" style placeholders with specified arguments. The first // argument is skipped because it is the localized string. var placeholders = Array.prototype.slice.call(arguments, 1); - return localStrings[str].replace(/\{([0-9]+)\}/g, function(match, index) { + // If there is no localized string use passed in one. + var localized = localStrings.hasOwnProperty(str) ? localStrings[str] : str; + + return localized.replace(/\{([0-9]+)\}/g, function(match, index) { return placeholders[parseInt(index)] || ''; }); } diff --git a/src/tests/client_side/qunit/test_cases/localization_tests.js b/src/tests/client_side/qunit/test_cases/localization_tests.js index 14bf43c8..296a878f 100644 --- a/src/tests/client_side/qunit/test_cases/localization_tests.js +++ b/src/tests/client_side/qunit/test_cases/localization_tests.js @@ -20,3 +20,17 @@ test('Basic things', function() { 'Test placeholders' ); }); + +test('Unknown string', function() { + equal( + Mibew.Localization.trans('An unknown string'), + 'An unknown string', + 'Test simple string' + ); + + equal( + Mibew.Localization.trans('An unknown string with a placeholder: {0}', 'test!'), + 'An unknown string with a placeholder: test!', + 'Test placeholders' + ); +})