现测试一个解决方案,使用以下方式定义用户选择的语言
string s = "zh-CN";
Thread.CurrentThread.CurrentUICulture = new CultureInfo(s);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(s);使用<%=Resources.labels.ch %>的方式从全局资源中取得相应的string,但是在服务器控件,如button、label等用如下方式无法取得相应的string
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="<%=Resources.labels.ch %>" />
只能在后台使用this.Button1.Text = (String)GetGlobalResourceObject("labels", "ch");的方式给控件赋值,而html控件确可以,如<INPUT id="BtnPrint" type="button" value="<%=Resources.labels.ch %>" />,不知道为什么,看哪位高手了解,请指点一下,谢谢
string s = "zh-CN";
Thread.CurrentThread.CurrentUICulture = new CultureInfo(s);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(s);使用<%=Resources.labels.ch %>的方式从全局资源中取得相应的string,但是在服务器控件,如button、label等用如下方式无法取得相应的string
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="<%=Resources.labels.ch %>" />
只能在后台使用this.Button1.Text = (String)GetGlobalResourceObject("labels", "ch");的方式给控件赋值,而html控件确可以,如<INPUT id="BtnPrint" type="button" value="<%=Resources.labels.ch %>" />,不知道为什么,看哪位高手了解,请指点一下,谢谢
下面建立 资源文件
XXXX.resx
XXXX.en-us.resx
重载Page类的InitializeCulture方法。Thread.CurrentThread.CurrentUICulture = new CultureInfo(s);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(s);ASPX页面里面Text="<%$ Resources:“资源文件名”, “资源Key名” %>"
下面是伪码:public class ResourceButton : Button { public string ResourceExpress {
get; set;
} override Render(...) {
if(string.IsNullOrEmpty(Text))
Text = GetResource(ResourceExpress); base.Render(...);
}}
多语言其实可能涉及的问题很多.如果有只是UI上的caption,可以参考上面的文章.