我发现,在我运行 Ubuntu Server 18.04 的家庭服务器上,我选择了相当多的区域设置,但实际上我并不需要。我只想要en_US.UTF-8
和de_DE.UTF-8
,因为整个系统配置为仅使用这些。
因此,我首先尝试了“Debian 方式”,运行dpkg-reconfigure locales
后取消选择除我实际想要的两个之外的所有选项。之后,系统会自动重新生成区域设置,但不幸的是,我选择的选项比我选择的还多:
Generating locales (this might take a while)...
de_DE.UTF-8... done
en_AG.UTF-8... done
en_AU.UTF-8... done
en_BW.UTF-8... done
en_CA.UTF-8... done
en_DK.UTF-8... done
en_GB.UTF-8... done
en_HK.UTF-8... done
en_IE.UTF-8... done
en_IL.UTF-8... done
en_IN.UTF-8... done
en_NG.UTF-8... done
en_NZ.UTF-8... done
en_PH.UTF-8... done
en_SG.UTF-8... done
en_US.UTF-8... done
en_ZA.UTF-8... done
en_ZM.UTF-8... done
en_ZW.UTF-8... done
然后我尝试直接编辑/etc/locale.gen
,但里面一切都很好,因为只有我真正想要的两个没有被注释掉,所以它应该可以工作。我已经从上到下多次检查了文件。
尽管如此,locale-gen
手动运行仍会产生与上述相同的结果。
所以我想知道这是一个错误还是一个功能?该文件可能缓存在某个地方,还是有另一个我不知道的配置文件?我已经尝试重新启动系统,但正如预期的那样,这并没有改变任何东西。
答案1
之所以有许多英语区域设置,可能是因为你安装了英语语言包。运行以下命令即可看到它们:
cat /var/lib/locales/supported.d/en
因此,缩短列表的一种方法是删除英语语言包:
sudo apt purge language-pack-en language-pack-en-base language-pack-gnome-en language-pack-gnome-en-base
答案2
我找到了一个适合我的情况的解决方案,我发现它比接受的答案。
如果我编辑我的语言环境编辑文件/etc/locale.gen
或使用命令选择它们dpkg-reconfigure locales
,当我选择一种语言的任何语言环境时,我会得到这种语言所有变体的语言环境。例如,如果我只选择en_US.UTF-8
,我会得到这个列表:
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_IL
en_IL.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_ZM
en_ZM.utf8
en_ZW.utf8
这显然不是我想要的。
我的解决方案:
使用前面的命令选择我喜欢的语言环境后,我在 中编辑特定的语言文件/var/lib/locales/supported.d/
。在我的示例中,我编辑文件/var/lib/locales/supported.d/en
,其中包含我之前显示的完整语言环境列表。我只留下了这一行:
en_US.UTF-8 UTF-8
然后我执行命令sudo dpkg-reconfigure locales -f noninteractive
,结果只得到了我喜欢的语言环境,而不是所有我不想要的变体。这适用于多种语言,我觉得对那些有很多变体的语言(西班牙语、英语等)非常有用。
我希望这对其他和我一样处于这种情况的人有所帮助。
在 Ubuntu 服务器 18.04 和 20.04 中测试。