在 ASP.NET 应用程序中实现多语言的最佳方法

Posted

技术标签:

【中文标题】在 ASP.NET 应用程序中实现多语言的最佳方法【英文标题】:Best way to implement a multilingual in ASP.NET application 【发布时间】:2011-08-10 21:55:01 【问题描述】:

在多语言应用程序中预期以下事物/行为。

    为登录用户的语言选择正确的资源 字符串排序应根据用户语言进行(例如:对于瑞典语用户,瑞典语字母应按顺序排列在 z 之后)。 日期时间格式验证应根据用户的语言进行。 (例如:fr-FR 用户可以输入 dd/mm/yyyy,en-US 用户可以输入 mm/dd/yyyy) 应根据用户的语言再次进行十进制验证(例如:12,5 在法语中有效,而 12.5 无效)

现在的问题是处理这个问题的最佳方法是什么。

方法一:

    设置页面文化和页面 UICulture - 以便获取 App_GlobalResources 并正确格式化网格中的十进制值。 编写自定义方法来触发以下验证 日期时间 十进制 编写自定义方法来处理字符串排序。

方法二:

    设置当前线程的文化并让它处理以下问题 Web 应用程序的每个用户在这种情况下是否正确设置了他们的文化?

方法3:

    初始化 web.config 中的全球化属性,让应用根据用户的浏览器文化选择文化

    <globalization uiculture="auto" culture="auto" enableClientBasedCulture =”true”/>
    

请让我知道是否有更好的替代方案以及我们应该如何解决此类问题或上述方法的优缺点。

【问题讨论】:

看看这个***.com/questions/5564354/… 【参考方案1】:

重载 InitializeCulture() 页面事件。使用基于经过身份验证的用户的会话 var,它存储当前选择的文化并在事件处理程序中重置 Thread.Culture 和 UICulture。

据我所知,这些转换问题或 ToString() 格式问题应该不存在。当前的线程文化将为您处理一切。

部分资源:Walkthrough: Using Resources for Localization with ASP.NETHow to: Set the Culture and UI Culture for ASP.NET Web Page Globalization

【讨论】:

设置 currentThread.Culture 会影响其他用户吗?考虑到网络服务器可以用来处理用户请求的线程数是有限的。 没有。该设置是特定于线程的。每个请求都在自己的线程中处理。

以上是关于在 ASP.NET 应用程序中实现多语言的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

以干净的方式在 Asp.Net Core API 中实现 ProblemDetails 的最佳方法

如何在多语言 asp.net MVC 网站的 URL 中支持有语言和无语言的路由

在 ASP.NET MVC 应用程序中实现细粒度安全(即授权)的最佳机制是啥?

在 ASP.NET MVC 2 中实现 DropDownList 的最佳方式?

求教用C#实现多语言的程序

Asp.Net MVC 多语言(html+js共用一套资源文件)