Providing custom translations overwriting entries in the catalogue was only possible with core plugins. This prevented core plugins from calling gettext function during their definition. As a developer I want more fine-grained control over the process. Therefore an i18n namespace is to be introduced which gets loaded before gettext is enabled. After that, the core namespace should be loaded.

As a result of this change, all plugins that added custom translation would need to be ported to the new i18n namespace. On the other hand, the majority of the core plugins do not need to worry about calling gettext early any longer.

Documentation can be found here: