it-swarm.cn

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

我已经编写了一个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

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

67
Hongli Lai

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

LANG="nl_NL.UTF-8"

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

# locale -a

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

# locale-gen

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

Debian Wiki 上有更多可用信息。

77
David Pashley

您可能需要安装locales软件包。这将询问您要生成哪些语言环境。如果已安装,则dpkg-reconfigure locales将使您生成更多语言环境。

68
pgs

像大多数其他地方一样,这里的答案不完整。在将来自几个地方的信息拼凑在一起之后,对我有用的是(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

在同一Shell上,您需要执行source ~/.bashrc使环境变量立即生效。您可以通过调用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

关于此主题的问答集很多,但实际上只有少数有用。信用到期的地方:

17
Czar

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

lxc-create -n sse-master -t download -n sse-master -- \
    -d debian -r jessie --Arch i386

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

$ Sudo locale-gen
Generating locales (this might take a while)...
Generation complete.

运行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.

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

Sudo localedef -i en_US -f UTF-8 en_US.UTF-8
Sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8

但是,这不是一个永久性的解决方案:我发现,不带locale-gen选项运行--keep-existing会删除所有此类手动生成的语言环境,即/etc/locale.gen中未列出(且未注释)的每个语言环境。

6
qris

对于Web应用程序,最好使用setlocale()inside程序,而不是要求在外部适当地设置系统默认语言环境。这样减少了松动的末端。

3
SamB

对于像我一样在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

完成工作

1
SebMa

但是首先,您需要安装语言包。在基于德语的VPS上,没有预安装英语包。因此,首先您要检查是否已安装:

aptitude install language-pack-en
1
valentt