Skip to content

Releases: Kino2315/optiland-zh

v0.2.8

Choose a tag to compare

@Kino2315 Kino2315 released this 26 Sep 07:50

这一版主要是文档:README 整篇重写,并让 PyPI 项目页和仓库一致。

(PyPI 的项目描述是发版时烤进元数据的,改仓库的 README 不会动它 —— 所以必须发一版才能更新。)

文档

  • README 整篇重写:开篇讲清「它不改 Optiland 的代码、只在程序启动时换文字,所以 Optiland 本体要另外装」,补上三类安装方式、桌面快捷方式、词库贡献流程
  • 中英两份 README 按同一结构对齐(9 个二级标题一一对应)
  • 新增术语中英对照表;它和 CONTRIBUTING.md 里那份由测试盯着,不许各改各的
  • 「动态规则」补上定义 —— 它此前在 README 里以三个叫法出现(动态规则 / 动态模式 / 动态消息模板)却从没解释过。它就是词库文件里的 patterns 字段,现在是 72 条,用 {0} {1} 这样的空位匹配界面上运行时拼出来的文字
  • 「检查汉化有没有出问题」给出排查顺序:先用 optiland-zh --lookup "那句英文" 查那一句在不在词库里,再用 --audit 看全貌。原先两条入口并列,读者不知道先做哪个
  • 「词库」一节说明每个字段是给谁用的:display_name 缺了显示名会退化成语言代码;version 缺了会让 pytest 变红(但没有任何代码读它);translators / notes 只给人看
  • README.en.md 全量同步

修复

  • 缺上游时的报错提示不再带 Markdown 的 **(终端不渲染,用户会看到光秃秃的星号)
  • 报错文案统一为「请先装它:」—— README 里的示例和程序实际打印的现在一致

说明

v0.2.7 之后共 3 个提交,只有 launcher.py 一处代码改动,其余都是文档。功能上 0.2.7 已经包含本版的全部能力。

v0.2.7

Choose a tag to compare

@Kino2315 Kino2315 released this 26 Sep 06:40

新命令:optiland-zh --lookup "那句英文"

界面上有一处是英文,以前要打开词库 JSON 搜、还得自己判断"搜到/搜不到"分别意味着什么。
现在一条命令给出答案和一个明确结论:

optiland-zh --lookup "Save System"
词库里查到:

    英文  &Save System
    译文  保存系统(&S)

词库里有这条,界面上却还是英文的话,那是补丁没拦住那个控件 ——
加词条没用,要改引擎。

你不需要知道有 & 这回事。 Qt 在不同控件上会把快捷键标记 & 和结尾的省略号
去掉,所以屏幕上看到的和词库里的键经常差一两个字符;--lookup 会自动忽略,
照着屏幕原样打就行。

查不到时它也会说清楚那意味着什么:

词库里没有「Cascadia Code」。

两种可能,看一眼界面上那句话是什么就分得出:
  · 该翻而还没人翻   -> 加一条到 entries(见 CONTRIBUTING.md)
  · 本来就不该翻     -> 字体名 / 品牌名 / 算法名 / 控件内部名字,不用管

动态规则的两个方向都认:Toggle Analysis(英文侧)和
显示/隐藏 分析(中文侧,由模板 显示/隐藏 {0} 拼出来)。

退出码:找到是 0,没找到是 1,方便脚本用。

汉化行为无改动,词库无改动。

v0.2.6

Choose a tag to compare

@Kino2315 Kino2315 released this 26 Sep 05:10

README 里把三个检查工具讲清楚了

原来只有两行干巴巴的注释,既没说检查什么,也没说什么时候用,--audit 连提都没提。

现在按「什么时候用」来写 —— 三条平时都用不上,界面上出现英文、或者 Optiland 升级
之后
才需要:

  • --self-test:我翻过的地方有没有失效。重点讲了这一步 —— Optiland 升级后如果
    改了某个控件的名字,替换会失效而且不会报错,界面悄悄变回英文。
  • --coverage:词库里有没有漏翻的。Optiland 升级后拿它看新增了哪些文字。
  • --audit:界面上到底还有没有英文。它会把真实主窗口整个构造出来,走遍控件树,
    包括没有展开的菜单和没有点开的标签页 —— 比人眼看截图可靠。

顺带解释了「离屏」是什么意思(Qt 的运行方式:界面照常构造,但不显示到屏幕上,
所以终端里、没有显示器的服务器上都能跑)。

汉化行为无改动,词库无改动。

v0.2.5

Choose a tag to compare

@Kino2315 Kino2315 released this 26 Sep 04:50

两处

optiland-zh --audit --help 之前看不到 audit 自己的选项。 argparse 认领
--help 后会当场打印 launcher 的帮助并退出,轮不到转发给 audit。现在会显示:

usage: optiland-zh --audit [-h] [--all] [--language LANGUAGE] [--rule {...}]

「离屏建真实主窗口」这句改清楚了。 原来把三个概念硬挤在一起,没有虚词,
读起来像缺字。改成「构造真实主窗口(离屏跑、不弹窗)」,并在 docstring 里
点明「真实」和「离屏」是两件事 —— 前者指实例化 Optiland 真正的 MainWindow
(不是假数据),后者指用 Qt 的 offscreen 平台(终端里也能跑)。

v0.2.4

Choose a tag to compare

@Kino2315 Kino2315 released this 26 Sep 04:47

只有一种调用方式了

原来混着两种:optiland-zh --self-test 是参数,python -m optiland_zh.audit 是模块。
同一个程序、同一类"跑一下看数字"的工具,却要记住哪个是哪个。

现在四条统一:

optiland-zh --self-test                       # 7 项断言:补丁生效没
optiland-zh --coverage                        # 对源码的静态覆盖率
optiland-zh --audit                           # 离屏建真实主窗口,逐条核对
optiland-zh --extract --diff <词库>            # 扫描源码,列出还缺什么

--audit 和 --extract 自己的选项跟在后面就行,原样转发:

optiland-zh --audit --rule cjk-mixed
optiland-zh --extract --diff src/optiland_zh/catalogs/zh_CN.json

python -m optiland_zh.audit 这种写法仍然可用,只是文档不再教它。

汉化行为无改动,词库无改动。

v0.2.3

Choose a tag to compare

@Kino2315 Kino2315 released this 25 Sep 15:25

用户会看到的改动

README 常见问题里那条命令写全了。

- 不想要了用 `--uninstall-shortcut`。          ← 只给参数,不知道属于谁
+ `optiland-zh --install-shortcut` 创建;不想要了用 `optiland-zh --uninstall-shortcut` 删除。

中英文 README 同步。

内部修正(不影响汉化行为)

  • audit 的分档判据改了。 原来的 cjk-heuristic(「含中文即算已汉化(宽松)」)
    把两类东西混在一起:30 条一个拉丁字母都没有(显示/隐藏 分析、最小二乘)
    其实是确定译好的,43 条中英混合(文件(F)、从 CODE V 导入(C))才需要瞄一眼。
    拆成 cjk-only / cjk-mixed 两档,判据改成看「还剩没剩英文」。
  • 修掉一个排序 bug。 分档用 Counter.most_common() 按数量排,标题却写
    「强度从高到低」—— 以前数量恰好也是强度序所以看不出来,拆档后 cjk-only
    直接沉到了缺口下面。
  • 删掉一处不存在的引用。 标签里写的 --strict 选项在 parser 里根本没有。
  • CONTRIBUTING.md:命令引用补全;版本号是三处不是两处;注明相对路径要在
    仓库根目录运行。

汉化行为与 0.2.2 完全一致,词库无改动。

v0.2.2

Choose a tag to compare

@Kino2315 Kino2315 released this 25 Sep 14:55

改了什么

消除一处会让人误读的表述。 README 原来写「不修改上游源码」,可能被读成
「不需要 Optiland」—— 但 Optiland 本体是必须装的,本包只是运行期补丁。

  • README(中/英):开头点明「这是补丁,仍需装 Optiland 本体」
  • README:「18 处」标明口径是 currentText();贡献命令注明在仓库根目录运行
  • PyPI 摘要行(pyproject.toml 的 description)同改 —— 它不随 README 更新
  • engine.py docstring:原文写支持 itemText(),但代码和同文件第 220 行都明说
    故意不包装它,改成 QLineEdit.text()

没有功能改动。汉化行为与 0.2.1 完全一致。

v0.2.1 — 文档重写

Choose a tag to compare

@Kino2315 Kino2315 released this 21 Sep 13:15

README 重写,主要为了让 PyPI 项目页好看 —— 它是被打进包元数据的,
改仓库里的文件不会更新那个页面,所以需要一个新版本。

变更

  • 快速开始提到最前,三条命令
  • 去掉说明性数字与过程叙述,篇幅 228 → 98 行
  • 桌面图标从一个小节压成常见问题里的一句话
  • 贡献一节改为按所需技能排序的表格,前两项不需要懂 Python
  • 术语对照表移入 CONTRIBUTING.md

没有代码改动。

v0.2.0 — 无控制台入口与桌面快捷方式

Choose a tag to compare

@Kino2315 Kino2315 released this 19 Sep 06:32

无控制台入口 + 一键创建桌面快捷方式。

安装

pip install "optiland[gui]" optiland-gui-zh
optiland-zh

新增

  • optiland-zh-gui —— 无控制台入口。原入口是控制台程序,双击会多一个黑框;
    这个用 GUI 子系统,双击不弹黑框,出错时弹对话框。
  • optiland-zh --install-shortcut —— 在桌面创建「Optiland 中文版」图标,
    用的是 Optiland 自己的应用图标。配套 --uninstall-shortcut / --shortcut-dir /
    --console-shortcut。

修复

  • 非中文 Windows 上 subprocess 未指定编码,读取线程抛异常,
    表现为「命令失败但没有任何原因」。
  • 英文版 Windows 建不了中文名快捷方式 —— WScript.Shell 会把路径里的中文
    折成 ?,导致 FileNotFoundException。产品 bug,不是 CI 特有。

数据

  • 436 条静态词条 + 72 条动态消息模板
  • 源码覆盖率 99.5%,界面覆盖率 96.8%(真缺口 0)
  • 83 项测试

v0.1.0

Choose a tag to compare

@Kino2315 Kino2315 released this 19 Sep 05:45
9aca3c2

首个版本。

这是什么

Optiland GUI 的简体中文汉化包。运行期翻译层,不改上游源码 ——
pip install -U optiland 之后汉化依然有效。

安装

pip install "optiland[gui]"
pip install optiland-gui-zh
optiland-zh

内容

  • 436 条静态词条 + 72 条动态消息模板
  • 源码覆盖率 99.5%(382/384)
  • 界面覆盖率 96.8%(1047/1082),真缺口 0
  • 58 项单元测试

技术要点

  • 双向翻译:界面显示中文,而 currentText() / QLineEdit.text()
    读回来仍是英文。GUI 里有 18 处拿控件文字当逻辑键(比如用下拉框显示
    的分析名去查注册表),单向翻译会让分析、面型编辑、优化变量静默失效。
  • 覆盖了 Qt 在 C++ 内部创建的控件:QFormLayout.addRow 的标签、
    QDockWidget 构造器,以及 Qt 自带对话框(载入 qtbase_zh_CN.qm)。

已知限制

  • 画在图里的文字(matplotlib 绘图区标题)够不到
  • 只覆盖 Optiland 自身的界面,第三方控件依赖它们自己的 i18n

MIT

Full Changelog: v0.1.0...v0.1.0