diff --git a/app/assets/javascripts/discourse/initializers/localization.js.es6 b/app/assets/javascripts/discourse/initializers/localization.js.es6 index 5d3ce55f98..2603ddaf4b 100644 --- a/app/assets/javascripts/discourse/initializers/localization.js.es6 +++ b/app/assets/javascripts/discourse/initializers/localization.js.es6 @@ -55,7 +55,9 @@ export default { node = node[segs[i]]; } - node[segs[segs.length-1]] = v; + if (typeof node === "object") { + node[segs[segs.length-1]] = v; + } }); } diff --git a/test/javascripts/initializers/localization-test.js.es6 b/test/javascripts/initializers/localization-test.js.es6 index 0113be6c71..299aab839d 100644 --- a/test/javascripts/initializers/localization-test.js.es6 +++ b/test/javascripts/initializers/localization-test.js.es6 @@ -41,3 +41,10 @@ QUnit.test("translation overrides", function(assert) { assert.equal(I18n.t("composer.reply"), "WAT", "overrides existing translation in current locale"); assert.equal(I18n.t("topic.reply.help"), "foobar", "overrides translation in default locale"); }); + +QUnit.test("skip translation override if parent node is not an object", function(assert) { + PreloadStore.store('translationOverrides', {"js.composer.reply":"WAT","js.composer.reply.help":"foobar"}); + LocalizationInitializer.initialize(this.registry); + + assert.equal(I18n.t("composer.reply.help"), "[fr.composer.reply.help]"); +});