【发布时间】:2012-02-13 02:19:57
【问题描述】:
我有一个简单地显示表单用户控件的 Web 应用程序。通过转到用户控件的设计,然后单击 工具 > 生成本地资源
,我生成了与用户控件关联的 resx 文件这样做已经创建了必要的 resx 文件:
App_LocalResources
ContactUsForm.ascx.resx
然后我简单地复制并粘贴现有的 resx 文件并将其重命名,因此我现在拥有以下内容:
App_LocalResources
ContactUsForm.ascx.fr-FR.resx
ContactUsForm.ascx.resx
作为测试,我修改了新的 fr-FR 资源文件中的几个 dotnet 控件文本,只是为了测试它们是否都按预期工作,而事实并非如此。
我使用以下代码根据查询字符串参数设置特定的文化信息:
protected void Page_Init(object sender, EventArgs e)
{
string cultureName = Request.QueryString["lang"];
if (!string.IsNullOrEmpty(cultureName))
{
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
}
}
然后我可以通过执行以下操作简单地导航到包含用户控件的页面:
http://localhost/Default.aspx?lang=fr-FR
我可以通过执行以下代码来确认正在设置文化信息:
CultureInfo currentCultureUI = Thread.CurrentThread.CurrentUICulture;
CultureInfo currentCulture = Thread.CurrentThread.CurrentUICulture;
我可以确认设置的文化实际上是 fr-FR 但是没有根据 ContactUsForm.ascx.fr-FR.resx 中的更改替换文本强> 文件。
我似乎无法按预期工作。我做错了什么,还有其他方法可以达到预期的效果吗?
提前致谢。
更新:
如果我在代码中执行以下操作就可以了:
lHeadingResource1.Text = GetLocalResourceObject("lHeadingResource1.Text").ToString();
它实际上是从 ContactUsForm.ascx.fr-FR.resx 文件中读取正确的字符串。
我还可以确认我的控件也具有所有必要的meta:resourcekey 引用。
奇怪的是,如果我不在代码中设置它,它会默认恢复为默认文化并且不使用上面指定的 fr-FR。
【问题讨论】:
标签: c# asp.net .net cultureinfo