我编写了一个 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 可以正常工作。我需要安装额外的软件包才能使其工作吗?还是我的做法完全错误?
答案1
编辑/etc/default/locale
并设置内容为:
LANG="nl_NL.UTF-8"
您可以使用以下命令检查当前已生成哪些语言环境:
locale -a
您可以通过编辑/etc/locale.gen
并取消注释要启用的区域设置的行来生成更多内容。然后,您可以通过运行以下命令来生成它们:
locale-gen
您可以在以下位置找到受支持的语言环境列表/usr/share/i18n/SUPPORTED
有关更多信息,请访问Debian 维基。
答案2
您可能需要安装该locales
软件包。这将询问您要生成哪些语言环境。如果已安装,则将dpkg-reconfigure locales
允许您生成更多语言环境。
答案3
这里的答案和其他地方的答案一样不完整。在从几个地方拼凑信息后,对我有用的是 (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
关于这个主题有很多问答条目,但只有少数真正有帮助。值得称赞的是:
答案4
对于像我一样在 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-8
fr_FR
sudo dpkg-reconfigure locales
完成工作