少于 1 分钟阅读 次阅读

问题描述

Ubuntu xfce在语言支持中设置中文后汉化不全,右键菜单、应用程序等仍为英文。 language-pack-zh-hans language-pack-gnome-zh-hans显示都已经安装。

问题分析

这种情况大概是因为使用Ubuntu base构建了精简版的根文件系统,为了压缩体积,官方在打包时直接剔除了所有的本地化文件(Locales)、多语言包、说明文档(man pages)以及非核心的缓存机制。它的默认且唯一的语言环境就是纯英文(POSIX/C)。

解决方式

sudo unminimize

命令执行过程

1. 解除 dpkg 的全局过滤规则

在日志的开头:

Re-enabling installation of all documentation in dpkg...

ubuntu-base 为了追求极小的体积,默认在 /etc/dpkg/dpkg.cfg.d/ 目录下配置了过滤规则(例如 path-exclude=/usr/share/locale/*),强制系统在安装软件时丢弃所有的翻译文件、帮助文档(man pages)和额外字体。unminimize 脚本的第一步就是删除了这些限制规则,恢复了系统接收多语言文件的能力。

2. 生成目标语言环境 (Locale)

在日志的中段,系统自动完成了 Locale 的重新配置:

Generating locales (this might take a while)... ` zh_CN.UTF-8… done`

这相当于系统在后台自动为你执行了 locale-gen 命令,正式在系统底层编译并启用了 UTF-8 编码的简体中文支持。

3. 强制重装以拉取翻译文件 (核心步骤)

这是耗时最长,也是最关键的一步。仔细看日志中的统计:

升级了 0 个软件包,新安装了 0 个软件包, 重新安装了 278 个软件包... Restoring system translations... 重新安装了 33 个软件包...

系统并没有安装新的软件,而是将你系统里已经存在的核心组件(包括 xfce4, thunar, libc6, glib 等等)强制执行了 Reinstall。因为第一步已经解除了 dpkg 的过滤限制,这次重新安装会将这些软件原本被剥离的中文 .mo 语言包文件和自带的 .desktop 文件完整地下载并解压到你的文件系统中。

4. 自动触发全局缓存刷新 (Triggers/Hooks)

在日志的末尾,出现了大量的触发器(Triggers)执行记录:

正在处理用于 desktop-file-utils (0.24-1ubuntu3) 的触发器 ... 正在处理用于 gnome-menus (3.36.0-1ubuntu1) 的触发器 ... 正在处理用于 hicolor-icon-theme (0.17-2) 的触发器 ...

留下评论