forked from Shinonome/dots-hyprland
8a68cf207a
- Updated README.md to reflect changes in translation management tools and added ignore mark feature for dynamic resources. - Created Chinese translation guide for the translation management tools. - Created English translation guide for the translation management tools. - Enhanced translation-cleaner.py to skip keys marked with /*keep*/ during cleanup. - Improved translation-manager.py to create backups only when updating keys interactively. - Updated zh_CN.json with new translations and added ignore marks for dynamic values.
287 lines
6.5 KiB
Markdown
287 lines
6.5 KiB
Markdown
# 翻译管理工具套件
|
||
|
||
这套工具用于管理项目的翻译文件,自动提取可翻译文本,比较不同语言文件之间的差异,并提供维护功能。
|
||
|
||
## 工具组成
|
||
|
||
### 1. `translation-manager.py` - 主要翻译管理器
|
||
- 提取可翻译文本
|
||
- 比较和更新翻译文件
|
||
- 交互式添加/删除翻译键
|
||
|
||
### 2. `translation-cleaner.py` - 翻译文件维护工具
|
||
- 清理不再使用的翻译键
|
||
- 同步不同语言文件的键结构
|
||
|
||
### 3. `manage-translations.sh` - 便捷包装脚本
|
||
- 提供统一的命令行界面
|
||
- 显示翻译状态
|
||
- 简化常用操作
|
||
|
||
## 快速开始
|
||
|
||
### 使用便捷脚本(推荐)
|
||
|
||
```bash
|
||
# 进入工具目录
|
||
cd .config/quickshell/translations/tools
|
||
|
||
# 查看帮助
|
||
./manage-translations.sh --help
|
||
|
||
# 显示当前翻译状态
|
||
./manage-translations.sh status
|
||
|
||
# 提取可翻译文本
|
||
./manage-translations.sh extract
|
||
|
||
# 更新所有翻译文件
|
||
./manage-translations.sh update
|
||
|
||
# 更新特定语言
|
||
./manage-translations.sh update -l zh_CN
|
||
|
||
# 清理不再使用的键
|
||
./manage-translations.sh clean
|
||
|
||
# 同步所有语言文件的键
|
||
./manage-translations.sh sync
|
||
```
|
||
|
||
或者从项目根目录运行:
|
||
```bash
|
||
# 从项目根目录运行
|
||
.config/quickshell/translations/tools/manage-translations.sh status
|
||
.config/quickshell/translations/tools/manage-translations.sh update
|
||
```
|
||
|
||
## 详细使用说明
|
||
|
||
### 翻译管理器 (`translation-manager.py`)
|
||
|
||
基本用法:
|
||
```bash
|
||
# 处理所有语言
|
||
./translation-manager.py
|
||
|
||
# 指定特定语言
|
||
./translation-manager.py --language zh_CN
|
||
|
||
# 仅提取可翻译文本
|
||
./translation-manager.py --extract-only
|
||
|
||
# 显示提取的文本
|
||
./translation-manager.py --extract-only --show-temp
|
||
```
|
||
|
||
参数说明:
|
||
- `--translations-dir`, `-t`: 翻译文件目录(默认:`.config/quickshell/translations`)
|
||
- `--source-dir`, `-s`: 源代码目录(默认:`.config/quickshell`)
|
||
- `--language`, `-l`: 指定要处理的语言代码
|
||
- `--extract-only`, `-e`: 仅提取可翻译文本
|
||
- `--show-temp`: 显示临时提取文件的内容
|
||
|
||
### 翻译清理器 (`translation-cleaner.py`)
|
||
|
||
```bash
|
||
# 清理不再使用的翻译键
|
||
./translation-cleaner.py --clean
|
||
|
||
# 同步翻译键(以 en_US 为基准)
|
||
./translation-cleaner.py --sync
|
||
|
||
# 指定不同的源语言进行同步
|
||
./translation-cleaner.py --sync --source-lang zh_CN
|
||
|
||
# 清理时不创建备份
|
||
./translation-cleaner.py --clean --no-backup
|
||
```
|
||
|
||
## 工作流程
|
||
|
||
### 日常翻译更新流程
|
||
|
||
1. **检查状态**:
|
||
```bash
|
||
./manage-translations.sh status
|
||
```
|
||
|
||
2. **更新翻译**:
|
||
```bash
|
||
./manage-translations.sh update
|
||
```
|
||
|
||
3. **清理无用键**(可选):
|
||
```bash
|
||
./manage-translations.sh clean
|
||
```
|
||
|
||
### 新增语言流程
|
||
|
||
1. **创建新语言文件**:
|
||
```bash
|
||
./manage-translations.sh update -l new_lang
|
||
```
|
||
|
||
2. **同步键结构**:
|
||
```bash
|
||
./manage-translations.sh sync
|
||
```
|
||
|
||
### 大规模重构后的清理流程
|
||
|
||
1. **备份翻译文件**:
|
||
```bash
|
||
cp -r .config/quickshell/translations .config/quickshell/translations.backup
|
||
```
|
||
|
||
2. **清理无用键**:
|
||
```bash
|
||
./manage-translations.sh clean
|
||
```
|
||
|
||
3. **同步所有语言**:
|
||
```bash
|
||
./manage-translations.sh sync
|
||
```
|
||
|
||
## 支持的翻译文本格式
|
||
|
||
工具可以识别以下格式的可翻译文本:
|
||
|
||
```qml
|
||
// 基本格式
|
||
Translation.tr("Hello, world!")
|
||
Translation.tr('Hello, world!')
|
||
Translation.tr(`Hello, world!`)
|
||
|
||
// 带换行符
|
||
Translation.tr("Line 1\nLine 2")
|
||
|
||
// 带转义字符
|
||
Translation.tr("Say \"Hello\"")
|
||
|
||
// 带参数占位符
|
||
Translation.tr("Hello, %1!").arg(name)
|
||
```
|
||
|
||
## 示例输出
|
||
|
||
### 状态显示
|
||
```
|
||
$ ./manage-translations.sh status
|
||
正在分析翻译状态...
|
||
=== 当前项目状态 ===
|
||
提取到 166 个可翻译文本
|
||
|
||
=== 翻译文件状态 ===
|
||
en_US: 470 个键
|
||
zh_CN: 470 个键
|
||
```
|
||
|
||
### 更新翻译
|
||
```
|
||
$ ./manage-translations.sh update -l zh_CN
|
||
更新翻译文件...
|
||
==================================================
|
||
处理语言: zh_CN
|
||
==================================================
|
||
分析结果:
|
||
缺少的键: 5
|
||
多余的键: 20
|
||
|
||
发现 5 个缺少的翻译键:
|
||
1. "New feature text"
|
||
2. "Another new text"
|
||
...
|
||
|
||
是否添加这 5 个缺少的键? (y/n): y
|
||
已添加 5 个键
|
||
|
||
发现 20 个多余的翻译键:
|
||
1. "Removed old text" -> "已删除的旧文本"
|
||
...
|
||
|
||
是否删除这 20 个多余的键? (y/n): y
|
||
已删除 20 个键
|
||
|
||
已保存翻译文件
|
||
```
|
||
|
||
### 清理无用键
|
||
```
|
||
$ ./manage-translations.sh clean
|
||
清理不再使用的翻译键...
|
||
处理语言: zh_CN
|
||
发现 50 个不再使用的键:
|
||
1. "old_unused_text"
|
||
2. "deprecated_message"
|
||
...
|
||
|
||
是否删除这 50 个不再使用的键? (y/n): y
|
||
已删除 50 个键
|
||
原始键数: 470, 清理后: 420
|
||
```
|
||
|
||
## 高级功能
|
||
|
||
### 自定义目录结构
|
||
|
||
```bash
|
||
# 使用自定义目录
|
||
./translation-manager.py \
|
||
--translations-dir /path/to/translations \
|
||
--source-dir /path/to/source
|
||
```
|
||
|
||
|
||
## 注意事项
|
||
|
||
1. **备份重要**:在执行清理操作前,工具会自动创建备份,但建议手动备份重要文件
|
||
|
||
2. **文本提取限制**:
|
||
- ~~只支持静态字符串,不支持动态构建的字符串~~
|
||
- 动态资源(如变量拼接、运行时生成的文本)无法自动提取,需要在翻译文件中手动添加,并使用 `/*keep*/` 标记进行忽略管理。
|
||
- 必须使用 `Translation.tr()` 格式
|
||
### 忽略标记功能
|
||
|
||
对于动态资源或特殊文本,如果不希望被自动清理,可在翻译值末尾添加 `/*keep*/`,工具会自动忽略这些键,不会在清理和同步时删除。
|
||
|
||
示例:
|
||
```json
|
||
{
|
||
"dynamic_key": "Some dynamic value /*keep*/"
|
||
}
|
||
```
|
||
|
||
3. **文件编码**:所有文件必须使用 UTF-8 编码
|
||
|
||
4. **键名规范**:建议使用英文作为键名,避免使用特殊字符
|
||
|
||
## 故障排除
|
||
|
||
### 常见问题
|
||
|
||
|
||
**Q: 添加了 Translation.tr 后文字不显示?**
|
||
A: 需要在 QML 文件中使用 `import "root:/"` 导入翻译功能,否则无法正常显示翻译文本。
|
||
|
||
**Q: 提取的文本数量与预期不符?**
|
||
A: 检查是否所有可翻译文本都使用了 `Translation.tr()` 格式,确保没有动态构建的字符串。
|
||
|
||
**Q: 同步后某些翻译丢失?**
|
||
A: 检查源语言文件是否包含所有必要的键,考虑使用不同的源语言进行同步。
|
||
|
||
**Q: 清理操作删除了需要的键?**
|
||
A: 从自动创建的备份文件中恢复,检查源代码中是否正确使用了 `Translation.tr()`。
|
||
|
||
### 恢复备份
|
||
|
||
```bash
|
||
# 恢复单个文件
|
||
cp .config/quickshell/translations/zh_CN.json.backup .config/quickshell/translations/zh_CN.json
|
||
|
||
# 恢复所有文件
|
||
cp .config/quickshell/translations.backup/* .config/quickshell/translations/
|
||
```
|