在 OS X Yosemite 上 运行 `locale -a` 时 LANG 和 LC_ALL 是空的不好吗?

Is it bad that LANG and LC_ALL are empty when running `locale -a` on OS X Yosemite?

我用 OS X Yosemite.

当我 运行 locale 我得到这个:

locale 
LANG= 
LC_COLLATE="C" 
LC_CTYPE="UTF-8" 
LC_MESSAGES="C" 
LC_MONETARY="C" 
LC_NUMERIC="C" 
LC_TIME="C" 
LC_ALL=

问题

LANGLC_ALL是bad/normal/prefered吗?

通常情况下,我不会太在意它,但我有一个警告

(process:16182): Gtk-WARNING **: Locale not supported by C library.
        Using the fallback 'C' locale.

当我使用 GTK () 时。

人们一直在用多种语言解决这个问题 (Python for example) and different OS (Ubuntu for example)。

重点是我找不到C语言和OS X的任何解决方案。

我猜 GTK 警告是因为 GTK 实际上试图使用系统偏好设置中的 Mac 语言和区域设置来制作区域设置标识符字符串,将该字符串与 setlocale() 一起使用,并被告知 C 库不支持该语言环境。因此,它默认为 "C" 语言环境。如果它不是试图找到一个更好的语言环境,就没有理由警告它正在使用 "C" 语言环境,因为当 LANGLC_ALL 未设置时,这是预期的结果。

OS X 在高级框架(Cocoa 等)中支持许多语言和区域设置,但并非所有这些都在 C 库级别也受支持.系统偏好设置中的语言和区域设置是什么?您希望您的语言和区域设置使用什么区域设置标识符?看看 locale -a 的输出中是否有(或者,类似地,/usr/share/locale 中是否有它的目录)。

要检查的另一件事是终端的首选项。在“设置”窗格的“高级”选项卡下,是否设置了 "Set locale environment variables on startup"?如果没有,那么默认情况下不会设置这些环境变量,这可能解释了您所看到的内容。如果该设置已启用但您仍然没有获得这些环境变量,则表明终端无法找到与您的系统设置匹配的合适的 C 库语言环境。

最后,您可以简单地尝试将 LANG 设置为您想要使用的内容。例如:

export LANG=pl_PL.UTF-8