locale-gen 生成未选择的区域设置

locale-gen 生成未选择的区域设置

我发现,在我运行 Ubuntu Server 18.04 的家庭服务器上,我选择了相当多的区域设置,但实际上我并不需要。我只想要en_US.UTF-8de_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 中测试。

相关内容