0

SOには同様の質問がたくさんあることは知っていますが、私の問題はまったく同じではなく、提案された解決策はうまくいきません。

そのため、「MyApp 1.0」という名前の C#.NET デスクトップ アプリを作成しましたが、後でデフォルトの名前空間を に変更しましたMyApp。ここで、アプリをさまざまな言語にローカライズしたいので、新しいリソース ファイルを追加して、各言語の UI 文字列を .as などに保持MyAppUIText.en.resxMyAppUIText.gu.resxます。public staticまた、アプリケーション内の任意の場所にあるこれらのリソースから文字列にアクセスするためのメソッドを持つクラスも作成しました。そのコードは次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Resources;

namespace MyApp
{
    namespace Utility
    {
        class UIText
        {
            private static ResourceManager rm = new ResourceManager("MyApp.MyAppUIText", typeof(FormMyAppMain).Assembly);

            public static string GetString(string key)
            {
                return rm.GetString(key, System.Globalization.CultureInfo.CurrentUICulture);
            }
        }
    }
}

アプリを実行すると、次のランタイム エラーが発生します

指定されたカルチャまたはニュートラル カルチャに適したリソースが見つかりませんでした。コンパイル時に "MyApp.MyAppUIText.resources" がアセンブリ "MyApp 1.0" に正しく埋め込まれているかリンクされていること、または必要なすべてのサテライト アセンブリが読み込み可能で完全に署名されていることを確認してください。

ただし、文字列は UI に正しく読み込まれますが、フォーム デザイナーは title で同じエラーを表示しますTo prevent possible data loss before loading the designer, the following errors must be resolved:

ここで何が間違っていますか?

PS 私はC#は初めてですが、Javaに精通しており、properties以前にそのファイルを操作したことがあります。

4

1 に答える 1

1

MyApp.MyAppUIText.resxファイルを削除または名前変更しました。フォームの言語が(デフォルト)に設定されていることを確認し、フォームのテキストを変更します。フォームのTextプロパティを変更するとそれが行われます。VSは新しいMyApp.MyAppUIText.resxファイルを作成し、ソリューションをビルドして実行します。

于 2013-01-24T19:12:58.257 に答える