Creation Manual

ローカライズ

言語情報ファイル ツール

言語名や言語変更時のメッセージを記述したJSONフォーマットのファイルです。
主に使用可能言語の確認とコンフィグ画面の表示に使用されます。
言語情報のファイル名は <言語ID>.json とし、これらのファイルは ./Languages フォルダに保存します。

JSONファイルの要素

language言語ID
name表示用の言語名
message言語変更時のゲームの再起動を促すメッセージ文

言語ID

言語IDは UnityEngine.SystemLanguage 列挙型に定義された列挙子を使用します。
代表的な言語のIDは以下のものになります。
日本語Japanese
英語English
フランス語French
ポルトガル語Portuguese
ドイツ語German
イタリア語Italian
スペイン語Spanish
タイ語Thai
インドネシア語Indonesian
ロシア語Russian
中国語 (繁体字)ChineseTraditional
中国語 (簡体字)ChineseSimplified

ローカライズ用のアセットバンドル

ローカライズ用のアセットバンドル
Scenariosシナリオ スクリプト
LC_Tablesテーブル関連のJSONファイル。テーブル内のローカライズ項目の情報

アセットバンドルを格納するフォルダ
プロジェクトAssets/AssetBundles/Localize/<言語ID>
製品版 AssetBundles/<言語ID>

ローカライズに関係するテーブル

この一覧はローカライズ項目を含むテーブルです。
カラム名の後ろに _jp や _en と付けられたものがローカライズ用の項目になります。
現在は日本語と英語の2言語用の項目しかありませんが必要に応じて対応言語を増やすことも可能です。
その際はカラムを追加し、対応するバッチファイル等を編集してください。
Excelファイル名シート名
Chapters.xlsxchapters
CharactersProfile.xlsxprofiles, alias
DelehelList.xlsxdelehels
Enemys.xlsxenemys
Extra.xlsxscenes, animations
Items.xlsxitems
MapList.xlsxmaps
Missions.xlsxmissions
SexHistory.xlsxhistorys
SexualInfo.xlsxranks, statuses, skills
SideEpisodes.xlsxepisodes
Skills.xlsxskills, attributes, scopes, buffs
Weapons.xlsxweapons
Words.xlsxwords

スクリプトのローカライズ ツール

ベーススクリプト(日本語版スクリプト)のラベルとスクリプト処理を翻訳されたテキストとマージしてローカライズ版のスクリプトを生成します。

ツールの使用方法

メニューバーの Tools -> LocalizeTool からローカライズツールを表示してください。
各ファイル、又は、ディレクトリのパスを設定して Convert ボタンを押すとベースとターゲットをマージしたローカライズ版スクリプトが生成されます。

BaseFilePathベースとなるスクリプトファイル
TargetFilePath翻訳テキスト、又は、翻訳スクリプト
OutputFilePath出力先のファイル
BaseDirectoryベースとなるスクリプトファイルがあるディレクトリ
TargetDirectory翻訳テキスト、又は、翻訳スクリプトがあるディレクトリ
OutputDirectory出力先のディレクトリ

翻訳テキスト作成時の注意点

翻訳テキストはメッセージ数をベースと同じにする必要があります。
テキストの記述ルールはLCMスクリプトの仕様と同様です。
各メッセージとメッセージの間に空白行で区切りを入れてください。
テキストの長さ等の都合でベースと異なるメッセージ数になる場合は \BP[] エスケープコマンドを使用してメッセージ数を一致させてください。
翻訳テキスト内にラベルやスクリプト関数が含まれていても問題ありません。
但し、翻訳テキスト内のラベルやスクリプト関数は全て無視される点に注意してください。

ツールの挙動

ベーススクリプトと翻訳テキストをツールを使用してローカライズした時の例を示します。
例では翻訳テキスト内にラベルやスクリプト関数が入れられていますがメッセージのみの平文であっても挙動は同じです。
ベース スクリプト 翻訳テキスト
*Event06_02
: if (WhoLeader( "Mukuro" ) == true)
  : if (CharaCostume( "Mukuro" ) == 2)
    黒夜叉のままだとくつろげない。
    黒夜叉化を解いた方がいい。
    : RpgCharaBatch( "Player", "MoveDown", 1 )
    : Return
  : endif
: endif

\CI["お風呂に入る"]
\CI["お風呂に入らない"]
お風呂に入りますか?

: if ($choice == 1)
  : Jump( "*OnnaYu_Event_select_s2" )
: endif

*Event07_01
\CI["風呂から出る"]
\CI["まだ出ない"]
風呂から出ますか?

: if ($choice == 1)
  : Jump( "*Event07_01_select_s2" )
: endif
*hoge
: foo
: bar

You can't relax if you stay Kuroyasha.
It is better to solve the Kuroyasha conversion.

: baz
: qux

\CI["Take a bath"]
\CI["Do not take a bath"]
Do you take a bath?

*fuga
\CI["Get out of the bath"]
\CI["Not yet out"]
Do you get out of the bath?

: toto
: tete

上の2ファイルをツールに渡すと以下のように処理されます。
  ベース スクリプト   マージされたスクリプト   翻訳スクリプト
ラベル *Event06_02 *Event06_02   *hoge
コマンド
: if (WhoLeader( "Mukuro" ) == true)
  : if (CharaCostume( "Mukuro" ) == 2)
: if (WhoLeader( "Mukuro" ) == true)
  : if (CharaCostume( "Mukuro" ) == 2)
 
: foo
: bar
メッセージ
    黒夜叉のままだとくつろげない。
    黒夜叉化を解いた方がいい。
 
    You can't relax if you stay Kuroyasha.
    It is better to solve the Kuroyasha conversion.
You can't relax if you stay Kuroyasha.
It is better to solve the Kuroyasha conversion.
コマンド
    : RpgCharaBatch( "Player", "MoveDown", 1 )
    : Return
  : endif
: endif
    : RpgCharaBatch( "Player", "MoveDown", 1 )
    : Return
  : endif
: endif
 
: baz
: qux
メッセージ
\CI["お風呂に入る"]
\CI["お風呂に入らない"]
お風呂に入りますか?
 
\CI["Take a bath"]
\CI["Not take a bath"]
Do you take a bath?
\CI["Take a bath"]
\CI["Not take a bath"]
Do you take a bath?
コマンド
: if ($choice == 1)
  : Jump( "*OnnaYu_Event_select_s2" )
: endif
: if ($choice == 1)
  : Jump( "*OnnaYu_Event_select_s2" )
: endif
   
ラベル行 *Event07_01 *Event07_01   *fuga
メッセージ
\CI["風呂から出る"]
\CI["まだ出ない"]
風呂から出ますか?
 
\CI["Get out of the bath"]
\CI["Not yet out"]
Do you get out of the bath?
\CI["Get out of the bath"]
\CI["Not yet out"]
Do you get out of the bath?
コマンド
: if ($choice == 1)
  : Jump( "*Event07_01_select_s2" )
: endif
: if ($choice == 1)
  : Jump( "*Event07_01_select_s2" )
: endif
 
: toto
: tete
  ...   ...   ...

TOP