XUnity.AutoTranslator是一個能針對Unity遊戲的文字、進行翻譯的工具,在該遊戲不提供玩家想要的語系時算是有用,它本身支援使用網路服務例如Google翻譯等,但是使用網路翻譯多少有些限制,例如不能短時間內查詢太多資料,這造成了工具本身在遇到有大量文章內容的遊戲時就沒什麼用。
和ChatGPT玩了一個下午,終於搞了個還算可用的本地端伺服器:
- 針對簡體轉繁體:使用OpenCC來轉,這個速度快。不會針對用語做修正。
- 其它如英文轉中文:使用LLM:Facebook NLLB-200-1.3B、這個有時轉得很怪,英文轉中文算是正常一些。老實說這個對短句子例如單字效果不太好,能用簡轉繁就用簡轉繁。日文轉中文更是不行。
- Facebook NLLB-200-1.3B使用CPU模式,不使用CUDA,這樣子較慢、但是不同的PC皆能執行、相容性高,只是會吃CPU。要修改成CUDA、請自行改。不然就用virtualenv切環境
- 翻譯速度較慢、建議AutoTranslator的ini可設定翻過就不再詢問。相關應該是 UseStaticTranslations / GenerateStaticSubstitutionTranslations 二個參數,請自行查詢。
請整個資料夾下載
如果只是單純簡轉繁,建議用後面的 Helsinki-NLP / helsinki_translate_server.py
只是這個script我有可能針對目前玩的遊戲做修改,如果輸出有問題 (例如一大堆換行),則要改程式碼或是留言也行
只是這個script我有可能針對目前玩的遊戲做修改,如果輸出有問題 (例如一大堆換行),則要改程式碼或是留言也行
facebook/nllb-200
Facebook NLLB-200-1.3B / 600m的效果不是很好,就當個備案。而且文字換行部份也沒有處理得很好。
3.3B看來最OK,但是RAM使用量更大、回應更慢
CUDA模式下、VRAM用量:
facebook/nllb-200-distilled-600M:~2.5G (蒸餾版)
facebook/nllb-200-1.3B:~5.3G
facebook/nllb-200-distilled-1.3B:~5.3G (蒸餾版)
facebook/nllb-200-3.3B:~12.5G
步驟:
- 在該遊戲安裝XUnity.AutoTranslator (裝法請自行查詢):https://github.com/bbepis/XUnity.AutoTranslator
- 安裝python 3.11.9或是相容版本:https://www.python.org/downloads/windows/
- 執行pre_install.cmd:該指令碼會安裝python需要的library、LLM在CPU模式下跑。如果要變更為GPU,自行看pre_install.cmd內容。
- 設定XUnity.AutoTranslator的Config.ini,範本 Config.ini.sample 一樣在伺服器指令碼位置那。請記得設定檔是 Config.ini或是 AutoTranslatorConfig.ini
- 語系轉換目前只有:
- en:英文
- zh, zh-tw:繁體中文
- zh-cn:簡體中文
- ja:日文
- Config.ini設定好後,執行translate_server.py;第一次執行時會下載Facebook/NLLB-200-1.3B,這要先等它下載完、總共約5G多。
- 如果使用CPU模式,簡轉繁用OpenCC很快,其它狀況下因使用LLM,會有點慢
- 如果使用GPU模式會快很多,但是1.3B的模型會用掉~6.5G GPU VRAM
- 執行遊戲 (例如XXXX (Patch and Run))
- 等著看結果。
- 範例:Knights of Honor II: Sovereign (本身有簡中、沒繁中)
遊戲語系設定:簡中
Config.ini設定:
[General]
Language=zh-tw
FromLanguage=zh-cn
輸出結果:

遊戲語系設定:英文
慢到炸;如果VRAM夠,可切到CUDA模式
Config.ini設定:
[General]
Language=zh-tw
FromLanguage=en

- Elin (AutoTranslator裝時就有錯誤):
簡轉繁:沒調設定、轉完文章不會換行

設定
IgnoreWhitespaceInDialogue=True
IgnoreWhitespaceInNGUI=True
IgnoreWhitespaceInNGUI=True
後

英翻中 (1.3B):
品質當然較差,也沒如ChatGPT好,畢竟是在本地端跑,不能和線上服務比。
使用CPU運算,跑起來是較慢、另外一開始的更新新聞要先翻譯,所以這畫面的翻譯要等好一陣子才開始。
如果GPU VRAM夠多,是可以切換到GPU模式,或是如果有二台電腦,那在另一台裝翻譯器應該也行。詳細請自行研究修改。
翻譯前:

翻譯後:

英翻中 (3.3B):
三個模型中最大的,其實應該用GPU跑,但是這個沒16G起不來,還是用CPU硬吃。結果就是很慢


- SaGa Frontier Remaster
英轉中,結果不是很好
BepInEx x64-6.0.0-pre.2
XUnity.AutoTranslator-BepInEx-IL2CPP-5.4.5
[Service]
Endpoint=CustomTranslate
FallbackEndpoint=
[General]
Language=zh
FromLanguage=en
[Behaviour]
OverrideFont=Microsoft JhengHei
OverrideFontTextMeshPro=arialuni_sdf


另外有簡單版翻譯器frontend.html:
太長的文章不能翻,因為token最多似乎是512?


Helsinki-NLP
Server script: helsinki_translate_server.py
我發現Python的指令碼、還是要針對遊戲做調整,不過也因為伺服器跑在本地端,所以很容易客製化。
如果只做簡繁處理,建議使用此script。
AutoTranslator設定、請參考Config.ini.helsinki.sample:
[Service]
Endpoint=CustomTranslate
FallbackEndpoint=
[General]
Language=zh-tw
FromLanguage=zh-cn
[Custom]
EnableShortDelay=True
DisableSpamChecks=True
以Elin來說,它的設計就有點特別,有些地方用換行指令%0D%0A換行,有些是使用空白來換行 (例如人物對話) 。這造成在短句子、例如10字以內,如果用空白換行、排版會很難看,但是長句子不換行,整個就超出對話框。
這種狀況也只能客製伺服器來應對Elin的要求。不過相關版上的繁中包更快更直接就是了。
另外如果使用AutoTranslator中的換行設定會當機,因為AutoTranslator並不針對繁簡日文等做處理,有可能在Unicode中間就切掉,然後Elin就直接當掉。
GPU VRAM: 1.3G
目標:中日英轉換
優點:
- 反應速度較快,CPU模式下反應也快
- 每一個語言對都有自己獨立的 training corpus
- 想加其它語言,如果不管程式看來美不美的話,很容易加
Elin:日翻中、一樣不OK




Elin: 英轉繁中

