イヤな目に会った前例により、匿名の方の直接の編集はお断りしております。編集権が欲しい方はシートへのコメント、またはこちらのコメント欄よりご請求ください。
どうしても編集したいけど匿名でいたい方はご自分のドライブにコピーする権限は付与してございますので、コピーなりダウンロードなりしたうえで利用ください。
まだ先日購入したバンドルのうち一作もやってないんですが、その一つの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というファイルとして保存。ダウンロードではない点に注意。
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では古い古いと苦情ばっかりみたいなので申し訳ないです。そのために作業シート、変換ツール、ノウハウまで公開してんだろ。自分でやれよ
0 件のコメント:
コメントを投稿