曾經(jīng)那個不學好英語的蜜汁少年已在路上!
fuck Code 不止一兩天。莫名我就喜歡你,雖然我沒有學好英語!

老夫聊發(fā)少年狂,治腎虧,不含糖。三百年,九芝堂。英語虧欠太多api都讀不懂怎么辦!是時候該放大招了。
你能在本篇文章中收獲什么?
- 學會制作as插件
- get劃詞翻譯帶記錄歷史的as插件
- 擒住一只活雞排
目錄
- 冥想
- 找輪子
- coding
- 集成和使用
- 總結
冥想

提示:不想看太多過程和廢話請直接跳至集成和使用!
ヾ(?`Д′?)我擦嘞。老夫編程思想已驚天地泣鬼神、思想健壯、碼到成功、功德圓滿、滿上滿上 干了... 喂!喂!停一下你開始又亂飆車。豈能被幾個英語給蹩了一腳。
開始嘗試記單詞,從哪里看起呢。百詞斬、扇貝單詞、開心詞場原價都是一百多 兩百多的,通通通通20塊。
:-( 三天后瑪?shù)聦嵲诳床幌氯ィ切﹩卧~軟件里的東西和我寫的代碼好像沒有半毛錢關系啊。要是有辦法能把我每天不認識的編程單詞都記錄下來該多好呀!
僅僅只是翻譯還不能滿足我,我要的是以后你都在我的腦海里。
不行,我要在我的ide上直接翻譯,還要把翻譯的單詞歷史記錄下來。還要方便閱讀,最好是markdown格式。
需求:
- ide上的劃詞翻譯
- 歷史單詞保存
- markdown格式方便閱讀
找輪子
那誰誰說過,不要重復造輪子。(偷懶開始)
那我們就開始搬運現(xiàn)成的翻譯輪子唄!哈哈哈
也就是說我們需要找一款已經(jīng)開源的翻譯插件,在原有的基礎上加上歷史記錄和markdown格式的保存。
ok,我們找到了ECTranslation,他已經(jīng)集成了有道翻譯在as中使用。并且支持了駝峰命名的代碼翻譯。比如常見的onCreate是無法直接翻譯的。需要把on和Create拆開。這點已經(jīng)在ECTranslation中非常完善了。
那么就讓我們就開始愉快的擴展編碼吧! 快來吧。還等啥。老娘都不怕,你怕蛇?

coding
把妹子分三步:灌醉 上車 鎖好門<( ̄3 ̄)> 。
1.首先我們要下載IntelliJ IDEA。
2.創(chuàng)建Plugin項目給它取一個名:ReciteWords(意思是:背單詞)
3.編碼
具體的創(chuàng)建工程請參考:自己動手寫一個Android Studio插件
我們在工程目錄中的src建一個AnAction觸發(fā)器取名ReciteWords。

將ECTranslation輪子中關鍵的類復制進來。
RequestRunnable是一個翻譯請求線程。
Translation是翻譯結果對象。
Logger是日志工具。
ReciteWords
public class ReciteWords extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
//按下熱鍵觸發(fā)回調(diào)
}
···· 省略代碼
}
我們的ReciteWords繼承了AnAction類,它提供了當你按下快捷熱鍵就會觸發(fā)回調(diào)actionPerformed()方法。那么我們可以在該方法中取出要翻譯和記錄的單詞。 具體實現(xiàn)請移步Github看代碼。地址在本文末尾。
歷史記錄和markdown
/**
* 存單詞
* @param Words 原文
* @param translate 譯文
* @throws IOException
*/
private void saveWords( String Words,String translate) throws IOException {
String usrHome = System.getProperty("user.home");
File file = new File(usrHome+"\\ReciteWords.md");// 要寫入的文本文件
if (!file.exists()) {// 如果文件不存在,則創(chuàng)建該文件
file.createNewFile();
FileWriter writer = new FileWriter(file,true);// 獲取該文件的輸出流
writer.write("# 這里是你該記住的單詞。請用Markdown編輯器打開它。\r\n");
writer.write("---\r\n\r\n");
writer.flush();// 清空緩沖區(qū),立即將輸出流里的內(nèi)容寫到文件里
writer.close();// 關閉輸出流,施放資源
}
FileWriter writer = new FileWriter(file,true);
writer.write("- "+Words+"\r\n");
writer.write("```\r\n");
writer.write(translate);
writer.write("```\r\n");
writer.flush();
writer.close();
}
注釋很豐滿,設計很簡單。saveWords方法接受兩個參數(shù),原詞和譯文信息。通過java File操作寫入文本。markdown的格式是預先寫好的字符串,在調(diào)用方法時就會往里寫入。
生成插件
最后我們將整個工程生成一個Jar文件。這個文件就是插件。

方法是點擊Build找到Prepare Plugin Module選項就生成了插件。

集成和使用
- 打開Android Studio, Preferences -> Plugins -> Install plugin from disk -> 獲取ReciteWords.jar安裝并重啟Android Studio。
- 選中代碼,按下 Ctrl + Alt+Q(也可以自己設定)。即可翻譯。效果如下:

- 翻譯的單詞會被記錄在當前項目的根目錄下的翻譯歷史記錄.md文件中(如:\xxxProject\翻譯歷史記錄.md)??梢酝ㄟ^Markdown打開它。as翻譯后切換Project模式可以在項目文件夾中直接看到。效果如下:

修改快捷鍵
如果你要改成自己的設置的快捷鍵也可以哦。
- Preferences -> Keymap -> 獲取ReciteWords - > 右鍵 add Keyboard Shortcut. 輸入你想要的快捷鍵即可。
提示: 如果你集成后發(fā)現(xiàn)按快捷鍵沒有反應。多半是快捷鍵沖突了。一定要修改熱鍵哦。
總結
程序員英語不好的人當下一抓一大把,現(xiàn)在編程的門檻降低了。但是如果碰上了新技術,或者是深入的去看源碼性質(zhì)的東西。我想未必你能立刻找到中文文檔。像我這種該讀書的年紀沒好好念書(高中貪玩),后知后覺的才開始撿起來學的人更應該重視。畢竟學好英語等于如虎添翼呀。所以反過來看制作這樣的插件是非常有必要的。如果單純只停留在劃詞翻譯上,可能還是沒有針對性的去記憶。當時用得挺爽。過后也給忘記了。
最后如果你和我一樣是個蹩腳英語的程序員,用這個插件的同時還是要回頭去看那個歷史記錄去記哦。哈哈哈
源碼和插件下載地址:https://github.com/BolexLiu/ReciteWords
如何下次找到我?
- 關注我的簡書
- 本篇同步Github倉庫:https://github.com/BolexLiu/DevNote (可以關注)
