MENU

Lost Castle 2 を日本語化する方法|正式サービスまでの簡易的な方法

『Lost Castle 2』を日本語で快適に遊びたい方向けに、この記事では 有志作者・54T0ЯU 氏の日本語化データをベースに、そこからさらに改良した どのバージョンでもなるべく動作する汎用バッチ(bat)ファイル一式について詳しく解説します。

えり

54T0ЯU 氏の記事をベースに改良しました。

今回紹介する bat 一式は、ローカライズ関連ファイルを自動で処理することで、バージョン違いによるテキスト構造の差を吸収しつつ、「簡体字/繁体字/English」の枠のうち “English” を丸ごと日本語枠に置き換えるという仕組みになっています。

ふだんバッチファイルを触らない人でも迷わず使えるよう、

  • 何をするためのツールなのか
  • どのフォルダに置けばいいか
  • 各 bat がどんな役割を持っているか

を、初心者向けに丁寧な言葉で解説していきます。

この記事を読んでいただければ、Lost Castle 2 を正式サービス前から快適な日本語環境でプレイするための最短ルートが分かるはずです。

えり

正式サービスでは、日本語をはじめほかの言語にも対応予定とのことです

目次

日本語化ファイルの概要と特徴

日本語データの扱いについて

『Lost Castle 2』のローカリゼーションファイルには、元々ある程度の日本語テキストが含まれています。

中身はこんな感じです。

しかしゲーム本体側では、

  • 簡体字
  • 繁体字
  • 英語(English)
    の3種類しか読み込まないように設定されています。

そのため、今回の日本語化ファイルでは英語設定(English)を日本語データへ置き換える方式を採用しています。これにより、ゲーム内の言語設定で「English」を選ぶと、日本語が表示されるようになります。

元データの退避について

ゲーム内に本来存在する「English」の文章は、ファイル内で**「ENENEN」**という名称に退避されており、元のデータを失うことはありません。必要に応じて復元できるよう配慮されています。

あと、日本語データがないものに関しては未翻訳No.999のようにどこのデータがないか検索できるように設定しています

表示できない文字の代替処理

ゲーム側のフォント仕様により、一部の文字が正常に表示されない問題があります。代表的な例が「ー(長音符)」で、これを**半角の「-」**で代替する処理が施されています。

えり

ォント制限により表示できない文字が含まれるアイテム名やスキル名については、読める範囲で名称が調整

翻訳品質について

翻訳は機械翻訳をベースにしつつ、内容の意味を損なわないように作者が手作業で調整しています。

えり

手動翻訳した瞬間に、アップデートで吹き飛んだのでめげました。

弱点として、日本語データがもともとないものは「未翻訳」で空欄になります。

日本語化バッチを実行する場所と前提

日本語化ファイルのダウンロード方法

以下のリンクからファイルをダウンロードできます。

batファイルの実行は自己責任でお願いします。実行前に編集で中身を確認してください。
ファイルの中身については記事の後半で説明していきます。質問などあればコメントください。

えり

改良のアイデアなどあれば修正してもらって大丈夫です。
その時はコメントで教えてもらえましたら記事更新します。

ダウンロードが不安な方は、下のほうで説明しているコードをメモ帳に移し、拡張子を「.bat」に変更することで使えます。

実行場所のフォルダについて

今回の bat ファイルは、Localization フォルダの中で実行する前提で作られています。
判定や置換対象となるファイルがすべてそのフォルダ内にあるためです。

例として挙げられているパスは次のようになります。

E:\SteamLibrary\steamapps\common\Lost Castle 2\LostCastle2_Data\StreamingAssets\Localization

Steam のライブラリフォルダを別ドライブに移動している例なので、ご自身の環境に合わせて読み替えてください。

重要なのは、最終的に bat を置く場所は Localization フォルダであることです。

そのフォルダに bat をコピーし、1番から順に実行していくことで、日本語化に必要な処理がすべて自動的に走るように作られています。

バージョン非依存を目指した作り

今回の bat 一式が優れている点は、単なる「特定バージョン用日本語化ファイルの配布」ではなく、どのバージョンでも走らせられる仕組みになっていることです。

これは、Lost Castle 2 のローカライズファイルが基本構造を大きく変えにくいゲームであることを生かし、

  • その時点で最新の本体ファイルを使う
  • そこへ bat の一括置換処理を適用する

という「現地処理方式」を採用しているためです。

この方法のメリットは非常に大きく、
アップデートのたびに “専用の日本語化ファイル配布を待つ必要がない” という点にあります。

もちろん、大型アップデートでファイル構造が大きく変わった場合には、バッチの見直しが必要になる場合もあります。
しかし現行のままでも、発生しやすい問題点(英語→日本語置換・長音記号の未対応・クォーテーションエラーなど)をカバーし、なるべく壊れない汎用処理として作っています。

また、恒久的に利用する目的ではなく、正式サービスまでのつなぎでファイルを作っています。


バッチ処理の流れを俯瞰する

まず、1〜9番までの bat がどんな処理をしているのかを、ざっくり整理しておきます。

  1. batファイルをダウンロード、中身をLocalization フォルダに移動する
  2. json を txt として扱える形にする
  3. 元の英語テキストを ENEN として退避する
  4. 日本語テキストを English 枠へ差し替える
  5. フォントで表示できない長音記号などを安全な文字に差し替える
  6. JSON の構文を壊さないためクォーテーションを一時避難させる
  7. null の部分に番号を振って管理しやすくする
  8. 6番での処理結果を比較・バックアップするための補助処理
  9. クォーテーションを元に戻す
  10. txt を json に戻してゲームで読み込める状態に復元する

この一連の流れを順番に実行することで、ゲームを壊すことなく安全に日本語化が完成します。

ここからは、それぞれの bat の役割を具体例を交えながら丁寧に解説していきます。

STEP
1_json txt.bat|JSONファイルをテキスト扱いしやすくする
@echo off
chcp 65001 >nul
echo ----------------------------------------
echo すべての .json ファイルを .txt に変更します
echo ----------------------------------------
echo.

for %%f in (*.json) do (
    ren "%%f" "%%~nf.txt"
    echo 変換: %%f%%~nf.txt
)

echo.
echo 変換が完了しました
pause

最初のバッチは JSON → TXT への拡張子変更を一括で行うためのものです。

JSON ファイルのままでは Windows のバッチ処理で扱いにくいため、

  • 一括置換
  • 文字列検索
    などの処理を行う際に、テキストとして扱うための変換を行います。

中身の構造は JSON のまま変わりませんが、拡張子を txt に変えることで、後続の「置換処理専用バッチ」が正常に使えるようになります。

このバッチのポイント

  • JSON を直接触らず txt 化することで安全性を確保
  • バックアップを残しておくことで、万一破損しても巻き戻せる
STEP
2_English → ENEN.bat|元の英語テキストを安全に退避
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ----------------------------------------
echo [処理開始] Japanese を含む txt  EnglishENEN に変換
echo ----------------------------------------
echo.

for %%f in (*.txt) do (
    rem ファイル内に Japanese が含まれているか確認
    findstr /c:"Japanese" "%%f" >nul
    if not errorlevel 1 (
        echo 処理中: %%f
        powershell -NoProfile -ExecutionPolicy Bypass -Command ^
          "$path='%%f';" ^
          "$text = Get-Content $path -Raw -Encoding UTF8;" ^
          "$text = $text -replace 'English','ENEN';" ^
          "[IO.File]::WriteAllText($path,$text,[Text.UTF8Encoding]::new($true))"
    ) else (
        echo スキップ: %%fJapaneseなし
    )
)

echo.
echo 完了しました
pause

日本語を English 枠へ流し込む前に、元の英語データを ENEN という名前で避難させるバッチです。

ローカライズファイルの編集で致命的になりがちな「元データの破損」を避けるため、

  • “English”
  • “EN”

といったキーを検索し、見つかった場合は “ENEN” に退避します。

この処理により、後から英語データへ戻したい場合にも復旧可能になります。

このバッチのポイント

  • 上書きではなく退避なので安全
  • 翻訳の参照元として英語を残しておける
STEP
3_Japanese→English.bat|日本語データをEnglish枠に置き換える
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ----------------------------------------
echo フォルダ内の txt ファイルで "Japanese""English" に変換します
echo ----------------------------------------
echo.

for %%f in (*.txt) do (
    echo 処理中: %%f
    powershell -NoProfile -ExecutionPolicy Bypass -Command ^
      "$path='%%f';" ^
      "$content = Get-Content $path -Raw -Encoding UTF8;" ^
      "$content = $content -replace 'Japanese','English';" ^
      "[IO.File]::WriteAllText($path, $content, [Text.UTF8Encoding]::new($true))"
)

echo.
echo すべてのtxtファイルをUTF-8(BOM付き)で上書きしました
pause

Lost Castle 2 の中には日本語テキストが一部残っていますが、「Japanese」枠は実質無効化されています。

そこでこのバッチでは、

  • Japanese → English

という置換を行うことで、ゲーム設定で English を選ぶと日本語で表示される状態を作ります。

これは Lost Castle 2 の仕様上、現時点でもっとも安定して日本語を表示する方法です。

このバッチのポイント

  • Japanese の内容を English として扱えるようになる
  • 退避済みの ENEN により英語も失われない
STEP
4_ハイフン除去.bat|表示できない長音記号の対策
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ----------------------------------------
echo フォルダ内のtxtファイルで-に変換中...
echo ----------------------------------------
echo.

for %%f in (*.txt) do (
    echo 処理中: %%f
    powershell -NoProfile -ExecutionPolicy Bypass -Command ^
      "$p='%%f';" ^
      "$c = Get-Content $p -Raw -Encoding UTF8;" ^
      "$c = $c -replace 'ー','-';" ^
      "[IO.File]::WriteAllText($p, $c, [Text.UTF8Encoding]::new($true))"
)

echo.
echo すべての置換が完了しました
pause

Lost Castle 2 に採用されているフォントの都合で、「ー」(長音記号)が正常に表示されない問題があります。

このバッチでは、
-
という形で安全に表示できる記号へ置換します。

多少見た目が不自然になりますが、文字化けするよりは実用的で、実際のプレイには大きな支障はありません。

このバッチのポイント

  • 長音記号をハイフンへ置換して表示崩れを回避
  • フォント制限のあるゲームではよく使われる方法
STEP
5_クォーテーション置換.bat|JSON破損を防ぐための一時避難
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ----------------------------------------
echo テキストファイル内の " を ★ に置換しま
echo ----------------------------------------
echo.

for %%f in (*.txt) do (
    echo 処理中: %%f
    powershell -NoProfile -ExecutionPolicy Bypass -Command ^
      "$path='%%f';" ^
      "$text = Get-Content $path -Raw -Encoding UTF8;" ^
      "$text = $text -replace '""','★';" ^
      "[IO.File]::WriteAllText($path, $text, [Text.UTF8Encoding]::new($true))"
)

echo.
echo すべてのファイルを変換しました
pause

JSON は " に厳しい形式で、文章中にそのまま引用符が入っていると構文エラーになります。

そこで、" を一時的に のような安全記号に退避します。

後続の処理が完了したあと、8番で元に戻します。

このバッチのポイント

  • JSON の構文エラーを回避するための中間工程
  • 8番で元に戻すのが前提
STEP
6_nullのナンバリング.bat|未翻訳部分の管理しやすさを向上
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ----------------------------------------
echoEnglish_name★: ★★ → ★English_name★: ★未翻訳No.nnn★(フォルダ全体で通し番号
echo ----------------------------------------
echo.

rem 次に付与する番号(001起点
set /a count=1

for %%f in (*.txt) do (
  echo 処理中: %%f
  echo 開始No.: !count!
  set STARTINDEX=!count!

  for /f "usebackq delims=" %%N in (`
    powershell -NoProfile -ExecutionPolicy Bypass -Command ^
      "$path='%%~f';" ^
      "$text = Get-Content $path -Raw -Encoding UTF8;" ^
      "$pat  = '★English_name★:\s*★★';" ^
      "$i = $env:STARTINDEX -as [int]; if(-not $i){$i=1};" ^
      "$n = 0;" ^
      "$text = [regex]::Replace($text, $pat, { param($m) $script:n++; $r=('★English_name★: ★未翻訳No.{0:D3}★' -f $script:i); $script:i++; $r });" ^
      "[IO.File]::WriteAllText($path, $text, [Text.UTF8Encoding]::new($true));" ^
      "Write-Output $n"
  `) do (
    set /a count+=%%N
    echo 置換件数: %%N
    echo 次回開始No.: !count!
  )
)

echo.
echo 完了最終No. !count! です
pause

ローカライズファイルには null の項目が多く含まれています。これらは「未翻訳」「空白の予約項目」で、後から確認する際の手がかりになりません。

そこでこのバッチでは、

  • null に番号を振る
  • "未翻訳No.xxx" のように連番管理する

といった処理を行います。

翻訳を追加したい人や、改善作業を進める人にとって非常にありがたい仕組みです。

このバッチのポイント

  • 未翻訳箇所を視覚的に把握できる
  • 作業効率を上げるための補助ツール
STEP
7_nullのナンバリング-コピー.bat|比較・バックアップの補助処理
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ----------------------------------------
echoEnglish_intro★: ★★ → ★English_intro★: ★未翻訳No.nnn★(フォルダ全体で通し番号
echo ----------------------------------------
echo.

rem 次に付与する番号(001起点
set /a count=1

for %%f in (*.txt) do (
  echo 処理中: %%f
  echo 開始No.: !count!
  set STARTINDEX=!count!

  for /f "usebackq delims=" %%N in (`
    powershell -NoProfile -ExecutionPolicy Bypass -Command ^
      "$path='%%~f';" ^
      "$text = Get-Content $path -Raw -Encoding UTF8;" ^
      "$pat  = '★English_intro★:\s*★★';" ^
      "$i = $env:STARTINDEX -as [int]; if(-not $i){$i=1};" ^
      "$n = 0;" ^
      "$text = [regex]::Replace($text, $pat, { param($m) $script:n++; $r=('★English_intro★: ★未翻訳No.{0:D3}★' -f $script:i); $script:i++; $r });" ^
      "[IO.File]::WriteAllText($path, $text, [Text.UTF8Encoding]::new($true));" ^
      "Write-Output $n"
  `) do (
    set /a count+=%%N
    echo 置換件数: %%N
    echo 次回開始No.: !count!
  )
)

echo.
echo 完了最終No. !count! です
pause

6番で実施したナンバリングの結果を、別名のファイルとしてコピーして比較できるようにするための補助バッチです。

大規模な置換処理を行う際には、元ファイルとの比較やバックアップが欠かせません。このバッチはそのために存在しています。

このバッチのポイント

  • ナンバリング前後の差分比較が可能
  • 作業ミスや上書き事故を避ける“安全策”
STEP
8_クォーテーション戻し.bat|引用符を元に戻す
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ----------------------------------------
echo テキスト内の " に置換しま
echo ----------------------------------------
echo.

for %%f in (*.txt) do (
    echo 処理中: %%f
    powershell -NoProfile -ExecutionPolicy Bypass -Command ^
      "$path='%%f';" ^
      "$text = Get-Content $path -Raw -Encoding UTF8;" ^
      "$text = $text -replace '★','""';" ^
      "[IO.File]::WriteAllText($path,$text,[Text.UTF8Encoding]::new($true))"
)

echo.
echo すべてのファイルを変換しました
pause

5番で " に避難させていたものを、元の記号へ戻す処理です。

これは大事な最終仕上げで、これを実行しないと会話文がただのプレーンな文章になってしまいます。

このバッチのポイント

  • JSON構文も守りつつ、読みやすい日本語に復元する必要工程
  • この工程を忘れると文章が不自然になる
STEP
9_txt json.bat|ゲームが読み込める形式へ最終変換
@echo off
chcp 65001 >nul
echo ----------------------------------------
echo すべての .txt ファイルを .json に変更します
echo ----------------------------------------
echo.

for %%f in (*.txt) do (
    ren "%%f" "%%~nf.json"
    echo 変換: %%f%%~nf.json
)

echo.
echo 変換が完了しました
pause

最後のバッチでは、

  • txt → json

という逆変換を行い、ゲームが読める正式なローカライズデータとして完成させます。

ここまでの処理がすべて終わった状態で実行することが重要です。

このバッチのポイント

  • これを実行するとゲームが日本語データを読み込める
  • 必ず 1→9 の順番で行うこと

実行手順まとめ:1~9を順番に実行するだけでOK

ここまでの内容を踏まえて、実際の手順を簡単にまとめると次のようになります。

  1. Localization フォルダに、1~9 の bat ファイルをすべて置く
  2. 念のため Localization フォルダ全体をどこかにバックアップ
  3. 1_json txt.bat から 9_txt json.bat まで、番号順に実行する
  4. Steam から『Lost Castle 2』を起動
  5. 言語設定で「English」を選択(表示は日本語になっているはず)

もしうまくいかない場合や表示がおかしいときは、

  • 取っておいたバックアップから Localization を戻す
  • それでもダメな場合は Steam の「ファイルの整合性を確認」で初期状態に戻す

という二段構えでリカバリできます。

トラブルシューティング

ゲームが起動しなくなった

SteamのLostCastle2の設定画面から、「ゲームファイルの整合性を確認」をすることで、インストールしたときのファイルと同様にリセットできます。セーブデータは削除されないので怪しいと思ったら実行してください

※セーブデータは保証するわけではないのでバックアップの上自己責任でお願いします


バッチの中身を理解しておくとカスタマイズも楽になる

今回の bat 一式は、

  • もともとの日本語化の仕組み
  • フォント・JSON まわりの制約
  • 将来のバージョンアップにもなるべく耐える構成

を踏まえて作られた、かなり実用的なツールセットです。

中身を完全に読み解く必要はありませんが、

  • どの bat が「バックアップ・退避」なのか
  • どの bat が「テキストの実際の置換」なのか
  • どの bat が「JSON の安全確保」のための一時的な処理なのか

という役割だけでも把握しておくと、
自分で翻訳を修正したり、別のゲームで応用してみたりするときにとても役に立ちます。

「とりあえず迷ったら 1 → 9 の順番で実行」
「何かあったら Localization をバックアップから戻す」・「整合性チェックでリセットする」

この2点だけ守れば、かなり安全に日本語化を楽しめるはずです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次