From 0091df2bc8eed432df9d726d5bea09ac527128d2 Mon Sep 17 00:00:00 2001
From: Vincent Petry <pvince81@owncloud.com>
Date: Mon, 29 Feb 2016 17:39:21 +0100
Subject: [PATCH] Improved JS L10N bundle merging + tests

---
 core/js/l10n.js                 | 4 +---
 core/js/tests/specs/l10nSpec.js | 8 ++++++++
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/core/js/l10n.js b/core/js/l10n.js
index c19f523b30e..43cfc7e820f 100644
--- a/core/js/l10n.js
+++ b/core/js/l10n.js
@@ -78,9 +78,7 @@ OC.L10N = {
 			}
 		} else {
 			// Theme overwriting the default language
-			_.each(bundle, function(translation, key) {
-				self._bundles[appName][key] = translation
-			});
+			_.extend(self._bundles[appName], bundle);
 		}
 	},
 
diff --git a/core/js/tests/specs/l10nSpec.js b/core/js/tests/specs/l10nSpec.js
index bafc7746d6c..2ceb2f4a916 100644
--- a/core/js/tests/specs/l10nSpec.js
+++ b/core/js/tests/specs/l10nSpec.js
@@ -52,6 +52,14 @@ describe('OC.L10N tests', function() {
 				t(TEST_APP, 'Hello {name}', {name: '<strong>Steve</strong>'}, null, {escape: false})
 			).toEqual('Hello <strong>Steve</strong>');
 		});
+		it('keeps old texts when registering existing bundle', function() {
+			OC.L10N.register(TEST_APP, {
+				'sunny': 'sonnig',
+				'new': 'neu'
+			});
+			expect(t(TEST_APP, 'sunny')).toEqual('sonnig');
+			expect(t(TEST_APP, 'new')).toEqual('neu');
+		});
 	});
 	describe('plurals', function() {
 		function checkPlurals() {
-- 
GitLab