菜单 · 文档

最后更新:2026年8月12日

文档

用 Fluent 做类型安全文案,并在运行时切换语言。

国际化概览

文案用 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;先映射成稳定的领域错误,再选择用户可见消息。