2012-11-13 8 views
7

ローカライズされた文字列をライブASP.NET(MVC4)のサイト/アプリケーションに後で挿入するプロジェクトに取り組んでいます。これを実現する方法(検証メッセージなど)は、クライアントから文字列を取得し、.resxファイルに格納し、.resxファイルを.resourcesファイルにコンパイルしてから.dllファイルにコンパイルすることです。最後に、この.dllはライブサイトの関連する言語フォルダに配置されます。 ただし、この手動で作成された.dllは、アプリケーションによって取得されていません。代わりに、デフォルトの言語.dllに戻ります。 一方、Visual Studio(2012)で.resxファイルをコンパイルした場合、.dllはアプリケーションによってうまく取り込まれ、そこからローカライズされたテキストが表示されます。文字列のマニュアル作成アプリケーションと連携しないリソースファイル

私は手動で.dllを作成する方法に問題があると推測していますが、問題は見つけられません。それが原因であなたが異なっていることを生成しているとき、フランス語、ローカライズされたリソースDLLで使用される名前空間のかもしれないが、その後、

resgen Strings.fr-FR.resx Strings.fr-FR.resources 

al /t:lib /culture:fr-FR /embed:Strings.fr-FR.resources /out:MyApplication.resources.dll 
+1

あなたは強力な署名をしていますか? – oasten

+0

強い署名がある場合とない場合の両方を試しました。どちらも動作していないようです。 –

+1

ソリューション内の元のresxはどこにありますか?それはあなたのMVCプロジェクトまたはMVCプロジェクトとは別のアセンブリですか? – oasten

答えて

3

:ここで私は、コマンドラインコンソールで実行するものですアプリケーションがリソースファイル用に使用する名前空間から削除します。

リソースファイルの名前をStrings.fr-FR.resourcesからMyApplication.Namespace.Where.My.Resource.Files.Are.Located.Resources.fr-FR.resourcesに変更する必要があります。

デフォルトでは、リソースファイルは[プロパティ]フォルダにあります。つまり、完全修飾名MyApplication.Properties.Resources.MyStringを使用して、ローカライズされた文字列にアクセスできます。今

al /t:lib /Culture:fr-FR /embed:MyApplication.Properties.Resources.fr-FR.resources /out:MyApplication.resources.dll 

resgen Strings.fr-FR.resx MyApplication.Properties.Resources.fr-FR.resources 

が続いてDLLをこのように生成する:アプリケーションがMyApplicationをという名前で、あなたのリソースファイルは、[プロパティ]フォルダの下に配置されている場合

、この方法を、あなたのリソースファイルを生成アプリケーションのbinフォルダにあるfr-FRフォルダに置くと認識されます。

以前に生成したアセンブリのマニフェストと、ildasm.exeを使用して生成したアセンブリのマニフェストを見てください。 2番目のケースでは、.mresource public 'MyApplication.Properties.Resources.fr-FR.resources'の場合、最初のケースでは.mresource public 'Strings.fr-FR.resources'のようになります。あなたのアプリケーションは、ローカライズされた文字列を 'MyApplication.Properties'名前空間に探しますので、それを見つけることができませんでした...もちろん、 'MyApplication.Properties.Resources'をあなたのアプリケーションで使用されているものに適応させます(MyApplication.Localization .Strings ')。

+0

プロパティフォルダは私たちのためには適用されませんが、resgen.exeを使用してリソースファイルを生成するときにパスを考慮する必要がありました。ありがとうございました! –

関連する問題