我的网页必须根据用户选择以多种不同的语言显示。为此,我正在为每个asp.net网页使用RESX文件。我不想在浏览器中使用自动检测语言,但我想再次根据用户选择设置语言。为了实现这一点,我正在做以下事情:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("es-MX", false);
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("es-MX", false);
OR
Page.Culture = "es-MX";
Page.UICulture = "es-MX";
但这些都没有按预期工作!我正在初始化页面的Init方法中的Culture,但它将始终显示默认语言。我正在检查这些属性的值以及那些具有正确文化的属性,但仍然没有使用RESX文件进行渲染。有任何想法吗?建议?
由于
答案 0 :(得分:2)
如果在使用明确本地化时有人遇到此问题,则必须完成以下操作:
protected override void InitializeCulture()
{
Page.Culture = "en-US";
Page.UICulture = "en-US";
}
来自net-tutorials.com网站:
由于Page指令只是Page类的快捷方式,因此也可以从CodeBehind完成。但是,我们必须在呈现页面之前的某个点执行此操作,以确保它具有所需的效果。这是InitializeCulture()方法发挥作用的地方,这是一种在页面生命周期中很早就被ASP.NET调用的方法,你可以覆盖它。
答案 1 :(得分:0)
试试这个 System.Resources.ResourceReader resourceReader = new System.Resources.ResourceReader(“RES_PATH”);
现在您可以使用它来加载用户语言,例如es.resx
System.Resources.ResourceReader resourceReader
= new System.Resources.ResourceReader(HttpContext.Current.Request.UserLanguages[0]
+ ".resource");