locale -a | grep -E "zh_CN|en_US"Target packages →[*] Localization →[*] Generate locales (UTF-8)(en_US zh_CN) Locales to generate
sudo dpkg-reconfigure locales勾选 en_US.UTF-8 和 zh_CN.UTF-8
安装 glibc-locales 或使用 busyboxecho 'export LC_ALL=zh_CN.UTF-8' >> /etc/profile
export LANG=zh_CN.UTF-8date应显示中文日期(如“2026年 02月 02日”)
#!/bin/sh/usr/bin/switch-lang.shif [ "$1" = "zh" ]; then echo "export LANG=zh_CN.UTF-8" > /etc/locale.conf export LANG=zh_CN.UTF-8 echo "切换为中文"elif [ "$1" = "en" ]; then echo "export LANG=en_US.UTF-8" > /etc/locale.conf export LANG=en_US.UTF-8 echo "Switched to English"else echo "Usage: $0 [zh|en]" exit 1fi# 通知所有进程重载环境(可选)killall -SIGUSR1 your-gui-app # 自定义信号处理
switch-lang.sh zh切中文switch-lang.sh en # 切英文
⚠️ 局限:仅对新启动的进程生效,现有 GUI 应用需自行重载。
// C++ 示例std::string getSystemLang(){std::ifstream file("/etc/system-lang");std::string lang;if (file.is_open()) {std::getline(file, lang);return lang.empty() ? "en" : lang;}return "en";}
voidswitchLanguage(const std::string& langCode){// 1. 更新配置文件std::ofstream("/etc/system-lang") << langCode;// 2. 设置环境变量(影响子进程)setenv("LANG", langCode == "zh" ? "zh_CN.UTF-8" : "en_US.UTF-8", 1);// 3. 重载应用内部 localestd::locale::global(std::locale(""));// 4. 触发 UI 重绘(Qt/GTK 等框架有对应 API)emit languageChanged();}
#include<sys/inotify.h>// 监听文件修改事件,触发 reloadLanguage()
dbus-send --system --type=signal \/com/example/Language com.example.Language.Changed \string:"zh_CN.UTF-8"
wqy-microhei、Noto Sans CJK)// Qt 示例QFontDatabase::addApplicationFont("/usr/share/fonts/wqy-microhei.ttc");
.qm 文件)localedeflocaledef -i zh_CN -f UTF-8 zh_CN.UTF-8/usr/bin/set-language#!/bin/shecho "$1" > /etc/system-langsystemctl restart myapp.service # 或发送信号
int main(int argc, char *argv[]) {QApplication app(argc, argv);// 读取系统语言QFile file("/etc/system-lang");QString lang = file.open(QFile::ReadOnly) ?QString(file.readAll()).trimmed() : "en";// 加载翻译QTranslator translator;translator.load(QString(":/translations/myapp_%1.qm").arg(lang));app.installTranslator(&translator);MainWindow w;w.show();return app.exec();}
// 在设置界面调用void SettingsDialog::onChineseClicked() {system("set-language zh");QMessageBox::information(this, "提示", "请重启应用生效");// 或实现无重启切换(需重载所有 UI 文本)}
locale# 输出应包含:# LANG=zh_CN.UTF-8# LC_CTYPE="zh_CN.UTF-8"# ...
echo "中文测试"应正常显示,非乱码
.qm 翻译文件| 方案 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| Shell 脚本 + 重启 | 简单设备、无复杂 GUI | 实现简单 | 需重启应用 |
| 应用内监听配置文件 | Qt/GTK 等现代 GUI 应用 | 无缝切换 | 需应用层支持 |
| D-Bus 通知 | 多进程协同系统 | 松耦合 | 依赖 systemd/D-Bus |
zh_CN.UTF-8 和 en_US.UTF-8/etc/system-lang 变化,动态重载语言包通过以上方法,你的 ARM Linux 设备即可实现流畅的中英文动态切换,为全球用户提供本地化体验。
📌 最后提醒:在资源受限的 ARM 设备上,优先选择 方案 2(应用内切换),避免频繁重启服务影响用户体验。
更多精彩推荐:


Android开发集
青衣霜华渡白鸽,公众号:清荷雅集-墨染优选从 AIDL 到 HIDL:跨语言 Binder 通信的自动化桥接与零拷贝回调优化全栈指南
C/C++编程精选
青衣霜华渡白鸽,公众号:清荷雅集-墨染优选宏之双刃剑:C/C++ 预处理器宏的威力、陷阱与现代化演进全解
开源工场与工具集
青衣霜华渡白鸽,公众号:清荷雅集-墨染优选nlohmann/json:现代 C++ 开发者的 JSON 神器
MCU内核工坊
青衣霜华渡白鸽,公众号:清荷雅集-墨染优选STM32:嵌入式世界的“瑞士军刀”——深度解析意法半导体32位MCU的架构演进、生态优势与全场景应用
拾光札记簿
青衣霜华渡白鸽,公众号:清荷雅集-墨染优选周末遛娃好去处!黄河之巅畅享亲子欢乐时光
数智星河集
青衣霜华渡白鸽,公众号:清荷雅集-墨染优选被算法盯上的岗位:人工智能优先取代的十大职业深度解析与人类突围路径
Docker 容器
青衣霜华渡白鸽,公众号:清荷雅集-墨染优选Docker 原理及使用注意事项(精要版)
linux开发集
青衣霜华渡白鸽,公众号:清荷雅集-墨染优选零拷贝之王:Linux splice() 全面深度解析与高性能实战指南
青衣染霜华
青衣霜华渡白鸽,公众号:清荷雅集-墨染优选脑机接口:从瘫痪患者的“意念行走”到人类智能的下一次跃迁
QT开发记录-专栏
青衣霜华渡白鸽,公众号:清荷雅集-墨染优选Qt 样式表(QSS)终极指南:打造媲美 Web 的精美原生界面
Web/webassembly技术情报局
青衣霜华渡白鸽,公众号:清荷雅集-墨染优选WebAssembly 全栈透视:从应用开发到底层执行的完整技术链路与核心原理深度解析
数据库开发
青衣霜华渡白鸽,公众号:清荷雅集-墨染优选ARM Linux 下 SQLite3 数据库使用全方位指南