花了週末兩天時間,將opencc移植成WIN10-UWP可用的庫,並完成自己的繁簡轉換工具。
我的繁簡轉換工具下載地址為:https://www.microsoft.com/store/apps/9nblggh68g62
移植後的代碼下載地址:http://yunpan.cn/cFiYYCxwTLdfX 访问密码 0533
因為今天(2015-11-1 20:18)才上傳,所以如果你在今天或接下來的兩到三天,是找不到這款軟件的,因為微軟商店在審核。。
來個GIF圖來瞅瞅:
台灣的“軟體”可以轉換成大陸的“软件”哦。
1.移植
1)創建一個VC++,DLL通用工程
2)for(auto x : xs) 要全部換成 for each (auto x in xs)
3)要關閉安全檢測,這個是為了使strcpy等函數編譯通過。
4)所有opencc的cpp文件,要禁用預編譯頭。
5)在Config.cpp中,要將 #include <unordered_map> 放到最上面,不然編譯不過。具體原因待查。
搞完這幾步,一個DLL就創建成功了。
2.創建RuntineComponent
我不知道C#工程能否直接調用DLL,沒有試驗過。不過即便能調用,相信也是相當麻煩的,需要處理一大堆類型轉換的問題。
所以,我們有必要創建一個通用工程,所有語言都可以調用的模塊,這個模塊就是RuntineComponent了。
具體可以參考博客:http://www.cnblogs.com/webabcd/p/3422563.html
還有C++/CX的一些參考,也是需要你去了解的:https://msdn.microsoft.com/en-us/library/windows/apps/hh699871.aspx
我的例子,名為OpenCCx,後面加一個x,表示我這個是亂搞的,並不是原作者搞出來的。
3.使用RuntineComponent
創建一個C#的UWP工程,添加OpenCCxRuntineComponent工程到你的解決方案。
在UWP工程中,添加引用,選擇工程,點擊“確定”即可。
然後,在你的工程裡面就可以使用 OpenCCxRuntineComponent名字空間。
例子是非常簡單的:
OpenCCxRuntineComponent.OpenCCx opencc_s2t = new OpenCCxRuntineComponent.OpenCCx(); --- 創建 opencc_s2t.Load(OpenCCxRuntineComponent.ConverterType.Simple2Traditional); ----使用什麼轉換規則
private void btn2Simple_Click(object sender, RoutedEventArgs e) { string ret = opencc_t2s.Convert(textBox.Text); ---使用簡單的Convert就OK了。 if (ret != null) { textBox.Text = ret; } }
你可以使用一個OpenCCx變量,用哪個就Load哪個。
我的代碼中,對已加載的東東進行了保存,不會重複加載的。
也可以使用多個OpenCCx變量,一個變量代表一種轉換,看個人需要了。
[PS]
終於可以使用自己的繁簡轉換工具了^_^,感謝opencc作者。
帖上opencc代碼地址:https://github.com/BYVoid/OpenCC
在線opencc轉換地址:opencc.byvoid.com
[END]