我知道这个问题以前曾被问过,但没有一个答案适合我。
我使用 Arch Linux 和 KDE 以及 linux-zen 内核,并且我已将语言环境设置为en_US.utf-8
.
每当我打开 Konsole 时,我都会得到:
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf-8)
我怎样才能解决这个问题?
这是我的/etc/environment
:
#
# This file is parsed by pam_env module
#
# Syntax: simple "KEY=VAL" pairs on separate lines
#
LANG=en_US.utf-8
LC_ALL=C
我也在我LC_ALL
的.C
.bashrc
答案1
文件/etc/环境与系统区域设置无关,您必须编辑LC_COLLATE=C.UTF-8
.LC_ALL=C
回到过去,但您使用滚动版本。
当使用sysvinit
或openrc
或类似的东西时......
您的语言环境是用locale-gen
和创建的/etc/locale.gen然后传递给/etc/locale.conf和/etc/env.d/02locale
这是一个例子......
[~] cat /etc/locale.gen
C.UTF8 UTF-8
en_US ISO-8859-1
en_US.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15
de_DE.UTF-8 UTF-8
[~] cat /etc/locale.conf
# Configuration file for eselect
LANG="de_DE.utf8"
LC_COLLATE="C.UTF-8"
[~] cat /etc/env.d/02locale
# Configuration file for eselect
LANG="de_DE.utf8"
LC_COLLATE="C.UTF-8"
[~] ls -l /etc/env.d/02locale
lrwxrwxrwx 1 root root 14 1. Aug 20:10 /etc/env.d/02locale -> ../locale.conf
通过运行验证所选区域设置是否可用locale -a
,验证可用性后,您可以运行source /etc/profile
以动态更新系统。
注意:区域设置将保存到/usr/lib/locale/区域设置存档并可以通过 进行检查localedef --list-archive
。
当使用systemd
...
- 使用 获取可用区域设置的列表
localectl list-locales
。 - 如果需要,可以通过
localectl set-locale LANG=de_DE.utf8
和设置所需的区域设置。localectl set-locale LC_COLLATE=C.UTF-8
- 使用 检查结果
localectl
。