---
# System prepended metadata

title: Notepad++ 繁簡轉換插件
tags: [Notepad++]

---

痾 其實也沒甚麼好寫的，不如說單純就是推廣文。

[Notepad++ Chinese Converter Plugin / Notepad++ 繁簡轉換插件](https://github.com/lkk9898969/Npp_ChineseConverter)
[![Notepad++ Chinese Converter Plugin / Notepad++ 繁簡轉換插件](https://opengraph.githubassets.com/abbddd/lkk9898969/Npp_ChineseConverter)](https://github.com/lkk9898969/Npp_ChineseConverter)

> 下面寫一些瑣碎的事

## 寫插件的動機?
很簡單，就是我有一個檔案，很大，有很多簡體，那我總不可能一個一個丟Google翻譯吧? 字數太多吃不了。 要再寫一個程式專門簡轉繁? 那不如直接寫成Notepad+\+插件。不過說的簡單做的難啦，也是花了挺多時間在Debug的，畢竟是第一次開發Notepad+\+插件。

其實我原本想說網路上隨便找應該有人寫類似的插件，沒想到Google搜尋都快被我點完了楞是一個結果都沒搜到，萬般無奈之下才只好自己寫，不然有別人寫好的直接拿來用就好了說。

## 實作細節?
其實也沒啥細節，就把選取的文字丟給`OpenCC`，再把轉出來的文字蓋上去而已。

`OpenCC`在運作的時候是需要吃字典的 (`OpenCC`在轉換實際上就是查字典)，而為了這個字典要存在其實下了蠻多功夫。理想上是直接把字典塞在Memory裡面，讓`OpenCC`直接讀Memory的字典就好了。  
但問題是我太菜了，沒搞懂(也懶得搞懂)`OpenCC`是如何去讀字典的，乾脆暴力把字典直接壓縮在插件裡面，第一次啟動的時候就把字典解壓縮出來，然後讓`OpenCC`去讀解壓縮完的字典。  
然後呢，為此還跑去研究`libarchive`如何直接把壓縮檔從Memory解壓到檔案系統，這部分其實不難，但是我又手賤去用7z壓縮字典，可想而知`liblzma`是怎麼成為子模組了 *(為了避免dll產生，`OpenCC`、`libarchive`跟`liblzma`都直接用static library link起來了)*。
老實說乖乖用zip包起來就好了，但是zip有那個經典的檔名code page問題實在是很怕解壓縮的時候出事，rar的話... WinRAR好像是要錢的齁? 我還是乖乖用7z就好了。

## 插件更新/優化?
痾，老實說應該是不會更新，這種插件是要能有什麼奇怪的BUG呢?(歪頭)  
能改進的地方就是把~~我懶惰不想寫的~~其他功能加進來，其實我有預留好`OpenCC`其他的轉換方式，選單連結上去就能用了，~~但我就懶得寫選單阿怎麼樣\~\~~~

另外一個比較能改的地方是不要把字典寫在檔案系統，直接在Memory的地方解壓縮後讓OpenCC去讀Memory的字典就好。  
但是嘛，這種東西我還真的是一點概念都沒有，根本就不知道要怎麼做。而且你說這個是優化嗎? umm... 拿記憶體空間換磁碟空間? 其實好像也沒差，但我就是不想多塞東西到硬碟上(kimoji問題)，而且更新字典也比較直觀，就是插件更新字典就一起更新了。現在的話，插件更新完還得重新按一次載入字典才會更新，為甚麼呢? 因為插件在載入時會檢查檔案系統上字典的資料夾存不存在，不存在才會將字典解壓縮。但是! 不會檢查資料夾內容。換句話說，你要硬刪掉一些用不到的字典省空間是可以的，畢竟不檢查也用不到。

## 發這篇文的目的?
~~炫耀~~不是，單純就是我想讓這個倉庫上google search，網路上查到說把倉庫丟去社群網站能大大提高搜尋引擎index倉庫的機率。不過我丟reddit已經1個禮拜了google搜下去還是啥都沒有才跑來這裡發文的。不過，這篇文好像也不會在google search上欸...嗯?