只是想知道我在这个 CentOS 7 系统上的情况:
$ locale -a
<snip>
en_US.utf8
<snip>
Run Code Online (Sandbox Code Playgroud)
但是:
$ localectl
System Locale: LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
除此之外,根据 X11 (/usr/share/X11/locale/locale.dir) 的首选名称是:
$ grep 'en_US.UTF-8$' /usr/share/X11/locale/locale.dir
en_US.UTF-8/XLC_LOCALE en_US.UTF-8
en_US.UTF-8/XLC_LOCALE: en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
幸运的是 en_US.utf8 有一个别名:
$ grep 'en_US.utf8' /usr/share/X11/locale/locale.alias
en_US.utf8 en_US.UTF-8
en_US.utf8: en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
其他一些就没有那么幸运了,例如 ru_UA.utf8:
$ locale -a | grep ru_UA.utf8
ru_UA.utf8
$ grep 'ru_UA.utf8' /usr/share/X11/locale/locale.alias
$ grep 'ru_UA.UTF-8' /usr/share/X11/locale/locale.dir
en_US.UTF-8/XLC_LOCALE ru_UA.UTF-8
en_US.UTF-8/XLC_LOCALE: ru_UA.UTF-8
Run Code Online (Sandbox Code Playgroud)
如果所选语言环境不在 X11 locale.alias 中,这有点烦人的原因是 GDM(或 gnome-session?)强制使用“utf8”版本,用如下消息破坏 X 程序:“警告:语言环境不是Xlib 支持,语言环境设置为 C”。我可以只编辑 /usr/share/X11/locale/locale.alias,但是如果能获得更多关于哪个版本真正正确的信息会很好。