以前很少接触多语言的系统,公司里有个比较不错的portal项目, 我看了有实现多语言的功能, 了解了下它的基本原理:利用资源文件保存不同的语言内容;例如中文一个资源文件, 英文一个资源文件, 日文...;
具体如何架构的属于商业秘密;
语言在编写程序时利用助记, 于是自己写了一个最基本,最简单的功能;根据该原理可自己扩充~~~~;
忘了补充一下, 该功能在VS2003下开发, 或许在VS2005下不能通过。
开发系统用什么语言、1. 新建一个WebApplication, 然后在根目录新建两个资源文件:MultiLang.en-us.resx 和 MultiLang.zh-cn.resx。 目录结构如下:
语言本地化?2. Default.aspx的Html如下:
cellPadding="1" width="400" border="1">
<TR>
<TD align="center" colSpan="2"><FONT face="宋体">
<asp:Label id="LabTitle" runat="server" /></FONT></TD>
</TR>
<TR>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>
<asp:Label id="LabUserName" runat="server" /></TD>
<TD>
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox></TD>
</TR>
<TR>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>
<asp:Label id="LabPassword" runat="server" /></TD>
<TD>
<asp:TextBox id="TextBox2" runat="server"></asp:TextBox></TD>
</TR>
<TR>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD></TD>
<TD>
<asp:Button id="BtnSubmit" runat="server"></asp:Button>
<asp:Button id="BtnCancel" runat="server"></asp:Button></TD>
</TR>
<TR>
<TD></TD>
<TD></TD>
</TR>
</TABLE>
3. CS 文件代码:
导入命名空间:
using System.Threading;
using System.Reflection;
using System.Resources;
using System.Globalization;
try
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(userLan);
}
catch
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-us");
}
ResourceManager myResource = new ResourceManager("ResourceProject.MultiLang",Assembly.GetExecutingAssembly());
this.LabTitle.Text = myResource.GetString("@LabTitle");
this.LabUserName.Text = myResource.GetString("@LabUserName");
this.LabPassword.Text = myResource.GetString("@LabPassword");
this.BtnSubmit.Text = myResource.GetString("@BtnSubmit");
this.BtnCancel.Text = myResource.GetString("@BtnCancel");
多文件编译。
4. MultiLang.en-us 文件内容:
利用语言,5. MultiLang.zh-cn文件内容:
6. 最后的效果:
语义攻击利用的是?英文界面:
中文界面:
多文件程序怎样编译运行?
说明及注意:
// 资源文件的命名规则: 文件名.语言代码.resx.
// 实例化规则: 项目namespace.文件名.
// 资源文件只能放在根目录下.
项目文件下载