我使用( Asp.net,c#)创建了一个网站,其内容使用英文。 现在我要求以支持多种语言的方式建立这个网站,即(德语,法语)。 Lable / Textbox / string所有值将显示各自选定的语言 在搜索时我发现了一些像
这样的方法我想知道哪种方式最好或者还有其他更好的方法吗?
注意:当前网站是使用 .NET framework 4.0 / vs 2010 构建的。
由于
答案 0 :(得分:5)
RESX:
http://msdn.microsoft.com/en-us/library/ms227427.aspx
http://dreamdotnet.blogspot.com/2007/01/tutorial-translating-aspnet-web.html
您可以将resx文件用于多种语言,并使用ResXResourceWrite进行更新(如果您希望用户能够更新文件:http://msdn.microsoft.com/en-us/library/system.resources.resxresourcewriter.aspx)
此解决方案仅适用于静态内容,如果您希望能够翻译数据库中的内容(例如,如果您的数据库中存储了产品,并且您希望产品的描述也是多语言的) 。在这种情况下,您需要更改DB Scheme以支持多语言内容。
PS
您可以使用GetLocalResourceObject("key")
来检索值,而无需使用网络控件。
如果您使用的是MVC,请参阅以下问题:How to localize ASP.NET MVC application?
答案 1 :(得分:2)
我使用资源文件添加global.asax
完成的示例代码 void Application_BeginRequest(Object sender, EventArgs e)
{
// Code that runs on application startup
HttpCookie cookie = HttpContext.Current.Request.Cookies["CultureInfo"];
if (cookie != null && cookie.Value != null)
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cookie.Value);
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cookie.Value);
}
else
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en");
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en");
}
}
答案 2 :(得分:1)
对于动态内容,第三方插件或添加诸如Google翻译之类的东西会这样做;
http://translate.google.com/translate_tools
FYI;谷歌Chrome已内置自动翻译,Chrome的受欢迎程度正在快速增长...哇想象一个网络,无论你使用哪种语言访问所有内容,这不是那个,但我会分享我的想法