我使用嵌入式.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。但是,返回的字符串始终来自中性文化集。
我嵌入的文件命名如下:
感谢任何帮助。
答案 0 :(得分:1)
如果您想使用资源,可以从
更改第二个参数System.Threading.Thread.CurrentThread.CurrentCulture
到
System.Threading.Thread.CurrentThread.CurrentUICulture
答案 1 :(得分:0)
答案 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();
}
}
我希望这会有所帮助。