我正在使用 openSUSE Tumbleweed,我正在尝试将我的时间普遍更改为 24 小时制。主要用于 KDE 锁屏,还有其他的东西。
我的第一次尝试是在 /etc/sysconfig/language(通过 YaST)中设置 RC_LC_TIME="en_GB",但没有意识到“TIME”也会影响日期,所以现在我在 Thunderbird 中的日期字段是 DD/MM/YYYY,即迷失方向。
接下来,我尝试遍历所有语言环境以查看其他选项可能有效:
cd /usr/share/locale
for f in *; do echo -e "$f\t$(LC_TIME=$f date +"%A %B %c")";done | grep "Tuesday December Tue Dec" | grep -v "[AP]M" | less
这给了我很多选择,其中最明显的是“en”。所以我尝试了,但现在我在登录时收到以下错误:
-bash: warning: setlocale: LC_TIME: cannot change locale (en): No such file or directory
-bash: warning: setlocale: LC_TIME: cannot change locale (en)
/usr/bin/manpath: can't set the locale; make sure $LC_* and $LANG are correct
因此,在我查看语言环境列表试错以查看哪些有效之前,这里的正确方法是什么?我只想要 en_US 但有 24 小时时间。
en
不是语言环境名称。并非所有目录/usr/share/locales
都是语言环境名称。有些包含由多个语言环境共享的数据。例如,en
包含所有变体英语语言使用的文件。大多数语言环境名称都有格式,例如(美国英语)、(英国英语)、(加拿大英语)等。
language_REGION
en_US
en_GB
en_CA
要获取(基于 Glibc,即非嵌入式 Linux)系统上可用的语言环境列表,请运行
在某些系统上(至少在 Debian 和衍生系统上),并非所有语言环境都可以默认使用。
locale -a
仅列出可供使用的语言环境。完整的语言环境列表可在/usr/share/i18n/SUPPORTED
. 如果要准备好语言环境,请运行locale.gen
. (检查系统上的手册页:不同的版本有不同的语法。)您可以在可用的语言环境中搜索具有所需属性的语言环境。有关语言环境的信息位于
/usr/share/i18n/locales/
. 您需要一个默认日期格式为%m
before%d
、默认时间格式为 24 小时制且工作日名称为英文的格式。这是一个脚本,它搜索可用的语言环境并报告具有前一个月日期和英语工作日的那些。我的系统上的输出:
%r
是 12 小时制,%T
是 24 小时制。所以en_DK
语言环境有你想要的属性。您可能想要指定文本编码,可能是en_DK.UTF-8
.经过额外的故障排除后,我意识到这
ls /usr/share/locale
不是我应该测试的,而是$(localectl list-locales)
. 运行相同的循环给了我一个答案:C.UTF8。据我所知,这是我希望的工作。但我仍然想知道这是否是最好的方法。