说明
我现在用的这个插件时ECTranslation,是用于做中英文翻译的,可以在看文档和注释的是方便的使用,然而近期变得不好用了
- 翻译的内容有时能出来,有时出不来,有时甚至没有反应
- 查看了该款插件的源代码,发现是调用的有道翻译的API接口,而且在代码里写死了APIkey和KeyFrom
- 调用了有道的API,加上上面作者提供的Key,再传入翻译的文本内容,发现返回值居然是请求次数过多,被封禁了…..
- 明白了,很多使用这个插件的开发者都是用的作者提供的默认Key,默认情况下1小时请求的限制次数是1000次
- 肯定是次数超了
- 但是他的配置信息是写在代码里的,能配置到IDEA的面板上供使用者自己配置就好了
- 于是我有了自己动手的想法
开始项目
第一步创建IDEA插件项目:
第二步目录结构如下图所示:
项目配置
plugin.xml
看代码,相信能看懂的:
<idea-plugin>
<id>cn.joylau.plugins.translation</id>
<name>joylau-translation</name>
<version>1.0</version>
<vendor email="2587038142.liu@gmail" url="http://www.joylau.cn">JoyLau</vendor>
<description><![CDATA[
Plugin for translate English to Chinese.<br>
<li>1. Choose the word you want translate.</li>
<li>2. Press Ctrl + NUMPAD0.</li>
<li>3. Fork ECTranslation Change ApiKey and KeyFrom</li>
]]></description>
<change-notes><![CDATA[
<li>Change ApiKey and KeyFrom for myself</li>
<li>Change KeyMap to Ctrl + NumPad 0</li>
]]>
</change-notes>
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
<idea-version since-build="141.0"/>
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
on how to target different products -->
<!-- uncomment to enable plugin in all products
<depends>com.intellij.modules.lang</depends>
-->
<extensions defaultExtensionNs="com.intellij">
<!-- Add your extensions here -->
</extensions>
<actions>
<!-- Add your actions here -->
<action id="ECTranslation" class="cn.joylau.plugins.translation.ECTranslation" text="Translate">
<add-to-group group-id="EditMenu" anchor="first"/>
<add-to-group group-id="EditorPopupMenu" anchor="first"/>
<keyboard-shortcut keymap="$default" first-keystroke="ctrl NUMPAD0"/>
</action>
</actions>
</idea-plugin>
只有一个action ,调用的类是ECTranslation
,快捷键设置的ctrl + NumPad 0
最后
代码都是人家的,我就没好意思往IDEA的仓库里上传了…
更新(2023-08-02)
最近发现有道 API 的接口不能用了,无法返回翻译数据,于是重新修改了下插件,发布最新版本
地址: https://github.com/JoyLau/joylau-translation/releases/tag/V2
目前有个问题就是,现在的有道 API 是收费的,刚开始注册送 50 元,不过很快会用完的, 到时再换其他的翻译 API 吧