6

アプリがさまざまな文化の下でどのように機能するかをテストしたいと思います。そのため、テスト目的で、Windows 7 の下でCurrentUICulture、システム設定を変更しようとしました。

これは正しいオプションのようです:Language for non-Unicode programs ここで提案されているように、しかし機能しません。つまり、アプリのロケールはまだ英語です。

Region and Language私もダイアログでこれを試しました:

  • フォーマット: フォーマットを別のカルチャに変更します
  • 場所: 現在の場所を別の国に設定します。

問題は、影響を与えるために Windows 7 で何を設定する必要があるかです。

Thread.CurrentThread.CurrentUICulture

これを書く代わりに:

Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr")

最終的に、このコードは正しいカルチャを選択し、正しくサフィックスが付けられたリソース ファイルを取得して画面に表示する必要があります (上記の行が配置されている場合)。

Label1.Text = My.Resources.Form1Resource.TestString

同様の質問が StackOverflowで尋ねられましたが、この問題に対処する回答はありませんでした。

4

3 に答える 3

12

ノブは、[地域と言語] コントロール パネルの [キーボードと言語] タブにあります。「言語のインストール/アンインストール…」ボタンをクリックして開始します。UI 言語が 1 つしかインストールされていない場合は、別の言語をインストールする必要があります。ウィザードがこれを順を追って説明します。また、効果を確認するには、ログオフして再度ログオンする必要があります。

ほとんどの場合、CurrentUICultureプロパティはユーザーが優先する UI 言語のリストの最初の言語を返すため、これを設定するだけで十分です。他の言語は、優先言語で必要なリソースが利用できない場合に備えて、代替言語として使用されます。

しかし、UI カルチャを決定するために使用する実際のアルゴリズムCurrentUICultureはもう少し複雑です。

  • まず、DefaultThreadCurrentUICultureプロパティをチェックします。そうでない場合はnull、現在のアプリケーション ドメイン内のすべてのスレッドの既定として設定されている UI カルチャを返します。
  • の場合、関数を呼び出しDefaultThreadCurrentUICultureます。 nullGetUserDefaultUILanguage
    • この関数は、最初に説明したように、現在のユーザーが好みの UI 言語を設定しているかどうかを確認します。もしそうなら、それはその言語を返します。
    • ユーザーが UI 言語を設定していない場合、関数はシステムに設定されている UI 言語を返します。これは、[地域と言語] コントロール パネルの [詳細設定] タブで管理者が行います。有効にするには再起動が必要です。
    • システムに優先言語が設定されていない場合は、システムのデフォルトのUI 言語が使用されます。これは、ローカライズされたバージョンの Windows (XP 以前) の言語、またはインストール中に選択された言語 (Vista 以降) のいずれかです。

もちろん、このテスト方法は、グローバル設定を (少なくともユーザー アカウント全体に対して) 変更するため、少しやり過ぎかもしれません。現在の UI カルチャはスレッドごとに維持されるため、アプリケーションのスレッドだけを変更できます。これを行うには、Thread.CurrentUICultureプロパティを設定します。アプリケーションがマルチスレッドの場合、DefaultThreadCurrentUICultureプロパティを設定して、追加のスレッドが正しいカルチャを取得できるようにすることができます。質問は、あなたはすでにこれを見つけたと言っていますが、なぜそれを使いたくないのかはっきりしません.

また、UI 言語とロケールを混同しないように注意してください。それらは同じではありません。CurrentCulture日付/数値/時刻の形式や並べ替え順序などを設定するロケールです。CurrentUICulture正しくローカライズされたリソースのロードを扱う UI 言語です。それらは同じである可能性があり、同じであることが多いと思います、そうである必要はありません。ユーザーがそれらを異なるものにしたい場合があります。たとえば、彼らが英語を話し、ローカライズされた英語版を好むが、習慣に従って書式設定された日付や時刻などを見たい場合などです。

于 2013-06-11T20:22:20.057 に答える
0

そこで、さまざまな方法を使用して、テスト目的でフランス語の言語パックをインストールしようとしましたが、すべて失敗しました。そのまままたは再起動後に、オフラインとオンラインの両方のインストール。エラー コード 800736B3 (オンラインの場合) が表示されるか、オフライン インストールの場合はコードがまったく表示されません。Windows 7 用の System Update Readiness Tool (390MB の msu パッケージ) を試しました。これは、このエラー コードを修正する最も一般的な方法です。オンラインインストーラーとオフラインインストーラーの両方で同じ問題が発生しました。合計で約 4 ~ 5 時間費やしたので、@Cody が (テスト目的で) 代わりにこれを使用し続けることを推奨した理由を理解し始めています。

Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr")
于 2013-06-12T18:37:08.320 に答える