在ASP.NET中保存UICulture的最佳方法是什么?
我正在开发双语ASP.NET应用程序,我想知道在整个应用程序中存储UICulture和Culture值的最佳方法是什么在ASP.NET中保存UICulture的最佳方法是什么?,asp.net,localization,webforms,Asp.net,Localization,Webforms,我正在开发双语ASP.NET应用程序,我想知道在整个应用程序中存储UICulture和Culture值的最佳方法是什么 饼干 会议 质询 或者别的什么 更新: 我想让同样的ASPX表单成为双语页面,到目前为止,我得到的答案是制作一个单独的页面,并通过子域访问它,我现在真正做的是使用会话,但我现在想知道,在不创建另一个副本的情况下,将页面双语化的最佳实践是什么。您始终可以使用URL重写来存储用户选择的文化偏好。不太清楚这是如何在ASP.Net中实现的,但在MVC中使用路由表很容易 为了说明这一
- 饼干
- 会议
- 质询
- 或者别的什么
我想让同样的ASPX表单成为双语页面,到目前为止,我得到的答案是制作一个单独的页面,并通过子域访问它,我现在真正做的是使用会话,但我现在想知道,在不创建另一个副本的情况下,将页面双语化的最佳实践是什么。您始终可以使用URL重写来存储用户选择的文化偏好。不太清楚这是如何在ASP.Net中实现的,但在MVC中使用路由表很容易 为了说明这一点,您的url如下所示: 作为一种解决方案,这消除了会话的开销、浏览器中有人关闭cookie的可能性以及生成的难看的查询字符串
我将尝试返回一个如何重新编写url的示例。通常,这取决于您的特定用例 然而,大多数情况下,您可能希望每个页面和语言都有一个不同的URL,以便通过搜索引擎对其进行适当的索引。例如,URL类似于:
更新:这并不意味着你需要制作尽可能多的语言版本 如果每种语言都有子域:
- 将每个子域指向您的站点
- 在页面的codebehind中,重写
方法(可以对所有页面使用基类以保持其干燥)InitializeCulture
- 在重写的
方法中设置适当的区域性InitializeCulture
- 创建资源文件
- 使用页面中的资源-将根据文化显示正确的翻译
protected override void InitializeCulture() {
// Identify the culture and replace the hardcoded values below
// (Use Request.Url.xxx for example)
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en", false);
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);
base.InitializeCulture();
}
最佳做法是为每种语言创建子域\单独的站点,并使用其各自的IIS网站。对于需要双字节的亚洲语言尤其如此 你会在雅虎、谷歌等网站上看到这种做法:
- 等等