0

これは Windows フォームのグローバリゼーションの最初の試みなので、自分の言語でフォームを作成し、プロパティLocalizableを true に設定し、プロパティLanguageをデフォルトのままにして、すべてがデフォルトのリソース ファイルに生成されました。これは良かったです。その後、私は新しいリソースファイルを追加FormName.en.resxし、それがどのように機能するかをテストするためだけに名前を変更しましたが、今ではアプリケーションを実行するたびに、デフォルトのFormName.resxファイルの代わりに追加した英語のファイルを使用しています.英語のリソースファイルを削除すると、すべてがうまくいきます.通常に戻りましたが、何か見逃しましたか?

最初はWindowsが原因だと思っていましたが、私の言語は正しく設定されており、Thread.CurrentThread.CurrentCulture手動で変更しようとしましたが、常に英語のままです。

4

2 に答える 2

0

これは汚い方法だと思いますが、誰かが同じ問題に遭遇した場合は次のようになります。

 private void ChangeLanguage(string lang)
        {       
            Thread.CurrentThread.CurrentCulture = new CultureInfo(lang);
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);

            //YourFormType should be the name of your form
            ComponentResourceManager resources = new ComponentResourceManager(typeof(YourFormType));
            resources.ApplyResources(this, "$this");

            foreach (Control control in this.Controls)
            {
                resources.ApplyResources(control , control.Name);
            }
        }

誰かがより良い解決策を持っている場合は、投稿してください。試してみます

于 2012-07-29T15:33:01.283 に答える
0

リソースの言語を決定するために使用される UI 言語は、デフォルトで OS の言語パックに関連付けられています。英語の Windows を実行している場合、アプリケーションは英語のリソースを取得します。別の言語を強制する場合は、Thread.CurrentThread.CurrentUICultureプロパティを設定します。Thread.CurrentThread.CurrentCulture は、日付/時刻/数値のフォーマット方法に影響します。

于 2012-07-27T19:20:18.793 に答える