rat_quick_lang 0.1.1

基于rat_embed_lang的多语言包装器,提供简洁的API和自动文件加载功能
# 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        # 包含多个语言的翻译
```

## 依赖

```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` - 参数化翻译功能

运行示例:
```bash
cargo run --example basic_usage
cargo run --example parameterized_translation
```

## 文件格式

### 文件夹形式 - common/zh_CN.toml
```toml
welcome = "欢迎"
buttons.save = "保存"
buttons.cancel = "取消"
```

### 单文件形式 - ui.toml
```toml
[zh_CN]
title = "标题"
exit = "退出"

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

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

```toml
[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-cn``zh-CN`
- `en`, `en_us`, `en-us``en-US`
- `ja`, `ja_jp`, `ja-jp``ja-JP`

## 线程安全

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

## 版本历史

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

### v0.1.0
- 初始版本发布
- 基础翻译功能
- 文件夹和单文件支持