[GNC] mac GnuCash "The locale defined in the environment isn't supported" error from command line
John Ralls
jralls at ceridwen.us
Wed Jul 10 20:41:13 EDT 2019
> On Jul 10, 2019, at 12:05 PM, Jim DeLaHunt <list+gnucash at jdlh.com> wrote:
>
> Hello, Gnucash users:
>
> I am using Gnucash 3.6-1 on macOS 10.11.6 (El Capitan). I don't normally run Gnucash from the command line, but when I do, I see an error message about the locale:
>
> % /Applications/Gnucash.app/Contents/MacOS/Gnucash --debug --extra
> Application Path /Applications/Gnucash.app/Contents/MacOS/Gnucash
>
> (process:97574): gnc.gui-WARNING **: 18:23:33.979: [mac_set_languages()] Language list: en:C:ja:de:zh_CN:zh_TW
> The locale defined in the environment isn't supported. Falling back to the 'C' (US English) locale
> %
>
> Gnucash runs with English language in its GUI, as expected. However, I would not expect to see an error message about the locale not being supported.
>
> I expect that "locale defined in the environment" is "en_CA". The Gnucash wiki says, in /Locale Settings/ # *Changing the Language on MacOS* <https://wiki.gnucash.org/wiki/Locale_Settings#Changing_the_Language_on_MacOS>, that the Gnucash selects from the language list set in the OS. When this message occurred, my System Preferences… Language & Region… Preferred Language is set to a list of 5 languages beginning with English as primary, and my region is set to Canadian. The locale settings appear to be:
>
> % locale
> LANG="en_CA.UTF-8"
> LC_COLLATE="en_CA.UTF-8"
> LC_CTYPE="en_CA.UTF-8"
> LC_MESSAGES="en_CA.UTF-8"
> LC_MONETARY="en_CA.UTF-8"
> LC_NUMERIC="en_CA.UTF-8"
> LC_TIME="en_CA.UTF-8"
> LC_ALL=
>
> Maybe the problem is with the Canadian region? (The "_CA" suffix.) No, changing the Mac region to United States doesn't change the error. After making the change in System Preferences, I ran the following in a new terminal window.
>
> % locale
> LANG="en_US.UTF-8"
> LC_COLLATE="en_US.UTF-8"
> LC_CTYPE="en_US.UTF-8"
> LC_MESSAGES="en_US.UTF-8"
> LC_MONETARY="en_US.UTF-8"
> LC_NUMERIC="en_US.UTF-8"
> LC_TIME="en_US.UTF-8"
> LC_ALL=
> % /Applications/Gnucash.app/Contents/MacOS/Gnucash --debug --extra
> Application Path /Applications/Gnucash.app/Contents/MacOS/Gnucash
>
> (process:97708): gnc.gui-WARNING **: 19:08:19.091: [mac_set_languages()] Language list: en:C:ja:de:zh_CN:zh_TW
> The locale defined in the environment isn't supported. Falling back to the 'C' (US English) locale
> %
>
> In this configuration, the Gnucash GUI still appears, still in English.
>
> I tried setting the language to German and the region to Germany in System Preferences. Then I invoked the Gnucash GUI from a new terminal window.
>
> % locale
> LANG="de_DE.UTF-8"
> LC_COLLATE="de_DE.UTF-8"
> LC_CTYPE="de_DE.UTF-8"
> LC_MESSAGES="de_DE.UTF-8"
> LC_MONETARY="de_DE.UTF-8"
> LC_NUMERIC="de_DE.UTF-8"
> LC_TIME="de_DE.UTF-8"
> LC_ALL=
> % /Applications/Gnucash.app/Contents/MacOS/Gnucash
> Application Path /Applications/Gnucash.app/Contents/MacOS/Gnucash
>
> (process:98121): gnc.gui-WARNING **: 20:52:37.069: [mac_set_languages()] Language list: en:de:en:C:ja:zh_CN:zh_TW
> The locale defined in the environment isn't supported. Falling back to the 'C' (US English) locale
> %
>
> The wiki section /Locale Settings/ # *Changing the Language on MacOS* talks about the Mac OS X user defaults system, as controlled by the defaults command in Terminal. The wiki section mentions using "-app Gnucash AppleLanguages" to control the translation which Gnucash chooses. I had no setting for this. When I set it to '(en, de)', that changed the Language list in the error message, but not the presence of the error message, nor the resulting app UI. Similarly, the wiki section mentions using "-app Gnucash AppleLocale" to adjust the other locale settings. This had no effect for me. The UI came up in English, not German, regardless of the AppleLanguages being set or deleted.
>
> % defaults write -app Gnucash AppleLanguages '(de, en)'
> % defaults write -app Gnucash AppleLocale 'de_DE'
> % /Applications/Gnucash.app/Contents/MacOS/Gnucash --debug --extra
> Application Path /Applications/Gnucash.app/Contents/MacOS/Gnucash
>
> (process:98475): gnc.gui-WARNING **: 21:57:42.797: [mac_set_languages()] Language list: de:en:C
> The locale defined in the environment isn't supported. Falling back to the 'C' (US English) locale
>
> % defaults delete -app Gnucash AppleLanguages
> % defaults delete -app Gnucash AppleLocale
> % /Applications/Gnucash.app/Contents/MacOS/Gnucash --debug --extra
> Application Path /Applications/Gnucash.app/Contents/MacOS/Gnucash
>
> (process:98486): gnc.gui-WARNING **: 22:01:11.732: [mac_set_languages()] Language list: en:C:de:ja:zh_CN:zh_TW
> The locale defined in the environment isn't supported. Falling back to the 'C' (US English) locale
> %
>
> Is the error message correct that "the locale… isn't supported"? By this, does it mean the locale set by System Preferences, as claimed by the wiki, or does it really mean "defined in the environment" as an environment variable? (In any case, it would sure be nice if the error message included the locale or setting it retrieved.)
>
> Is there a change I can make to remove the error and stop the error message? That's really the problem which prompted me to explore this whole area.
>
> Is the wiki correct that Gnucash displays UI language according to System Preferences settings, or according to the user defaults system values for "-app Gnucash AppleLanguages" and "-app Gnucash AppleLocale"? This seemed to have no effect for me. What am I doing wrong? Or what about the wiki's explanation is wrong?
>
> I read through the trace file. I didn't see anything related to this error message there. There were only two mentions of "locale", both in names of keys read by gnc.app-utils.gsettings.
>
> Bug 725296 - Unable to change language from english using the environment file <https://bugs.gnucash.org/show_bug.cgi?id=725296> is the closest I've found to a relevant bug, and it seems to be about Linux and Windows locale selection, not macOS.
>
> (By the way, it would be helpful if the error message displayed the locale value it thinks it retrieved, and if a similar error were written to the trace file.)
>
Nope, it's a bug in 3.6 caused by an errant #endif. I fixed it yesterday. That check isn't supposed to run on MacOS.
Regards,
John Ralls
More information about the gnucash-user
mailing list