在OS X Yosemite上运行`locale -a`时,LANG和LC_ALL是否为空是不是很糟糕?

时间:2015-06-14 16:50:14

标签: c macos locale

我使用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=

问题

LANG空虚LC_ALL是否/正常/偏好?

通常情况下,我对此并不在意,但我有一个警告

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

当我使用GTKhere's a link to my previous quesiton on this)时。

人们一直在用许多语言(Python for example)和不同的操作系统(Ubuntu for example)来解决这个问题。

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

1 个答案:

答案 0 :(得分:2)

我猜想GTK警告是因为GTK实际上是在尝试使用系统偏好设置中的Mac语言和区域设置来创建一个区域设置标识符字符串,使用该字符串setlocale(),并被告知C库不支持该语言环境。结果,它默认为“C”语言环境。如果它没有尝试找到更好的语言环境,那么没有理由警告它正在使用“C”语言环境,因为这是LANGLC_ALL未设置时所期望的。

OS X在高级框架(Cocoa等)中支持许多语言和语言环境,但并非所有这些语言和语言环境都支持在C库级别。 “系统偏好设置”中的语言和区域设置是什么?您希望语言和区域设置具有哪些区域设置标识符?看看是否在locale -a的输出中(或类似地,如果在/usr/share/locale中有一个目录)。

要检查的另一件事是终端的偏好。在“设置”窗格的“高级”选项卡下,“设置启动时设置区域设置环境变量”是否设置?如果没有,那么默认情况下不会设置这些环境变量,这可能会解释您所看到的内容。如果设置已启用但您仍未获得这些环境变量,则表明终端无法找到与您的系统设置匹配的合适C库区域设置。

最后,您只需尝试将LANG设置为您要使用的内容即可。例如:

export LANG=pl_PL.UTF-8