我们把多语言的加载和翻译处理,放在一个独立的项目上,如我定义为框架的一个模块:WHC.Framework.Language
这样我们在各个模块中使用多语言处理过程的时候,包含这个模块就可以了。
2)多语言信息的翻译
做多语言的版本程序,翻译工作也是一个繁琐的工作,如果你是非常精通各种语言(如中文、英文、日文等等),那当然不在话下,不过我们做开发的多少也是会一些的,如英语吧,即时不能非常准确,那么也可以做到差不多,但是做这个还是累,还容易敲打错别字,那么用第三方提供的翻译API来预处理后调整,结果就简化很多了,可以极大提高效率的。
这里以我们经常使用的百度翻译来实现(用Google翻译也可以,增加接口实现即可)
百度翻译接口的使用,你先注册一个开发账户,获得相应的秘钥信息就可以使用免费的翻译接口了(http://www.easck.com/api/trans/product/index)。
有了这些准备后,就可以利用C#代码进行翻译处理了。
百度翻译的接口处理代码如下所示。
/// <summary>
/// 百度接口翻译
/// </summary>
/// <param name="inputString">输入字符串</param>
/// <param name="from">源内容语言</param>
/// <param name="to">目标语言</param>
/// <returns></returns>
private static string BaiduTranslate(string inputString, string from = "zh", string to = "en")
{
string content = "";
string appId = "你的APPID";
string securityId = "你的秘钥";
int salt = 0;
StringBuilder signString = new StringBuilder();
string md5Result = string.Empty;
//1.拼接字符,为了生成sign
signString.Append(appId);
signString.Append(inputString);
signString.Append(salt);
signString.Append(securityId);
//2.通过md5获取sign
byte[] sourceMd5Byte = Encoding.UTF8.GetBytes(signString.ToString());
MD5 md5 = new MD5CryptoServiceProvider();
byte[] destMd5Byte = md5.ComputeHash(sourceMd5Byte);
md5Result = BitConverter.ToString(destMd5Byte).Replace("-", "");
md5Result = md5Result.ToLower();
try
{
//3.获取web翻译的json结果
WebClient client = new WebClient();
string url = string.Format("http://www.easck.com/api/trans/vip/translate?q={0}&from=zh&to=en&appid={1}&salt={2}&sign={3}", inputString, appId, salt, md5Result);
byte[] buffer = client.DownloadData(url);
string result = Encoding.UTF8.GetString(buffer);
var trans = JsonConvert.DeserializeObject<TranslationJson>(result);
if (trans != null)
{
content = trans.trans_result[0].dst;
content = StringUtil.ToProperCase(content);
}
}
catch(Exception ex)
{
Debug.WriteLine(ex);
}
return content;
}











