我编写了一个用户界面为荷兰语的 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 可以正常工作。我是否需要安装额外的软件包才能完成这项工作,还是我做错了?
编辑
/etc/default/locale
并将内容设置为:您可以使用以下命令检查当前生成的语言环境:
您可以通过编辑
/etc/locale.gen
和取消注释要启用的语言环境的行来生成更多内容。然后您可以通过运行以下命令生成它们:您可以在以下位置找到支持的语言环境列表
/usr/share/i18n/SUPPORTED
Debian wiki上提供了更多信息。
您可能需要安装该
locales
软件包。这将询问您要生成哪些语言环境。如果它已经安装,那么dpkg-reconfigure locales
会让你生成更多的语言环境。与其他大多数地方一样,这里的答案是不完整的。在将几个地方的信息拼凑在一起之后,对我有用的是(1)确保我想要的语言环境可用(如果不是,则生成它)然后(2)将与语言环境相关的环境变量设置为所需的语言环境。
就我而言,我需要以
en_US.UTF-8
编程方式(即非交互方式)安装在 docker 容器中。ff 完成了我所需要的,但它应该在交互式 shell 中工作得很好。在同一个 shell 上,您需要
source ~/.bashrc
为 env var 立即生效。您可以通过调用来检查区域设置是否正确locale
。关于这个主题有很多问答条目,但实际上只有少数有帮助。信用到期的信用:
在安装有以下内容的 LXC 容器上,这些答案都不适合我:
我总是得到以下输出
locale-gen
,即不生成任何语言环境(未列出):运行
dpkg-reconfigure locales
和选择一些语言环境并没有/etc/locale.gen
像我预期的那样更新。但是,当我手动修改该文件并取消注释我想要的语言环境时,然后
locale-gen
开始正常工作:我还能够像这样手动生成语言环境:
但这不是一个永久的解决方案:我发现在
locale-gen
没有该--keep-existing
选项的情况下运行将删除所有此类手动生成的语言环境,即在/etc/locale.gen
.对于 Web 应用程序,最好在程序内部使用setlocale () ,而不是要求在外部适当地设置系统默认语言环境。这样就少了一些松散的结局。
对于像我一样在 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
完成工作
注意:以下某些命令需要 root 权限,请考虑使用
sudo
.基本信息
根据
man locale-gen
,语言环境设置在几个文件中。Arch Wiki上有关语言环境的全面详细信息。
检查语言环境和语言环境
要检查(已经)生成的语言环境,请运行以下任何命令(输出差异很小)。
要检查当前使用的语言环境,请运行以下任何命令(输出差异很小)。
设置和生成(新)语言环境
语言环境通常通过取消注释中的行来设置
/etc/locale.gen
,之后locale-gen
需要运行。这将为
/etc/locale.gen
(和下/var/lib/locales/supported.d/
)中每个未注释的行生成语言环境文件,无论它们先前是否生成。或者,命令
将在生成所需的语言环境时取消注释相应的行,
locale-gen
并且只有这一行。删除语言环境
要删除 中的语言环境
/etc/locale.gen
,只需注释所需的行并使用 重新生成语言环境locale-gen
。该命令locale-gen --purge <locale>
不执行修饰符建议的操作。删除下面的语言环境
/var/lib/locales/supported.d/
比较棘手。由于任何文件都/var/lib/locales/supported.d/<code>
依赖于包language-pack-<code>-base
,因此对前者的任何更改都将在后者更新时恢复。解决方法。为防止在 下进行更改,请使用“不可变(i)”属性
/var/lib/locales/supported.d/
在其中设置文件。因此,与其删除文件,不如清空它们。例如:设置语言环境
设置和生成语言环境不会设置系统语言环境。以下任何命令都可以实现此目的。
但首先您需要安装所需的语言包。在我的德语 VPS 上,没有预装英语语言包。所以首先你检查你是否安装了它: