4

私はヨーロッパの多くの言語をサポートしなければならないプロジェクトを始めようとしています。このサイトのすべての静的コンテンツは、これらの言語間で翻訳可能である必要があります。衛星アセンブリについて聞いたことがあり、.NETの多言語サイトで使用されていると聞いたことがありますが、これはかなり前のことです。これは.NETの現在の慣行ですか?ASP.NETMVCを使用しています。

4

2 に答える 2

4

ASP.NET MVCを使用している場合、1つのオプションは、ビューごとに異なるリソースを使用することです。私はそれについての記事を書きました、多分それは助けになるかもしれません:

ASP.NET MVCローカリゼーション:カスタムテンプレートを使用してリソースファイルとローカライズされたビューを生成します

于 2012-11-22T16:30:11.177 に答える
4

サテライト部分がない場合はApp_GlobalResources、プロジェクトにフォルダーを追加*.resxし、各言語のファイルを追加できます。プロジェクト全体に対して1つのリソースファイル、またはASP.NET MVCエリアごとに1つのリソースファイルを作成できますが、適切と思われる場合は、1つ以上作成する必要はありません。

App_GlobalResources

MyResources.resx        (Neutral / Default language translated texts)
MyResources.en-GB.resx
MyResources.de-DE.resx

MyResources.resx内

Name    Value
TextID  Some text which will be localized to the end user.

Global.asax.cs(Application_PreRequestHandlerExecute

// Set it according to cookies/Session etc.
System.Threading.Thread.CurrentThread.CurrentUICulture = "de-DE"; 
System.Threading.Thread.CurrentThread.CurrentCulture = "de-DE";

次に、ViewsとPartialViews(MyView.cshtmlなど)で。

<span>@Resources.MyResources.TextID</span>

オプション:

リソースはリンクとして追加でき、カスタム名前空間を使用できます。

BuildAction:           Embedded Resource
CopyToOutputDirectory: Copy always
CustomTool:            PublicResXFileCodeGenerator
CustomToolNamespace:   MyNamespaceHere

mToolNamespace:MyNamespaceHere

次に、を介してアクセスできます。

<span>@MyNamespaceHere.MyResources.TextID</span>

これは、ASP.NET MVCで(通常の/リンクされた)リソースを使用する一般的な方法です。「リンクとして追加」を使用すると、別のプロジェクトに1つの物理コピーを含めることができます。

衛生:

衛星アセンブリに関するいくつかの情報:

MSDN:サテライトアセンブリの作成

MSDNブログ:衛星アセンブリの概要

于 2012-12-04T11:19:57.170 に答える