0

以前に Visual Studio Express 2010 で開発したアプリケーションがあります。コードで使用されるローカライズされた winforms と resx リソースを使用します。

同じコンピューターで Visual Studio Express 2012 を使用してプロジェクトを開いてコンパイルすると、ローカライズされた文字列は適用されず、既定のコードのみが見つかりました。

アプリケーションは正常に動作し、winforms デザイナーで言語を変更して、コントロールのローカライズされたテキストを表示および編集できます。また、次のコードを試して、使用されている言語が実行時に存在するかどうかを判断しました。これにより、使用されている言語が報告されました。

        CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
        foreach (CultureInfo culture in cultures)
        {
            try
            {
                ResourceSet rs = resources.GetResourceSet(culture, true, false);
                // or ResourceSet rs = rm.GetResourceSet(new CultureInfo(culture.TwoLetterISOLanguageName), true, false);
                if (rs == null)
                    continue;
                string isSupported = (rs == null) ? " is not supported" : " is supported";
                Console.WriteLine(culture + isSupported);
            }
            catch (Exception)
            {
                Console.WriteLine(culture + " is not available on the machine or is an invalid culture identifier.");
            }
        }

それでも、アプリケーションが実行されているときは、デフォルト言語のリソースしか取得できません。

次を使用してリソースを取得します。

        ResourceManager resources = new ResourceManager(form.GetType());
        form.Text = resources.GetString("$this.Text", lang);

lang が正しいことを確認しましたが、

        System.Threading.Thread.CurrentThread.CurrentUICulture = lang;
        System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang.Name);

続いて MyLangResxFile.MyStringResource を使用します。返される文字列は、まだデフォルトのものだけです。

Visual Studio Express 2010 から 2012 の間で resx ローカリゼーション サポートに変更または制限がある可能性はありますか?

更新: 3.5 から msbuild.exe を使用してコンパイルするとローカリゼーションが機能することに気付きましたが、4.0 を使用すると、上記のようにローカリゼーションが失われます。

4

1 に答える 1

0

その質問に「答えて」申し訳ありませんが、コメントは機能していません。私はまったく同じ問題を抱えているので、その間にその問題を解決できるかどうか尋ねたいだけです.

この問題は、4.0 未満のターゲット フレームワークが選択されている場合にのみ発生することに気付きました。ターゲット フレームワーク 4.0 および 4.5 のローカリゼーションは、VS 2010 で以前と同じように機能しています...

于 2012-11-23T09:54:21.503 に答える