1

私は、さまざまなテキスト エントリがリソース ファイル (GlobalLanguages.resx および GlobalLanguages.fr.resx) に格納されている C# プロジェクトでローカリゼーションを使用するこのフォーム アプリケーションに取り組んでいます。これらは Embedded に設定されています。

VS 2008 のデバッグ/リリースでアプリケーションを実行すると、すべてがうまく機能し、VS 2008 の外部の出力フォルダーから exe を起動したときにも機能します。私のマシンでは、ローカリゼーションが機能していません。インストールフォルダーに.fr.resx値を含む.dllファイルがあります。

インストーラー プロジェクトは、メイン プロジェクトのローカライズ出力を含めるように設定されています。また、インストールされているアプリの現在のロケールをログ ファイルに出力すると、正しい値が得られますが、テキストは既定の言語で表示されます。

IlMerge を使用して exe 内のいくつかの .dll ファイルをマージしますが、リソースの .dll が見つかるので、それは問題ではないと思います。私は本当にすべてを試しましたが、今はアイデアがありません...

皆さんが助けてくれることを願っています。

ありがとう

4

1 に答える 1

0

診断のためだけにこれを試してください: (明らかにクラス名/名前空間を変更する必要があります)。

 Type t = typeof(SomeClassInLanguageAssembly);
 Assembly languageAssembly = t.Assembly;
 Console.WriteLine("Current UI culture: "+Thread.CurrentThread.CurrentUICulture);
 Console.WriteLine("Resources in assembly:");
 languageAssembly.GetManifestResourceNames().ForEach(Console.WriteLine);
 ResourceManager r = new ResourceManager("Language.Assembly.Namespace.ResourceName", languageAssembly);
 Console.WriteLine("'YES' -> " + r.GetString("YES"));

それを実行すると、たとえば次のように出力されます。

現在の UI カルチャ: fr

アセンブリのリソース:

Company.Application.Language.Resources.resources

「はい」 -> おい

于 2011-08-12T10:34:26.680 に答える