英語不好?是時候打造一款AndroidStudio中記單詞的翻譯插件了

曾經(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模式可以在項目文件夾中直接看到。效果如下:
3.png

修改快捷鍵

如果你要改成自己的設置的快捷鍵也可以哦。

  • Preferences -> Keymap -> 獲取ReciteWords - > 右鍵 add Keyboard Shortcut. 輸入你想要的快捷鍵即可。

提示: 如果你集成后發(fā)現(xiàn)按快捷鍵沒有反應。多半是快捷鍵沖突了。一定要修改熱鍵哦。

總結

程序員英語不好的人當下一抓一大把,現(xiàn)在編程的門檻降低了。但是如果碰上了新技術,或者是深入的去看源碼性質(zhì)的東西。我想未必你能立刻找到中文文檔。像我這種該讀書的年紀沒好好念書(高中貪玩),后知后覺的才開始撿起來學的人更應該重視。畢竟學好英語等于如虎添翼呀。所以反過來看制作這樣的插件是非常有必要的。如果單純只停留在劃詞翻譯上,可能還是沒有針對性的去記憶。當時用得挺爽。過后也給忘記了。

最后如果你和我一樣是個蹩腳英語的程序員,用這個插件的同時還是要回頭去看那個歷史記錄去記哦。哈哈哈

源碼和插件下載地址:https://github.com/BolexLiu/ReciteWords


如何下次找到我?

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容