一个极其简单的Rust多语言框架,支持编译时嵌入和运行时语言切换。
- 🚀 简单易用 - 只需3个API:注册翻译、设置语言、获取翻译
- 📦 零依赖 - 无外部依赖,纯Rust实现
- 🔒 类型安全 - 编译时检查,防止意外覆盖
- 🌍 多语言支持 - 支持任意语言代码(zh-CN, en-US, ja-JP等)
- 🔄 自动fallback - 当前语言 → 英语 → 第一个可用翻译
- 🛡️ 安全机制 - 重复key检测,防止意外覆盖
- 💬 国际化错误 - 错误信息本身也支持多语言
[dependencies]
rat_embed_lang = "0.1.0"详细的用法示例请查看 examples/ 目录:
basic_usage.rs- 基础多语言使用duplicate_key_test.rs- 重复key检测和错误处理parameterized_translation.rs- 参数化翻译和动态文本替换
运行示例:
cargo run --example basic_usage
cargo run --example parameterized_translation| 函数 | 描述 |
|---|---|
register_translations(translations) |
注册翻译数据 |
set_language(lang) |
设置当前语言 |
t(key) |
获取当前语言的翻译文本 |
tf(key, args) |
获取参数化翻译文本 |
| 函数 | 描述 |
|---|---|
current_language() |
获取当前语言 |
clear_translations() |
清理所有已注册的翻译 |
t_with_lang(key, lang) |
获取指定语言的翻译 |
tf_with_lang(key, lang, args) |
获取指定语言的参数化翻译 |
has_translation(key) |
检查是否存在翻译 |
get_all_keys() |
获取所有翻译key |
| 函数 | 描述 |
|---|---|
normalize_language_code(code) |
标准化语言代码 |
get_language_from_env() |
从环境变量获取语言设置 |
框架按以下优先级检测语言:
RAT_LANG- 应用特定的语言设置LANG- 系统语言环境变量en-US- 默认英语
详细的环境变量检测示例请查看 basic_usage.rs
当请求的翻译不存在时,按以下顺序fallback:
- 当前语言的翻译
- 英语翻译 (
en-US) - 第一个可用的翻译
- 返回
[key]格式的key名
详细的fallback机制示例请查看 basic_usage.rs
框架会检测重复的翻译key,防止意外覆盖:
重复key检测和错误处理的详细示例请查看 duplicate_key_test.rs
错误信息根据当前语言环境显示:
多语言错误信息的详细示例请查看 duplicate_key_test.rs
支持动态文本替换,使用 {参数名} 格式:
tf(key, args)- 获取参数化翻译文本tf_with_lang(key, lang, args)- 获取指定语言的参数化翻译tfm!宏 - 便捷的参数化翻译语法
详细用法请查看 parameterized_translation.rs 示例。
详细的高级用法示例请查看各个示例文件。
查看 examples/ 目录中的完整示例:
basic_usage.rs- 基础多语言使用和fallback机制duplicate_key_test.rs- 重复key检测和错误处理parameterized_translation.rs- 参数化翻译和动态文本替换
运行示例:
cargo run --example basic_usage
cargo run --example duplicate_key_test
cargo run --example parameterized_translation- 只提供最核心的功能
- 无复杂的宏或配置
- 直接使用HashMap,学习成本低
- 重复key检测防止意外覆盖
- 线程安全的状态管理
- 明确的错误提示
- 支持任意语言代码
- 用户完全控制翻译数据结构
- 易于集成到现有项目
LGPL v3
欢迎提交Issue和Pull Request!
- 初始版本
- 基础多语言支持
- 重复key检测
- 国际化错误信息