如何将语言环境添加到 ubuntu 服务器?

Sil*_*ght 217 server locale

我目前有这些语言环境:

locale -a

C
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZW.utf8
POSIX
Run Code Online (Sandbox Code Playgroud)

如何将ru_RU语言环境安装到我的服务器?

Poc*_*Sam 304

  1. 检查支持哪些语言环境:

    locale -a
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加您想要的语言环境(例如ru):

    sudo locale-gen ru_RU
    sudo locale-gen ru_RU.UTF-8
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行此更新命令:

    sudo update-locale 
    
    Run Code Online (Sandbox Code Playgroud)

  • ...然后运行`sudo update-locale` (30认同)
  • 如果您使用 php5-fpm,则需要 `sudo service php5-fpm restart` (16认同)
  • 如果不支持怎么办? (6认同)
  • 您能否详细说明为什么需要“ru_RU”和“ru_RU.UTF-8”?我对locales了解不多。 (6认同)
  • 出于某种原因,命令`sudo locale-gen ru_RU.UTF-8` 对我没有任何作用。作为替代方案,您可以手动编辑文件 `vi /etc/locale.gen` 以取消对所需语言环境的注释。 (6认同)
  • 这正是我所需要的,但我必须重新启动 Apache 才能使其正常工作……谢谢! (4认同)
  • @SopalajodeArrierez:默认情况下,发布没有代码集的 `locale-gen` 会生成 ISO-8859-1。 (2认同)
  • 而“update-locale”……到底是做什么的?对我来说,它生成了一个带有注释的文件。根据版本的不同,您必须执行 [`locale-gen en_US.utf8`](http://manpages.ubuntu.com/manpages/trusty/en/man8/locale-gen.8.html),或编辑 `/etc/locale.gen` 并执行 [`locale-gen`](http://manpages.ubuntu.com/manpages/bionic/en/man8/locale-gen.8.html)。此外,您可能想更改/导出 LANG 变量。`dpkg-reconfigure locales` 似乎运行 `locale-gen`,至少在可信赖的情况下是这样。物有所值。 (2认同)

Pal*_*tir 79

我会走另一条路线,IMO 更适合 Ubuntu 风格。使用提供的软件包。每个语言环境都有包,它们会为您完成所有工作……无需编辑 /var 文件,我一直认为这些文件不应该手动编辑。

sudo apt-get install language-pack-XX
Run Code Online (Sandbox Code Playgroud)

其中 XX 代表语言代码。安装一种语言还会安装所有国家/地区特定的变体(例如,安装语言包-它将安装 it_CH.utf8 和 it_IT.utf8,为 NL 安装将安装 nl_AW、nl_AW.utf8、nl_BE.utf8 和 nl_NL.utf8 )。

  • 但是生成语言环境提供了诸如本地化日期格式、小数分隔符、字符集等内容。语言包也提供翻译,这不一定是本意。 (4认同)
  • 我担心这也会*改变*当前的语言环境,但不会。一切安好。看起来是最好的方法。我并不特别_需要_“翻译或其他东西”,但如果我出于某种原因专门使用语言环境,我希望它是完整的。 (2认同)

小智 46

  1. 检查支持哪些语言环境:

    less /usr/share/i18n/SUPPORTED
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将语言环境添加到生成的列表中

    echo ru_RU.UTF8 >> /var/lib/locales/supported.d/local
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重新生成列表(它将调用 locale-gen...)

     sudo dpkg-reconfigure locales
    
    Run Code Online (Sandbox Code Playgroud)

  • 我不得不在 Ubuntu 15.04 上添加第二列:`echo ru_RU.UTF-8 UTF-8 >> /var/lib/locales/supported.d/local`(UTF-8 出现两次)。否则,它的工作原理。 (4认同)

小智 17

我发现 locale-gen 是你的朋友。如(例如添加希伯来语 utf8):

root@world:~# locale-gen he_IL.UTF-8
Run Code Online (Sandbox Code Playgroud)

你甚至可以像这样重新哈希它:

root@world:~# dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)

并检查您是否做得好:

root@world:~# locale -a
Run Code Online (Sandbox Code Playgroud)

我发现这个解决方案比向文本文件添加内容更简单,即使它就是这样做的。


小智 6

echo ru_RU.UTF8 >> /var/lib/locales/supported.d/local
Run Code Online (Sandbox Code Playgroud)

我在第 3 点收到以下消息:“错误:错误条目 'ru_RU.UTF8'”

这对我有用:

echo ru_RU.UTF-8 UTF-8 >> /var/lib/locales/supported.d/local
Run Code Online (Sandbox Code Playgroud)


use*_*735 5

使用 Ubuntu 语言包。默认存储库中提供所有支持的语言:

apt-cache search language-pack
Run Code Online (Sandbox Code Playgroud)

Ubuntu(服务器)版本中区域设置切换的完整示例:

jani@example:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
Run Code Online (Sandbox Code Playgroud)

所有可用(即已安装)的语言环境都可以列出:

locale -a
Run Code Online (Sandbox Code Playgroud)

我目前的语言环境是en_IE

jani@example:~$ locale
LANG=en_IE.UTF-8
LANGUAGE=
LC_CTYPE="en_IE.UTF-8"
LC_NUMERIC="en_IE.UTF-8"
LC_TIME="en_IE.UTF-8"
LC_COLLATE="en_IE.UTF-8"
LC_MONETARY="en_IE.UTF-8"
LC_MESSAGES=POSIX
LC_PAPER="en_IE.UTF-8"
LC_NAME="en_IE.UTF-8"
LC_ADDRESS="en_IE.UTF-8"
LC_TELEPHONE="en_IE.UTF-8"
LC_MEASUREMENT="en_IE.UTF-8"
LC_IDENTIFICATION="en_IE.UTF-8"
LC_ALL=
jani@example:~$ date
Sat Nov  1 15:36:51 UTC 2014
jani@example:~$
Run Code Online (Sandbox Code Playgroud)

因为我没有 ru 语言环境,所以我必须安装 ru 语言包:

jani@example:~$ sudo apt-get -y install language-pack-ru
[..]
Generating locales...
  ru_RU.UTF-8... done
  ru_UA.UTF-8... done
Generation complete.
jani@example:~$ 
Run Code Online (Sandbox Code Playgroud)

现在 ru 语言环境可用。系统默认语言环境是通过编辑设置的/etc/default/locale

jani@example:~$ sudo vi /etc/default/locale
# Created by cloud-init v. 0.7.5 on Mon, 27 Oct 2014 18:46:13 +0000
LANG="ru_RU.UTF-8"
LC_MESSAGES=POSIX
jani@example:~$
Run Code Online (Sandbox Code Playgroud)

重新登录并检查您的全新语言环境:

jani@example:~$ locale
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES=POSIX
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
jani@example:~$ date
??. ????.  1 15:43:45 UTC 2014
jani@example:~$ 
Run Code Online (Sandbox Code Playgroud)


hun*_*nse 5

修改/etc/locale.gen、取消注释或添加您希望生成的语言环境。然后运行sudo locale-gen

您可以检查语言环境是否添加了locale -a,这将显示所有语言环境。