locale-gen 不起作用

locale-gen 不起作用

因为我需要我的语言环境fa_IR.UTF-8Ubuntu Server所以我尝试通过它进行安装,(sudo) locale-gen "fa_IR.UTF-8"但没有得到任何输出:

user@s1:~# sudo locale-gen "fa_IR.UTF-8"
user@s1:~#

并且它没有向我的语言环境添加任何语言环境!

当我尝试在我的上安装新的语言环境时,Ubuntu Desktop我没有收到此错误并且它运行良好!如下所示:

user@s1:~# sudo locale-gen "fa_IR.UTF-8"
Generating locales...
  fa_IR.UTF-8... done
Generation complete.
user@s1:~# 

请帮帮我,这是什么问题,我该怎么办?

答案1

最后我通过手动做一些事情找到了解决方案:

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

    less /usr/share/i18n/SUPPORTED
    
  2. 将语言环境添加到生成的列表中

    (sudo) echo fa_IR.UTF-8 UTF-8 >> /var/lib/locales/supported.d/local
    
  3. 重新生成列表(它将调用 locale-gen...)

     (sudo) dpkg-reconfigure locales
    

答案2

发生这种情况的原因是,相当多的 UTF-8 语言环境的名称/usr/share/i18n/SUPPORTED不包含代码集部分“.UTF-8”,而 fa_IR 就是其中之一。

$ grep -E '[a-z]+_[A-Z]+ UTF-8' /usr/share/i18n/SUPPORTED | grep fa
fa_IR UTF-8

在 Ubuntu 16.04 中locale-gen 脚本已更改,因此用户不需要知道 SUPPORTED 中的确切命名。因此在 16.04 中这将起作用:

sudo locale-gen fa_IR.UTF-8

对于以前的 Ubuntu 版本,创建这些区域设置之一的最简单方法是根据 SUPPORTED 使用确切的名称,例如:

sudo locale-gen fa_IR

所以,AbdolHosein,你的问题帮助我们改进了 Ubuntu。谢谢你。:)

答案3

据我根据手册页理解,local-gen 不接受任何参数,因此例如 sudo locale-gen "de_DE.UTF-8" 不执行任何操作。

man locale-gen

locale-gen 是一个程序,读取文件 /etc/locale.gen并调用 localedef 来获取所选的本地化配置文件。运行 locale-gen修改 /etc/locale.gen 文件后

解决方案很简单,使用以下命令修改 /etc/locale.gen:

echo "de_DE.UTF-8 UTF-8" | sudo tee -a /etc/locale.gen
sudo locale-gen de_DE.UTF-8

更新:根据 Gunnar Hjalmarsson 的评论,参数在 Ubuntu 中是可能的,但未反映在手册页中。这个答案可能仍然适用于从他们的 ubuntu 机器配置其他系统并想知道为什么它们没有按预期运行(就像我遇到的那样)的人。

相关内容