UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

240 lines (189 loc) 6.99 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2007-2008 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Fabian Jakobs (fjakobs) ************************************************************************ */ qx.Class.define("qx.test.locale.Locale", { extend: qx.dev.unit.TestCase, include: qx.locale.MTranslation, members: { __defaultLocale: null, __listenerId: null, setUp() { var manager = qx.locale.Manager.getInstance(); this.__defaultLocale = manager.getLocale(); }, tearDown() { var manager = qx.locale.Manager.getInstance(); manager.setLocale(this.__defaultLocale); if (this.__listenerId) { manager.removeListenerById(this.__listenerId); } }, testTranslation() { this.assertNotUndefined(qx.locale.Manager); var manager = qx.locale.Manager.getInstance(); // add dummy translations manager.addTranslation("en_QX", { "test one": "test one", "test two": "test two", "test Hello %1!": "test Hello %1!", "test Jonny": "test Jonny", "test one car": "test one car", "test %1 cars": "test %1 cars" }); manager.addTranslation("de_QX", { "test one": "Eins", "test two": "Zwei", "test Hello %1!": "Servus %1!", "test Jonny": "Jonathan", "test one car": "Ein Auto", "test %1 cars": "%1 Autos" }); manager.setLocale("en_QX"); this.assertEquals("en", manager.getLanguage()); this.assertEquals("QX", manager.getTerritory()); // tr(): simple case var one = this.tr("test one"); this.assertEquals("test one", one); // tr(): format string var hello = this.tr("test Hello %1!", "Fabian"); this.assertEquals("test Hello Fabian!", hello); // tr(): format string with namedArg var hello = this.tr("test Hello %{firstName} %{lastName}!", { firstName: "Fabian", lastName: "Jonny" }); this.assertEquals("test Hello Fabian Jonny!", hello); // tr(): format string with translated arguments var hiJonny = this.tr("test Hello %1!", this.tr("test Jonny")); this.assertEquals("test Hello test Jonny!", hiJonny); // trn(): plural var car = this.trn("test one car", "test %1 cars", 0, 0); this.assertEquals("test 0 cars", car); car = this.trn("test one car", "test %1 cars", 1); this.assertEquals("test one car", car); var cars = this.trn("test one car", "test %1 cars", 5, 5); this.assertEquals("test 5 cars", cars); // trc(): comments one = this.trc("comment simple", "test one"); this.assertEquals("test one", one); hello = this.trc("comment format", "test Hello %1!", "Fabian"); this.assertEquals("test Hello Fabian!", hello); hiJonny = this.trc( "comment format args", "test Hello %1!", this.tr("test Jonny") ); this.assertEquals("test Hello test Jonny!", hiJonny); // trnc(): comments and plural car = this.trnc("comment count 0", "test one car", "test %1 cars", 0, 0); this.assertEquals("test 0 cars", car); car = this.trnc("comment count 1", "test one car", "test %1 cars", 1); this.assertEquals("test one car", car); cars = this.trnc("comment count 5", "test one car", "test %1 cars", 5, 5); this.assertEquals("test 5 cars", cars); // check listener var fired = false; var evtLocale = ""; this.__listenerId = manager.addListener("changeLocale", function (e) { fired = true; evtLocale = e.getData(); }); // change locale manager.setLocale("de_QX"); this.assertTrue(fired); this.assertEquals("de_QX", evtLocale); // simple case one = one.translate(); this.assertEquals("Eins", one); // format string hello = hello.translate(); this.assertEquals("Servus Fabian!", hello); // format string with translated arguments hiJonny = hiJonny.translate(); this.assertEquals("Servus Jonathan!", hiJonny); // plural car = car.translate(); this.assertEquals("Ein Auto", car); cars = cars.translate(); this.assertEquals("5 Autos", cars); }, testInvalidMessage() { this.assertNotUndefined(qx.locale.Manager); var manager = qx.locale.Manager.getInstance(); // add dummy translations manager.addTranslation("en_QX", { "test one": "one!", "test two": "two!" }); manager.addTranslation("de_QX", { "test one": "Eins!", "test two": "Zwei!" }); manager.setLocale("en_QX"); var textField = new qx.ui.form.TextField(); textField.setInvalidMessage(this.tr("test one")); textField.setRequiredInvalidMessage(this.tr("test two")); this.assertEquals("one!", textField.getInvalidMessage()); this.assertEquals("two!", textField.getRequiredInvalidMessage()); manager.setLocale("de_QX"); this.assertEquals("Eins!", textField.getInvalidMessage()); this.assertEquals("Zwei!", textField.getRequiredInvalidMessage()); textField.dispose(); }, testMacCtrl() { // check if the translation is working this.assertEquals( "Links", qx.locale.Key.getKeyName("short", "Left", "de_DE") ); // is the localized version if (qx.core.Environment.get("os.name") == "osx") { // there is no strg on macs, only ctrl this.assertEquals( "Ctrl", qx.locale.Key.getKeyName("short", "Control", "de_DE") ); this.assertEquals( "Control", qx.locale.Key.getKeyName("full", "Control", "de_DE") ); } else { this.assertEquals( "Strg", qx.locale.Key.getKeyName("short", "Control", "de_DE") ); this.assertEquals( "Steuerung", qx.locale.Key.getKeyName("full", "Control", "de_DE") ); } }, testResetLocale() { var locale = qx.core.Environment.get("locale"); var variant = qx.core.Environment.get("locale.variant"); if (variant !== "") { locale += "_" + variant; } var manager = qx.locale.Manager.getInstance(); var oldLocale = manager.getLocale(); manager.addTranslation("en_QX", { "test one": "one!", "test two": "two!" }); manager.setLocale("en_QX"); // try the reset of the locale manager.resetLocale(); this.assertEquals(locale, manager.getLocale()); // make sure we set the locale which was there before the test manager.setLocale(oldLocale); } } });