点我~下载多语言切换项目最全源码
1.先说说Resources语言包文件是怎么来的
通过Visual Studio 命令提示工具将txt文件转换成resources文件,具体操作:
a.打开Visual Studio 命令提示工具,然后输入你txt文件所在的目录回车
b.输入resgen zh_CN.txt zh_CN.resources之后就会在你txt文件所在目录生成一个resources(zh_CN.txt就是我的txt文件)
c.那么zh_CN.txt文件里面是什么?里面的内容就是你翻译的内容(是key=value的形式,'Username’是key,'用户名’是value)
2.现在我们有了Resources语言包文件,下一步就是读取项目中的resources文件到语言选择下拉框中
public void FindFindLanguageResource()
{
DirectoryInfo di = new DirectoryInfo(HttpRuntime.AppDomainAppPath + "\\languageresources");//我的resources文件是放在项目中的languageresources文件夹下
if (di == null) return;
try
{
this.DropDownListlanguage.Items.Clear();//先将下拉框的选项clear掉
FileInfo[] fis = di.GetFiles("??_??.resources");//获取resources文件,比如zh_CN.resources/en_US.resources
foreach (FileInfo fi in fis)
{
string tmp = fi.Name;
string languagefile = tmp.Substring(0, tmp.ToUpper().IndexOf(".RESOURCES"));
ListItem item = new ListItem();
item.Text = languagefile;
item.Value = languagefile;
this.DropDownListlanguage.Items.Add(item);
}
}
catch { }
//下拉框没有语言可选时,默认成中文
if (this.DropDownListlanguage.Items.Count == 0)
{
ListItem item = new ListItem();
item.Text = "zh_CN";
item.Value = "zh_CN";
this.DropDownListlanguage.Items.Add(item);
}
}
3.好了,现在我们有语言可以切换了,下一步就是读取resources文件
a.我先将我选择的语言给保存下来(这里我是将它保存在项目中的MulLanguage.ini文件中)以便下次登录时直接获取
//这里的language就是你选择的语言的value
public static void SaveConfig(string language) {
StreamWriter sw = File.CreateText(HttpRuntime.AppDomainAppPath + "\\MulLanguage.ini");
sw.WriteLine(language);
sw.Close();
}
获取方法如下:
public static void ReadConfig(ConnectionClass conn) {
try {
StreamReader sr = File.OpenText(HttpRuntime.AppDomainAppPath+"\\MulLanguage.ini");
conn.Currentlanguage = sr.ReadLine();
sr.Close();
}
catch {
conn.Currentlanguage = "zh_CN";
}
}
b.接下来就是管理读取resources文件了(通过ResourceManager)
public static ResourceManager rm = null;
public static void ReadLanguageConfigFile(string languageFile) {
//先释放所有资源
if(rm!=null){
rm.ReleaseAllResources();
rm = null;
}
if(File.Exists(HttpRuntime.AppDomainAppPath+"\\languageresources\\"+languageFile+".resources")){
rm = ResourceManager.CreateFileBasedResourceManager(languageFile,HttpRuntime.AppDomainAppPath+"\\languageresources",null);
}
}
//这里的str就是zh_CN.txt文件中的key
public static string GetString(string str) {
try {
return rm.GetString(str);//返回zh_CN.txt文件中的value,如str="Username",则返回"用户名"
}
catch {
return "";
}
}
4.最后就是在页面上显示翻译的内容了,这里我是通过Ajax来实现的
a.前端页面:
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.7.min.js" type="text/javascript"></script>
<script type="text/javascript">
var mullanguage = "";
$.ajax({
type: "post",
url: "login.aspx/GetMulLanguage",
dataType: "json",
contentType: "application/json;charset=utf-8",
success: function (data) {
if (data.d == null) {
mullanguage = jQuery.parseJSON(data);
} else {
mullanguage = jQuery.parseJSON(data.d);
}
for (var key in mullanguage) {
var value = mullanguage[key];
if (key == "lb_name" || key == "lb_language") {
document.getElementById(key).innerHTML = value;
} else if (key == "btn_1") {
document.getElementById(key).value = value;
}
}
},
error: function () {
}
})
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<label id="lb_name" >用户名</label>
<input type="text" value=""/>
<input type="button" value="登录" id="btn_1"/>
<label id="lb_language">语言:</label>
<asp:DropDownList ID="DropDownListlanguage" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList_Language_SelectedIndexChanged">
</asp:DropDownList>
</div>
</form>
</body>
b.后台代码:
[WebMethod]
public static string GetMulLanguage()
{
Hashtable ht = new Hashtable();
ht.Add("lb_name", MulLanguageClass.GetString("Username"));//调用3中的GetString方法,注意:GetString括号中的内容一定要和txt文件中的key一致(包括大小写),
ht.Add("btn_1", MulLanguageClass.GetString("Login");
ht.Add("lb_language", MulLanguageClass.GetString("Language_"));
return JsonConvert.SerializeObject(ht);
}
点我~下载多语言切换项目最全源码
点我~下载多语言切换项目最全源码
点我~下载多语言切换项目最全源码
点我~下载多语言切换项目最全源码