【问题标题】:How do I force a culture in asp.net?如何在 asp.net 中强制培养文化?
【发布时间】:2013-06-11 18:53:30
【问题描述】:

我希望能够在运行时设置文化。例如:

protected void Page_Load(object sender, EventArgs e)
{
    Page.Culture = "fr-FR";
    Page.UICulture = "fr";
}

但这没有任何影响。我正在使用资源文件进行翻译。如果我更改浏览器的语言,它可以正常工作,但我希望用户也能够选择语言。所以在这种情况下,用户想要法语作为语言。

有什么想法吗?我迷路了。

【问题讨论】:

  • 你想强制文化但让用户选择?似乎是相互冲突的要求。
  • 尝试在 Global.asax 中设置Thread.Current.Culture
  • 我想强制用户选择的文化。这就是为什么在我的代码中放置“示例”。

标签: c# asp.net .net globalization


【解决方案1】:

例如,如果您正在创建一个允许用户更改语言的网站,那么您需要在 Global.asax 文件中的 Application_BeginRequest 方法中执行此操作。

每个请求都将设置文化。

您只需设置以下 2 行:

    Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-FR");
    Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr-FR");

第一行将设置数字/日期/等格式。

第二行指定要加载的资源本地化 - 它将包含您的翻译内容。

【讨论】:

  • 完美。我遇到了另一个问题。文化在页面指令中设置为自动,这覆盖了 global.asax 中的更改。现在一切都好起来了。谢谢!
  • 不客气 :) 如果它解决了问题,请将其标记为已回答 - 它也有助于未来的用户 :)
  • 我正在尝试,但 stackoverflow 让我等待。我猜你的速度太快了。
【解决方案2】:

你可以试试这个:

 Thread.CurrentThread.CurrentCulture = 
            CultureInfo.CreateSpecificCulture("en-US");
 Thread.CurrentThread.CurrentUICulture = new 
            CultureInfo("en-US");

更多详情请参阅MSDN 的这篇文章。

【讨论】:

    【解决方案3】:
    • 如果你想为整个应用程序设置它,你可以在你的Global.asax 中设置它

      Thread.Current.Culture = 新 System.Globalization.CultureInfo("fr-FR");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 2012-04-14
      • 2017-07-29
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      相关资源
      最近更新 更多