TranslationPlugin icon indicating copy to clipboard operation
TranslationPlugin copied to clipboard

支持 K2 模式

Open zjns opened this issue 1 year ago • 9 comments

📝 Issue Description

在 IDEA 设置里启用 K2 模式后,打开自动翻译文档,不能浮窗显示 Kotlin 代码注释的翻译,但还是能正常显示 Java 代码的翻译。 由于截图会导致浮窗关闭,所以没截到。 QQ_1723440155533

🏷 Plugin Version

3.6.4

🔁 Translation Engine(s)

Google Translate

💻 IDE and Operating Environment

IntelliJ IDEA 2024.2 (Ultimate Edition)
Build #IU-242.20224.300, built on August 7, 2024
Runtime version: 21.0.3+13-b509.4 aarch64 (JCEF 122.1.9)
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 14.6.1
Kotlin 插件: K2 模式(Beta)
Kotlin: 242.20224.300-IJ

📋 Stacktrace

No response

zjns avatar Aug 12 '24 05:08 zjns

我也遇到这个问题了

xermaor avatar Sep 08 '24 14:09 xermaor

me too,我今天才发现没发翻译了

weifengze avatar Sep 09 '24 07:09 weifengze

K2 目前还不支持

YiiGuxing avatar Sep 09 '24 07:09 YiiGuxing

分支已支持: https://github.com/xuhuanzy/TranslationPlugin-New

xuhuanzy avatar Sep 16 '24 09:09 xuhuanzy

对K2支持有更新的计划吗

geekscloud avatar Mar 01 '25 10:03 geekscloud

对K2支持有更新的计划吗

有,但改动很大。。。

YiiGuxing avatar Mar 01 '25 11:03 YiiGuxing

对K2支持有更新的计划吗

有,但改动很大。。。

开始改了吗, 有没有分支

geekscloud avatar Mar 01 '25 16:03 geekscloud

开始改了吗, 有没有分支

如果不反射内部api不可能有现在的效果, 但反射了jb不给你上架

不反射的情况下大概率是

完整的原始文档
翻译后的文档

你需要拉完完整的文档才能看到翻译的文档

xuhuanzy avatar Mar 01 '25 16:03 xuhuanzy

你需要拉完完整的文档才能看到翻译的文档

至少能用,而现在是完全无法使用

并且K2已经变成默认启用了🤔

zhangz1han avatar Apr 18 '25 05:04 zhangz1han

有计划什么时候支持吗?

bovindev avatar Jun 23 '25 08:06 bovindev

有计划什么时候支持吗?

@bovindev 正在开发了:feature/k2 。这个很恶心,很多有用的API官方不公开,有些功能要实现就得用反射,烦得要死。。。

YiiGuxing avatar Jun 23 '25 08:06 YiiGuxing

有计划什么时候支持吗?

@bovindev 正在开发了:feature/k2 。这个很恶心,很多有用的API官方不公开,有些功能要实现就得用反射,烦得要死。。。

用反射他不给你上架吧

xuhuanzy avatar Jun 23 '25 08:06 xuhuanzy

做着做着不知道什么时候就会遇到一个问题卡住。

YiiGuxing avatar Jun 23 '25 08:06 YiiGuxing

有计划什么时候支持吗?

@bovindev 正在开发了:feature/k2 。这个很恶心,很多有用的API官方不公开,有些功能要实现就得用反射,烦得要死。。。

用反射他不给你上架吧

@xuhuanzy 应该可以,我的插件他们好像不检查。

YiiGuxing avatar Jun 23 '25 08:06 YiiGuxing

现在的问题是,即使用了反射,功能有些还是有些受限,但没办法了,大体能用就行了。

YiiGuxing avatar Jun 23 '25 08:06 YiiGuxing

报告一下开发进度吧,目前快速文档部分的支持已经开发完成,欢迎大家抢先体验: TranslationPlugin-3.8.0-SNAPSHOT.250830.zip(2025.08.30 更新) 现在也支持在不开启自动翻译文档的情况下一键显示快速文档并翻译了,不再像之前那样要先显示快速文档,然后再手动操作翻译: Image 通过快捷键 Ctrl+Shift+Q(macOS 是 ^Q)就可以一键显示/切换。

下一步是内联文档的支持了,这一块也是老火得很啊,大家敬请期待!

@xuhuanzy 目前还是没有支持到 Rider ,大佬有没有兴趣和时间帮忙添加对 Rider 的支持?Rider 这部分我还没有去了解过,不过实现思路应该和现在对 K2 的实现思路是一样的,必要的时候可以使用 Kotlin 反射,但不能用你之前使用的修改字节码的方式,可能会被认定为是“毒”。我这边光翻译倒是没有使用到反射,但只能翻译第一个文档,点击文档里的链接跳到其他文档后有无法翻译了,这部分平台的相关数据类是不公开的,无奈只能用反射了,见 TranslatableDocumentationLinkHandler.kt

YiiGuxing avatar Jun 25 '25 14:06 YiiGuxing

Image 这种是内联文档吗?

imhansai avatar Jun 26 '25 04:06 imhansai

Image 这种是内联文档吗?

试用了下是OK的,感谢大佬

@imhansai 内联文档是这个:

Image

YiiGuxing avatar Jun 26 '25 05:06 YiiGuxing

目前个人测试体验,只有上述截图中没有翻译的问题,就是代码补全时,查看快速文档,没有翻译操作。 之前正式版中是有个翻译文档的操作,尽管只对Java起作用,见下图

Image

imhansai avatar Jun 26 '25 06:06 imhansai

目前个人测试体验,只有上述截图中没有翻译的问题,就是代码补全时,查看快速文档,没有翻译操作。 之前正式版中是有个翻译文档的操作,尽管只对Java起作用,见下图

Image

OK,我看一下。

YiiGuxing avatar Jun 26 '25 07:06 YiiGuxing

目前个人测试体验,只有上述截图中没有翻译的问题,就是代码补全时,查看快速文档,没有翻译操作。 之前正式版中是有个翻译文档的操作,尽管只对Java起作用,见下图

Image

@imhansai 已支持:TranslationPlugin-3.8.0-SNAPSHOT.250830.zip(2025.08.30 更新)

YiiGuxing avatar Jun 28 '25 18:06 YiiGuxing

支持记住翻译状态: TranslationPlugin-3.8.0-SNAPSHOT.250830.zip(2025.08.30 更新)

YiiGuxing avatar Jun 29 '25 09:06 YiiGuxing

支持记住翻译状态: TranslationPlugin-3.8.0-SNAPSHOT.250830.zip(2025.08.30 更新)

幸苦,解决一大难题,k2模式下可以一用了

geekscloud avatar Jun 29 '25 15:06 geekscloud

有计划什么时候支持吗?

@bovindev 正在开发了:feature/k2 。这个很恶心,很多有用的API官方不公开,有些功能要实现就得用反射,烦得要死。。。

用反射他不给你上架吧

佬, 我看作者说他的这个好像不检查, 你能你改的那个fork的版本, 合并一下吗? Clion 和 Rider 感觉用户还是挺多的.

XFZAIMFQ avatar Jul 29 '25 15:07 XFZAIMFQ

必要的时候可以使用 Kotlin 反射,但不能用你之前使用的修改字节码的方式,可能会被认定为是“毒”。

不懂你是咋搞的, 怎么拿到底层第一个执行结果的引用? 当时我是对着 jadx 反编译去改的, 没记错的话 k2 跟 rider 的布局差不多, 没道理 k2 行 rider 不行, 有可能是没处理协程?

xuhuanzy avatar Jul 29 '25 21:07 xuhuanzy

必要的时候可以使用 Kotlin 反射,但不能用你之前使用的修改字节码的方式,可能会被认定为是“毒”。

不懂你是咋搞的, 怎么拿到底层第一个执行结果的引用? 当时我是对着 jadx 反编译去改的, 没记错的话 k2 跟 rider 的布局差不多, 没道理 k2 行 rider 不行, 有可能是没处理协程?

@xuhuanzy 主要是在 TranslatableIdeDocumentationTargetProvider.ktTranslatablePsiDocumentationTargetProvider.kt 两个 Provider ,代理并拓展了原始的 DocumentationTarget。Rider 不行的原因在于我和 Rider 都对 IdeDocumentationTargetProvider 进行重新实现,并覆盖了IDE的默认实现,而我的实现在 Rider 中被 Rider 的实现覆盖了,所以我的不生效。即使我的实现优先级高,覆盖了 Rider 的实现,由于我的是基于IDEA默认实现的,也会导致 Rider 的文档无法生成。所以要解决的问题是怎么能代理 Rider 实现的 IdeDocumentationTargetProvider 并覆盖它。我尝试过,没能覆盖它,都是被它所覆盖。。。。 你可以尝试解决一下这个问题,实在不行的话,我准备在这一版本开放一些插件的拓展点,让其他插件也能使用我插件的翻译能力,到时候你通过你之前的方式,写一个插件,依赖我的插件,使用我插件开放的 API 对 Rider 文档进行翻译,这样,两个插件可以独立更新,你我各自的插件后续的更新功能大家都能用。最后再尝试上架插件市场,如果官方不给通过,我就开一个私有的插件仓库,上架到那上面,供大家使用。

YiiGuxing avatar Jul 30 '25 02:07 YiiGuxing

同时也报告一下内联文档支持的开发进度吧,最近比较忙,事件比较多,没有多少时间处理,都是过一段时间动一小点,再过一段时间再动一小点,没办法全力搞,等忙过后再说吧。而且内联文档的问题比快速文档的问题更加严峻,我都搞不明白官方为什么要那么设计,完全就不考虑第三方可能会拓展,一点口子都不开。。。。本来之前就处理好一版的,以为可以了,可是它在处理文档的时候虽然是在后台线程里处理的,但它会持有读锁,会把编辑文件的写操作给阻塞了,最后还是得推翻重来。。。。。不过现在也有新的思路了,只是还没空处理,唉~~~

YiiGuxing avatar Jul 30 '25 03:07 YiiGuxing

@YiiGuxing 还是开放插件的拓展点吧, rider里这个功能是必须要注入代码的. 代码扩展点要包含如何处理 html 的, 这个功能的 html 结构不一样. Image

xuhuanzy avatar Jul 30 '25 20:07 xuhuanzy

@YiiGuxing 还是开放插件的拓展点吧, rider里这个功能是必须要注入代码的. 代码扩展点要包含如何处理 html 的, 这个功能的 html 结构不一样.

@xuhuanzy 可以,等我先处理完内联文档,再着手搞这个。

YiiGuxing avatar Jul 31 '25 01:07 YiiGuxing

终于把内联文档翻译搞定了,欢迎大家抢先体验: TranslationPlugin-3.8.0-SNAPSHOT.250830.zip(2025.08.30 更新)

大家帮忙测测,现在还差一个一键翻译全文件的内联文档的功能,做完这个功能,再接着搞开发拓展点的功能,这个版本就才算是完成了。。。。

YiiGuxing avatar Aug 17 '25 17:08 YiiGuxing