Fix locale of opened dialogs
authorAndre Heinecke <aheinecke@gnupg.org>
Mon, 6 May 2019 12:15:11 +0000 (14:15 +0200)
committerAndre Heinecke <aheinecke@gnupg.org>
Mon, 6 May 2019 12:15:11 +0000 (14:15 +0200)
* src/w32-gettext.cpp (_nl_locale_name): Check UI language only
once.

--
In some callbacks e.g. if you click the open options button we
can get an error trying to access the LanguageSettings object
so it is better just to cache it. Outlook requires a restart
for language changes to take effect anyway.

src/w32-gettext.cpp

index 5838303..7521c52 100644 (file)
@@ -772,18 +772,23 @@ _nl_locale_name (int category, const char *categoryname)
      context, because message catalogs are not specific to a single
      codeset.  */
 
-  LCID lcid;
+  static LCID lcid = 0;
   LANGID langid;
   int primary, sub;
 
   (void)category;
 
-  /* Prefer the Ui language of Outlook. */
+  if (!lcid)
+    {
+      /* We only check once because Outlook also requires
+         a restart after switching the language. This fixes
+         a problem that in some callbacks
+         Application.LanguageSettings is not available.*/
+        /* Prefer the Ui language of Outlook. */
 #ifndef BUILD_TESTS
-  lcid = get_ol_ui_language ();
-#else
-  lcid = 0;
+        lcid = get_ol_ui_language ();
 #endif
+    }
 
   /* Let the user override the system settings through environment
      variables, as on POSIX systems.  */