Asp.Net资源管理器总是返回中性文化资源

时间:2009-06-27 14:43:03

标签: c# asp.net localization embedded-resource culture

我使用嵌入式.resx来本地化asp.net应用程序。似乎无论当前的文化是什么,中性文化资源总是会被归还。我用来检索值的代码如下:

protected string GetResource(string name)
    {
        return Localization.ResCore.ResourceManager.GetString(name, System.Threading.Thread.CurrentThread.CurrentCulture);
    }

我在一个页面中指出文化是“es-PE”(秘鲁)。当我打破GetResource函数时,我可以验证CurrentCulture是“es-PE”,并且ResourceManager包含一个与此文化相对应的ResourceSet。但是,返回的字符串始终来自中性文化集。

我嵌入的文件命名如下:

  • ResCore.resx
  • ResCore.es.resx
  • ResCore.es-PE.resx

感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

如果您想使用资源,可以从

更改第二个参数
System.Threading.Thread.CurrentThread.CurrentCulture

System.Threading.Thread.CurrentThread.CurrentUICulture

答案 1 :(得分:0)

为什么您没有使用GetLocalResourceObjectGetLocalResourceObject

答案 2 :(得分:0)

只是想知道为什么需要嵌入它?你不能只是添加到App-LocalResources和App-GlobalResources并从那里使用它吗?

此外,您会发现如果您不调用base.InitializeCulture(),该语言将无法正常工作。您将创建一个基页并从中继承。像这样:

protected class BasePage : System.Web.UI.Page
{
     protected override void InitializeCulture(object sender, EventArgs e)
     {
          this.Culture = Resources.Culture = Thread.CurrentThread.CurrentUICulture;

          base.InitializeCulture();
     }
}

我希望这会有所帮助。