【Arch Linux】本地化:简体中文

https://blog.imakiseki.cf/techdev/arch/localization-simplified-chinese/

看来这里的 Markdown 加入了脚注,但我的博客还没有,有空还要把主题修一修。

(好像不太对劲,预览区和实际渲染出来的效果还不一样——实际渲染出来后脚注变成了旁注。)

在这里补充一下:Linux 的本地化经常会出现各种各样的问题,尚且不论不同的发行版,甚至不同的设备出现的情况都可能大不相同。这个时候一定要善用各种搜索引擎(包括 GitHub、Stack Overflow 之类),根据错误信息按图索骥,找到 workaround。


本文主要介绍 Arch Linux 本地化为简体中文的操作。

本文的测试环境是 KDE Plasma + SDDM + Wayland。考虑到 Xorg 教程较多,且大部分操作通用,本文会存在 Xorg 和 Wayland 混合描述的情况。

必要配置

不建议用户日常使用 root 帐户,则此时用户的当前帐户建议拥有 sudo 权限。安装 sudo 包。

同时部分本地化安装包在 AUR 源中,建议用户安装 AUR helper。本文以 yay 为例。

生成语言环境[1]

编辑 /etc/locale.gen,找到 #en_US.UTF-8 UTF-8#zh_CN.UTF-8 UTF-8,删除前面的注释符号“#”。

再生成语言环境文件:

sudo locale-gen

为保证大部分程序和终端环境显示正常,在 /etc/locale.conf 中设置 LANG 环境变量:

LANG=en_US.UTF-8

(可选)为 Xorg 图形界面设置中文语言环境

编辑 ~/.xinitrc~/.xprofile

export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:en_US

显示简体中文字体

此时图形界面的中文显示一般是异常的。这可以通过安装相关字体解决。

安装字体[2]

sudo pacman -S wqy-microhei wqy-microhei-lite wqy-bitmapfont wqy-zenhei ttf-arphic-ukai ttf-arphic-uming adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts noto-fonts-cjk

可选 AUR 源中 ttf-ms-win11-auto-* 相关的包(存在已知问题,见下文)。

一般此时字体缓存已刷新。若无:

fc-cache -fv

可以通过类似下述命令验证字体缓存:

fc-match -s | grep 'Noto Sans CJK'

ttf-ms-win11-auto-* 相关包无效

参见 ttf-ms-win11-auto AUR 包详情页面下的评论

It still throws ln: failed to create symbolic link '/home/<User>/.cache/yay/ttf-ms-win11-auto/src/' -> '': No such file or directory warnings when I install the package via yay. Manually copy/move the font files from ~/.cache/yay/ttf-ms-win11-auto/src to /usr/share/fonts and fc-cache -fv can solve the problem.

因此,读者只需查看 AUR 包的缓存(如 ~/.cache/yay/ttf-ms-win11-auto),找到其中的字体文件,或是解压其中的压缩包(如 ttf-ms-win11-auto-zh_cn-10.0.22000.318-2-any.pkg.tar.zst)得到字体文件,将其复制到 /usr/share/fonts 并重新生成字体缓存即可。

修复简体中文字符显示为日文的问题[3]

新建文件 /etc/fonts/conf.avail/64-language-selector-prefer.conf

若安装 noto-fonts-cjk 包:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>serif</family>
    <prefer>
      <family>Noto Serif CJK SC</family>
      <family>Noto Serif CJK TC</family>
      <family>Noto Serif CJK JP</family>
    </prefer>
  </alias>
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>Noto Sans CJK SC</family>
      <family>Noto Sans CJK TC</family>
      <family>Noto Sans CJK JP</family>
    </prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer>
      <family>Noto Sans Mono CJK SC</family>
      <family>Noto Sans Mono CJK TC</family>
      <family>Noto Sans Mono CJK JP</family>
    </prefer>
  </alias>
</fontconfig>

若安装 adobe-source-han-sans-otc-fonts 包:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>serif</family>
    <prefer>
      <family>Source Han Serif SC</family>
      <family>Source Han Serif TC</family>
      <family>Source Han Serif HW</family>
      <family>Source Han Serif K</family>
    </prefer>
  </alias>
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>Source Han Sans SC</family>
      <family>Source Han Sans TC</family>
      <family>Source Han Sans HW</family>
      <family>Source Han Sans K</family>
    </prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer>
      <family>Source Han Sans SC</family>
      <family>Source Han Sans TC</family>
      <family>Source Han Sans HW</family>
      <family>Source Han Sans K</family>
    </prefer>
  </alias>
</fontconfig>

然后新建软链接应用配置:

sudo ln -s /etc/fonts/conf.avail/64-language-selector-prefer.conf /etc/fonts/conf.d/64-language-selector-prefer.conf

随后刷新字体缓存生效:

fc-cache -fv

中文输入法

本文使用 Fcitx 5 框架配套 Rime 输入法引擎和 Clover Pinyin(四叶草拼音)输入方案。

Fcitx 5

安装[4]

sudo pacman -S fcitx5 fcitx5-qt fcitx5-gtk fcitx5-configtool

在 Xorg 环境下,编辑 ~/.xprofile[5]

export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XMODIFIERS="@im=fcitx5"

export LANG="zh_CN.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"

在 Wayland 环境下,编辑 /etc/environment

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS="@im=fcitx"

注销会话或重启。

外观

本文使用 Material Color 皮肤。

sudo pacman -S fcitx5-material-color

再编辑 Fcitx 5 的配置文件 ~/.config/fcitx5/conf/classicui.conf[6]

# 垂直候选列表
Vertical Candidate List=False

# 按屏幕 DPI 使用
PerScreenDPI=True

# Font (设置成你喜欢的字体)
Font="思源黑体 CN Medium 13"

# 主题
Theme=Material-Color-Pink

诊断工具

fcitx5-diagnose

Rime

安装

sudo pacman -S fcitx5-rime

重启 Fcitx 5。依次 System Settings → Regional Settings → Input Method → Add Input Method… → Only Show Current Language [Uncheck] → Rime(中州韻)来激活输入法。

注意:Rime 系统目录位于 /usr/share/rime-data。本地目录 ~/.local/share/fcitx5/rime 可以覆盖前者的配置。

单行模式

单行模式类似于 Windows 10 中微软拼音的默认行为:输入的拼音序列能同时键入到文本中,待选定候选词后才将其替换为对应的词。

编辑 ~/.config/fcitx5/conf/rime.conf[7]

# 可用时在应用程序中显示预编辑文本(开启单行模式)
PreeditInApplication=True

Clover Pinyin

安装

yay -S rime-cloverpinyin

编辑 ~/.local/share/fcitx5/rime/default.custom.yaml

patch:
  # 每页候选词个数
  "menu/page_size": 9
  schema_list:
    - schema: clover

重启 Fcitx 5。

注意:Clover Pinyin 有关快捷键等配置位于 ~/.local/share/fcitx5/rime/build/clover.schema.yaml

Emoji

sudo pacman -S noto-fonts-emoji
yay -S noto-color-emoji-fontconfig

注销会话或重启。

特殊符号

指输入特殊符号拼音出现候选词(如“pingfang”出现“²”),或输入“/xx”(“xx”表示一些英文字母的组合)出现一类候选词(如“/sx”出现数学相关特殊符号)。

对于前者,目前尚无较好的解决方案。

对于后者,参考该回复

注意:特殊符号支持存在已知问题,可能导致内存溢出,可以通过如下命令简单修复:[8]

python -c "$(curl -fsSL https://github.com/fkxxyz/rime-symbols/raw/master/rime-symbols-gen)"
mkdir -p ~/.local/share/fcitx5/rime/opencc
mv symbol.json symbol_category.txt symbol_word.txt ~/.local/share/fcitx5/rime/opencc

重新部署 Rime。

参考


  1. https://wiki.archlinux.org/title/Localization/Simplified_Chinese#locale_settings ↩︎

  2. https://wiki.archlinux.org/title/Localization/Simplified_Chinese#Install_fonts ↩︎

  3. https://wiki.archlinux.org/title/Localization/Simplified_Chinese#Fixed_Simplified_Chinese_display_as_a_variant_(Japanese)_glyph ↩︎

  4. https://wiki.archlinux.org/title/Fcitx5#Installation ↩︎

  5. https://wiki.archlinux.org/title/Fcitx5#Integration ↩︎

  6. https://github.com/hosxy/Fcitx5-Material-Color/blob/master/README.md#手动安装 ↩︎

  7. https://github.com/hosxy/Fcitx5-Material-Color/blob/master/README.md#单行模式-inline-preedit ↩︎

  8. https://github.com/fkxxyz/rime-cloverpinyin/issues/99 ↩︎

1 Like