多言語対応プログラムの実際

多言語対応プログラムについて、実際の苦労についてのつぶやきをまとめました。 その2はこちら→ http://togetter.com/li/498982
9
まかべひろし @sinpen

今まで作ったことある言語圏は、日本語、英語、フランス語、ドイツ語、イタリア語、スペイン語、ハングル、繁体字、簡体字、くらいかな

2013-05-06 22:10:09
まかべひろし @sinpen

多言語対応するゲームだと、UIの文字レイアウトが怖い。日本語や英語はまだ単語短いけど、ドイツ語が入るだけで、UIの文字レイアウトどうするのか本気で頭抱えたりする。ヘルプ表示なんかは、ついつい横長スクロールのテロップ表示に逃げたりしたくなる。

2013-05-06 22:24:43
まかべひろし @sinpen

けど、メッセージウィンドウとかあるゲームだと、テロップ表示じゃなく改行せざるを得ない。できることなら、改行は、その文章リソースを用意する時点で「ここで改行する」と指定して欲しい。読みやすさを考えると、手間はかかるけどそれが一番良い、とは思う。

2013-05-06 22:27:51
たいにゃん @bugnekotinyan

個人的には改行指定派ですにゃ。禁則がめんどいというのもあるけど

2013-05-06 22:29:33
まかべひろし @sinpen

日本語と英語だけならそれで良いかな、とも思うんだけど、対応言語数が3つを超えてくるあたりから、翻訳さんに改行位置を指定してもらうというのは現実的じゃなくなる。翻訳さんがゲーム的レイアウトをわかってくれる、というのは今までの仕事ではあんまり現実的じゃなかった。

2013-05-06 22:30:12
まかべひろし @sinpen

あと、恐怖の「名前をユーザが変えられる」システム。RPGとかだと当たり前だけど、文字レイアウトを考えると、ホントこれ避けたい。日本語は4文字でどうにかなるかもだけど、英語だと何文字入れられるようにすればいいんだ、それで改行レイアウトどうするんだ、という問題が。

2013-05-06 22:31:42
まかべひろし @sinpen

もー、そうなると仕方が無いから、禁則処理をプログラムで書くわけなんだけど。日本語でも面倒だよね。自動改行によって行頭に「。」が来ないようにする、とか。でも「名前を変えられる」システムにすると、禁則処理書かないわけにはなかなかいかない。ぐぬぬ、と思いつつ書くわけだ。

2013-05-06 22:33:22
たいにゃん @bugnekotinyan

運用で回避、名前が変えられるところは、2文字分少な目で改行してね。

2013-05-06 22:35:57
まかべひろし @sinpen

日本語は自分の中の常識としてわかるけど、英語やドイツ語でも同じように「!」「?」「;」「:」などを行頭に表示しちゃだめなだけでなく、基本的には「単語も2行にわけちゃいけない」。改行できるのは単語間のスペースだけだったりして、日本語の自動改行処理とは全然違う

2013-05-06 22:38:21
たいにゃん @bugnekotinyan

ルビがめんどくさかった。1文字ずつ表示していくときに、どう表示させるのがよいかという話になって、結局画像と割り切って下の文字にあわせて表示することに、表示途中は文字が途中で切れてたりするけど、「きにしない」で解決

2013-05-06 22:40:14
まかべひろし @sinpen

フランス語は確か、さらにややこしくて、≪≫とかの間にスペースが入るのだけど、そのスペースは自動改行しちゃいけない場所。そのため、自動改行していいスペースと、しちゃいけないスペースとを翻訳時点で記述してもらうのが楽。コードで判別してもいいけど。

2013-05-06 22:40:28
まかべひろし @sinpen

んで、途方に暮れたのか「冠詞」の扱い。英語やフランス語には、名詞に冠詞が付く。定冠詞Theの場合もあり。で、この冠詞-名詞も基本的には自動改行しない方がいい。てことは、プログラム上で名詞判断するか、定冠詞判断するか。

2013-05-06 22:42:22
まかべひろし @sinpen

システムメッセージの出力でも、結構めんどくさいのが、単数形と複数形。日本語なら「**を手に入れた」でいいのに、手に入れたものが単数か複数かで表現を変える言語もあり。システムメッセージでもそのあたり気を遣う

2013-05-06 22:43:55
まかべひろし @sinpen

手に入れるアイテムの種類によっても、表現を変える必要があったりもする。日本語は「**を手に入れた」でいいのに、それが装備なのか、アイテムなのか、お金なのか、魔法みたいなスキルなのかで、英語やフランス語は言い回し変えたりする。勘弁・・

2013-05-06 22:45:57
まかべひろし @sinpen

でも、個人的に一番勘弁、とか思ったのは、フランス語の冠詞。対象が生命体の場合、男か女かで冠詞が変わる。モンスターに魔法をかける場合とか、「(冠詞)(モンスター名)に**の魔法を唱えた」とかする。当然、冠詞+モンスター名で1セットなので、ここの間は自動改行させない

2013-05-06 22:47:49
まかべひろし @sinpen

モンスターのオスメス設定なんかしてねーよwww とかならまだしも、「おい、このプレイヤーキャラ、妖精なんだけど男か女かどっち扱いにするんだ?」とか某タイトルでは起きまして。

2013-05-06 22:48:46
まかべひろし @sinpen

(答はフランス語版で遊ぶとわかったりする)

2013-05-06 22:49:05
まかべひろし @sinpen

ともあれ、多言語対応の時の禁則処理とか文言表現とか、想像以上にプログラマ死ねるので勘弁してくださいよー、というお話。何が一番勘弁して欲しいかって、プログラマ、そんな多言語わからないから「言われるままに実装する他無い」のよ。自分で組んでるものが正しいのかわからんのよ。

2013-05-06 22:50:46
まかべひろし @sinpen

そんなわけで、自分が以前多言語対応(しかもゲーム中オプションでいつでも言語切り替えられるようにした!)タイトルは、プログラム結構苦労してるのです。アラビア語みたいな右から表示言語にも対応するとなったら、・・どんだけ大変なんだろうね・・

2013-05-06 22:52:08
まかべひろし @sinpen

とはいえ、ローカライズの話はプログラマ視点から見て面白いことも多いので、一度どっかで話してみたいことでもあるなー

2013-05-06 22:53:12