ローカライズの側面。 開発者の主な間違い

最初のメモが示したように、ゲームのローカライズのトピックは多くの人の心を刺激します。 Khabrovchanの乱れたノスタルジックな記憶は、翻訳者の一人、つまり伝説的なゲーム「NEVERVHudo」の活発な仕事を呼びかけ 、そして一緒に、読者の興味を満たし、短いシリーズの記事を実装できることを願っています。

マテリアルを次の2つのタイプに分けるとよいと思います。



それで、「海賊ローカリゼーション」の作成がなぜとても怖いように見えるのか、そして私たちがすべてを人間的に行うことを妨げたのはなぜかという疑問を提起します。



開発者の友人が私たちにもたらす素晴らしい発見の数について...



ローカリゼーションの最も基本的な部分は、テキストと画面上の表示に関連するすべてです。 そして、それはそれほど複雑なように見えましたか? 彼はテキストを引き出し、翻訳し、挿入して元気づけました-ゲームの準備ができました。 しかし、この段階では、多くの驚きが待ち構えています。



DOSのもとでの外国のゲーム、特に古いゲームは、大部分が1つの言語(英語)専用に作成されました。 開発者は、テキストを処理および表示するためのシステムを気にすることはありませんでした。 多くの場合、文字列はシングルバイトエンコーディングを使用します:

char * textString =”一部のテキスト”

さて、それは何が問題なのでしょうか? すべて問題ありませんが、ここではchar値のみが-128〜127の範囲にあります。 cp1251でエンコードされたロシア文字のコードは0xC0..0xFFであり、プログラムでは負の数と見なされます。 多くの場合、開発者は着信行に英語の文字と記号の範囲(0x20..0x7f)のみをスキップするフィルターを配置し、ロシア語の文字が単にスキップされることは明らかです。 この問題を解決するには、exe'shnikで行が処理されるすべての場所を探し、署名された操作を署名されていない操作で書き換え(通常はMOVSXをMOVZXに置き換えます)、フィルター範囲などを変更する必要があります。 しかし、それは多くの時間がかかり、常に完全に成功するとは限りません。

これらの問題に加えて、異なる言語の文字の処理の違いに関連する他の問題があります。 たとえば、すべてのアイテムが大文字で書かれているメニューがきれいに見えると開発者が決定したゲームがあります。 素晴らしいですが、関数を使用してテキストを強制的に大文字にします。これはロシア語では常に正しく動作するとは限りません。 その結果、たとえば、「ダウンロード」という単語の代わりに、「ZATRFZKA」などの驚きが画面に表示されます。



Chernyshevskyを思い出して、同じ質問、「何をすべきか?」を尋ねます。

Unicodeを使用するのが最善です。 しかし、それを使用する場合、それは正確で完全です。

多くの場合、リソースが2バイトエンコーディングUTF-16で保存されているゲームに出会う​​ことができましたが、これが幸福の終わりです。 開発者はコードを書き換えるのが面倒で、シングルバイト文字列を処理する古い慣習を使用していたためです。 どのように見えますか? 最悪の場合、入力Unicode行は、最初のバイトが2バイトコードから取得され、新しい行に入力される開発者の独創的な機能を通過します。 これは、原則として、英語とヨーロッパ言語(0x0020..0x00FF)で機能しますが、ロシア文字は合格しません(0x410..0x44F)。 苦しみすぎないように、ロシア語のテキストをcp1251から2バイトにトランスコードできます。 これは基本的にこの問題を解決しますが、時には別のものを与えます。 たとえば、ゲームはシステムTTFフォントを使用しており、ロシア語の代わりに画面にヨーロッパ文字(Âäçèáâのようなもの)が表示されます。 しかし、それについては後で。 治療方法は? 関数を書き直し、通常のシステム変換WideCharToMultiByteおよびMultiByteToWideCharを正しい文字テーブルで使用します。 これはすべて、UTF-16とUTF-8の両方に適用されます。



一般に、システム関数の正しい使用は、他の言語地域で製品を宣伝したい開発者にとって習慣になるはずです。 近視眼的開発の問題の数。 たとえば、最初はロシアのWindowsシステムで実行したくないゲームがありました。 たとえば、不具合の1つ-開発者は英語名に従ってDirectXのリストからビデオアダプターを選択しましたが、ロシア語のWindowsではロシア語で表示されます。 原則として、この方法は一般に正しくありませんが、適用されました。 一部のエラーは、今日まで理解したくないものです。 ロシア語版のWindowsでゲームを保存したくない場合、いくつの問題がありましたか? 問題は非常に簡単ですが、公式のローカライズ版と海賊版の両方で発生します。 実際、ゲームはファイルを「マイドキュメント」フォルダに保存しようとしています。 ただし、エンコードの変換が正しくないため、「マイドキュメント」フォルダーのロシア語の名前は、ファイル名として使用できない文字のセットに変わり、システムはゲームにエラーを返します。 何回か、この問題の「巧妙な」解決策に出会いました-「マイドキュメント」フォルダの代わりに、Windowsのすべてのバージョンで英語になっている「アプリケーションデータ」フォルダを使用しました。 しかし、ここで問題があります。ユーザーがログインでロシア語の文字を使用すると、「Documents and Settings \ User \ Application Data」のようなエラーが発生します。 あなたがプレイヤーであり、これに遭遇した場合、残っていることが1つだけあります。MyDocumentsフォルダーの名前を英語に変更し、ログインを英語のみで使用します。 エラーを修正する場合は、保存を処理する場所を見つけて、パスを強制的に修正する必要があります。 たとえば、%sパラメータが「My Documents」へのパスに置き換えられる可能性が高い「%s \ GameName \ SaveData」は、「C:\ GameName \ SaveData」と記述できます。 ゲームは気分を害することはなく、保存されます。 (確かに、プレーヤーに管理者権限がない場合、アクセス権に違反する可能性があります)。



開発者がローカライズされた文字列の代わりにファイル名を使用することをお勧めする場合、別の驚きが待っているかもしれません。 ここでは、エンコードテーブルを正しく処理することが非常に重要です。そうしないと、ロシア語のファイル名と思われる効果を得ることができ、ゲームでは何が明確ではありません。 または、通常のロシア語の名前でゲームからファイルを保存すると、ディスクに何かが表示されます-後で削除することさえできません。 またはまったく保存されません。 最も簡単な例は、プレーヤープロファイルの保存です。 非常に頻繁に彼は英語で置き去りにされており、良い生活から全く離れていません。 正直なところ、Norton Disk Doctorがそのようなファイルを正常に「硬化」したときから、英語以外のファイル名と特別な関係があります。 プログラムはなくなりましたが、習慣は残っています-私はまだファイル名にロシア文字を使用しないようにしています。



また、今日まで多くのゲームで解決されていない興味深い問題の1つです。 キーボード入力 ロシアのWindowsでは、ロシアのレイアウトが主なレイアウトであることが標準です。 そして、ゲームを開始した後、キャラクターが動きたくないことがしばしば起こります。 readmeを読むと、「英語のレイアウトをデフォルトのレイアウトとして選択することをお勧めします」という控えめな言及を見つけることができます。 たとえば、ゲームチャットなど、ロシア語で何かを入力するのが難しいということについては話していません。 しかし最近、幸いなことに、これはすでに珍しいことです。



そして最後に、このセクションでは、この状況を思い出します。 ゲームの公式ローカリゼーションを購入し、喜んで家に帰り、インストールして起動しました-そして、すべてが英語で書かれています。 ここに迷惑があります:(すべての開発者の独創的なアイデアの問題です。彼らの意見では、ゲームの言語は地域の設定で指定されたものと同じである必要があります。しかし、ここに英語のWindowsがあり、地域の設定が「ロシア」ではなく、ゲーム内で言語の選択があるが、そうでない場合は、そのようなアルゴリズムの実装はGetSystemDefaultLangID関数に基づいており、この関数はシステム内の現在の言語コードを返し、ゲームで使用可能な言語の表を確認し、使用可能な言語がない場合は、英語が選択されています 。時々、READMEに助言として地域の設定をリセットする可能性を扱う(そしてこれはただのゲームを開始することです!)あなたがゲームの気まぐれで彼らのシステムを変更したくない場合は、あなたが希望する結果にこの関数呼び出しとスイッチを見つけることができます。



今日はこれで十分です。 次のシリーズでは、ゲームの声優の魅力的なプロセスについての無料の物語と、海賊版のローカリゼーションが公式のものとどのように異なるかについての物語を読んでください。



All Articles