如何创建一个多语言网站

4

我即将开始一个项目,该项目必须支持多种欧洲语言。该网站上所有静态内容都必须在这些语言之间能够翻译。我听说过卫星程序集,听说它们被用于 .NET 中的多语言网站,但这是很久以前的事了。在 .NET 中,这是否仍然是当前做法?我正在使用 ASP.NET MVC。

2个回答

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";

然后在视图和局部视图中(例如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博客:卫星程序集简介

4

我们在我曾经工作的一个项目中采用了这种方法,该项目为全球客户提供网站。另一种方法是将静态文本存储在数据库中。 - rro
@raymond:在我看来,将静态文本存储在数据库中有点过度设计。我更愿意保持简单,将其留在资源文件中。当然,除非你有一个非常好的理由要这样做 :) - Rui Jarimba
1
是的,我知道,这就是为什么我更喜欢使用资源文件的原因。哦,我现在记起来了,我们使用数据库的原因是将多个应用程序中的静态文本集中管理,包括 ASP.NET 网站、经典 ASP 和几个桌面应用程序。 - rro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接