我最近注意到每个控制台应用程序都在抱怨我的语言环境设置。我正在使用 openSUSE Tumbleweed x86_64。
09:39 ~ $ locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_ZA.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT=en_VI.UTF-8
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
我设置了 LC_MEASUREMENT 和 LC_TIME,这样我就能得到公制(美国早在 1866 年就采用了公制,在医学、科学和军事领域中经常使用)和 YYYY/MM/DD 时间(在我看来,这是唯一合理的方法)。此外,我已经使用这些设置很长时间了,不记得过去曾遇到过问题,但现在每次我查找某些东西时,我都会得到apropos: can't set the locale; make sure $LC_* and $LANG are correct
或
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "",
LC_ALL = (unset),
LC_MEASUREMENT = "en_VI.UTF-8",
LC_TIME = "en_ZA.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
如果我设置LC_ALL
为en_US.UTF-8
,它会关闭所有内容,但我的时间和单位会被抹去。我的理解是LC_ALL
只会破坏所有其他设置,这使得其他设置变得不那么有用。
除了说服我的同胞,我们应该放弃古老的英制计量系统和奇怪的日期元素顺序之外,我还能做些什么来说服我的电脑我真的想使用公制单位和 ISO-8601/rfc-3339 约定来表示日期吗?我尽可能使用别名(例如,alias ls='ls -AFlh --color=auto --group-directories-first --time-style=long-iso'
但使用别名date
通常会搞砸脚本),而且 KDE Plasma 6 现在将用户从 C 语言区域设置中解放出来,所以这不是世界末日,但我仍然遗漏了一些东西……