Comment 3 for bug 1420404

Sebastien Bacher (seb128) wrote :

Ok, that was "fun" debugging, summmary of the issue

- g_app_info_get_display_name() calls g_dgettext()
- g_dgettext() decides on the translation strategy based on the return of the first call
- ubuntu-system-settings main.cpp calls initTr(I18N_DOMAIN, nullptr) with I18N_DOMAIN = "ubuntu-system-settings", so that's fine, but then when the MainView component is initialized, the domain is overwritten with the applicationName value, which is "SystemSettings"
- the first u-s-s call to g_dgettext() is made after that init, which has the wrong domain and leads to d_gettext() settling for "translations shouldn't be active there"

to add to the fun

- under unity7 the first call to g_dgettext() is made on start by external component providing desktop integration (theme, appmenu, ...), those calls success and enable translations, workarounding the previously described issues ... those components are not enabled under Mir though which explains why the bug seen only under unity8

In summary, changing applicationName to be "ubuntu-system-settings" (which is what the documentation suggests, it states that should = desktop name) should fix it, I'm submitting a fix for it