2009-10-31 9 views

答えて

5

Windows上の多言語アプリケーションの基本は「リソース」の使用です。リソースは、実行可能ファイルの末尾に追加されたチャンクです。このチャンクは、データのみを含み、Windowsがそれらのデータを解釈できるように、非常に特殊な方法でフォーマットされています。

あなたのリソースには、ダイアログボックス、文字列テーブルだけでなく、バ​​ージョン情報(エクスプローラでファイルのプロパティダイアログボックスに表示されるもの)があります。 Visual C++でexeまたはdllを開くと、dllまたはexeのリソースを見ることができます。アプリケーションを開発するときは、リソース(ファイル/新規)を作成し、プロジェクトに追加し(ファイルを追加するときと同じ)、リソースを編集します(リソースエディタを使用します。プロジェクトエクスプローラで)。

各リソース(ダイアログ、ダイアログ、テンプレート、バージョン情報、文字列テーブルなど)には、変更可能な言語識別子が含まれています。異なる言語識別子を使用して同じリソースを複数回作成することができます。コンパイルされると、アプリケーションがWindowsによってロードされると、言語がWindows UI言語に近いリソースを開こうとします。

Windows SDKには、LoadString、LoadCursor、LoadBitmap、およびresources chapterのすべてのリソースを有効に活用するための一連の関数が定義されています。

コードで文字列を使用するたびに、文字列テーブルリソースに格納し、LoadString関数を使用してその文字列を取得します。ウィンドウとダイアログボックスは、一般的に、リソースに正しい言語識別子を設定している限り、特定の関数呼び出しを必要とせずに正しい言語でロードされます。

voila、それは私ができるWindowsの多言語開発への最も短い導入です。私はあなたがネット上のWindowsの下でリソースや多言語開発に関する多くのよく書かれた記事を見つけることができると確信しています。

+0

多言語対応のこのようなテキストを書き留めてくれてありがとう –

0

すべての文字列にgettextを使用します。

+0

WindowsはWindowsに言いました。Windowsには、Un * xから移植されたライブラリよりも、これを行うためのより多くのネイティブツールが用意されています。 –

+0

gettextはWindowsの貧弱な文字列リソースよりもはるかに多くを提供します。元の翻訳が変更される状況を管理すること。 gettextはそれを明確にするので、すべての翻訳者は翻訳を更新する必要があり、翻訳者には前の翻訳のヒントが提供されます。 –

0

このはですはあなたのプログラムが何をするかによって大きな問題や小さな問題になります。見て

もの:

  1. 文字列と文字エンコーディング。文字列をリソースに入れる(またはgettextを使用する)ことは始まりですが、文字列を内部的に格納する方法を検討することもできます。例えば。このようなエンコーディングをまだ使用していない場合は、UTF-16のようなUnicodeエンコーディングを調べてください。

  2. 文字列データをどのように処理して格納するかを考慮してください。ソートや大文字と小文字の区別は必要ですか? ASCII順(例えば、 'char'の単純な値を比較するなど)は正しいとは限りません。これらの懸念の一部は、hereで概説されています。

  3. 日付と時刻の出力形式、お金の出力形式などは文化によって異なります。

  4. 最後に、使用しているインターフェイス技術に応じてUI要素を再レイアウトする必要がある可能性があります。文字列は、さまざまなシステムフォントを使用して、さまざまな遅れで長くなったり短くなったりします。極端な場合は、右から左の読者のレイアウトを考慮する必要があります。

2

あなたが心配する必要は、いくつかの側面があります。

  1. が、それは別の言語を「話す」
  2. 利用ロケールを作るユニコード
  3. ローカライズ(翻訳)アプリケーションとしてアプリケーションをコンパイルしますあなたがソートしなければならない、または日付/時刻/数字をフォーマットする必要がある場合の動作

ローカライゼーションの最善の方法は、コード内に文字列を使用せず、リソース専用のDLL(または「サテライトDLL」)に格納することです。 おそらくここから開始するのが最も良いでしょう。http://msdn.microsoft.com/en-us/goglobal/bb978454.aspx、特にチュートリアルと右側のプレゼンテーション細部までローカライズ作業のため

、あなたはこれをチェックすることができます:あなたはGetNumberFormatまたはてgetDateFormatのような特別なAPIを使用する必要がロケール対応行動についてhttp://mihai-nita.net/2007/05/03/how-to-localize-an-rc-file/

を。 おそらくここから始めることができますhttp://msdn.microsoft.com/en-us/library/dd319078%28VS.85%29.aspxまたはここにhttp://msdn.microsoft.com/en-us/goglobal/dd565826.aspx

もちろん、トピックに関する全書籍があるので、ここでは答えはありません。 MSのグローバリゼーションポータル(http://msdn.microsoft.com/en-us/goglobal/)、特に "Learn"タブから始め、そこからoを始めてください。

あなたがいくつかの問題にぶつかったら(おそらくそうです)、microsoft.public.win32.programmer.internationalのニュースグループに立ち寄ってください(私は知っています、誰かをstackoverflowから遠ざけることは良いフォームではないかもしれませんが、専用の場所があるので、より良い回答が得られるかもしれません)。

関連する問題