之前做的多语言功能是在数据库中,目前想做个Json文件格式的多语言功能
1.编辑en-US.json文件
页面中调用的方法
<div class="field">
<div class="form_logo"></div>
</div>
<div id="info">
<span class="titleesd">ESD</span><span class="titledesc">
@com.aaa.Translation.Language.GetText("Page.Title.Application")
</span>
</div>
<div class="field" style="margin-top: 30px">
<div class="field-left">
@com.aaa.Translation.Language.GetText("Page.Label.UserName")
</div>
<div class="field-right">
<input id="UserCode" type="text" class="text" name="user.logonname" value="admin" />
<span id="namemsg" class="red"></span>
</div>
</div>
下面是C#读取Json文件的方法,但是Jobject是否有更简洁的用法,目前我还没有找到
using com.aaa.DBUtility;
using MySql.Data.MySqlClient;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Data;
using System.Globalization;
using System.IO;
namespace com.aaa.Translation
{
public static class Language
{
private static int LanguageID = 2052;
public static void SetLanguage(int LangID)
{
LanguageID = LangID;
}
public static string GetJsonFile()
{
string currDir = System.AppDomain.CurrentDomain.BaseDirectory + @"Content\Resources\Language\";
string JsonFile = currDir + @"zh-CN.json";
switch (LanguageID)
{
case 1033:
JsonFile = currDir+ @"en-US.json";
break;
case 2052:
JsonFile = currDir + @"zh-CN.json";
break;
}
string result = "";
using (StreamReader r = new StreamReader(JsonFile))
{
result = r.ReadToEnd();
}
return result;
}
public static string GetText(string Node)
{
string result = "Unknow";
if (Node != null)
{
string[] arr = Node.Split('.');
JObject jobj = JObject.Parse(GetJsonFile());
for (int x = 0; x < arr.Length; x++)
{
if (x == arr.Length - 1)
{
result = jobj[arr[x]].ToString();
break;
}
jobj = (JObject)jobj[arr[x]];
}
}
return result;
}
}
}