【Rust GUI开发入门】编写一个本地音乐播放器(12. 国际化应用-多语言支持)

本系列教程对应的代码已开源在 Github zeedle

本篇文章介绍Slint UI如何为播放器页面添加多语言支持,让你的应用走向国际!Translations | Slint Docs

1. 使用@tr修饰.slint中的字面量

就像这样:

2. 提取要翻译的字符串

打开git bash,输入:

bash 复制代码
find ui -name \*.slint | xargs slint-tr-extractor -o zeedle.pot

此命令会找出ui文件夹下所有的.slint文件,并把这些文件路径作为参数全部传给slint-tr-extractor,后者会提取所有被@tr修饰的字面量到.pot中。

3. 使用Poedit翻译.pot文件

翻译完成后,保存生成的.po文件到lang/语言代码/LC_MESSAGES/zeedle.po

语言代码:

  • 中文简体:zh_CN
  • 西班牙语:es
  • 德语:de

......其余请自行查阅。

4. 静态编译到可执行文件中

build.rs中指定语言目录,跟上面对应,也就是lang

rust 复制代码
fn main() {
    let cfg = slint_build::CompilerConfiguration::new()
        .with_style("fluent".into())
        .with_bundled_translations("lang");
    slint_build::compile_with_config("ui/app.slint", cfg).expect("slint build failed");
}

5. 使用Rust API动态选择语言

可以在用户callback中调用此函数完成UI语言更改:

rust 复制代码
slint::select_bundled_translation(语言代码字面量)
	.expect("failed to set language");
相关推荐
doiito3 小时前
【AI 应用】从“外国人味”到地道中文:kokoroi-rs v0.1.2 架构升级深度解析
ai·rust·系统设计
Zwarwolf8 小时前
Rust零散知识点项目汇总
开发语言·rust
X档案库9 小时前
【开源】我做了一套可以 AI 托管的 Markdown 博客与知识库
rust·博客·markdown·marksharex
程序员爱钓鱼14 小时前
Rust Vec 动态数组详解:创建、增删、遍历与排序
前端·后端·rust
_abab14 小时前
Rust重塑系统编程:从Linux内核到AI推理引擎的2026全景解析
linux·人工智能·rust
doiito1 天前
【Agent Harness】Gliding Horse 高级认知优化:让 Agent 的“大脑”和“免疫系统”真正协同
ai·rust·架构设计·系统设计·ai agent
longxiangam2 天前
第 4 篇:Embassy 异步运行时与事件驱动架构
单片机·嵌入式硬件·rust
程序员爱钓鱼2 天前
Rust String 与 &str 详解:字符串所有权、借用与转换
前端·后端·rust
段一凡-华北理工大学2 天前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
大卫小东(Sheldon)2 天前
小鹤音形词典:一个用 Rust 写的离线编码查询桌面工具
ai·rust