Fix regression in wxTranslations::AddCatalog()

Do load the catalog corresponding to the language of "msgid" strings in
the source code, only skip the languages strictly less preferred than
it.

This avoids incompatibilities with pre-3.1.2 behaviour and avoids
breaking existing applications relying on the old behaviour.

Closes https://github.com/wxWidgets/wxWidgets/pull/1081

Closes #18297.
This commit is contained in:
Tomasz Słodkowicz
2018-12-17 02:39:06 +01:00
committed by Vadim Zeitlin
parent b0eca3bdde
commit 14e905858d
2 changed files with 10 additions and 6 deletions

View File

@@ -108,6 +108,10 @@ Changes in behaviour which may result in build errors
3.1.3: (released 2019-??-??) 3.1.3: (released 2019-??-??)
---------------------------- ----------------------------
All:
- Fix regression in wxTranslations::AddCatalog() in 3.1.2 (Tomasz Słodkowicz).
All (GUI): All (GUI):
- Fix wxInfoBar close button size in high DPI (Stefan Ziegler). - Fix wxInfoBar close button size in high DPI (Stefan Ziegler).

View File

@@ -1574,18 +1574,18 @@ bool wxTranslations::AddCatalog(const wxString& domain,
wxS("adding '%s' translation for domain '%s' (msgid language '%s')"), wxS("adding '%s' translation for domain '%s' (msgid language '%s')"),
*lang, domain, msgIdLang); *lang, domain, msgIdLang);
// No use loading languages that are less preferred than the
// msgid language, as by definition it contains all the strings
// in the msgid language.
if ( msgIdLang == *lang )
break;
// We determine success by the success of loading/failing to load // We determine success by the success of loading/failing to load
// the most preferred (i.e. the first one) language's catalog: // the most preferred (i.e. the first one) language's catalog:
if ( lang == domain_langs.begin() ) if ( lang == domain_langs.begin() )
success = LoadCatalog(domain, *lang, msgIdLang); success = LoadCatalog(domain, *lang, msgIdLang);
else else
LoadCatalog(domain, *lang, msgIdLang); LoadCatalog(domain, *lang, msgIdLang);
// No use loading languages that are less preferred than the
// msgid language, as by definition it contains all the strings
// in the msgid language.
if ( msgIdLang == *lang )
break;
} }
return success; return success;