diff options
Diffstat (limited to 'includes/js/dojo/tests/i18n.js')
-rw-r--r-- | includes/js/dojo/tests/i18n.js | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/includes/js/dojo/tests/i18n.js b/includes/js/dojo/tests/i18n.js new file mode 100644 index 0000000..47bb946 --- /dev/null +++ b/includes/js/dojo/tests/i18n.js @@ -0,0 +1,88 @@ +if(!dojo._hasResource["tests.i18n"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. +dojo._hasResource["tests.i18n"] = true; +dojo.provide("tests.i18n"); + +dojo.require("dojo.i18n"); + +(function(){ + var setUp = function(locale){ + return function(){ + dojo.requireLocalization("tests","salutations",locale, ""); + } + } + + var getTest = function(value, locale){ + return function(){ + doh.assertEqual(value, dojo.i18n.getLocalization("tests", "salutations", locale).hello); + } + } + + var getFixture = function(locale, value){ + return { + name: "salutations-"+locale, + setUp: setUp(locale), + runTest: getTest(value, locale) + }; + } + + var testSet = [ + /* needs dojo.string, + // This doesn't actually test anything, it just gives an impressive list of translated output to the console + // See the 'salutations' test for something verifyable + function fun(t){ + var salutations_default = dojo.i18n.getLocalization("tests", "salutations"); + console.debug("In the local language: "+salutations_default.hello); + + var salutations_en = dojo.i18n.getLocalization("tests", "salutations", "en"); + + for (i in tests.nls.salutations) { + var loc = i.replace('_', '-'); + var salutations = dojo.i18n.getLocalization("tests", "salutations", loc); + var language_as_english = salutations_en[loc]; + var language_as_native = salutations[loc]; + var hello_dojo = dojo.string.substitute(salutations.hello_dojo, salutations); + if (!dojo.i18n.isLeftToRight(loc)) { + var RLE = "\u202b"; + var PDF = "\u202c"; + hello_dojo = RLE + hello_dojo + PDF; + } + hello_dojo += "\t[" + loc + "]"; + if(language_as_english){hello_dojo += " " + language_as_english;} + if(language_as_native){hello_dojo += " (" + language_as_native + ")";} + console.debug(hello_dojo); + } + + t.assertTrue(true); + }, + */ + + // Test on-the-fly loading of localized string bundles from different locales, and + // the expected inheritance behavior + + // Locale which overrides root translation + getFixture("de", "Hallo"), + // Locale which does not override root translation + getFixture("en", "Hello"), + // Locale which overrides its parent + getFixture("en-au", "G'day"), + // Locale which does not override its parent + getFixture("en-us", "Hello"), + // Locale which overrides its parent + getFixture("en-us-texas", "Howdy"), + // 3rd level variant which overrides its parent + getFixture("en-us-new_york", "Hello"), + // Locale which overrides its grandparent + getFixture("en-us-new_york-brooklyn", "Yo"), + // Locale which does not have any translation available + getFixture("xx", "Hello"), + // A double-byte string. Everything should be read in as UTF-8 and treated as unicode within Javascript. + getFixture("zh-cn", "\u4f60\u597d") + ]; + testSet[testSet.length-1].tearDown = function(){ + // Clean up bundles that should not exist if the test is re-run. + delete tests.nls.salutations; + }; + tests.register("tests.i18n", testSet); +})(); + +} |