如何在 Debian 上安装/更改语言环境?

Hon*_*Lai 86 linux debian localization

我编写了一个 Web 应用程序,其用户界面是荷兰语。我使用系统的日期和时间例程来格式化应用程序中的日期字符串。但是,系统格式的日期字符串是英文的,但我希望它们是荷兰语,所以我需要设置系统的语言环境。我如何在 Debian 上做到这一点?我尝试设置,LC_ALL=nl_NL但似乎没有任何效果:

$ date
Sat Aug 15 14:31:31 UTC 2009
$ LC_ALL=nl_NL date
Sat Aug 15 14:31:36 UTC 2009
Run Code Online (Sandbox Code Playgroud)

我记得在我的 Ubuntu 桌面系统上设置 LC_ALL 工作正常。我是否需要安装额外的软件包才能完成这项工作,还是我这样做完全错误?

Dav*_*ley 97

编辑/etc/default/locale并将内容设置为:

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

您可以使用以下方法检查当前生成的语言环境:

locale -a
Run Code Online (Sandbox Code Playgroud)

您可以通过编辑/etc/locale.gen和取消注释要启用的语言环境的行来生成更多内容。然后你可以通过运行命令来生成它们:

locale-gen
Run Code Online (Sandbox Code Playgroud)

您可以在以下位置找到支持的语言环境列表 /usr/share/i18n/SUPPORTED

Debian wiki上提供了更多信息。

  • /var/lib/belocs/list 不存在。您需要编辑 /etc/locale.gen 或运行 dpkg-reconfigure locales。 (9认同)

pgs*_*pgs 78

您可能需要安装该locales软件包。这将询问您要生成哪些语言环境。如果它已经安装,那么dpkg-reconfigure locales会让你生成更多的语言环境。

  • 不,dpkg-reconfigure 语言环境的最后一个问题是选择默认语言环境。 (16认同)
  • 我必须像在“sudo dpkg-reconfigure locales”中一样使用“sudo”来运行它。 (2认同)

小智 36

与其他地方的大多数答案一样,此处的答案不完整。在将几个地方的信息拼凑在一起后,对我有用的是 (1) 确保我想要的语言环境可用(如果不是,则生成它)然后 (2) 将语言环境相关的环境变量设置为所需的语言环境。

就我而言,我需要以en_US.UTF-8编程方式(即非交互式)安装在 docker 容器中。ff 完成了我所需要的,但它在交互式 shell 中应该可以正常工作。

apt-get update

# Install locales package
apt-get install -y locales

# Uncomment en_US.UTF-8 for inclusion in generation
sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen

# Generate locale
locale-gen

# Export env vars
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=en_US.UTF-8" >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

在同一个 shell 上,您需要source ~/.bashrc为 env vars 立即生效。您可以通过调用locale.

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.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_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

有很多关于这个主题的问答条目,但只有少数是真正有用的。信用到期的信用:


qri*_*ris 7

在安装了以下内容的 LXC 容器上,这些答案都不适合我:

lxc-create -n sse-master -t download -n sse-master -- \
    -d debian -r jessie --arch i386
Run Code Online (Sandbox Code Playgroud)

我总是从 得到以下输出locale-gen,即不生成任何语言环境(未列出):

$ sudo locale-gen
Generating locales (this might take a while)...
Generation complete.
Run Code Online (Sandbox Code Playgroud)

运行dpkg-reconfigure locales和选择一些语言环境并没有/etc/locale.gen像我预期的那样更新。

但是,当我手动修改该文件并取消注释我想要的语言环境时,然后locale-gen开始正常工作:

$ sudo locale-gen
Generating locales (this might take a while)...
  en_GB.UTF-8... done
  en_US.UTF-8... done
Generation complete.
Run Code Online (Sandbox Code Playgroud)

我还能够像这样手动生成语言环境:

sudo localedef -i en_US -f UTF-8 en_US.UTF-8
sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8
Run Code Online (Sandbox Code Playgroud)

但这不是一个永久的解决方案:我发现在locale-gen没有该--keep-existing选项的情况下运行将删除所有此类手动生成的语言环境,即/etc/locale.gen.


Seb*_*bMa 5

对于那些像我一样在 Ubuntu 14.04 LTS 上没有/etc/locale.gen文件的人,您可以添加一个新的语言环境/var/lib/locales/supported.d/local,然后运行:

sudo dpkg-reconfigure locales

您还可以通过这种方式添加法语(例如)语言环境(而不是编辑/var/lib/locales/supported.d/local):

sudo locale-gen fr_FR fr_FR.UTF-8

添加并生成区域设置的ISO-8859-1和代码集,最后键入:UTF-8fr_FR

sudo dpkg-reconfigure locales

完成工作