改不动英文界面的 Omarchy:一次 locale 配置的"破案"
我按官方教程把 Omarchy 装好了。系统 locale 调成 zh_CN.UTF-8,中文字体装了,Fcitx5 输入法也跑起来了。然后我盯着屏幕看了很久 —— 整个桌面还是英文。
不是某个角落,是全部。菜单、顶栏、设置项、系统通知,一个中文字都没有。
按说这不对。Linux 的本地化我折腾过不少,改个 locale 而已,怎么会纹丝不动。于是这场” 破案” 就开始了。
配置明明生效了
先排查最基础的。locale 命令一看:
LANG=zh_CN.UTF-8LC_CTYPE="zh_CN.UTF-8"LC_MESSAGES="zh_CN.UTF-8"...localectl status 也写着 System Locale: LANG = zh_CN.UTF-8,echo $LANG 出来就是 zh_CN.UTF-8。
配置是对的。字体、输入法也都在。到这一步只能得出一个结论:不是我的配置问题。
那问题出在哪?

先分清两拨” 界面”
这里有个容易踩的坑,得先掰扯清楚:Fcitx5 和” 界面语言” 是两回事。输入法进程在跑,不代表界面会跟着变中文,它俩本来就没关系。
更要紧的是另一条分界线:
- 第三方应用 ——waybar、文件管理器、浏览器、终端。这些是标准 GTK / Qt 程序,会读 LANG,只要它们自己带了 zh_CN 翻译,就会跟着变中文。
- Omarchy 自家的界面 ——SUPER 键弹出来的菜单、顶栏、Omarchy 设置、快捷菜单。这些,纹丝不动。
我观察下来,纹丝不动的全是 Omarchy 自己的东西,第三方应用其实已经部分变中文了。
这指向一个我不太愿意相信的方向:问题出在 Omarchy 自己身上。
翻源码,真凶浮出
正好 Omarchy 是开源的,我把它 clone 下来翻了一遍。结果比想象的更彻底。
shell/ 目录下 175 个 QML 文件,约 3.7 万行。我搜 qsTr、qsTranslate、QT_TR_NOOP—— 这三个是 Qt 世界里做翻译的标准入口。
调用次数:0。一个都没有。

菜单定义文件 default/omarchy/omarchy-menu.jsonc 里,标签是一行行英文写死的:
"apps": {"label":"Apps"},"setup": {"label":"Setup"},"install": {"label":"Install"},"update": {"label":"Update"},"about": {"label":"About"},Apps、Setup、Install、Update、About…… 全是硬编码。
所以真相不是” Omarchy 缺中文翻译”,而是” Omarchy 压根没有翻译机制”。整个 shell 从设计上就是英文的,跟 locale 一点关系都没有。
为什么连 qsTr 都救不了
你可能会想:那加上 qsTr 不就行了?翻译不都是这么做的吗。
问题是加不了。Omarchy 的桌面 shell 用的是 Quickshell,而 Quickshell 构造的是一个裸的 QQmlEngine—— 不是标准 Qt 应用用的 QQmlApplicationEngine。
这个” 裸” 意味着:代码里根本没有 QTranslator、installTranslator、retranslate 这些东西。没有安装翻译器的入口,也没有自动加载 qml_zh_CN.qm 的机制。
结果就是,就算你在 QML 里写了 qsTr (“Connect”),它也会静默地返回 “Connect” 原文。翻译机制在这个 shell 里是死的。

这不是 bug,是压根没搭这条通道。
GitHub 上已经有人喊了
既然根因在源码,我就去 GitHub 上看有没有人提。一看,早就有人在喊了。
issue #7284,标题直白:“add an i18n/localization system for Omarchy”,open 状态。诉求和我遇到的一模一样:给 shell、菜单、插件加本地化,允许用户在 ~/.config 下覆盖翻译。
而且不止是” 喊”,社区已经在动手:PR #8765 是一个 I18n 翻译原语框架,先搭地基;PR #10083 是运行时 i18n,用系统 gettext catalog 翻译整个 shell;xavivars 的 omal10n-poc 是个能跑的原型,已经在真机上验证过,还带语言切换器。
最值得玩味的是 DHH 在另一个 locale issue 上的态度。有人报时钟不尊重系统语言,他关闭时说了一句:
Need a comprehensive solution to full OS translation before this makes sense to me.
翻译过来:要一个完整的 OS 级翻译方案,零散的 locale 补丁不接。
这解释了为什么这条路到现在还没通 —— 不是没人做,是作者明确要一个” 完整方案”,而完整方案还在 review 路上。
![]()
写在最后
所以结论得说清楚:改不动英文界面,不是你的配置失败,是 Omarchy 目前压根没给界面留翻译的入口。
这个坑我替你踩过了。现在的正确姿势是:locale、字体、输入法该配的配好,这些都对,中文输入已经能用;界面语言这事,去 issue #7284 点个 👍,等官方框架合入。
等它合了的那天,中文界面只剩一件事 —— 贡献一个 zh_CN 的 PO 文件。到那时候,“改不动” 就真的成了历史。

