ルー語でゲームを翻訳した話
KMC Advent Calendar 2025 の24日目の記事になります
昨日23日の記事は 絵をより魅力的にする「仕上げ」技法 でした
日没後にこんばんは、OBのsiotoutosiotouto.iconです。
一回り以上離れた後輩たちに混じって失礼します
一回りというと干支ですが、来年は有名な丙午(ひのえうま)らしいですね
今日はクリスマス・イヴということですが、そういえば元は暦って天体観測のツールで、日没から日没が1日の区切りだったため、その頃の25日(つまり今の24日の日没後)のイヴニング(18-21時頃)でクリスマス・イヴということらしいです
ルー語でゲームを翻訳した話
siotouto.iconはあまり英語は得意ではない(TOEICでいうと440点と545点を取ったことがある)のですが、
この秋にやったゲーム #MergeMaestro が非常に面白かったので、それを翻訳することになりました
24日記事投稿時点ではまだ翻訳版はリリースはされて居ません
28日頃翻訳版を含む1.3.3がリリースされました! iOS版だけまだ出ていないですが
ルー語について
もしかしたら(Z世代以降には)伝わらないかもしれないので、補足
ルー大柴という芸能人が居て、日本語の最中の、普通カタカナ語にすらしない部分を英語で言ってそれをキャラクター性としていた。例としては、「薮からスティックに」
慣用句の部分を英語にするのは完全にネタであり、分かりやすさが向上したりはしないが、siotouto.iconとしては、各言語にしかない概念とかをうまく反映したいなら、日常でも使える技法であるとは思う
LOVE(好き)な食べものはPERSIMMON(柿)、とか
LIKEとの混同を防ぐ、音での牡蠣との混同を防ぐ
ルー語だと食べものまでFOODになりそうだ。
SHIPに乗るのがLIKE(好き)、とか
フネだとサイズ感がどれの場合もある(舟との混同を防ぐ)
ただし、今回は別にそういう意味でルー語を使う訳ではない
経緯
安くて面白そうなゲームを見つけて体験版を遊ぶ
これはとても面白いぞと購入(しかも安い。セール・バンドル割で300円くらいだった)
言語依存性はそこまで高くない(長文・物語を読む能力は必要ない)ので英語のまま遊ぶ
全てが記号化されている訳でもなく、英語のままのプレイは多少ストレスがかかると感じる
日本語(や中国語なんか)で出ないんですか?とsteamのスレッドに投稿
年内には頑張って各国語に対応したバージョン出したいねと作者返信
面白いゲームなのでゲームのdiscordを眺めつつ、上と同じコメントをする
discord上で、日本語のフォントのオススメある?という話題があったので、ざっくりと探してくる
ところで日本語の翻訳者特には居なさそうなんだけど、興味あるかメンションされる
私ともう一人日本語の話題に触れていた計二人のうち、日本語話者は私だけらしい
結局日本語版はさっさと遊びたいので、じゃあ頑張りますよという話になる
ゲームの翻訳について
英語はあまり得意ではない私だが、(特にアナログ風味の)ゲームのルールには結構うるさい
ゲームのルールについてはある種のテクニカルライティングが要求される
使う単語・表現には一貫性を持たせる
同一の効果には同一の単語を、同一でない効果には同一でない単語を
さらに言えば、似た効果があるとしても、単語は明らかに違う方が混同しなくて良いだろう「選択する」「選ぶ」なんて単語は両方あると混乱する。別の意味であっても、同じ意味であっても。
ちなみにこの2つのワードでGoogle検索しようとすると、私の環境ではあるゲームが予測候補に上がってくる。
一体どこの国民的トレーディングカードゲームなんだ
かなり前から前者が「対象を取る」系のワードに改められ、「選ぶ」系のワードとの混同はもう起きないらしい
単語だけでなく活用も可能な限り揃える
例としては、「生成」「生成する」を(使われる場所が同じなら)統一する
行うのは翻訳であるから、ルール上の誤解を与えない範囲では、作者の元の単語に可能な限り近付ける
ただし、原語も個人開発で揺れなどあるため、適宜作者への確認や、修正・用語の再統一を図る
個人的な好みとして、英語そのままカタカナ語にした方が分かりやすいものはそうしたい
ただし、翻訳した結果をルー語にはしたい訳ではない
実際の翻訳の方法について
作者がスプレッドシートを提示し、要素名・英語・翻訳後の言語の3列のシートの翻訳後の言語の列を埋める方式
余っている空白のカラムは自由に使って良いらしい
先の要件を達成するために考えたこと
同一の効果には同一の単語を
単語は、一対一対応する言葉にしておいて、全て置換するのが良い
... 置換後に、新たに翻訳する必要があったらどうする?
... 置換後に、より良い翻訳を思い浮かんだらどうする?
置換した状態ではなく、置換前の状態を保存して、最後に置換するのが良いだろう
単語に限らず、よく使う同一の効果は、短縮形を用意してそれを書くようにする
例えば、「各ターンに1回まで、」は {1perT} みたいな感じ
原文の英語だと once twice とかでむしろ大変そうだった
単純な置換ではなく、正規表現を使えばより汎用的に使うことが出来る
各ターンにN(=1-9)回まで、だったら{NperT}で書けるようにしておけば、それを使う限りは表記揺れも発生しない。
元の単語に可能な限り近付ける
英語の音のままのカタカナ語で日本語と同等以上に親しまれている表現は、カタカナ語のままにする
ここでの親しまれている、はゲームの文脈で親しまれていれば良いものとした
アタック・ピック・バフ・アップグレード辺りはそのままに
置換する前提で一旦英語のまま仮置きしても良い
特にどの単語が近いか自明でないなら、毎回判断すると単語を取り違える可能性がある
実例は後のデモの節を見てください
実現する方法について
スプレッドシート上で辞書を作ってそれで変換する方法があれば出来る
置換する関数はあるが、辞書的に置換する方法はあるか?
ある(実例は次のデモ用シート節に)
参考: https://www.officeisyours.com/entry/2022/12/28/065805
SUBSTITUTE 1セル中のある単語1つをある単語1つに置換
XLOOKUP 範囲から単語と一致するセルを見つけて、それに対応したセルの単語を取得する
REDUCE 単語リストに対して順番にこれを行う
上3つを組み合わせると、「置換元単語リストに対して、「各単語に対応する置換先を見つけて来て、その置換元と先との組を利用して置換する」をリスト中の単語に順番に行う」という感じになって出来る
さらに、上記の記事では最終的に、これをするターゲットを好きに増やせるようにARRAYFORMULAしている
なんかこの点については実際は絶対座標で指定するだけでやってもやらなくても良いような気はする
デモ用シート
https://docs.google.com/spreadsheets/d/16OKeq-8w0HFNcQOEgaf-XwKVn9U33-gwnkqoXv4a-Ig/edit?usp=sharing
間違って破壊出来ないように権限は絞ってある
コピーしたり、破壊出来る別のシートの方を使ってください
ただ、もっと上手い方法はあったりしないかな、と思っている
もっと上手い方法について知っている人は教えてくれると嬉しい
特に、再帰展開を自動で出来ている訳ではなくて手動でやっているのが微妙ポイント高い
補足: SUBSTITUTEではなく正規表現(REGEXPREPLACE)を利用した
まとめ
ゲームの用語はちゃんと統一しましょう
方法のひとつとして、記述用の言語(ルー語など)でテキストを書いて変換するということが考えられる
spreadsheetでシート上に辞書を自分で定義してシート上で置換するようなことは出来る
具体的には置換(SUBSTITUTE, REGEXPREPLACE)関数をREDUCEで畳み込む。その際に対象の単語の組を見つけるためにXLOOKUPを使う。
ただし、あまりシンプルな方法ではなかったので、よい方法があれば個人的には知りたい
(そもそも、プログラムなどであれば、変換ではなく定数・変数の展開する記法があるのでこういう方法は不要そう)
#MergeMaestro は楽しい
翻訳の報酬としてそれなりの額をもらったが、それはそれとして日本語でプレイ出来るのが嬉しい。
お金をもらったから宣伝している訳ではない
雑記
正規表現の置換なら、もっと英語のまま書いても良かったのでは?
例 DESTROY<{2ADJT}> (現状は{2ADJT}をDESTROY)
うーん。そうかも。
逆に、正規表現の置換だからこそ出来るしそうするのもありだったかな
正確には、プログラムとかでももちろんやりようはあると思うけど