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 Wiki上有更多可用信息。
评论
/ var / lib / belocs / list不存在。您需要编辑/etc/locale.gen或运行dpkg-reconfigure语言环境。
–pgs
09年8月16日在2:44
+1了这个用于描述locale-gen的答案,但是按照前面的评论,我的系统上没有/ var / lib / belocs / list这样的文件
– telent
2011年7月12日在19:52
我花了5个小时才找到这个答案,最终还是很完美的。此外,它允许创建别名:en_US UTF-8和it_IT UFT-8默认情况下允许我将语言环境设置为UTF-8,如果您拥有依赖于语言环境的PHP代码,这很好
–Cec
17年5月19日在8:25
是否有一个命令或软件包可以编辑和设置/ etc / default / locale的内容?
–卡尔·莫里森(Karl Morrison)
18年2月15日在12:27
请参阅以下沙皇的答案。您可以这样做:sed -i's / ^#*(en_US.UTF-8)/ \ 1 /'/etc/locale.gen
– Tobias Gaertner
18年8月30日在10:17
#2 楼
您可能需要安装locales
软件包。这将询问您要生成哪些语言环境。如果已经安装,则dpkg-reconfigure locales
将让您生成更多语言环境。评论
那只会生成语言环境,而不会设置系统默认值。
–大卫·帕什利(David Pashley)
09年8月15日在15:54
否,dpkg-reconfigure语言环境的最后一个问题是选择默认语言环境。
–pgs
09年8月16日在2:42
我必须在sudo dpkg-reconfigure语言环境中使用sudo运行它。
– Alex Yursha
17年8月23日在4:56
如果是通过ssh访问的服务器,则有关语言环境的Debian Wiki页面建议保留默认语言环境为NONE。
–Paul Rougieux
17年12月13日在21:16
这正是我所需要的:只需几次按键就可以安装所有语言环境。非常感谢!
– aexl
18年6月14日在10:24
#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\)//' /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上,您需要对env vars执行
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
关于此主题的问答集很多,但实际上只有少数问答有用。信用到期的地方:
https://unix.stackexchange.com/a/247019/21289
https://perlgeek.de/en/article/set -up-a-clean-utf8-环境
评论
当需要在官方Microsoft映像中运行的dotnet应用程序需要区域设置时,这对我们有用。
–索比昂·拉文·安德森(ThorbjørnRavn Andersen)
19-11-25在15:26
在设置Docker容器时,这对我有用。但是,在执行locale-gen之后,我没有以root用户身份更新locale LANG = en_US.utf8,而是将环境范围的LANG = en_US.utf8添加到〜/ .bashrc中,从而将系统范围的语言环境设置为新用户。
– wind39
20-05-14在19:52
#4 楼
在安装了以下命令的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
中未列出(且未注释)的每个语言环境。 >#5 楼
对于Web应用程序,最好在程序内部使用setlocale(),而不是要求在外部适当地设置系统默认语言环境。这样减少了松动的末端。评论
如果系统没有要求的语言环境,则setlocale将不起作用。
–教父
18年8月6日在12:53
#6 楼
对于像我一样在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
完成工作
评论
感谢您提及support.d / local文件,我在那里找到了不必要的定义。花了我很长时间才找到:/
–阿凡达(Avamander)
20年6月4日在13:24
#7 楼
但是首先,您需要安装语言包。在我的德语VPS上没有预安装英语包。因此,首先您要检查是否已安装:aptitude install language-pack-en
#8 楼
注意:以下某些命令需要root特权,请考虑使用sudo
。基本信息
根据
man locale-gen
,语言环境设置在多个文件中。/etc/locale.gen
主配置文件,格式简单:每行不为空且不以#开头的行将被视为要构建的语言环境定义。
/var/lib/locales/supported.d/
包含语言环境的目录语言包软件包提供的.gen代码段。不要手动编辑它们,它们会在软件包升级时被覆盖。
Arch Wiki上有关语言环境的全面详细信息。
检查语言环境和语言环境
要检查(已)生成的语言环境,请运行以下任何命令(输出会有细微的差别)。
locale -a
localedef --list-archive
localectl list-locales
要检查当前使用的语言环境,请运行以下任何命令(输出差异很小)。
locale
localectl
设置和生成(新)语言环境
通常由
/etc/locale.gen
中的注释行设置,然后需要运行locale-gen
。 nano /etc/locale.gen # uncomment desired lines (locales)
locale-gen
这将为每个未注释的内容生成语言环境文件
或者,命令
/etc/locale.gen
w取消注释
/var/lib/locales/supported.d/
中的相应行,同时生成所需的语言环境。删除语言环境
要删除
locale-gen <locale>
中的语言环境,只需注释所需的行并使用locale-gen
重新生成语言环境。命令/etc/locale.gen
不会执行修饰符所建议的操作。要删除
locale-gen
下的语言环境会比较棘手。由于任何文件locale-gen --purge <locale>
都依赖于软件包/var/lib/locales/supported.d/
,因此对前者的任何更改都将在更新后者时恢复。解决方法。为防止在
/var/lib/locales/supported.d/<code>
下进行更改,请在其中使用“不可变(i)”属性设置文件。因此,不要删除文件,而是将它们清空。例如: language-pack-<code>-base
设置语言环境
设置和生成语言环境不会设置系统语言环境。以下任何命令均可实现此目的。
/var/lib/locales/supported.d/
评论
这是从这里来的。
–vitaminace33
20-10-11在14:47
不是归属,职位也是我的。
–vitaminace33
20-10-11在15:31
啊,很抱歉,我没有访问该链接。
– Glorfindel
20-10-11在15:33
评论
有没有一种方法可以根据服务器分配的IP地址自动执行此操作?以标准方式设置Debian语言环境:sudo dpkg-reconfigure语言环境。