diff --git a/packages/node_modules/@node-red/editor-api/lib/editor/locales.js b/packages/node_modules/@node-red/editor-api/lib/editor/locales.js index ecf21d1ff..5e10647e7 100644 --- a/packages/node_modules/@node-red/editor-api/lib/editor/locales.js +++ b/packages/node_modules/@node-red/editor-api/lib/editor/locales.js @@ -21,6 +21,18 @@ var i18n = require("@node-red/util").i18n; // TODO: separate module var runtimeAPI; +function loadResource(lang, namespace) { + var catalog = i18n.i.getResourceBundle(lang, namespace); + if (!catalog) { + var parts = lang.split("-"); + if (parts.length == 2) { + var new_lang = parts[0]; + return i18n.i.getResourceBundle(new_lang, namespace); + } + } + return catalog; +} + module.exports = { init: function(_runtimeAPI) { runtimeAPI = _runtimeAPI; @@ -33,7 +45,7 @@ module.exports = { var prevLang = i18n.i.language; // Trigger a load from disk of the language if it is not the default i18n.i.changeLanguage(lang, function(){ - var catalog = i18n.i.getResourceBundle(lang, namespace); + var catalog = loadResource(lang, namespace); res.json(catalog||{}); }); i18n.i.changeLanguage(prevLang); diff --git a/test/unit/@node-red/editor-api/lib/editor/locales_spec.js b/test/unit/@node-red/editor-api/lib/editor/locales_spec.js index d9cb1c600..2de9d4799 100644 --- a/test/unit/@node-red/editor-api/lib/editor/locales_spec.js +++ b/test/unit/@node-red/editor-api/lib/editor/locales_spec.js @@ -91,6 +91,30 @@ describe("api/editor/locales", function() { done(); }); }); + + it('returns for locale defined only with primary tag ', function(done) { + var orig = i18n.i.getResourceBundle; + i18n.i.getResourceBundle = function (lang, ns) { + if (lang === "ja-JP") { + return undefined; + } + return orig(lang, ns); + }; + request(app) + // returns `ja` instead of `ja-JP` + .get("/locales/message-catalog?lng=ja-JP") + .expect(200) + .end(function(err,res) { + i18n.i.getResourceBundle = orig; + if (err) { + return done(err); + } + res.body.should.have.property('namespace','message-catalog'); + res.body.should.have.property('lang','ja'); + done(); + }); + }); + }); // describe('get all node resource catalogs',function() {