debian/ubuntu 语言环境和语言设置

And*_*asT 5 debian ubuntu

这个自我回答的问题解决了以下问题:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Run Code Online (Sandbox Code Playgroud)

以及其他一些与语言环境相关的问题。

编辑:回想起来,将其限制为我自己的答案似乎效率很低。请随意添加您的 2cents。或者尽可能多的......

And*_*asT 10

我们完全在 shell (bash) 中工作。

每个人都应该做的第一件事是

sudo dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)

输出可能是上面提到的错误和脚本生成的语言环境列表。请注意,在那里生成的语言环境是唯一对您的系统有效的语言环境。如您所见,语言设置只是一堆环境变量。为了好玩,您可以尝试不同的语言 bash,如下所示:

LANG=es_NI.UTF-8 bash
ls somedirectorynamethatdoesnotexistonyoursystem
Run Code Online (Sandbox Code Playgroud)

Tu hablas espaniol?:-)(如果 es_NI.UTF-8 不在您的语言环境列表中,请选择另一个)

好的。显然 LANG 环境变量有助于其余的设置,因为,在我们的西班牙文 bash 中,我们现在可以做

dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)

或者任何错误消息引导你到这里的命令,应该没有错误。如果有,那么这篇文章将不会涵盖更险恶的错误。

那么,我们在哪里设置这个变量 LANG?快速搜索/etc/目录(使用rgrep LANG /etc/*)将我们带到文件/etc/default/locale. 在那里您可以将变量的值设置为不同/正确的值。例如

LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

(那个应该总是有效)要完成这个:错误消息中提到的变量,全部“派生”自 LANG,这意味着它们默认为 LANG 设置的任何值,但如果你想要你的 shell,你可以根据自己的喜好设置它们说一种不同的语言。包 language-env 对此有所帮助。

sudo apt-get install language-env
set-language-env
Run Code Online (Sandbox Code Playgroud)

该脚本旨在为您的 .bashrc 等自动创建条目。

我自己没试过。

我希望这可以帮助别人。

顺便提一句:

  1. 您可以在下面找到生成的语言环境 ls usr/share/locale