ローカライズのためにゲームを準備する方法は?


48

多くのプロジェクトは、ゲームが完了するまでローカライズについて考えません。ローカリゼーションはハックとして行われ、後で追加されたことは明らかです。懸念される特定の領域:

  • テキスト文字列(明らかに)
  • 音楽や物語などのオーディオクリップ
  • テクスチャにレンダリングされたテキスト(たとえば、クレートのラベル)
  • 事前にレンダリングされたムービーのフレームにレンダリングされたテキスト
  • さまざまな言語のフォント/文字セット
  • 等。

開発の初期段階でこれらの課題に備えるための適切な方法は何ですか?それで、前もって多くのコストをかけずに簡単にできるようになりますか?


8
私は最近Dawn of Discovery-Veniceをプレイしました。それは約99%正しいです。。。時々、キャラクターの1人がドイツ語で説明できないか、建物のステータスレポートの1つにウムラウトが含まれているか、(時々)ローカルストアからデバッグアイテムを購入できることが通知されます。どの方法を使用する場合でも、未翻訳の行を簡単に検出できることを確認してください。視覚的に読み上げたり、ゲームをプレイして表示されるようにしたりする必要がある場合は、間違っています。
-ZorbaTHut

@ZorbaTHutデバッグアイテムは翻訳エラーを報告する手段ですか、それともDoD開発者はDLCを使用してローカリゼーションの不具合を修正しましたか?
ダン・ニーリー

プログラマーが読み書きできる偽の言語を作成することは有益です。Googleには「ハッカー」言語があり、FacebookにはPirateがあります。開発者にとっては楽しいものであり、新しい言語を学ぶことなく自分でテストできるものです。
ジョンマクドナルド

上記の回答に追加するために、擬似ローカライズのラウンドを行うことをお勧めします(本質的には、正式な名前と、トップアンサーの「ローカライズされたテキストを表示しない」ポイントのプロセス)。翻訳を開始する前に、潜在的な実装の問題を排除することができます。
アンソニー

回答:


49

私は専門家ではありませんが、ここにいくつかの基本的なものがあります。

文字列が単なるASCII以外のものを処理できることを確認してください

ASCIIに収まらない特定の文字が必要になり、文字列クラスはそれらを禁止する必要はありません。UTF-8はスペース効率が良いため、一般的なエンコードです。何をするにしても、早期にテストし、よじれを取り除きます。

char *あらゆる場所だけでなく、実際の文字列クラスを使用することは非常に良い考えです。

フォントを忘れないでください。使用しているすべてのフォントに必要な文字があることを確認してください。

コードから文字列を引き出す

これが最も重要なものです。テキストストリングはすべて、スワップアウト可能なデータファイルのコード外に保存されていることを確認してください。このためにパイプラインをセットアップするのは面倒ですが、後で時間を大幅に節約できます。コードに文字列が必要なときはいつでも次のようにシンプルになるように、いくつかのシンプルなAPIが必要になります。

String text = Locale::getString("some unique identifier");

コードで文字列を連結または構築しないでください

テキストが小さな単語からどのように構築されるかについて、仮定を行わないことが重要です。次のような無害なものでも:

String currency = Locale::getCurrencyString() + money.toString();
// creates $123

他の言語では数字の後に通貨記号が配置される可能性があるため、問題です。代わりに、次のようにローカライズされたフォーマット文字列を使用します。

String format = Locale::get("currency format"); // returns "${0}" in English
String currency = String::Format(format, money.toString());

そのようにして、ローカライザーはフォーマット文字列内の単語を再配置できます。

アート、特にビデオに表示されるテキストの量を最小限に抑える

アートアセットをフォークするのは面倒です。一部のUI要素については、少なくとも少し行う必要がありますが、面倒です。FMVの複製は、FMVの複製コピーをレンダリングして保存する必要があるため、大きな苦痛です。

さまざまな言語で徹底的にテストする

ほとんどのコードベースでは、ローカライズAPIを使用する必要があることを言うprintf("Hi there");loadTexture("someTexture");、忘れてしまうのは簡単です。誰かが忘れてしまい、あなたはあなたの第一言語では正しいが、他の言語では間違った何かになってしまいます。これらを見つける唯一の方法は、テスターに​​非主要言語でテストさせることです。

ローカライズされたテキストの欠落を明らかにする

通常、テキストはサイクルの後半に翻訳されるため、ほとんどの場合、一部の言語のデータはありません。絶えず再翻訳しなくてもコンテンツを繰り返し処理できるため、これは問題ありません。欠点は、物事を見逃し、翻訳を忘れるのが簡単だということです。

できる安価な方法の1つは、欠落しているテキストを「ID #blah blah !!!に必要な翻訳!!!」のように非常に明らかにすることです。ゲーム内で欠落している場合。

最悪の場合の言語に合わせてUIを設計する

異なる言語には、長い単語や短い単語が含まれる傾向があります。英語で美しく見えるUIには、テキストが境界を越えたり、切り取られたり、長い言語で誤って折り返されたりする場合があります。最悪の言語に対応するためにUIを変更する必要があります(またはUIをフォークしますが、おそらくそれはあなたがしたいことではないでしょう)。

面倒なことに、英語は多くの場合、通常ローカライズされた言語の中で最も短い言語です。そのため、おそらくあなたのデザイナーは最良のケースのために不注意に設計しています。設計時に、プレースホルダーに余分な長いテキストを使用するようにします。テキストは、英語よりも約30%長くなる可能性があると想定しています。Google翻訳は、プレースホルダーに適切なテキストを取得するのに適しています。

翻訳の予算時間

通常、テキストの翻訳は、チームが疲れていてあまり気にしないときに遅くなります。それでも、それが起こると、多くのバグが発生します。さらに悪いことに、海外の人にテキストを送信してその変更を待つ必要がある場合、テキストの反復処理の所要時間は長くなる可能性があります。この作業に時間を割り当てます。


4
ああ、連結された文字列。お尻になんて痛い。多様性を迅速かつ簡単に構築するために、母国語でうまく機能します。しかし、その後、あなたは異なる文法を持つ言語に入り、それは完全な失敗です。他のすべてのポイントも良いものです。ドイツ語の「設定」は「Einstellungen」であり、必要に応じてかなりの余分な画面スペースを消費します。
ケーシーワグナー

13

他の提案に加えて、過去にUIコンポーネントから翻訳されたテキストの出血を見つけるのに非常に役立つ1つのことは、文字列を表示するときにすべての言語とその文字列の最長バージョンを選択します。そうすれば、すべての文字列をそのモードに合わせると、すべての言語のすべてのテキストブリードを修正したことがわかります。


9

ゲームを正しくローカライズするのは大変です。

インターネットを閲覧したり、ブログの投稿を読んだり、StackOverflowの回答を読んだりできます。gettextなどの従来の国際化フレームワークを学ぶことができます。国際化ゲームのローカリゼーションに関するウィキペディアのページを読んでください。優れたMicrosoft言語ガイドを参照してください。ただし、ゲームのローカライズは実際にはそれよりも困難です。実際、ゲームでは、おそらく他のアプリケーションやWebインターフェイスよりも難しいでしょう。これは、ゲームが非常にダイナミックで、活気があり、生き生きしているからです(少なくとも、良いゲームはそうです)。

要するに、次の手順を実行する必要があるでしょう。

境界を確立します。

どの言語を早期にサポートするかについて、非常に重要な決定をしたいと考えています。選択の幅が広いほど、言語がどのように動作するかについての多くの仮定が破られます。多くの場合、これらの仮定は私たちの脳に深く刻み込まれているため、誰かが指摘しない限り、それらが間違っているとは考えられません。次のポイントに私たちをもたらします:

サポートしたい各言語の専門家を見つけてください。

専門家とは、十分な分析スキルと言語の知識を持っている人を意味し、英語を話す人が自分の言語では当てはまらない仮定をあなたに示すことができます。次に、これらの仮定を回避するための戦略を立てる必要があります。

例として、西洋言語では、単語間に余分なスペースを挿入することにより、段落内のテキストを正当化します。アラビア語では、テキストは単語の中にカシダ文字挿入することによって正当化されます。このように見えるかもしれません。

別の例:ロシア語では、大部分の単語に2つの複数形があります。したがって、たとえば、「1コイン」/「3コイン」/「5コイン」を「1монета」、「3монеты」、「5монеты」として翻訳します。正しい複数形を決定する実際の手順は次のようになります。

function LocalRU::GetPlural(n, form0, form1, form2) {
    return (n%10) == 0 || (n%100) >= 5 && (n%100) <= 20? form0 : 
           (n%10) == 1? form1 : 
           (n%10) <= 4? form2 : form0;
}

コンテキスト認識翻訳モジュールを作成します。

翻訳は常にコンテキストに依存することをご存知でしょう。そして、ゲーム内のコンテキストは常に変化することを知っています。これら2つのステートメントをまとめるとどうなりますか?一般的に、翻訳はゲームと同じくらい動的でなければなりません。

たとえば、「同意する」という簡単なフレーズは、話者の性別(男性/女性/トランスジェンダー|質問|質問)に応じて、「Ясогласен」/「Ясогласна」/「Ясогласно」のいずれかとしてロシア語に翻訳されます。これがダイアログ行の1つである場合、言語モジュールは、キャラクターの性別に応じて、実行時に可能な翻訳の1つを選択する必要があります(プレイヤーにそのような選択肢を提供すると仮定します)。

同じフレーズを日本語に翻訳すると、話者と聞き手の関係の形式のレベルに応じて、再び異なる翻訳が行われます。したがって、ゲームで評判、友情、またはさまざまなレベルの優位性(たとえば、キャラクターがルーキーから一般に進化する可能性がある)のアイデアを導入する場合、翻訳を作成するときにこれを考慮する必要があります。(実際には、これは日本語特有のものではありません。英語でさえ、軍隊では、下の人に「サー、はい、サー!」と言うことはありません。)

コンテキストにジャンプする方法があります。

翻訳者は、特定のフレーズが出現するコンテキストを確認できる必要があります。文脈が明らかな場合もあれば、何かを正しく翻訳するために自分でそれを見て、聞いて、経験しなければならないこともあります。

「この本は青い」というような単純な文でも。明確に私はせずに翻訳することはできません探している本を、それがある青の特定の日陰見て。

言葉遊び、しゃれ、およびその他の言語固有の要素を避けてください。

あるいは、避けてはいけないかもしれませんが、少なくとも、言葉遊びが翻訳できない場合に何をすべきかの戦略を念頭に置いてください。おそらくそうではないからです。

少なくとも、二重の意味を持つ特定の単語、または他の単語に似ている単語に依存するクエスト/パズル/ゲームオブジェクトを作成しないでください。一度翻訳すれば、自分のゲームを壊してしまうからです。(たとえば、古いゲームFallout2では、メインクエストはGECKと呼ばれるオブジェクトを見つけることでした。ゲームの周囲には多数の "Gecko"モンスター(変異したトカゲ)もいました。良い翻訳を非常に難しくしました)。

元気づける!

ゲームのローカライズは困難です。しかし、それは誰にとっても難しいことです。努力して正しくやれば、対象国のゲーム評論家に気付かれることはありません。優れた翻訳を備えたゲームが目立ち、より高い利益を獲得します。結局のところ、テキストは、グラフィックスと同じようにゲーム内の雰囲気を作成するために重要です(これが、古いテキストベースのRPGが没入型だった理由です)。


「言葉遊びを避ける」の代わりに、言語翻訳チームに創造的な作家を含め、彼らが文字通りの意味を変更できるようにすることです。良い例として、FFXIVは英語版に対してこれを非常にうまく行います。
パトリックヒューズ

3

Wil Shipleyは、これまで読んだローカリゼーションに関する最高のガイドを持っています。残念ながら、これはiPhone固有ですが、それでも一般に役立つ情報を引き出すことができます。さらに、彼はアセットとUIのローカリゼーションに取り組んでいます-私が想像できるゲームのローカリゼーションにおける2つの大きな課題。


1

常に、常にローカライズされた言語としてソース言語を扱います。

したがって、ソース言語がENである場合、すべてのENアセットと文字列を別のENフォルダーに保持し、そこからプルします。

目的のローカライズパイプラインを通じてENアセットをプルします。

この1つの簡単なことを行うことで、ローカライズの問題の80%をキャッチし、ローカライズプロセスをはるかに簡単にすることができます。

私は多くのゲームをローカライズしており、常にこのナゲットでリードしています。


1

ここに本当に素晴らしいヒントがあります!

ローカライズを難しくすることからゲームを完全に台無しにすることまで、最も一般的な間違いのリストを作成してみましょう。

  • ゲーム開発の最後のステップとしてローカライズを考える
  • テキスト文字列をソースコードから分離しない
  • 文の途中での連結/改行。
  • 時間、日付、および単位はローカライズを必要としないと仮定します
  • 翻訳者に十分な参考資料を提供していない/質問に答えていない
  • ゲームのすべてのテキストがASCIIであると仮定します
  • ビジュアルにテキストを含める
  • 固定テキスト/ UIボックスを使用する
  • すべての言語が英語と同じ長さであると仮定します
  • Google翻訳/機械翻訳を使用する
  • 文化的要因を無視する
  • ローカリゼーションに十分な予算を割り当てていません

ローカリゼーションはできるだけ早く開発に統合する必要があり、ゲームを設計するときは常に念頭に置いておく必要があります。

適切な計画と慎重な市場調査を行うことで、さらに多くの手間と費用を節約できます。

私はたまたまゲームローカリゼーション会社の創設者であり、数か月前にブログでローカリゼーション用のゲームの準備について説明しました。

その投稿を要約したインフォグラフィックは次のとおりです:https : //magic.piktochart.com/output/18317297-9-steps-to-cheaper-game-development-with-localization

これらのヒントを詳細にカバーしている完全な投稿へのリンクは、その下部にあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.