前往
大廳
主題

如何製作漢化工具.2

Q拔 | 2021-01-17 22:23:10 | 巴幣 2008 | 人氣 8313

這篇大概講解一下FFXIVChnTextPatch的流程與架構,再Git 抓好跑好gradle後,就可以執行來試驗看看。至於怎麼使用就不細講了,大致就是選好路徑與語言就點選開始漢化。

我們直接來看程式進入點再ReplaceThread可以看到執行時依照thread會分兩個階段:

1.替換字型:

            //字体补丁
            new ReplaceFont(resourceFolder + File.separator + "000000.win32.index", "resource" + File.separator + "font").replace();

  可以看到是編寫000000的sqpack檔案包,目的是將國際板內的字庫替換成漢化工具內附的字庫,藉此增加中文字的字符。不添加的話就算改成中文也只會看到一堆========。

另外對這字庫來源與製作方式還挺好奇的,只是都查不到、甚是可惜。

2.替換字串
//汉化补丁
                new ReplaceEXDF(resourceFolder + File.separator + "0a0000.win32.index", "resource" + File.separator + "text" + File.separator + "0a0000.win32.index", percentPanel).replace();

這邊修改0a0000這個檔案包,由於遊戲把所有的參數設定與各國字串都放這裡,所以漢化大部分流程也都是在處理這些地方。細部流程如下:
a.解析國際板與陸版各個檔案包的資料:
         解析0a0000可獲得一堆數據資料,基本上是一些exd與exh,這是一個被叫作excel的資料格式、跟微軟的文書工具一樣名稱,概念也很接近,exh定義了資料表的欄位與資料屬性,exd則是raw data。

b.找到正確的字串位置:
       根據前面的處理來取得國際板與陸板的字串之後,大致上是可以直接覆蓋的,不過還是有部分檔案資料常常會有變動,像是Quest類或是CompleteJournal,版本更新時同一筆資料常會被搬移到別的地方存放,若是不經過處理則會導致取用資料的錯誤,導致翻譯了中文但不是正確的字串。這也是目前這版FFXIVChnTextPatch會有錯誤的地方。

c. 換成合適的中文字串: 大部分的中文的資料來自陸版可以直接套用,不過因為版本有差異還是很多路板沒有的字串。網路上會流通一些大陸漢化組製作的版本通常也會補充一些翻譯。當然、如果掌握了編譯技術的話也是可以自行翻譯。不過有些字串涉夾雜FF14指令句的就相對有些麻煩、需要再進一步解析字句才能翻譯,不然貿然修改錯誤的指令句進去、輕則顯示錯誤重則遊戲當機。

目前先打這樣啦,通常是想到啥就打啥,所以內容可能不會一致,前後篇也可能不會銜接,不過有興趣的人可以嚐試試試看哈。



創作回應

大歐派蘿莉
感謝大大的付出,小弟我寫了一份筆記紀錄建置 Gradle 的過程,給沒有 Java 經驗的光戰一點參考 https://hackmd.io/@PenutChen/ff14cht-note
2021-05-27 04:34:40
Q拔
哇 真是很棒的筆記XDD 之前我有想過要不要寫詳細點,不過後來偷懶就算了XDDD
2021-05-27 20:50:36

更多創作