コラム:メッセージの変数置換

翻訳にもちょっとだけ関係ありますが、どっちかと言うとこれはアドオン作者目線のお話です。
メッセージを表示するイベントで、状況によってメッセージの内容を微妙に変化させたいときに変数置換はとても便利です。
※変数置換とは、$と|の間に変数名を入れておくと、その部分を変数の値に入れ替えてくれる機能です。
ですが、この方法は翻訳者にとっては非常に迷惑なやり方になる場合があります。
例えば「Get 5 potions.」の5の部分を変化させたい場合、_ "Get $variable| potions." として、数字を変数置換することが出来ます。これを翻訳する場合は"ポーションを$variable|個拾った。"のような感じでしょうか、まだ対処は簡単に見えます。
次に、_ "Get $variable| $variable_2|." とアイテム名も置換するようにしてみます。そこで翻訳文を"$variable_2|$variable|個拾った。"としてみます。ここで、ちょっとした問題が発生します。
日本語では物の数を数えるときに個・本・冊・体などと単位が変わることがあります。"$variable_2|$variable|個拾った。"は個の部分が$variable_2|の内容によっては不自然になる訳です。
さらに pot には文章のパーツがバラバラに全く別の行に点在することになり、文章の全体像が把握しにくくなります。
日本語以外の言語でもそのような問題は発生するわけで、これを回避するためには文章の途中に変数置換を仕込むのは出来るだけ避けたほうが良いという事になります。
ならばいっその事、文章丸ごと置換したらいいのでは? 中々いい考えです。ただし・・・
_ "$variable_3|" メッセージの記述をこのようにすると、potにリストされるメッセージは "$variable_3|" となり、これは翻訳のしようがありません。potのリストにこんなのがたくさん並んでいたら、かなりウザいですね。
翻訳可能な部分には、”_” を付けなければいけないと思い込んでいると、このようなウザい結果を招きます。メッセージ全体が変数置換の対象となる場合は、”_” を付ける必要はありません。

[message]
speaker = narrator
caption = _ "caption"
image = "imege pass"
message = "$variable_3|"
[/message]

message の値に “_” が無ければ pot に無駄な行がリストされなくなり、翻訳者をウザがらせる事も無くなります。
そして、置換するメッセージはどこで翻訳可能になるかと言うと、

[set_variable]
name = variable_3
value = _ "message"
[/set_variable]

変数の値に “_” を付ける事で pot にリストされます。

変数の値に “_” が付いていて翻訳ファイルが存在する場合は “_” が付いた変数の値は、変数が作られた段階で翻訳文に置換され、値は「 _ “message” 」から「 “メッセージ” 」と変更されます。
そして[message]イベントで発生する変数置換により「 message = “$variable_3|” 」は「 message = “メッセージ” 」となるわけです。

で、何故こんなことに気を使うのかと言うと・・・翻訳が面倒な状態になって苦しむのは自分だからなのです。英語圏のアドオン作者なら気にしないかもしれませんが異言語圏の作者は最終的に母国語の翻訳を添付したくなりますよね。
結局、自分で翻訳ファイルを用意する訳ですから苦労するのも自分な訳です。(以上、苦労した本人からでした)

カテゴリー: 未分類 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です