Skip to content

0011000000110010/obsidian-i18n

Repository files navigation

Click to see the source
Obsidian i18n


GitHub Downloads (all assets, all releases) Contributors Forks Stargazers Issues MIT License

obsidian-i18n是用于翻译其他obsidian插件的插件。

obsidian-i18n通过正则匹配其他插件源代码中可能需要被翻译的内容,并输出为词典(待翻译),然后提供三种方式(本地文件模式 、云端文件模式和机器翻译模式)来翻译此词典,然后借助i18n动态的注入与卸载词典。

综上,obsidian-i18n是一个obsidian插件国际化的一站式解决方案。


⚠️警告⚠️

您需要知道:插件翻译的工作原理是修改被翻译插件的源文件,i18n会备份修改前的文件,但不排除可能的风险。因此建议您在首次使用前备份您的插件目录(库文件夹/.obsidian/plugins)

目录 Table of Contents

什么是i18n

在信息技术领域,国际化与本地化(英文:internationalization and localization)是指修改软件使之能适应目标市场的语言、地区差异以及技术需要。 基于它们的英文单字长度过长,常被分别简称成i18n(18意味着在“internationalization”这个单字中,i和n之间有18个字母)及L10n。

obsidian的i18n

目前obsidian官方没有制定i18n的相关规定,导致插件的翻译并没有一个通用的框架。

一般翻译的办法就是直接对插件本体动手,通过定位插件设置页面常用的元素,再找到对应的字符,然后进行其他语言的替换。

本插件本质上也是执行了类似的操作,只是把查找、替换、备份、还原等工作交与插件实现,尽可能降低用户直接操作源代码的行为,减少了被译插件错误的可能。

obsidian-i18n插件介绍

敏感权限声明

修改其他插件源代码

  • 因为obsidian-i18n的翻译功能实现基于替换其他插件源代码中的文本,因此需要修改其他插件的源代码(会备份原文件)。
  • 本插件完全开源,代码可读,如果您担心安全问题,可自行下载编译。

使用网络(可选)

  • 在线文件模式:从网络下载已翻译的词典
  • 机器翻译模式:接入各种api来快速翻译词典
  • 内置更新检测:内置了插件更新检测,以提醒用户升级某些重要版本来解决bug

快速上手

安装插件

因为插件暂时没有上架obsidian插件市场,目前有两种安装办法

brat安装(需要网络能正常连接github)

  • 在obsidian插件市场安装插件brat
  • 快捷键 Ctrl + P,选择命令 BRAT: Plugins: Add a beta plugin for testing
  • 输入 https://github.com/0011000000110010/obsidian-i18n
  • 在obsidian设置中确认本插件已启用

手动安装

  • 在Github Releases中下载 main.jsmanifest.jsonstyle.css 三个文件并放入obsidian插件目录下的 i18n 文件夹
  • 在obsidian设置中确认本插件已启用

选择适合自己的翻译方式

obsidian-i18n的工作原理简图:

云端文件模式:最省心,但适配数量有限

本插件提供在线词典库,由作者维护,接受用户上传。

目前已支持obsidian官方插件市场下载量top100的插件,同时词典数量在社区的贡献下不断增加,详见已翻译插件名单

操作指南:

  • 在插件设置中启用 云端文件模式

  • 点击侧边栏的i18n按钮

  • 选择对应插件右侧的 下载 按钮(下载 被点击后,会变成 翻译

  • 点击 翻译 按钮

  • 正常情况下,翻译已生效

  • 如有错误,请点击还原按钮,被翻译插件会回到原状态

本地文件模式:自定义程度最高

  • 启用 本地文件模式

  • 点击侧边栏的i18n按钮

  • 点击对应插件右侧的 提取 按钮

  • 点击新出现的钢笔图案,即 编辑 按钮

  • 点击后 编辑 后会弹出内置编辑器,此编辑器可格式化显示json词典

  • 在编辑器内手动完成翻译后,点击 翻译 按钮

  • 正常情况下,翻译已生效

  • 如有错误,请点击还原按钮,被翻译插件会回到原状态

机器翻译模式(辅助翻译,但可能出错)

机器翻译模式本质为本地文件模式的补充,用于减轻翻译的工作量,但是可能会引入以下问题:

  • 机器翻译质量低
  • 机器翻译无法识别函数/控件/变量等不应该被翻译的内容,因此翻译结果可能无法直接使用

用户在使用机器翻译前应当知晓:如果机器翻译后直接应用词典,可能会出现报错,此时应该手动检查词典内原文与译文的对应情况,如果发现函数/控件/变量等不应该被翻译的内容被翻译了,请手动修正

目前支持百度翻译api与兼容OpenAI格式的大语言模型api。对应接口api的获取方式请自行查询资料。打开机器翻译模式、配置好对应接口后,会出现对应接口的按钮,点击按钮,等待翻译完成后就能得到词典,如果注入词典出错,请插件词典内译文是否有误

百度接口

使用百度机器翻译,需要用户申请百度翻译的APPID与KEY。

OpenAI接口

使用兼容OpenAI格式的大语言模型api进行翻译。

选项解释:

  • 接口地址:默认为https://api.openai.com ,即ChatGPT官方地址,使用官方key则无需修改。如果使用第三方服务,请参考对应服务商的文档说明。
  • KEY:即api key,请参考对应服务商的文档说明。
  • 模型:即model,填写你需要使用的模型,注意此处模型名称为api对应的模型名(部分服务商的日常名称与api名称不一样),请查询对应服务商的文档。
  • 提示词:即prompt,用于指导AI如何翻译,本插件提供默认提示词,如有需要可自行调整。
  • 请求间隔(单位ms):用于限制请求频率,请查询对应服务商的文档以选择合适频率,如果不知道可以保持默认,默认2次/秒,较慢但一般不会超出限制。

常见问题 FAQ

Q1:为什么i18n里没有插件/比实际插件数量少?

你的字典格式错误,导致插件无法正确读取。请检查所有插件目录/lang/zh-cn.json,确认json格式是否正常,最简单的办法是删掉所有lang目录。

常见错误是缺少逗号。

Q2:为什么点了`翻译`按钮,但是插件依然是原文?

此处的翻译注入词典,因此需要词典内存在翻译后的内容,如果提取完直接翻译,则不会有任何变化。

Q3:为什么注入词典之后,插件无法启动,报错plugin fail to load

用户在使用机器翻译前应当知晓:如果机器翻译后直接应用词典,可能会出现报错,此时应该手动检查词典内原文与译文的对应情况,如果发现函数/控件/变量等不应该被翻译的内容被翻译了,请手动修正

例如原文为:".createEl(\"h1\", {\n text: \"Delete the file and its all attachments - logs \"\n })"

译文可能被翻译为:".创造El(\"h1\", {\n 文本: \"删除文件及其所有附件 - 日志\"\n })",

但此处的.createEltext不应该被翻译。

进阶设置

详见 obsidian-i18n Wiki

开源协议

本项目采用MIT协议开源。