国际化概览
文案用 Fluent(.ftl)维护,编译期生成类型安全的消息 API。运行时切换 locale,界面跟着刷新。
工作流
*.ftl 资源 → i18n! 编译校验 → 静态 Catalog → I18nProvider → t! 响应式翻译
这种模型把 key 缺失、参数漂移和引用循环提前为编译错误,而不是等用户切换语言后才暴露。
最小配置
arkit::i18n! {
pub mod tr {
path: "locales",
fallback: "zh-CN",
locales: ["zh-CN", "en-US"],
}
}
#[entry]
fn app() -> Element {
let _provider = use_i18n_provider(
&tr::CATALOG,
tr::FALLBACK_LOCALE.id(),
);
rsx! { Page {} }
}
页面使用生成函数,不手写字符串 key:
let title = t!(tr::app_title());
let greeting = t!(tr::welcome("Ada"));
模块边界
- “资源与消息”讲 FTL、变量、term、attribute 和编译期校验。
- “运行时切换”讲 Provider、locale signal、fallback、缓存和错误策略。
- Catalog 是静态只读数据;当前语言属于每个应用 root 的响应式上下文。
适用原则
UI 文案、无障碍标签和格式化消息进入 catalog。服务端原始错误、日志字段和协议枚举不要直接作为翻译 key;先映射成稳定的领域错误,再选择用户可见消息。