在本地维护 Excalidraw 插件的中文翻译

其实我只是觉得右键菜单中“插入任意文件”两项翻译得有点太长了,想要缩短一下。

原文

查看插件源码的 rollup.config.js,Excalidraw 似乎也只是将中文翻译文件作为文本读取。

下载插件的 zh-cn.ts,将代码中 export default 及以前的部分删除,改为 x =

image

将 Excalidraw 插件 main.js 中 const PLUGIN_LANGUAGES = 的值改为:

{"zh-cn": LZString.compressToBase64(app.vault.adapter.fs.readFileSync(<翻译文件基于系统的绝对路径>, "utf-8"))}

image

以上就完成了翻译文件的导入。接下来有什么想要修改的翻译就在本地 zh-cn.ts 修改,下次启动 Ob 时生效。

翻译没有优劣之分,自用为主。


结果边改边看,发现翻译确实有不统一和理解起来比较困难的地方。英文原版情况稍好,但由于时间跨度长,前后用词也并非完全统一,表达同一意义的句子结构有时也不尽相同。

对照中英文件、插件维基及作者的 YouTube 视频等,对有疑义的项目查看插件内部如何调用以及实际操作确定,我将这些情况总结并同样分享在代码所在地址。

注意:有一些不被翻译文件控制的默认中文翻译,如 View mode →查看模式、frame →画框等,翻译文件只能和它们同步。

考虑将翻译提交到原插件?

但也许让作者审核数百个并无功能变动的改动并不合适呃?不过如果你已经和插件作者建立了良好的合作关系,想要参考或直接拿去提交也是可以的。

最后,祝端午快乐。

这两天尝试“适配分享的”全自动化流程,刚刚也第一次定时执行成功了。之前说每次更新再改一下 main.js,以及多端同步自己找打包方法之类,现在也可以直接下这个仓库的 release。

虽然形式是插件,重点却是分享翻译及工作流。你可以修改这个工作流去同步更多别的东西。

提示:

PLUGIN_LANGUAGES 原本还有俄语翻译,这里为了方便(和缩小文件体积)只留了中文翻译。

GitHub Actions 定时需要排队。假设工作流指定 10:00 同步,可能 10:30 10:40 才执行。属实是新人杀手了。

(截 2.15.1)基本转正,个别未同步(如“插件 Wiki”还是“插件维基”,相关讨论见 #2419)。

基本方法如下:

核心关注两类:

一是需要特定知识的翻译。

  • 插件内的

如“more drawings”单看可能被理解为“几张绘图”,但该项实际位于启动画面,前面还有默认文字,连起来是“187 more drawings”,因此只能翻译为“张绘图”。

  • 插件上游的

若你不太理解,可访问 Excalidraw.com 在线操作,就能看到一部分继承自上游、无法被插件更改的翻译内容。

  • Obsidian 内的

如“Graph view”直译“图形视图”,但实际指的是 Obsidian 核心插件“关系图谱”。

  • 领域内的

如“Miro-style”的 Miro 实际指的是白板工具 Miro.com,需补充解释。

二是某些翻译过后依然会造成理解障碍的表述。

明确操作结果后,重新组织语言进行解释。

针对可能被问到的一些问题,粘贴如下:

## 通过场景理解

软件翻译涉及许多实际操作场景。如果您对某些翻译有疑问,请注意,它们可能只是系列操作或连续界面步骤中的片段。您可以通过实际场景进行测试和体验。

## 术语

在原始英文文本中,某些术语及其同义词有时会互换使用。此时,我们的翻译选择应基于这些项目的实际功能或表现。为减轻他人负担,你可以参考这些选择,但不要因此陷入完美主义担忧。

细则请继续查看 #2455 (comment)

因为痛点基本解决,之后又可以回归自用为主了。