【问题标题】:Selecting resource file in code behind at runtime在运行时在代码后面选择资源文件
【发布时间】:2014-09-09 17:45:47
【问题描述】:

假设我有 2 个资源文件;一个叫HomeEN.resx,另一个叫HomeFR.resx。我查看了在线教程,这些教程显示了如何根据用户在浏览器中的设置自动选择资源文件。

我想在运行时选择资源文件,像这样:

protected void Page_Load(object sender, EventArgs e)
{      
    switch (TheLanguage) {

       case 1:
            // select the English file HomeEN.resx;
            break;

       case 2:
            // select the French file HomeFR.resx;
            break;
    }
}

我该如何写这些语句?

【问题讨论】:

标签: c# asp.net resource-files


【解决方案1】:

通过设置页面的CultureUICulture 属性自动读取正确的资源文件。见MSDN samples

您只需重命名文件以匹配预期的模式,分别为Home.en.resxHome.fr.resx

【讨论】:

【解决方案2】:
protected void Page_Load(object sender, EventArgs e)
{      
System.Threading.Thread.CurrentThread.CurrentCulture = someCulture;
    System.Threading.Thread.CurrentThread.CurrentUICulture = someCulture;
}

之后,如果你也按照上面@devio的解决方案,资源文件将被自动选择。

【讨论】:

  • 赞成代码; .CurrentCulture 和 .CurrentUICulture 有什么区别
【解决方案3】:

如果你想同时访问这两个资源,你可以使用ResourceManager class

 ResourceManager rm = new ResourceManager("Strings", typeof(Example).Assembly);
string strDE = rm.GetString("TheNameOfTheResource",  new CultureInfo("de"));
string strES = rm.GetString("TheNameOfTheResource",  new CultureInfo("es"));

【讨论】:

  • typeof(Example).Assembly 是什么?是项目名称吗?
  • 我相信这是您的 .resx 文件名。 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
相关资源
最近更新 更多