アーキテクチャの概要
本プロジェクトは、プロプライエタリなJavaベースの大規模シミュレーション・アプリケーションを日本語に翻訳するために構築された包括的なローカライズパイプラインです。このソフトウェアには、6,700以上の複雑なインタラクティブ・ノード、環境描写、独自のJavaロジックにまたがる、極めて専門的で世界観豊かなテキストが膨大に含まれています。
標準的なWebアプリケーションとは異なり、プロプライエタリなレガシーJavaエンジンをローカライズするには、テキスト・パイプラインをリバース・エンジニアリングし、アプリケーションのコンパイル、UIレンダリング、基盤となるスクリプト呼び出しを壊すことなく、大規模なデータセットを翻訳するための堅牢なワークフローを確立する必要があります。
ローカライズパイプラインとバイトコード注入アーキテクチャ
コンポーネントにマウスを合わせるかクリックすると、オフライン処理パイプラインまたは実行時の動作レイヤーの詳細を表示します。
INSPECT ローカライズアーキテクチャインスペクター
オフライン処理ステップ(AST抽出、翻訳メモリ、Gemma翻訳、クリティック検証)または実行時レイヤー(静的データ、Javaバイトコード・エージェント)をクリックまたはホバーすると、エンジニアリングの詳細とコードスニペットが表示されます。
解決されたエンジニアリング課題
バイトコード・エンジニアリングとハイブリッド・アーキテクチャへの転換
このアプリケーションをローカライズする上で、根本的な制限を克服する必要がありました。プロプライエタリなUIエンジンは、表示文字列を内部のルックアップキーとして使用していたため、実行時にすべてのテキストを動的にフックして書き換えるアプローチは、極めて不安定でした。
この課題を解決するため、動的なJVMエージェントのみに依存する方式から、2層のハイブリッド配信アーキテクチャへと方針を転換しました。
- 静的データ・オーバーライド層 (全体の90%のテキスト): 構造化されたCSV、設定JSON、ダイアログテーブル用の標準的なオーバーライドバンドルをアプリケーションのリソースパスにネイティブに注入し、バイトコードの傍受を行わずに読み込ませます。
- 局所的実行時エージェント層 (全体の10%のテキスト): Javassistのコンスタントプール操作を利用した軽量なJVMエージェントを、難読化されたクラス(メインメニューのラベルやシステム警告など)にハードコードされた文字列リテラルのメモリ参照書き換え専用として稼働させ、100%クラッシュフリーな実行時置換を保証します。
モジュール化されたCLIツールと自動化された翻訳メモリ
多数の単発のクリーンアップスクリプトや検証スクリプトを手動で実行する従来の運用は、スケールさせるのが困難でした。そこで、ワークフロー全体を統合コマンドライン・オーケストレーター(app_localizer_cli)に集約し、決定論的な8フェーズのパイプラインとして整理しました。
また、LLMのトークンコストを削減するため、SQLiteによるローカルの翻訳メモリ(TM)データベースをパイプラインに統合しました。翻訳モデルにテキストを送る前に、CLIがTM内の完全一致およびファジー一致(類似度85%以上)をチェックします。翻訳されたテキストブロックは、自動化されたLLMクリティック(評価)ループによって用語集への適合性や長さ制限、プレースホルダーの維持がチェックされ、検証済みの結果が自動的にTMデータベースに書き戻されます。
戦略的成果
- クラッシュゼロのローカライズ: 重要なアプリケーションパラメータやスクリプト呼び出しを一切変更することなく、何千もの翻訳されたノードを正常にマージし、SHA-256整合性チェックを通じて検証しました。
- パフォーマンスの安定化: 翻訳データの90%をネイティブな静的リソースのオーバーライドに移行したことで、クラスローダーの同期ズレやメモリフットプリントのオーバーヘッドを完全に排除しました。