# 翻译步骤(完整) [TOC] ## 准备 本文将介绍 Umi-OCR 代码文件翻译的完整流程。 请先fork或clone本仓库。强烈建议只 clone 主分支,因为某些分支含有体积很大的二进制库,会让你花费很长时间下载。 ``` git clone --branch main --single-branch https://github.com/hiroi-sora/Umi-OCR_v2.git ``` 要求:Windows系统。 本文中的代码指令,如果没有特别说明,则是在当前工作目录(`dev-tools/i18n`)中输入到命令行。 例,你可以:按Win+R,输入cmd,打开命令行,然后输入下述命令跳转到工作目录(假设工程放在`D:\Projects\`) ``` cd /d D:\Projects\Umi-OCR_v2\dev-tools\i18n ``` 本文假设当前要翻译的目标语言为英语 `en_US` 。如果是其它目标语言,请将下文所有 `en_US` 替换为目标语言标识符。所有标识符如下: | 标识符 | 语言 | | ------- | --------- | | `zh_CN` | 简体中文 | | `zh_TW` | 繁體中文 | | `en_US` | English | | `es_ES` | Español | | `fr_FR` | Français | | `de_DE` | Deutsch | | `ja_JP` | 日本語 | | `ko_KR` | 한국어 | | `ru_RU` | Русский | | `pt_BR` | Português | | `it_IT` | Italiano | 与上述语言语种相同,但地区不同的语言,将应用最接近的翻译文件。如: (`zh_HK`,`en_GB`,`en_CA`,`es_MX`,`fr_CA`,`de_AT`,`de_CH`,`pt_PT`) 如果想添加一个不属于上述任何语种的翻译,需要在源代码中添加对应的标识符映射(`UmiOCR-data\py_src\utils\i18n_configs.py`)。或者,请寻求项目作者的帮助。 ## 简介 Qt-Qml框架的翻译工作的流程分为3步:(假设当前要翻译为英语`en_US`) 1. 从源代码中提取出所有待翻译字符串,生成 `en_US.ts` 工程文件。 2. 编辑 `en_US.ts` 文件,将其中的文本进行翻译。 3. 将写好的 `en_US.ts` 文件,编译为 `en_US.qm` 二进制文件。 完成上述工作后,就能将`en_US.qm`加载进Umi-OCR中,在Umi中切换为`English`语言了。 ## 1. 提取待翻译字符串 #### 方法一:生成/刷新单个ts工程文件 使用Qt工具 `lupdate.exe` ```cmd lupdate.exe "../../UmiOCR-data/qt_res/qml" -recursive -ts "en_US.ts" ``` 如果提示`无法将“lupdate.exe”项识别……`,则在指令最前面加上`./`,如: ```cmd ./lupdate.exe "../../UmiOCR-data/qt_res/qml" -recursive -ts "en_US.ts" ``` 执行成功时,应该输出如下: ```cmd Scanning directory '../../UmiOCR-data/qt_res/qml'... Updating 'en_US.ts'... Found 307 source text(s) (140 new and 167 already existing) Kept 42 obsolete entries Same-text heuristic provided 21 translation(s) ``` 如果已经开始编辑ts文件,重新调用`lupdate.exe`是安全的,不会丢失已经编辑的进度(当然,建议多备份)。 #### 方法二:生成/刷新所有语言的ts工程文件 比如修改了源代码,往源代码中添加了新的文本后,要刷新所有ts文件。 运行本目录下的 `lupdate_all.py` ## 2. 进行翻译工作 使用Qt工具 `linguist.exe` 可视化进行翻译工作。 ```cmd linguist.exe "en_US.ts" ``` 或者,文件管理器中,将 `en_US.ts` 拖到 `linguist.exe` 图标上。 `linguist.exe`会打开一个可视化窗口,在上面进行翻译或检查。 如果是首次打开该ts文件,`linguist`会弹窗询问源语言和目标语言。源语言`Source language`选择`Chinese (简体中文)`,目标语言自定。`Country`一般选`Any Country`即可。 `linguist` 使用很简单,具体用法可在网上找,下面介绍基础用法: 1. 左侧`Context`栏表示待翻译的源代码文件,及每个文件的文本条数。如`BatchOCR 18/19`表示源代码`BatchOCR`一共有19条文本,其中18条已完成翻译。 2. 中上`Strings`栏表示当前源代码文件的每一条文本。图标`?`/`!`表示未翻译或未检查,`√`表示已翻译。每翻译一条文本,记得点击该图标,将它转为`√`。 3. 右侧`Sorces and Forms`栏表示该文本在源代码中的位置。可以结合代码中的注释来进行翻译。 4. 中心栏进行翻译。`Sorces text`为原文本,`Translattion to XXX`填写翻译文本,`Translator comments for XXXX` 可以不用写。 进行工作前,请务必阅读 [翻译注意事项](翻译注意事项.md) 。 ## 3. 编译二进制包 方法一:使用`linguist.exe` 点击菜单 `File` → `Release` ,即可在本目录下生成 `en_US.qm`。 方法二:使用指令 ```cmd lrelease.exe "en_US.ts" ``` ## 放置翻译文件 将编译好的二进制文件 `en_US.qm` 拷贝到下述目录: ``` Umi-OCR_v2/UmiOCR-data/i18n ``` 启动 Umi-OCR ,即可在全局设置中切换该语言。请仔细检查翻译文本是否正确,尺寸是否合适。可按照`翻译注意事项`的说明调整字体缩放系数。 ## 提交贡献 将翻译好的 `.ts` 文件放在本目录下, `.qm` 文件放在 `Umi-OCR_v2/UmiOCR-data/i18n` 。不要包含其它无关文件。 然后提交PR。 #### 感谢各位译者大佬的贡献!