4

我即将开始一个必须支持多种欧洲语言的项目。本网站上的所有静态内容必须可以在这些语言之间进行翻译。我听说过附属程序集,并且听说它们用于 .NET 中的多语言站点,但这是很久以前的事了。这仍然是 .NET 中的当前做法吗?我正在使用 ASP.NET MVC。

4

2 回答 2

4

如果您使用的是 ASP.NET MVC,则一种选择是为每个视图使用不同的资源。我写了一篇关于它的文章,也许它可以帮助:

ASP.NET MVC 本地化:使用自定义模板生成资源文件和本地化视图

于 2012-11-22T16:30:11.177 回答
4

如果没有附属部分,您可以将App_GlobalResources文件夹添加到项目并*.resx为每种语言添加文件。您可以为整个项目拥有一个资源文件,或者每个 ASP.NET MVC 区域拥有一个资源文件,或者您认为合适的资源文件,但您不需要超过 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 中使用(普通/链接)资源的一般方式。如果您使用“添加为链接”,您可以在单独的项目中拥有一个物理副本。

卫星:

有关卫星程序集的一些信息:

MSDN:创建附属程序集

MSDN 博客:卫星程序集简介

于 2012-12-04T11:19:57.170 回答