3

アプリケーションをさまざまな国に配布したいので、そのリソースに多言語文字列を埋め込む必要があります。

Visual Studioは、日本語、英語、中国語など、世界の主流言語のリストを提供します。ただし、これらの他に、次の3つのオプションもあります。

  1. "中性";

  2. "ニュートラル(デフォルト)";

  3. 「ニュートラル(システムデフォルト)」。

それらの違いは何ですか?

4

1 に答える 1

6

ここでネイティブリソースについて話していると仮定します(管理対象リソースは別の獣です)

  • ニュートラル=LANG_NEUTRAL|SUBLANG_NEUTRAL。スレッドローカルへのFindResourceExフォールバック。GetThreadLocaleを参照してください
  • ニュートラル(デフォルト)= LANG_NEUTRAL|SUBLANG_DEFAULTユーザーのデフォルト言語へのフォールバック。GetUserDefaultLCIDを参照してください
  • ニュートラル(sys。default)= LANG_NEUTRAL|SUBLANG_SYS_DEFAULT。GetSystemDefaultUILanguageを参照してください

これらの言語IDは、ユーザーがMUIパックを備えた英語バージョンのWindowsを実行していて、簡体字中国語のデフォルト言語を使用していて、 istreamを介してローカルの日本語スレッドを期待するファイルを開く場合に便利です。

リソースローダーに優先言語(CString :: LoadString / LoadStringWなど)がない場合が多くあります。呼び出し元はニュートラルフラグの1つを指定し、FindResourceExが十分に近いものを見つけることを期待します。リソースファイルに(ニュートラル言語でも)完全に一致するものがある場合、リソースが返されます(ええと、LoadStringWはニュートラル言語の悪い例だと思いますが、LoadIconの方がおそらく良いでしょう)、完全に一致するものが見つからない場合、言語が指定されていない場合、複雑なフォールバックプロセスが開始されます。こちらがXP版、こちらがVista版です。

あなたのリソースが攻撃的ではなく、世界中のローカルエンティティの1つに属するもの(特にローカルパーティの旗、ナチスが使用する卍のシンボルを参照)にあまり類似していないとグローバルにレビューされている場合は、中立であることが有益な場合があります。すべての言語でリソースを共有し、スペースを節約できます。ただし、チームがデフォルトのリソースソースとしてローカライズされたサテライトdllに切り替えると、ニュートラルリソースに固執することが難しくなります(AfxSetResourceHandleを参照)。ああ、そしてグローバルレビューは高価です。

参照: .RESファイルのLANGUAGEステートメントの形式

于 2013-02-23T21:54:08.180 に答える