多国技术总结
一开始我是先研究了System.Globalization.Cultureinfo与System.threading.thread这两个类,通过对它们的使用,我们就可以设置当前的文化。
具体代码如下:
//新建一个CultureInfo 实例
Thread.CurrentThread.CurrentCulture = ci;
//设置当前线程Culture为所建得实例,culture我所理解得是一些所特定文化得表达方式,如科学技术法,日期等
Thread.CurrentThread.CurrentUICulture = ci;
//设置当前ui文化,什么是ui文化,我所理解得是一些界面得布局。比如:中国人习惯从左像右,从上向下得读写方式,而有的国家则不同。
怎样生成本地资源文件?
我们可以新建一个aspx页面,完成后,点击Tools->generate local resource .
结果大家可以看到,在app_LocalResouces文件夹里它为我们自动生成以该页面名称为前缀得resx资源文件。然后你在仔细看看aspx.cs源代码,呵呵,是否有所变化了呢?对,在每个runat="server"控件里,多了一个meta:resourcekey="XXX",这个就是设置当前控件得属性值,所有设置都是放在资源文件中进行。我们把这种设置属性方法称为explicit 方法。
相对的设置方法为implicit 方法。
如:<asp:Literal Text='<% $ Resources: DefaultPageTitle %>' runat="server"></asp:Literal>
大家可以看到implicit 方法的不同。
怎样使用App_GlobalResouces文件夹里的资源文件?
三种方式:
1: <asp:Label ID="Label9" runat="server" Text="<%$ Resources:Resource,String1 %>"></asp:Label>
Resource为资源名前缀,如Resouce.es.resx前缀为Resouce。
2: Label5.Text = (string)GetGlobalResourceObject("Resource", "string1");
使用GetGlobalResourceObject()方法,不说大家都看得明白。
3:Label5.Text = Resources.Resource.String1;
直接引用即可,其实现机理不是很清楚。
另外重要得一点需要提一下:
在App_GobalResource中每个资源文件可以引用文件,这是2005的一点新特性,感觉非常好。
举个简单例子:
我们有一个xml文件,名称为SupportedCulture.xml,有一个资源文件为Resouce.resx。
在资源文件中放入这个xml文件。如何操作?
点击addResouce->add existingFile 即可导入SupportedCulture.xml文件。
如何使用导入的文件?
//新建一个dataset实例。
string cultures = Resources.Cultures.supportedCultures;
//引用xml文件。
System.IO.StringReader rdr = new StringReader(cultures);
//新建一个stringReader实例,StringReader继承TextReader。
m_ds.ReadXml(rdr);
//读取xml文件,放入dataset中。
rdr.Close();
//关闭rdr。