Skip to content

Obsidian-Forge/obsidian-i18n

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
Nov 4, 2024
Sep 27, 2024
Nov 12, 2024
Nov 13, 2024
Dec 5, 2024
Dec 5, 2024
Oct 24, 2024
Oct 26, 2024
Oct 26, 2024
Oct 26, 2024
Oct 26, 2024
Oct 26, 2024
Sep 24, 2024
Sep 12, 2024
Jul 26, 2024
Oct 26, 2024
Oct 26, 2024
Oct 26, 2024
Dec 5, 2024
Oct 26, 2024
Oct 26, 2024
Oct 26, 2024
Oct 26, 2024
Oct 26, 2024
Dec 1, 2024
Oct 26, 2024

Repository files navigation

obsidian-i18n-translation

介绍

本项目为了便于国内用户访问,同时在Gitee与GitHub上传了项目,Gitee仓库用于存储obsidian-i18n插件的译文词典,请勿在Gitee仓库提交issue,如果您有任何问题与建议想反馈,请前往Github

(issue被用于自动化审核,非机器人账号提交的issue会导致审核流程卡住)


下面为插件的介绍,更多内容见Github

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不应该被翻译。

Q4:为什么手机/ipad端用不了?

因为这个插件只能在桌面端使用,它使用了一些移动版不支持的api。你可以在桌面端汉化插件后同步到移动端。

进阶设置

详见 obsidian-i18n Wiki

开源协议

本项目采用MIT协议开源。

鸣谢

沉浸式翻译功能受到以下两个项目的启发:

从而并引入了沉浸式翻译的JS SDK

非常感谢imfenghuang、xhuajin 以及沉浸式翻译的开发团队。