linux-修改系统默认语言为中文
上一级页面:wsl2设置中文语言-更换中文字体-进行中文优化
前言
Arch Linux可以查看WikiLocale (简体中文) - ArchWiki (archlinux.org)
本文均在Ubuntu/Debian环境下测试
安装和设置中文语言包language-pack-zh-hans
中文语言包可以让界面成功显示中文,但显示出的中文可能呈现乱码,乱码需要通过安装中文字体解决
如果没有中文语言包,可以通过网上下载安装中文语言包(不能联网的通过其他电脑下载,上传上去吧)
ubuntu的中文语言包样式示例:
# 简体中文
language-pack-zh-hans
#繁体中文
language-pack-zh-hant
安装中文语言包
sudo apt install language-pack-zh-hans
(可选)安装gnome的中文语言包,gnome-keyring会用到
sudo apt install language-pack-gnome-zh-hans
系统区域设置(locale)
在 /etc/locale.conf
中写入 LANG
变量,为了防止 tty 乱码
不推荐把全局的 LANG
设置为中文,即 LANG=zh_CN.UTF-8
,因为这样设置会导致 tty 乱码。
您可以在以下文件中找到全局区域设置:
- /etc/default/locale - 在Ubuntu / Debian上
- /etc/locale.conf - 在CentOS / RHEL / Arch Linux 上
# 在Ubuntu / Debian上
sudo vim /etc/default/locale
# 在CentOS / RHEL / Arch Linux 上
sudo vim /etc/locale.conf
设置LANG="en_US.UTF-8"
。
LANG=en_US.UTF-8
- 不要设置为
LANG=zh_CN.UTF-8
。见Localization (简体中文)/Simplified Chinese (简体中文) - ArchWiki (archlinux.org)
在用户会话中覆盖系统区域设置(locale)
在每个用户的配置文件上,设置每个用户单独的 locale。见Locale (简体中文) - ArchWiki (archlinux.org)
# 或者是其他的用户配置文件,这里以zsh为例
sudo vim ~/.zprofile
export LANG="zh_CN.UTF-8"
export LANGUAGE="zh_CN:zh:en_US:en"
# 其他
export LC_NUMERIC="zh_CN.UTF-8"
export LC_TIME="zh_CN.UTF-8"
export LC_MONETARY="zh_CN.UTF-8"
export LC_PAPER="zh_CN.UTF-8"
export LC_NAME="zh_CN.UTF-8"
export LC_ADDRESS="zh_CN.UTF-8"
export LC_TELEPHONE="zh_CN.UTF-8"
export LC_MEASUREMENT="zh_CN.UTF-8"
export LC_IDENTIFICATION="zh_CN.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"
1、字符输入(LC_CTYPE)
2、数字(LC_NUMERIC)
3、比较和排序习惯(LC_COLLATE)
4、时间显示格式(LC_TIME)
5、货币单位(LC_MONETARY)
6、信息:主要是提示信息,错误信息,状态信息,标题,标签,按钮和菜单等(LC_MESSAGES)
7、姓名书写方式(LC_NAME)
8、地址书写方式(LC_ADDRESS)
9、电话号码书写方式(LC_TELEPHONE)
10、度量衡表达方式 (LC_MEASUREMENT)
- 需要注意的是,有些终端不支持显式设置为UTF-8,详见Locale (简体中文) - ArchWiki (archlinux.org)的疑难解答部分
- 有些终端必须显式设置为UTF-8。若不显式的设置为UTF-8,则会按照字母顺序排序,来决定实际的字符格式。例如:设置
export LC_ADDRESS="zh_CN.UTF-8"
,系统存在zh_CN.GBK
和zh_CN.UTF-8
的情况下,会优先使用GBK
(字母顺序靠前)
设置 Locale
Locale
决定了软件使用的语言、书写习惯和字符集。
- 编辑
/etc/locale.gen
,去掉en_US.UTF-8 UTF-8
以及zh_CN.UTF-8 UTF-8
行前的注释符号(#
):
vim /etc/locale.gen
注意是这两项
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
运行命令
sudo locale-gen --purge
重启机器
sudo /sbin/shutdown -r now
语言支持检查
安装language-selector-common
sudo apt-get install language-selector-common
输出语言支持检查的结果
echo $(check-language-support)
输出结果如下
fcitx-module-cloudpinyin fcitx-ui-qimpanel fonts-noto-cjk fonts-noto-cjk-extra
安装它们
sudo apt install fcitx-module-cloudpinyin fcitx-ui-qimpanel fonts-noto-cjk fonts-noto-cjk-extra
(可选)设置为自动
sudo apt-mark auto fcitx-module-cloudpinyin fcitx-ui-qimpanel fonts-noto-cjk fonts-noto-cjk-extra
小结
至此问题已经解决,下面我们验证一下,如下面所示,通过locale命令时,已不再提示“No such file or directory”
locale
# locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh:en_US:en
LC_CTYPE=zh_CN.UTF-8
LC_NUMERIC=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_ALL=
locale -a
# locale -a
C
C.UTF-8
en_US.utf8
POSIX
zh_CN.utf8
注意:其他的Linux发行版如debian可能还需要这么做:
Vi /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
重启系统
sudo /sbin/shutdown -r now
LC_ALL:测试和排除问题
注意: 不推荐使用 export LC_ALL
来覆盖所有 locale 设置,LC_ALL
应该仅用于诊断调试,全局设置 LC_ALL
会为诊断语言设置问题带来不必要的困难。
这个变量的值会覆盖掉 LANG
和所有 LC_*
变量的值,无论它们是否设置。
只有 LC_ALL
不能出现在全局配置文件文件中:它只能为了测试和排除问题而设置。
其中LC_ALL
应当作为临时修改,即在运行程序之前手动指定环境变量,
很明显,LC_ALL
变量应当且只应当在程序出现问题后,测试和排除问题时临时设置环境变量
在运行程序之前,在命令行输入
export LC_ALL="zh_CN.UTF-8"
locale-gen
文件详解
输入命令查找locale-gen的目录
whereis locale-gen
注意到/usr/sbin/locale-gen
,打开这个文件
sudo vim /usr/sbin/locale-gen
注意到这几个配置文件
LOCALEGEN=/etc/locale.gen
LOCALES=/usr/share/i18n/locales
USER_LOCALES=/usr/local/share/i18n/locales
SUPPORTED=/var/lib/locales/supported.d
ALIASES=/usr/share/locale/locale.alias
解释:
/etc/locale.gen
是由命令dpkg-reconfigure locales
自动生成的配置文件,在ubuntu/debian系中可以删除,然后使用命令dpkg-reconfigure locales
重新生成即可/var/lib/locales/supported.d
,自定义要生成的语言列表,在supported.d
可以新建任意的文件如vim hans
,然后写上要生成的文件列表如zh_CN.UTF-8 UTF-8
/usr/share/i18n/locales
,核心配置文件,将字符串zh_CN
与对应的编码对应起来,不要去动它/usr/local/share/i18n/locales
,作用同/usr/share/i18n/locales
,不要去动它/usr/share/locale/locale.alias
,为语言添加别名,没有需要的话,不要去动它
/var/lib/locales/supported.d/
查看/var/lib/locales/supported.d/
ll /var/lib/locales/supported.d/
该目录包含language-pack软件包提供的locale.gen代码段。
这个目录下的所有文件,应当是由language-pack软件包自动生成的,不建议手动添加新文件
language-pack
例如前文的language-pack-zh-hans
以ubuntu为例,里面有一个文件zh-hans
尝试输出这个文件到终端
bat zh-hans
输出如下:
# bat zh-hans
───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: zh-hans
───────┼──────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ zh_CN.UTF-8 UTF-8
2 │ zh_SG.UTF-8 UTF-8
───────┴────────────────────────────────────────────────────────────────
我这包含zh_CN.UTF-8 UTF-8
和zh_SG.UTF-8 UTF-8
。
之后的操作
参考、引用、致谢
如何在 Linux 上管理字体 - 知乎 (zhihu.com)
优化中文显示 · GitBook (thoughtworks.cn)
使用X11 Forwarding在WSL 2中运行GUI程序 | ddadaal.me
(23条消息) linux 字体库配置,添加自定义字体库_Ternence_Hsu的博客-CSDN博客_font.conf
Ubuntu 16.04安装字体管理工具 - EasonJim - 博客园 (cnblogs.com)
https://linux.cn/article-4732-1-rss.html
http://www.linuxidc.com/Linux/2014-05/101191.htm
http://blog.csdn.net/tao_627/article/details/45114827
(23条消息) ubuntu server 安装相应图形化界面程序_Blithe的博客-CSDN博客
linux中文乱码问题解决 - 简书 (jianshu.com)
在Windows默认缩放比例和WSL GUI应用程序(HiDPI)上使用模糊字体 | 码农俱乐部 - Golang中国 - Go语言中文社区 (mlog.club)
如何优雅的在Windows 10上装X [Lainme's Blog]
在 WSL 上配置輸入法 | Patrick Wu's Space
Ubuntu安装搜狗输入法无法使用 - OSCHINA - 中文开源技术交流社区
Ubuntu 14.04 安装小企鹅输入法 Fcitx - linux_magnetic_storm - OSCHINA - 中文开源技术交流社区
(24条消息) Ubuntu 一键安装搜狗输入法!全网唯一!_Linux猿的博客-CSDN博客
(24条消息) locale的设定中LANG、LC_ALL、LANGUAGE_天下皆白_唯我独黑的博客-CSDN博客