diff --git a/Changelog.md b/Changelog.md
index e35adc2cc4396e35fbe8d19de609fa17234f5dd5..d5df0dfd4bd7abfe3cea7aaf1e72629ee1e2fe52 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -2,6 +2,7 @@
 
 ## Refactor
 * Use string-direction gem for rtl detection [#7181](https://github.com/diaspora/diaspora/pull/7181)
+* Reduce i18n.load side effects [#7184](https://github.com/diaspora/diaspora/pull/7184)
 
 ## Bug fixes
 * Fix fetching comments after fetching likes [#7167](https://github.com/diaspora/diaspora/pull/7167)
diff --git a/app/assets/javascripts/helpers/i18n.js b/app/assets/javascripts/helpers/i18n.js
index 42bd7a8864a747700a1409da679786f0b815b746..e6db0f2e1826e53629bf29248fd68107b79b8c39 100644
--- a/app/assets/javascripts/helpers/i18n.js
+++ b/app/assets/javascripts/helpers/i18n.js
@@ -18,7 +18,7 @@ Diaspora.I18n = {
   },
 
   updateLocale: function(locale, data) {
-    locale.data = $.extend(locale.data, data);
+    locale.data = $.extend({}, locale.data, data);
 
     var rule = locale.data.pluralization_rule;
     if (typeof rule !== "undefined") {
diff --git a/spec/javascripts/helpers/i18n_spec.js b/spec/javascripts/helpers/i18n_spec.js
index 79dfabe27f1546b6c537fbc494403cb71ed52ab6..0190a454f3ac5cf720dbc0941540f3bc1f6062e6 100644
--- a/spec/javascripts/helpers/i18n_spec.js
+++ b/spec/javascripts/helpers/i18n_spec.js
@@ -45,6 +45,28 @@ describe("Diaspora.I18n", function() {
 
       expect(Diaspora.I18n.locale.data).toEqual(extended);
     });
+
+    it("overrides existing translations", function() {
+      var oldLocale = {name: "Bob"};
+      var newLocale = {name: "Alice"};
+      Diaspora.I18n.load(oldLocale, "en");
+      expect(Diaspora.I18n.locale.data.name).toBe("Bob");
+      Diaspora.I18n.load(newLocale, "en");
+      expect(Diaspora.I18n.locale.data.name).toBe("Alice");
+
+      Diaspora.I18n.reset(oldLocale);
+      expect(Diaspora.I18n.locale.data.name).toBe("Bob");
+      Diaspora.I18n.load(newLocale, "en");
+      expect(Diaspora.I18n.locale.data.name).toBe("Alice");
+    });
+
+    it("doesn't change locale objects given in ealier calls", function() {
+      var oldLocale = {name: "Bob"};
+      var newLocale = {name: "Alice"};
+      Diaspora.I18n.reset(oldLocale);
+      Diaspora.I18n.load(newLocale, "en");
+      expect(oldLocale.name).toBe("Bob");
+    });
   });
 
   describe("::t", function() {