私はヨーロッパの多くの言語をサポートしなければならないプロジェクトを始めようとしています。このサイトのすべての静的コンテンツは、これらの言語間で翻訳可能である必要があります。衛星アセンブリについて聞いたことがあり、.NETの多言語サイトで使用されていると聞いたことがありますが、これはかなり前のことです。これは.NETの現在の慣行ですか?ASP.NETMVCを使用しています。
2 に答える
ASP.NET MVCを使用している場合、1つのオプションは、ビューごとに異なるリソースを使用することです。私はそれについての記事を書きました、多分それは助けになるかもしれません:
ASP.NET MVCローカリゼーション:カスタムテンプレートを使用してリソースファイルとローカライズされたビューを生成します
サテライト部分がない場合は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つの物理コピーを含めることができます。
衛生:
衛星アセンブリに関するいくつかの情報: