2019年8月7日 星期三

2019/8/7-Unity繁簡中文自動翻譯系統完工。





今天是遊戲的上架日,
正好也在這天把雜事處理完了,
接下來的兩三個月終於可以完全專注在開發上頭,
作為第一天,
我開了個簡單的系統當作目標,
沒想到一弄就是一整天,
想一勞永逸真不容易
(つ﹏<。)



主要由於場外人生是一款文字遊戲,
短期內不大可能做外語翻譯,
但繁簡中文的系統可以先做出來,
這樣之後所有添加的內容就會自帶繁簡中文了
٩(๑òωó๑)۶

具體來說,C#的繁簡翻譯有以下幾種:

方法一:使用Microsoft.VisualBasic.dll

方法二:使用kernel32.dll

方法三:使用微軟類庫Microsoft Visual Studio International Feature Pack 2.0

方法四:利用using Microsoft.Office.Interop.Word;來進行翻譯。

方法五:使用微軟雲端翻譯服務。


方法三四五的問題如下:

3.Microsoft Visual Studio International Feature Pack 2.0已經很久沒更新了。

4.using Microsoft.Office.Interop.Word,必須系統有Word而且效能堪憂,
翻譯功能本質上和前兩種沒有差別。

5.雲端翻譯是收費服務,簡繁對翻還不需要用到翻譯服務。

這裡有一個小問題點,在漢字中,
簡體轉繁體會出現缺字,
出現多字併一字的混亂情況,
另外語意上依地區不同難免會有出入,
用高級一些的翻譯或許可以解決問題,
但暫時還是先求有再求好吧
つ´Д`)つ

而今天之所以花了大量的時間,
是因為嘗試在Unity中使用Microsoft.VisualBasic.dll,
問題出在Unity本身是Mono架構,
一直到了現在都還只支援.NET 3.5的dll,
經過整天的鑽研,
我終究是放棄了在Unity中集成VB的計畫,
只希望官方有一天能更新整合好
_| ̄|○

被逼到絕路後就剩最原始的kernel32.dll來製作了,
這是作業系統自帶的類庫,
使用上也比較沒有兼容性的問題,
至少這次Unity終於接受了
(´Д⊂ヽ



程式上弄了半天也就是這幾行,
比想像中簡單太多了,
也不需要引用額外的參考,



系統做完後就簡單了,
回到自己的領土把接口做好,
在場外人生中,
現在已經有完整的事件系統了,
這是Steam版上架前的努力,
雖然只是程式上的進步,
但對未來的開發一定很有幫助的,
譬如現在,所有新增還有以前已經套用新事件系統的事件,
就會自動進行繁簡轉換,
一次搞定
(o'v`b)b



在主選單加上字體選擇和應急按鈕,
這樣就算大功告成了,
另外系統雲端存檔的部分也做好了,
這樣以後設定選項也會自動同步了,




繁簡轉換已經可以完全成功了,
亂碼的問題也解決了,




一些用新系統寫的事件也已經會自動轉換了,


調回繁體也沒問題,
今天應該就能把這個系統大致完工,
明後天好好開發內容吧,
準備來上個小版本測試一下,
真是期待
(๑ÒωÓ๑)
----
後記:

當天輸出完後簡體翻譯的打包版本完全無法顯示,
一片空白,
這在引擎上是完全沒有問題的,
於是乎我又陷入Debug狂魔的模式了,
一開始以為是系統指示詞、編碼方式和字體的關係,
但測試了一整天完全無果,
隔天起床一路無頭亂竄到下午,
終於放棄了這個簡體系統,
跑去推了點其他進度、打包測試完,
休息了一下總感覺不做完睡不著覺,
早上六點我昏昏沉沉的繼續Debug,
還翻出了十年前的Microsoft Visual Studio International Feature Pack 2.0,
裝好確實也行,但打包後依舊無法正常顯示,
這時我突然想到可能是Mono的問題,
之前都是想說已經用IL2CPP了,
所以沒特別測試,
果然Mono引擎環境的國際碼支援在\Editor\Data\Mono\lib\mono\2.0下,
分別是I18N.CJK.dll(中日韓)、I18N.West.dll外加I18N.dll,還有一些特殊的,
這些dll並【不會】在【打包】時自動加入參考,
但在【引擎上可用】,
解法是從IL2CPP改回Mono,設定disable stripping,
把該導入的dll全放進Assets中,
打包測試,
終於可以正常顯示了,
呃,一定很難想像我看到那幾個簡體字正常跳出來時有多興奮,
總之是成功在Unity中達成繁簡中文轉換系統了,
花了兩天兩夜,感激上蒼
(つ﹏<。)


豁懷
2019/8/7

沒有留言:

張貼留言

你發現了這篇網誌的留言板,在這留點什麼吧|д・)