2017年10月29日日曜日

SteamWorld Dig 日本語化

*** 2022/01/16 追記 ***
Don't BE EVILの社是でおなじみのGoogle様が勝手に人様に迷惑がかかる形で仕様変更しやがってくださいましたファイルのダウンロード先リンクの更新に対応しました。
いつも利用していますありがとうございますGoogleさま!!

何かの間違いだと思うのですが、なんだかんだでパラパラと結構な数の権限要求リクエストを頂戴しましたために、今さらの対応の運びとなりましたことをお詫びするとともにお役に立てれば欣快と心得ます。
なお、繰り返しになりますが何かの間違いだと思うので敢えてことさらに申し上げますが、steam版などは公式で日本語化されているため、このファイルは必要がないということにご留意いただければ幸いです。
元記事にもございます通り、Originでの無料配布版でしか試していません。
以上、よろしくお願いいたします。
*** 追記ここまで ***

過日、Originさんから無料でいただいた表題のゲーム、貰うだけもらっといて放置しといたのですが、Hegemony Romeも単調すぎてもうやる気がしないので日本語化できないかやってみました。

例によって作業シートはこちらです。
フォント生成ツールはこちらです(作業シートのTSVファイルからBundlePC/Language/en.csvに変換するスクリプト、およびシートから変換してフォントを一括生成するバッチサンプルも同梱してあります)。
    導入手順
  1. (Windowsのみ)Windows Subsystem for Linuxを導入する(bashとperlのため)。
    (LinuxおよびMac)monoをインストールする(EXEのため)。
  2. BundlePC/Fontsの中身およびBundlePC/Language/en.csvバックアップする
  3. BundlePC/Fontsにフォント生成ツールをダウンロードする
  4. ダウンロードしたフォント生成ツールを書庫フォルダ名のディレクトリ中に展開する。
  5. BundlePC/Fonts/SteamworldDigFontBuilder/SteamworldDigFontBuilder/scripts/を開く
  6. 作業シートのen.csvシートTSV形式でダウンロードし、ja.tsvという名称でBundlePC/Fonts/SteamworldDigFontBuilder/SteamworldDigFontBuilder/scriptsに保存する。
  7. makefonts_example.batを起動する(フォント名やサイズは適宜変更のこと)
LinuxまたはMacOSで作業する場合、EXEが.netなのでMonoを導入してください。また、バッチ中のパス区切り文字を\から/へ修正し、環境変数定義をそれぞれご利用のシェルに合わせてください。
Windowsで作業する場合、宗教上の理由やエディションの関係等でWindows Subsystem for Linuxを導入しない場合、バッチmakefonts_example.batbash -c で始まる行を削除し、別途perlが動作する環境(たとえば、Git for Windowsとか、Cygwinとか、VMWareでCentOSとか)でbash -c 以下で定義されているperlスクリプトを実行して成果物を生成してからバッチを起動してください。生成されたen.csvはBundlePC/Languageに、code.listはBundlePC/Fonts/SteamworldDigFontBuilder/SteamworldDigFontBuilder/scripts/ ディレクトリにそれぞれ配置してください。

なお、生成するフォントのオリジナルがファイル名を.orgを付与してBundlePC/Fontsに存在する場合(speak.org.fnt, speak.org.pngなど)、そのオリジナルフォントを生成するフォントに取り込みます
    死んでもperlやバッチファイルを使いたくない人向け作業手順
  1. 作業シートのD列またはC列の内容をBundlePC/Language/en.csvファイルにコピー&ペーストする。バックアップを忘れずに。
  2. BundlePC/Fontsに書庫内のEXEを取り出して配置する
  3. EXEで各フォントを生成する。バックアップを忘れずに。
    例えばspeak.fntの場合:
    SteamworldDigFontBuilder.EXE /batch /title speak /fontname "Meiryo" /fontsize 20.0 /color1 0xFF321402 /color2 0xFFFFFFFF
    EXEをコマンドラインオプションをつけずに起動するとGUI画面から対話的にフォントを生成できます
  4. 3.をmainmenu.fntなど日本語表示が必要なフォント分繰り返す。(但しゲーム中未使用の文字もフォント化するので馬鹿でかくなります)
    フォントやサイズ、色は適宜変更してください。
スクリプトの詳しい使い方はスクリプトの頭のコメントを、EXEのそれはREADME.mdをそれぞれご覧ください。

とりあえず成果としては現状こんな感じです。

なんだ簡単そうじゃん、と言われちゃうとそうかもしれません。
確かにテキストデータはCSVファイルで編集は極楽。アクションゲームらしいので大した訳文もなし。ぶっちゃけ訳す必要すらなさげです。

が、それでも敢えて日本語化したいといったときに問題が一つ。

フォントが、PNGファイルと、そのPNGファイルに描画されている文字を管理するファイル(拡張子:.fnt)でペアになっているというめんどくさーいパターンなのです。

しかも管理ファイルが独自のバイナリ形式だったりします。
まず日本語化にはこの管理ファイルの構造から解析をしなくちゃなりませんでした。
しかし、フォント画像がpng中にあるわけですから、管理ファイルの構造さえわかってしまえば自家薬籠中の物となるわけです。

金曜から始めてfntファイルをバイナリエディタで眺めたり、cでfread()を並べてすったもんだの挙句、fntファイルの構造がだいたいわかり、上記の動画を製作するまでにはなりました。

1文字あたり30バイトの固定長レコードで構成されている構造で、かつリトルエンディアンだということはすぐにわかったのですが、その30バイト中にどういう情報が格納されているのかわからないのでバイトの区切りが分からず、そのあたりは苦労しましたが、結局単精度浮動小数のバイナリ表現だと気づけた段階でほぼ解析終了となりました。気づくまでが長くて己の無能さをかみしめていますが。

fntファイルのフォーマットをまとめるとこんな感じです。
    A)ヘッダ(可変長)
  1. magicword 4bytes ( bfmt ) 
  2. 16bit整数 収録文字中の最大高?
  3. 32bit整数 0x20 全ファイルに収録されるホワイトスペースの文字コードか?
    (最小の文字コードでもあるので開始文字コードかもしれない)
  4. 16bit整数 対応するpngファイル名長
  5. 4)で定義された長さのpngファイル名
  6. 16bit整数 fntファイルに格納されているフォント情報レコード数
    B)フォント情報レコード(固定長32bytes)
  1. 32bit整数 文字コード
  2. 単精度浮動小数 png画像中の文字画像の左上隅X座標
  3. 単精度浮動小数 png画像中の文字画像の左上隅Y座標
  4. 単精度浮動小数 png画像中の文字画像の幅
  5. 単精度浮動小数 png画像中の文字画像の高さ
  6. 単精度浮動小数 png画像中の文字画像のXベアリング
  7. 単精度浮動小数 png画像中の文字画像のYベアリング
  8. 32bit整数 png画像中の文字画像のアドバンス幅
    C)謎(4bytes)
  1. (all 0)
    末尾に00 00 00 00がつくのですが、これは何かの個数を表している気がしますが、日本語は固定ピッチなのでなんかカーニングやら合字とかの情報だったとしても何の役にも立たないのでほっといていいと思います。
ここまでわかってしまえば、あとはpng画像を生成するだけ・・・
といっても、日本語の場合、JIS第一第二水準の漢字にひらカナ、記号、全角数字があり、さらに半角文字やゲーム中にもともと用意されているLatin系の文字を加えてリスト化してみると7000文字を超えました。
超えましたが、まあ、リストを作る作業自体はさらっと(でもないけど)スクリプトを書いてしまえばおしまいなので数時間で終わりましたのでいいとして、この数はどうかと。
png生成処理も最初はImageMagickでやっちゃおうと思っていましたが、ImageTragickがらみでpolicyをいじったり正確なフォントのレンダリング後のサイズが把握しづらいなどもあって、結局C++でGDIゴリゴリより楽で、かつある程度バイナリも扱いやすい(?)C#で書いてしまいました。
本来は翻訳済みファイルに使用されている文字だけ抽出すりゃいいのでしょうが(※2017/11/01 必要文字のみフォント化に対応しました)、翻訳より先にフォントファイル解析および作成作業に入ってしまったこともあり、C#を採用したせいでコーディングもあっけなく終わったので、しゃらくさいのでこいつら全部をフォントファイルとして生成してしまいました。

そのため、生成されたfnt+pngのペアを配布できません。
7000文字を超えるすべての文字を網羅するフリーのフォントを知らないからです。

ですから、もしやる気があるなら、fnt+pngのペアを生成するプログラムを公開しますから、手動で生成していただくことになります。

プログラムの使い方は、見ればわかります。
わからない場合はソースも添付しますので、そちらをご覧ください。SteamworldDigFontBuilderクラス以外は枝葉末節で、SteamworldDigFontBuilderクラスの長さはコメントを抜くと100行ちょいで大変簡単なプログラムなので万が一読む気になっても特に面倒くさいところはないと思います。

以上です。

2017年10月4日水曜日

Hegemony Rome: The Rise of Caesar 日本語化 進捗状況

日本語話者でやってる人いるのこれ?

ま、昨日より日本語化し始めたHegemony Rome: The Rise of Caesarですが、とりあえず概ね機械翻訳にかけ終えました。

和訳作業シートから生成されたlanguage.strはこちらからダウンロードいただけます(※これは最新版ではない可能性が極めて高いです。できればシートを直接ご利用ください)。

どんな感じになるか、スクリーンショットを取るのも面倒なのでイントロからゲーム開始までを撮影してみました。

この記事よりシートのほうが更新日時が新しければ、それはメンテナンスがかかってるということなのでそういう意味で記事にしときます。

*** 2017/10/16 追記 ***
DLCの翻訳も作成しましたので、各DLCのlanguage.strのダウンロード元を追記します。


*** 追記ここまで ***

具体的な成果物(日本語化作業シートのこと)からlanguage.strに落としてご利用くださいませ。

以下無駄口。

しかしまあ、文章本文中にhtmlのタグをまねた似非タグが散りばめられているのですが、これがまた極めて厳密。
等号の右辺と左辺の間にスペースがあるとゲームがクラッシュ。
タグを閉じ忘れてもゲームがクラッシュ。

機械翻訳の結果をそのまま掲載できない(タグの処理がグダるため)ので、手動でタグをつけたり外したりという手間を考えると、これをとりあえずはざっとでも機械翻訳にかけ終えられたのは奇跡ですわ。

とはいえ、まだタグの閉じ漏れなどが多数残っているようで、抜けやタグの閉じ忘れなどの見直しが必要ですが、とてもじゃないが手が回りません。
タグの閉じ忘れチェックツールを書く必要がありそうです。
とりあえずもうクラッシュはしないとは思います(2017/10/05)。

それと、google翻訳先生にお任せしている翻訳作業ですが、これがまあひどいひどい。
日ごろに輪をかけてすごい。

Ambushがマダムスタンドという訳文になったのはもう本当にうんざりしました。
誰かがそういう訳をgoogle翻訳に教え込んだんでしょうが・・・意味わからん。そもそもマダムスタンドってなんだろう??

そのほか、ゲルマンがドイツ人だったりガリアがゴールはいいとして、特にガリアの訳が挙句の果てはガリックだのゲーマーだのガルだのガールだのゴルだの、その他ありとあらゆるカタカナでこれでもかというほどバラエティ豊かな表現ぶり。
最終的には一括置換でもいいので訳語を統一しないといけませんね、誰かが

あとは表示領域内に収まりきらない文が勝手に切り捨てられるという現象も一部で見られているので、これを収まる訳文にブラッシュアップするなどの手間もかけないといけなさそうです。誰かが

最後にはローマ風に上院という訳文を元老院にするとか地名や民族名を英語読みから当時の呼び名にしたりサソリと訳されちゃうスコルピオなどのローマが誇る攻城兵器の名前を統一したりできればカンペキですが。。。カエサルがカールになったりシーザーになってるのをどうにかするのも必要ですね。誰かが

まあ、なんちゅうか。日本語話者でやってる人いるのこれ?(repeated)

今まで手掛けた和訳でも最も需要がないことが見え見え・・・しかもゲーム自体をやってないので面白いのかどうかも不明。我ながら極めて間抜け。

ここまでやったらもうガウル、ガリア、じゃなくてゴールしていいかなぁ
でもboldで書いた誰かって、私ですよねぇ

いつもなんでこういうことしちゃうんだろ。

2017年10月3日火曜日

Hegemony Rome: The Rise of Caesar 日本語化作業シート

和訳作業シートはこちらです。
イヤな目に会った前例により、匿名の方の直接の編集はお断りしております。編集権が欲しい方はシートへのコメント、またはこちらのコメント欄よりご請求ください。
どうしても編集したいけど匿名でいたい方はご自分のドライブにコピーする権限は付与してございますので、コピーなりダウンロードなりしたうえで利用ください。

まだ先日購入したバンドルのうち一作もやってないんですが、その一つのHegemony Rome: The Rise of Caesar、だれも手を付けていないけれど、日本語化できそうだネってな具合で手を付けてみたら極めて優秀な多言語対応ぶりで感動しました。

思わず作業シートと、作業シートからlanguage.strを再生成するスクリプトを作ってみたところ、結果は良好です。
例えば、ローディングスクリーンではこんな具合。ごめんね、機械翻訳でごめんね。
ナレーション画面だとこんな感じ。
デフォルトフォントだと中華系のフォントが入っていて日本語で使われる文字の収録数が少ないため、やたらと豆腐になるのですが、フォント設定(fontregistry.xnt)を変えるだけで上のサンプルのようにバッチリ日本語がきれいに表示されています。なお、上記のサンプルで使用したフォントはmeiryoです。
蟹行文字文化圏にありがちな文字間に(日本語では不自然な)空白を入れる必要もなく、極めて優秀、単純に翻訳するだけでおしまいなパターンなんてめったにありませんのでなんだかうれしくなっちゃいますねえ。

こんなに簡単に日本語化できるんならだれかやっててもよさそうなのに誰もやってない。
つまり・・・そういうことなんでしょうねえ。

なお、私自身もゲーム自体はやってないですしやるかどうかもわかりません。
やけにメモリ食うし動作も軽快とは見えないし、何よりマウスカーソルを奪ったらキーボード操作を介さないと放してくれないという、まるで20世紀に作られたかのようなプログラムなので、私の好みにまったくあいません。
ゲームの内容を理解する前に放棄するんじゃないかなあと思っています。そもそもバンドルについてきたってだけでのご縁ですので、いまだにどんなゲームかもまだ知らないですし。

余談ですが、google translateはローマ史が苦手みたいですね。
ガリアを正しくガリアと表記できたパターンがほとんどなくガウルだったりガールになってみたり、さらにはヴェルティンジェトリックスや小カトーなどは翻訳すらできないケースもちらほら散見されます。
まあ、アメリカだからいいのかな。ヨーロッパだったら許されない気もするけど。

ま、このまま機械翻訳を進めても、この調子じゃどうしようもないかもしれませんねぇ。

とりあえず、作業シートのTSVからlanguage.strを再生成するスクリプトは以下です。
注意点:
  • 以下の作業はHegemony Rome\Resources\Entitiesで行ってください。
  • オリジナルのlanguage.strはlanguage.str.orgにリネームする。
  • 作業シートの1行目および、全行のカラムA,B,C,Dは変更不可(下記のE,F列にある翻訳結果をlanguage.strに反映するために使用するためです)
  • カラムEに機械翻訳(必須。英文のままでも構いません)、カラムFに手動翻訳(空欄可)があること
  • 上記の点に留意なさって、作業シートを開いてコピペしてa.tsvというファイルとして保存。ダウンロードではない点に注意。
そのうえで以下のスクリプトを実行した結果をlanguage.strにリダイレクトして保存します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/usr/bin/env perl -w
#
# Hegemony Rome: The Rise of Caesar用
#  日本語化language.str生成スクリプト
#
# 引数: 日本語化済tsvファイル名
#   ハイフン: 標準入力
#   省略時  : a.tsv
#   ※tsvの内容は以下のシート内容をCtrl+Aで全コピーした内容を保存したファイル
#     https://docs.google.com/spreadsheets/d/1ZxyFLIHI7GFTSxWfHxfhY601CNAkSZZdEaymD6WYeAU/
# 必要データファイル(実行ディレクトリにあること):
#   language.str.org (オリジナルのlanguage.strをリネームしたもの)
# 出力先: STDOUT (language.strにリダイレクトして使用)
#
our $LANGUAGESTRMADEDATE=`LANG=C date`;
sub conbined_text_decode
{
  my $str =$_[0];
  my @arr = split( /\t/m, $str );
  my $text = $arr[4];
  if( defined( $arr[5] ) && $arr[5] ne "" && $arr[5] ne "\n" && $arr[5] ne "\r\n"){
    $text = $arr[5];
  }
  $text  =~ s/"//mg;
  $text  =~ s/"/\"/mg;
  $text  =~ s/\\t;/\t/mg;
  $text  =~ s/\n\n$/\n/mg;
   
 
  $text =~ s/%%%LANGUAGESTRMADEDATE%%%/$LANGUAGESTRMADEDATE/;
  return $text;
}
sub tag_check
{
  my ($indexno,$line) = (@_);
  my $str = $line;
 
  my $pre  = $str =~ s/<//g;
  my $post = $str =~ s/>//g;
   
  if( $pre != $post ){
    print STDERR "$line $pre vs $post TAG ERROR index=$indexno\n";
  }
}
my @TSV=();
my $combinedline="";
my $mode = 0;
my $translate_indexno = 0;
my $lineno = 0;
my $isfirst = 0;
my $INPUTFNAME=$ARGV[0];
my $FH = *STDIN;
if(!defined($INPUTFNAME)){
  $INPUTFNAME="a.tsv";
}
if( $INPUTFNAME ne "-" ){
  open (FIN_TSV, "<$INPUTFNAME") or die "can't open tsv $INPUTFNAME";
  $FH = *FIN_TSV;
}
while(<$FH>){
  my $line = $_;
  my @arr = split( /\t/,$line);
  if( $arr[0] eq "#lineno" ){
    next;
  }
  if($isfirst ==0){
    $combinedline = $line;
    $isfirst  = 1;
    next;
  }
 
  if( $#arr >= 2 && $arr[0] =~ m/^\d+$/ && $arr[1] =~ m/^\d+$/ ){
    @arr = split( /\t/,$combinedline);
    $translate_indexno = $arr[1];
    $TSV[ $translate_indexno ] = conbined_text_decode( $combinedline );
    $combinedline = $line;
  }
  else{
    $combinedline .= $line;
  }
}
my @arr = split( /\t/,$combinedline);
$translate_indexno = $arr[1];
$TSV[ $translate_indexno ] = conbined_text_decode( $combinedline );
if( $INPUTFNAME ne "-" ){
  close(FIN_TSV);
}
 
 
$combinedline="";
$mode = 0;
$translate_indexno = 0;
$lineno = 0;
open (FIN, "<language.str.org") or die "can't open language.str.org";
while(<FIN>){
  my $line = $_;
  $lineno++;
  if( $line =~ m/^%%LANGUAGE=en[\r\n]+/ ){
    $mode  = 1;
    print $line;
    next;
  }
  if( $mode  == 1 && $line =~ m/^%%STRING=<<HEREDOC[\r\n]/ ){
    $mode  = 2;
    $combinedline="";
    print $line;
    next;
  }
  if( $mode == 2 ){
    $translate_indexno++;
    $mode = 3;
    $combinedline = "";
  }
  if( $mode == 3 ){
    if( $line =~ m/^HEREDOC[\r\n]/ ){
      if(defined( $TSV[ $translate_indexno ])){
        tag_check( $translate_indexno, $TSV[ $translate_indexno ] );
        print $TSV[ $translate_indexno ];
        if( $TSV[ $translate_indexno ] !~ m/\n$/ ){
          print "\n";
        }
      }
      print $line;
      $mode = 0;
    }
    else{
      $combinedline .= $line;
    }
    next;
  }
  elsif( $mode == 0 ){
    print $line;
  }
}
close(FIN);
使い方はスクリプトの井桁(#)が並んでいる冒頭部分にあります。同じものがシートの備忘録にもありますので、そちらのほうが分かりやすいかもしれませんのでご覧ください。
いやあ、どんなOS(Windowsですら)でもperlがのってないOSはない時代になったので説明が楽でいいですわ。

結果だけ欲しい?
私もです。
まあ、翻訳元文が3,648文もあるんで、暇を見つけて機械翻訳にかけていきたいと思ってはいます。
そしてゆくゆくは機械翻訳版language.strを直接ダウンロードできるようにはしたいと、まあ・・・どうかなぁ。やらない気がするゲームなのでモチベーションは正直申し上げてかなり低いです。特に原文を機械翻訳にかけて結果をシートにペーストするような単純作業といった場合、モチベーションの低さが作業量に直結することは率直に認めます。

我こそは訳出するゾ、という方がおいでであればぜひよろしくお願いいたします。
ま。過去の例で一人も出てきたことはないうえにCapitalism Labでは古い古いと苦情ばっかりみたいなので申し訳ないです。そのために作業シート、変換ツール、ノウハウまで公開してんだろ。自分でやれよ

2017年10月2日月曜日

Steamでローマバンドルが85%引き

いったい何をとち狂ったのか、Steamでローマバンドルが85%引きだったというだけで買ってしまったようです。

その中身は

  • Imperium Romanum: Gold Edition
  • Hegemony Rome: The Rise of Caesar
  • Grand Ages: Rome
の豪華DLC込み三本立てで\843也。

うーん、そもそもやる時間あるのかな、てな具合に頭を抱えても後の祭り。

しかも、いくら安いからといっても、インペリアルローマ、日本語版(カプコン版)持ってるのにどうすんのこれ、しかも英語版だし全画面じゃん・・・

とりあえず、インペリアルローマですが、懐かしいので起動してみましたが、いくら昔やったことはあるので英語はいいとしても、全画面はやっぱりキツイです。
そこで昔使っていたD3DWindowerをWindows10で使ってみようとすると、管理者として起動してもグローバルフックに失敗しましたと言われて使えませんでした。
古いOSで起動すると使えるので、Windows10のBuild15063ではなにか仕様変更が入ったのかもしれません。セキュリティがどうとかこうとかでしょうかねぇ。
なんだかんだで試した挙句、DxWndで窓化できましたので、とりあえずは全画面の悪夢はまぬかれそうです。

そうなると、今度は日本語版持ってんのに英語版はどうなのよ、と思うわけです(そうかな?)。
確かにCD-ROMを入れなくていいので、Steam版でプレイできるならそちらのほうがいいとおもいますので、日本語化で検索してみるとありました
あったのですが・・・Autoが自動車だったりして機械翻訳をモロそのまま採用しておられる。
作者さんとしては「ここまでやったんだから訳ぐらい自分でやれ」という声が聞こえて来る気がします。

確かにその通りと思います。

私が過去に手掛けたゲームの和訳はことごとく結果だけクレクレ様しかおられないことは過去の経験で分かりますし、この機械翻訳文を公開しただけでも相当な手間がかかっていることもわかりますので、この仕組みをご提供いただけで感涙です。

しかし、訳文なんぞ誰でも改善できるわけです(しないままクレクレうるさい人が多いのは事実ですが)
すごいのは英語版では日本語表示できないのを何とかしてしまっておられるところ。
これはスバラシイ。

そこで、わたくしとしてはさらにスバラシイ翻訳を用意・・・なんぞしませんねぇ。
なんせ日本語版が手元にあるので、それを流用しちゃえばいいわけです。

日本語版の言語ファイルはJapanese.hpkにパックされていますが、hpkは単なるアーカイブファイルなので展開すると中身を取り出すことができます。
なので、English.hpkとJapanese.hpkを展開して比較すると、訳出されている文言はEnglish.hpkに含まれている文言はすべてJapanese.hpkに含まれており、さらにJapanese.hpkに含まれている訳文のほうがさらに多くの文を訳出しており、かつ、画像も日本語化してあることが分かります。
English.hpkとEnglish08.hpkのtextの差分はたった一文でした。

展開したファイルをそのまま利用するだけで昔懐かしいインペリアル・ローマが、CDROMなしで起動して目の前に現れました。
まあまだちゃんとプレイまではしてないんですが。(このままやらないかもしれない)

英語版のプログラムで日本語フォントを表示できるようにしてくださったishioさんに感謝いたします。

以上、日本語版と英語版を持ってる人にしか役に立たない情報でした。

次に、Grand Ages: Romeですが、これは検索してみると日本語化されているようなのでとりあえず措いておくとして、Hegemony Rome: The Rise Of Caesarはざっくり検索しても日本語化情報は見当たりませんでした。

で、ダウンロードしてディレクトリ構成をあさっていくと、Hegemony Rome\Resources\Entities配下に配置されているファイルに日本語をそのままUTF-8で記述して起動すると字幕を含めて日本語で表示されてることを確認できました。
まあ、一部の文字は化けるんですが、フォントの問題でしょうから最悪ひらがなでも何でもいいわけで。

バンドルでついてきただけなのでどういうゲームかもわからないので(わからないのに普通金払うかね)やるかどうかもわかりませんが、誰も手掛けていない様子ですので、気が向いたら例のCapitalism Labをはじめとしたいつものシートを作成して機械翻訳にかけて日本語化する仕組みを構築するかもしれません。というより、する気です。
だが今日ではありません。

積みゲーばっかり増やしてどうるのだか自分でもわかりません。