2

ローカリゼーションに関する情報が必要です。ローカリゼーション関連の問題のほとんどを処理する C# 2.0 で .net 2.0 を使用しています。ただし、特定の画面の現在のカルチャに対応するアルファベットを手動で描画する必要があります。

これは、Microsoft Outlook の [連絡先] 画面 ([連絡先] の下の [住所カード] ビューまたは [詳細な住所カード] ビュー) に似ているため、右端にアルファベットごとに 1 つずつボタンの列が必要です。

私はそれをエミュレートしようとしていますが、ユーザーにスクリプトの選択を求めたくありません。今の文化が例えば中国語なら、漢字を描きたいです。ユーザーがカルチャ情報を英語に変更したとき (およびアプリケーションを再起動したとき) に、代わりに英語のアルファベットを描画したいと考えています。このクエリの目的を理解していただければ幸いです。

現在のユーザーのカルチャを特定できます (Application.CurrentCulture または System.Globalization.CultureInfo.CurrentCulture はカルチャ関連の情報を提供します)。また、アルファベットをレンダリングするためのすべてのスクリプトもあります。ただし、問題は、カルチャ情報をスクリプトの名前にマップする方法がわからないことです。

つまり、カルチャに対応するスクリプト名を特定する方法はありますか? または、カルチャに対応する Unicode 文字値の範囲を特定することは可能ですか? どちらの方法でも、ボタンのアルファベットを適切にレンダリングできます。

これに関する提案やガイダンスをいただければ幸いです。私のアプローチ (または私が達成しようとしていること) に根本的な問題がある場合は、それも指摘してください。御時間ありがとうございます。

PS: 最も簡単な解決策は、スクリプト名をユーザー設定の一部として構成するか、ユーザーが選択できる言語のリストを表示することです (Outlook 2007 の Contact のように)。しかし、ユーザーが何もしなくても、文化に対応するアルファベットをレンダリングできるかどうかを確認しようとしています。

4

5 に答える 5

1

ネイティブコードには、GetLocaleInfoEx()(Vista以降)のLOCALE_SSCRIPTSがあり、ロケールに期待されるスクリプトを示します。現時点では、.Netに同様の概念はありません。

于 2008-11-03T18:46:03.353 に答える
0

プロト、待って!もっと正確な解決策があります。これは、P/Invoke が必要な場合があるアンマネージ オンハンスです。

GetLocaleInfoW(MAKELCID(wLangId, SORT_DEFAULT), LOCALE_FONTSIGNATURE, wcBuf, MAXWCBUF);

これにより、LOCALESIGNATURE構造が得られます。答えは lsUsb フィールドにあります: Unicode サブセット ビットフィールド。ネズミ!この構造の MS ページは空です。ただし、MSDN のコピーで調べてください。そこに完全に文書化されています:どのスクリプトがサポートされているかを説明するフラグのセット全体。はい、タミル語のフラグがあります ;-)

HTH。

編集:おっと!ショーンの答えを見ていませんでした。わお!社内エキスパートがお答えします!;-) とにかく、プレビスタ互換の回答にまだ興味があるかもしれません。

于 2008-11-05T15:59:11.673 に答える
0

中国語には何千もの文字があるため、文字セットのすべての文字を表示することは現実的ではない場合があります。中国語には「アルファベット」という固有の概念はありませんし、中国語には日本語のような五十音があるとは思いません。

ピンイン (ローマ字で書かれた中国語) を使用して漢字を表すことができるため、索引付けに役立つ場合があります。これがあなたの質問に答えていないことは承知していますが、参考になれば幸いです。

于 2008-10-31T13:47:14.190 に答える
0

私はmikiemacmanに完全に同意します。さらに、特定の言語が必ずしもスクリプトのすべての文字を使用するとは限りません。

とにかく、私が考えることができる最も近いのは CultureInfo.TextInfo.ANSICodePage です -> ANSI コードページはほんの一握りです。各 ANSI コードページのスクリプトを一覧表示するテーブル (または switch() ステートメントなど) を作成することもできます。

于 2008-10-31T20:09:28.613 に答える
0

魅力的なトピック。質問の答えにはならないかもしれませんが、Omniglotは優れたリソースです。

正解は複雑である可能性が高く、解決しようとしている正確な問題によって異なります。特定の言語で使用される文字のみを表示して電話帳のセクションを区切るという目標を想定すると (Outlook のように)、問題のいくつかは次のとおりです。

  • 複数のスクリプト/言語にまたがる連絡先名を持つ人。
  • 2 グリフ文字 (セルビア語の「Lj」など)。これは 1 つの音素であり、2 つの Unicode 記号がありますが、常に 1 文字として扱われます。「電話帳に独自のセクションがあります(「L」とは別)。
  • リストするグリフが多すぎます (例: 中国語)
  • 異例の順序 (たとえば、タイ語 -- 電話帳は子音のみで区切られ、母音は無視されます)。
  • 大文字と小文字の区別 (おそらく、それをサポートする言語には 1 つのケースだけが必要です。これは、マイナーな方法でトルコ語の 'i' に分類されます)。
于 2008-11-24T20:29:55.047 に答える