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上提供了更多信息。
pgs*_*pgs 78
您可能需要安装该locales软件包。这将询问您要生成哪些语言环境。如果它已经安装,那么dpkg-reconfigure locales会让你生成更多的语言环境。
小智 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)
有很多关于这个主题的问答条目,但只有少数是真正有用的。信用到期的信用:
在安装了以下内容的 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.
对于那些像我一样在 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
完成工作
| 归档时间: |
|
| 查看次数: |
229297 次 |
| 最近记录: |