AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 54591
Accepted
Hongli Lai
Hongli Lai
Asked: 2009-08-16 06:42:32 +0800 CST2009-08-16 06:42:32 +0800 CST 2009-08-16 06:42:32 +0800 CST

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

  • 772

我编写了一个用户界面为荷兰语的 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 可以正常工作。我是否需要安装额外的软件包才能完成这项工作,还是我做错了?

linux
  • 8 8 个回答
  • 269923 Views

8 个回答

  • Voted
  1. Best Answer
    David Pashley
    2009-08-16T07:56:47+08:002009-08-16T07:56:47+08:00

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

    LANG="nl_NL.UTF-8"
    

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

    locale -a
    

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

    locale-gen
    

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

    Debian wiki上提供了更多信息。

    • 110
  2. pgs
    2009-08-16T07:47:45+08:002009-08-16T07:47:45+08:00

    您可能需要安装该locales软件包。这将询问您要生成哪些语言环境。如果它已经安装,那么dpkg-reconfigure locales会让你生成更多的语言环境。

    • 87
  3. Czar
    2018-01-29T19:58:51+08:002018-01-29T19:58:51+08:00

    与其他大多数地方一样,这里的答案是不完整的。在将几个地方的信息拼凑在一起之后,对我有用的是(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为 env var 立即生效。您可以通过调用来检查区域设置是否正确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-environment
    • 47
  4. qris
    2015-05-25T06:54:03+08:002015-05-25T06:54:03+08:00

    在安装有以下内容的 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.

    • 9
  5. SamB
    2012-02-08T15:00:00+08:002012-02-08T15:00:00+08:00

    对于 Web 应用程序,最好在程序内部使用setlocale () ,而不是要求在外部适当地设置系统默认语言环境。这样就少了一些松散的结局。

    • 4
  6. SebMa
    2019-02-10T05:56:34+08:002019-02-10T05:56:34+08:00

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

    完成工作

    • 3
  7. vitaminace33
    2020-10-12T06:06:44+08:002020-10-12T06:06:44+08:00

    注意:以下某些命令需要 root 权限,请考虑使用sudo.

    基本信息

    根据man locale-gen,语言环境设置在几个文件中。

    /etc/locale.gen

    主配置文件,具有简单的格式:每行不为空且不以 # 开头的行都被视为要构建的语言环境定义。

    /var/lib/locales/supported.d/

    包含语言包提供的 locale.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(和下/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>依赖于包language-pack-<code>-base,因此对前者的任何更改都将在后者更新时恢复。

    解决方法。为防止在 下进行更改,请使用“不可变(i)”属性/var/lib/locales/supported.d/在其中设置文件。因此,与其删除文件,不如清空它们。例如:

    cd /var/lib/locales/supported.d/
    rm <code> && touch <code> # <code> has been emptied
    lsattr <code>    # regular attributes
    chattr +i <code> # adding (+) immutable
    lsattr <code>    # checking attributes
    

    设置语言环境

    设置和生成语言环境不会设置系统语言环境。以下任何命令都可以实现此目的。

    echo LANG=<code> | sudo tee /etc/locale.conf # reboot (might be ignored in Ubuntu)
    localectl set-locale LANG=<code>
    
    • 2
  8. valentt
    2015-04-21T09:14:14+08:002015-04-21T09:14:14+08:00

    但首先您需要安装所需的语言包。在我的德语 VPS 上,没有预装英语语言包。所以首先你检查你是否安装了它:

    aptitude install language-pack-en
    
    • 1

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve