Append translations to `I18n` object instead of re-assigning them all

The current implementation forbids loading multiple I18n-generated files, because the generated JS code reassigns to `I18n.translations` instead of merging new translations with the existing ones.

This is problematic when you want to selectively load parts of the available translations depending on the user's visited pages, for example.

This changeset makes generated translation files shallow-merge their existing `translations` object with new ones.