我在Session [“lang”]中有我的目标语言,它是“en”或“it”。我已经加入这个了的Site.Master:asp.net MVC:本地化
<script runat="server">
void Page_Load(object sender, EventArgs e) {
string lang = Session["lang"].ToString();
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
}
</script>
那么我想引用这样的资源字符串:
<asp:Label ID="Label1" runat="server" Text="<%$ Resources:Global, test %>"></asp:Label>
我有两个文件在App_GlobalResources文件,命名为Global.resx和Global.en.resx。
的问题是,无论是什么LANG变量,我总是从主Global.resx得到的结果,我从来没有从Global.en.resx
拿到英文版我这样做完全错误?
我试着在Global.asax.cs中的Application_PreRequestHandlerExecute方法中放置System.Threading ...部分,但结果是一样的。
感谢
PS:我问一个途径,以一种简单的方式这项工作。如果我要使用复杂的方式,我会与此:http://helios.ca/2009/05/27/aspnet-mvc-and-localization/
没有帮助任何一个链接,抱歉:所有这说的是,“如果你需要设置文化根据用户的偏好设置或URL参数,最好的办法是编写一个自定义HTTP模块或操作过滤器“。 也许那么有没有办法这样做? – Palantir 2009-09-22 12:51:14
当然有一种方法来设置文化..如果它是您的网站的用户偏好,然后你将它存储在一个cookie中,你创建一个控制器,当实例化(构造函数)你读取cookie并设置CultureUI/Culture。然后,所有的控制器都应该从该控制器中无处不在。 – Konstantinos 2009-09-22 12:55:02
当你读到您的语言环境,并要设置它,你那样做的时候: System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(“EN-US”); System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(“en-US”); – Konstantinos 2009-09-22 12:55:59