RimWorldの英語オンリーMODを、自動で翻訳する方法を紹介しています。
日本語化はもちろんのこと、全ての言語に対応可能です。
紹介しているのは、翻訳プログラムでありツールではないため少し手間が掛かります。
とは言っても、パソコンの知識が少しある方なら十分に出来るのでトライしてみて下さい。
プログラムを動かすための前準備
紹介するプログラムを動かすためには、
- Pythonの開発環境
- Cloud Translation APIの動作設定
が必要です。
こちらの記事で導入方法を解説しているので、参考にして下さい。
これを行うことにより、どこからでもpyhonを実行できるようになるからです。
しかも、従量課金制なので使った後に請求が来ます。ご注意下さい。
※2万円分までは無料とのことですが、自動で翻訳しているとどれだけ使ったかイマイチ分からないので、本当に注意してください!
MOD自動翻訳プログラムについて
プログラムの概要
RimWorldのMOD自動翻訳プログラムの構造はいたって単純で、
- <~>、英語、<~>、の部分をそれぞれ取得する
- 英語の部分を翻訳する
- <~>、翻訳した文章、<~>、で書き出す
です。
pythonソースコード
#!/usr/bin/python # coding: UTF-8 def rim_auto_trans(): import sys, codecs import time # 処理時間を計測 start = time.time() # ファイルを開く args = sys.argv print(args[1]) f = open( args[1], 'r', encoding='utf-8') # 1行毎にファイル終端まで全て読む(改行文字も含まれる) # lines2: リスト。要素は1行の文字列データ lines2 = f.readlines() f.close() # 出力用ファイルを開く file_out = '.\out\\' + args[1] f = open( file_out, 'w', encoding='utf-8') # フラグを初期化 count = 1 err_text = [] # 1行毎に処理を行う for line in lines2: # >の位置を取得 index = line.find('>') # >以降に<があれば、<の位置を取得 index2 = line.find( '<', index) #index, index2が両方とも-1でなければ if index != -1 and index2 != -1: # 、<>、英語、<>、のそれぞれのテキストを取得 text1 = line[ 0: index+1] text2 = line[ index+1: index2] text3 = line[ index2: len(line)] print(text2) # text2を翻訳する #line_data_jp = text2 line_data_jp = g_trans(text2) # ファイルに出力する print(line_data_jp) f.write( text1 + line_data_jp + text3) # 日本語化対象じゃなければそのまま出力する else: f.write(line) # カウントアップ count += 1 # 特定のタイミングで処理状況をprintする if count % 10 == 0: print(count) elapsed_time = time.time() - start print("elapsed_time:{0}".format(elapsed_time) + "[sec]") else: continue # ファイルを閉じる f.close() def g_trans(text): # [START translate_quickstart] # Imports the Google Cloud client library from google.cloud import translate # Instantiates a client translate_client = translate.Client() # The text to translate #text = u'Hello, world!' # The target language target = 'ja' # Translates some text into Russian translation = translate_client.translate( text, target_language=target) #print(u'Text: {}'.format(text)) #print(u'Translation: {}'.format(translation['translatedText'])) # [END translate_quickstart] return translation['translatedText'] if __name__ == '__main__': rim_auto_trans()
お手軽実行用バッチ
楽にプログラムを動作させるために、バッチも作りました。
バッチへドラッグ&ドロップしたファイル名を引数にプログラムを動作させるだけの単純なものです。
@echo off :loop if "%~1" == "" goto end python rim_auto_trans.py %~n1%~x1 del %~n1%~x1 shift goto loop :end pause
ダウンロード
上記プログラムとバッチファイルは、こちらからダウンロード可能です。
MOD自動翻訳プログラムの使い方
MOD自動日本語化プログラムの使い方の概要は、
- Languageファイルの作成
- LanguageファイルをMOD自動翻訳バッチへドラッグ&ドロップ
- 翻訳されたLanguageファイルを正しい場所に格納
です。
自動翻訳といってもツール化していないので少し手動の所があります。
これらについて、日本語化する場合を例に詳しく解説していきます。
Languageファイルの作成
紹介しているMOD自動日本語化プログラムを使うためには、Languageファイルが生成されている必要があります。
こちらの記事を参考にして、Languageファイルを作成して下さい。
MOD自動翻訳バッチにD&D、ファイルの格納
次に、バッチを使ってプログラムを動かして、Languageファイルを自動翻訳して、その後出力されたファイルを格納することを行います。
やり方は、
- 言語.xmlが格納されたフォルダ、MOD自動翻訳バッチのフォルダ、outフォルダを開く
- 言語.xmlファイルを、MOD自動翻訳バッチのフォルダへ移動する
- 言語.xmlファイルを、MOD自動翻訳バッチへD&Dする
- プログラムが処理するので、しばらく待つ
- outフォルダに翻訳された言語.xmlファイルが出力されるので、MODのLanguageフォルダに戻す
です。
それが嫌な方は、バッチの中にあるrm ~の行を削除して下さい。
分かり易いように動画を撮影しました。
9つくらいまで対応しています。失敗したら少しずつやって下さい。
これを繰り返して、全ての言語.xmlファイルを翻訳して下さい。
以上で、MOD自動翻訳プログラムの使い方は終わりです。
オススメ 他のRimWorldの記事はこちらから。