rat_quick_lang

Crates.iorat_quick_lang
lib.rsrat_quick_lang
version0.1.1
created_at2025-11-05 18:38:11.580863+00
updated_at2025-11-05 18:38:11.580863+00
description基于rat_embed_lang的多语言包装器,提供简洁的API和自动文件加载功能
homepagehttps://github.com/0ldm0s/rat_quick_lang
repositoryhttps://github.com/0ldm0s/rat_quick_lang
max_upload_size
id1918413
size37,137
0ldm0s (0ldm0s)

documentation

https://docs.rs/rat_quick_lang

README

rat_quick_lang

基于 rat_embed_lang 的多语言包装器,提供简洁的API和自动文件加载功能。

特性

  • 基于 rat_embed_lang v0.1.1 核心实现
  • 支持参数化翻译(如 "欢迎,{username}!")
  • 支持文件夹和单文件两种组织形式
  • 自动文件扫描和加载
  • 内存缓存,高性能翻译查询
  • 线程安全
  • 简洁的函数调用API(无宏)

文件组织支持

文件夹形式

lang/
├── common/
│   ├── zh_CN.toml
│   ├── en_US.toml
│   └── ja_JP.toml
├── errors/
│   ├── zh_CN.toml
│   └── en_US.toml

单文件形式

lang/
├── ui.toml          # 包含多个语言的翻译
└── menu.toml        # 包含多个语言的翻译

依赖

[dependencies]
rat_embed_lang = "0.1.1"
rat_quick_lang = "0.1.1"

核心 API

基础翻译

  • load_translations(base_dir: &str) -> Result<(), LangError> - 加载语言文件
  • t(key: &str) -> String - 获取翻译文本
  • set_language(lang: &str) -> Result<(), LangError> - 设置当前语言
  • current_language() -> String - 获取当前语言
  • has_translation(key: &str) -> bool - 检查翻译是否存在
  • get_all_keys() -> Vec<String> - 获取所有翻译键
  • get_supported_languages(key: &str) -> Vec<String> - 获取指定键支持的语言
  • reload(base_dir: &str) -> Result<(), LangError> - 重新加载语言文件

参数化翻译(新增)

  • tf(key: &str, args: &[(&str, &str)]) -> String - 获取参数化翻译文本
  • tf_with_lang(key: &str, lang: &str, args: &[(&str, &str)]) -> String - 获取指定语言的参数化翻译文本

快速开始

查看 examples/ 目录中的示例代码:

  • basic_usage.rs - 基础翻译功能
  • parameterized_translation.rs - 参数化翻译功能

运行示例:

cargo run --example basic_usage
cargo run --example parameterized_translation

文件格式

文件夹形式 - common/zh_CN.toml

welcome = "欢迎"
buttons.save = "保存"
buttons.cancel = "取消"

单文件形式 - ui.toml

[zh_CN]
title = "标题"
exit = "退出"

[en_US]
title = "Title"
exit = "Exit"

参数化翻译示例

支持在翻译文本中使用 {参数名} 格式的占位符:

[zh_CN]
welcome_user = "欢迎,{username}!"
login_message = "{user}在{time}登录了系统"

[en_US]
welcome_user = "Welcome, {username}!"
login_message = "{user} logged in at {time}"

语言代码自动标准化

支持多种格式的语言代码输入:

  • zh, zh_cn, zh-cnzh-CN
  • en, en_us, en-usen-US
  • ja, ja_jp, ja-jpja-JP

线程安全

基于 rat_embed_lang 的 RwLock 实现,支持多线程并发读取。

版本历史

v0.1.1

  • 升级到 rat_embed_lang v0.1.1
  • 新增参数化翻译功能支持
  • 添加 tf()tf_with_lang() API

v0.1.0

  • 初始版本发布
  • 基础翻译功能
  • 文件夹和单文件支持
Commit count: 0

cargo fmt