当前位置: 首页 > news >正文

网站网站开发违法吗网页设计网站模板

网站网站开发违法吗,网页设计网站模板,印度人做网站,seo优化seo外包文章目录 前言国际化翻译Api选择小牛测试 语言选择代码逻辑实体对象翻译帮助类导出模板读取文件翻译测试多语言测试 综合翻译文件准备测试代码测试结果 完整代码实体类翻译帮助类网络帮助类 最终效果翻译前翻译中翻译后 总结 前言 为了面向更大的市场#xff0c;国际化是肯定… 文章目录 前言国际化翻译Api选择小牛测试 语言选择代码逻辑实体对象翻译帮助类导出模板读取文件翻译测试多语言测试 综合翻译文件准备测试代码测试结果 完整代码实体类翻译帮助类网络帮助类 最终效果翻译前翻译中翻译后 总结 前言 为了面向更大的市场国际化是肯定的。我想如果我开发游戏至少要支持两种语言英语和中文简体。 国际化 翻译Api选择 国内Api也有三种选择百度有道和小牛。我这里就选小牛了比较便宜。 小牛测试 小牛翻译平台 使用PostMan测试成功 语言选择 首先作为中文为母语所以我至少支持三种语言。简中繁中和英语。下面附上小牛的对应参数表 语言参数简中zh繁中cht英语en德语de法语fr西班牙语es意大利语it葡萄牙语pt俄语ru日语ja韩语ko 吐槽一下写了这么多我都快认不清这个【语】字是什么意思了。 原文选择我这里选择英语作为原文因为这样可以顺便学一下英语。 代码逻辑 这里使用了MiniExcel Json化方式 实体对象 public class TranslateModel {public TranslateModel() { }public TranslateModel(string scene,string key,string en) {Scene scene;Key key;EN en;}public string Scene { get; set; }public string Key { get; set; }/// summary/// 英语/// /summarypublic string EN { get; set; }/// summary/// 简体中文/// /summarypublic string ZH { get; set; }/// summary/// 繁体中文/// /summarypublic string CHT { get; set; }/// summary/// 德语/// /summarypublic string DE { get; set; }/// summary/// 法语/// /summarypublic string FR { get; set; }/// summary/// 西班牙语/// /summarypublic string ES { get; set; }/// summary/// 意大利语/// /summarypublic string IT { get; set; }/// summary/// 葡萄牙语/// /summarypublic string PT { get; set; }/// summary/// 俄语/// /summarypublic string RU { get; set; }/// summary/// 日语/// /summarypublic string JA { get; set; }/// summary/// 韩语/// /summarypublic string KO { get; set; } }翻译帮助类 public class TranslateHelper {/// summary /// 存放读取的数据 /// /summary public IEnumerableTranslateModel Translates { get; private set; }/// summary/// 模板路径/// /summarypublic readonly string TemplateUrl Assests/translate_template.xlsx;/// summary/// 读取路径/// /summarypublic readonly string ReadUrl Assests/translate_read.xlsx;/// summary/// 翻译导出路径/// /summarypublic readonly string WriteUrl Assests/translate_read.xlsx;public TranslateHelper(){}}导出模板 /// summary /// 导出模板如果文件存在则跳过 /// /summary public void CreateTemplate() {if (!File.Exists(TemplateUrl)){var config new OpenXmlConfiguration(){TableStyles TableStyles.None};var saveTemplate new ListTranslateModel();saveTemplate.Add(new TranslateModel(Main, Hello, Hello World!));MiniExcel.SaveAs(TemplateUrl, saveTemplate,configuration: config);} }读取文件 翻译 这里用一下我的封装 C# HttpClient Get Post简单封装 先来一个Hello world!翻译 public class TranslateHelper {public enum Language { zh, cht, en, de, fr, es, it, pt, ru, ja, ko }/// summary/// 存放读取的数据/// /summarypublic IEnumerableTranslateModel Translates { get; private set; }/// summary/// 模板路径/// /summarypublic const string TemplateUrl Assests/translate_template.xlsx;/// summary/// 读取路径/// /summarypublic const string ReadUrl Assests/translate_read.xlsx;/// summary/// 翻译导出路径/// /summarypublic const string WriteUrl Assests/translate_read.xlsx;public const string API_KEY 你的key;public const string APPID 你的ip;public const string API_URL https://api.niutrans.com/NiuTransServer/translation;public TranslateHelper(){}/// summary/// 导出模板如果文件存在则跳过/// /summarypublic void CreateTemplate(){if (!File.Exists(TemplateUrl)){var config new OpenXmlConfiguration(){TableStyles TableStyles.None};var saveTemplate new ListTranslateModel();saveTemplate.Add(new TranslateModel(Main, Hello, Hello World!));MiniExcel.SaveAs(TemplateUrl, saveTemplate, configuration: config);}}public void Read(){Translates MiniExcel.QueryTranslateModel(ReadUrl);}public async Taskstring TranslateFromEN(string en, Language language){//这个是我自己封装的你也可以用微软官方的原生httpclientvar httpHelper new MyHttpHelper(API_URL);var data new{src_text en,from en,to language.ToString(),apikey API_KEY,};var res await httpHelper.JsonHttpPostDictionarystring,string(, data, null);var str res[tgt_text];return str;}}测试 static void Main(string[] args){var helper new TranslateHelper();helper.CreateTemplate();Console.WriteLine(开始!);Task.Run(async () {var res await helper.TranslateFromEN(Hello world!, TranslateHelper.Language.zh);Console.WriteLine(res);});Console.WriteLine(结束!);Console.ReadKey();}多语言测试 Task.Run(async () {var res ;res await helper.TranslateFromEN(Hello world!, TranslateHelper.Language.zh);Console.WriteLine(res);res await helper.TranslateFromEN(Hello world!, TranslateHelper.Language.cht);Console.WriteLine(res);res await helper.TranslateFromEN(Hello world!, TranslateHelper.Language.de);Console.WriteLine(res);res await helper.TranslateFromEN(Hello world!, TranslateHelper.Language.fr);Console.WriteLine(res);res await helper.TranslateFromEN(Hello world!, TranslateHelper.Language.es);Console.WriteLine(res);res await helper.TranslateFromEN(Hello world!, TranslateHelper.Language.it);Console.WriteLine(res);res await helper.TranslateFromEN(Hello world!, TranslateHelper.Language.pt);Console.WriteLine(res);res await helper.TranslateFromEN(Hello world!, TranslateHelper.Language.ru);Console.WriteLine(res);res await helper.TranslateFromEN(Hello world!, TranslateHelper.Language.ja);Console.WriteLine(res);res await helper.TranslateFromEN(Hello world!, TranslateHelper.Language.ko);Console.WriteLine(res); });综合翻译 /// summary /// 读取并写入机翻结果 /// /summary /// returns/returns public async Task ReadAndWrite() {if(!File.Exists(ReadUrl)){Console.WriteLine($[{ReadUrl}]文件不存在读取失败);return;}else{Translates MiniExcel.QueryTranslateModel(ReadUrl).ToArray();}if (File.Exists(WriteUrl)){Console.WriteLine($[{WriteUrl}]文件已存在跳过翻译);return ;}else{for(var i 0;i Translates.Count();i){Console.WriteLine($翻译进度[{i}/{Translates.Count()}]);Translates[i] await TranslateAllFromEN(Translates[i]);}//将数据保留MiniExcel.SaveAs(WriteUrl, Translates);}}/// summary /// 从EN翻译全部 /// /summary /// returns/returns public async TaskTranslateModel TranslateAllFromEN(TranslateModel translateModel) {if (translateModel.EN ! null translateModel.EN ! ){var en translateModel.EN;translateModel.ZH await TranslateFromEN(en, Language.zh);translateModel.CHT await TranslateFromEN(en, Language.cht);translateModel.DE await TranslateFromEN(en, Language.de);translateModel.FR await TranslateFromEN(en, Language.fr);translateModel.ES await TranslateFromEN(en, Language.es);translateModel.IT await TranslateFromEN(en, Language.it);translateModel.PT await TranslateFromEN(en, Language.pt);translateModel.RU await TranslateFromEN(en, Language.ru);translateModel.JA await TranslateFromEN(en, Language.ja);translateModel.KO await TranslateFromEN(en, Language.ko);Console.WriteLine(JsonConvert.SerializeObject(translateModel));}else{Console.WriteLine($Scene[{translateModel.Scene}],Key[{translateModel.Key}]的EN为空);}return translateModel;}/// summary /// EN单独翻译 /// /summary /// param nameen/param /// param namelanguage/param /// returns/returns public async Taskstring TranslateFromEN(string en, Language language) {//防止请求过快,小牛API并发有限制await Task.Delay(100);//Console.WriteLine(language.ToString());var httpHelper new MyHttpHelper(API_URL);var data new{src_text en,from en,to language.ToString(),apikey API_KEY,};var res await httpHelper.JsonHttpPostDictionarystring,string(, data, null);var str res[tgt_text];return str; }文件准备 测试代码 Task.Run(async () {await helper.ReadAndWrite();});测试结果 完整代码 实体类 public class TranslateModel {public TranslateModel() { }public TranslateModel(string scene,string key,string en) {Scene scene;Key key;EN en;}public string Scene { get; set; }public string Key { get; set; }/// summary/// 英语/// /summarypublic string EN { get; set; }/// summary/// 简体中文/// /summarypublic string ZH { get; set; }/// summary/// 繁体中文/// /summarypublic string CHT { get; set; }/// summary/// 德语/// /summarypublic string DE { get; set; }/// summary/// 法语/// /summarypublic string FR { get; set; }/// summary/// 西班牙语/// /summarypublic string ES { get; set; }/// summary/// 意大利语/// /summarypublic string IT { get; set; }/// summary/// 葡萄牙语/// /summarypublic string PT { get; set; }/// summary/// 俄语/// /summarypublic string RU { get; set; }/// summary/// 日语/// /summarypublic string JA { get; set; }/// summary/// 韩语/// /summarypublic string KO { get; set; } }翻译帮助类 public class TranslateHelper {public enum Language { zh, cht, en, de, fr, es, it, pt, ru, ja, ko }/// summary/// 存放读取的数据/// /summarypublic TranslateModel[] Translates { get; private set; }/// summary/// 模板路径/// /summarypublic const string TemplateUrl Assests/translate_template.xlsx;/// summary/// 读取路径/// /summarypublic const string ReadUrl Assests/translate_read.xlsx;/// summary/// 翻译导出路径/// /summarypublic const string WriteUrl Assests/translate_write.xlsx;public const string API_KEY 你的key;public const string APPID 你的appid;public const string API_URL https://api.niutrans.com/NiuTransServer/translation;public TranslateHelper(){}/// summary/// 导出模板如果文件存在则跳过/// /summarypublic void CreateTemplate(){if (!File.Exists(TemplateUrl)){var config new OpenXmlConfiguration(){TableStyles TableStyles.None};var saveTemplate new ListTranslateModel();saveTemplate.Add(new TranslateModel(Main, Hello, Hello World!));MiniExcel.SaveAs(TemplateUrl, saveTemplate, configuration: config);}else{Console.WriteLine($[{TemplateUrl}]文件已存在跳过创建);}}/// summary/// 读取并写入机翻结果/// /summary/// returns/returnspublic async Task ReadAndWrite(){if(!File.Exists(ReadUrl)){Console.WriteLine($[{ReadUrl}]文件不存在读取失败);return;}else{Translates MiniExcel.QueryTranslateModel(ReadUrl).ToArray();}if (File.Exists(WriteUrl)){Console.WriteLine($[{WriteUrl}]文件已存在跳过翻译);return ;}else{for(var i 0;i Translates.Count();i){Console.WriteLine($翻译进度[{i1}/{Translates.Count()}]);Translates[i] await TranslateAllFromEN(Translates[i]);}var config new OpenXmlConfiguration(){TableStyles TableStyles.None};//将数据保留MiniExcel.SaveAs(WriteUrl, Translates,configuration:config);}}/// summary/// 从EN翻译全部/// /summary/// returns/returnspublic async TaskTranslateModel TranslateAllFromEN(TranslateModel translateModel){if (translateModel.EN ! null translateModel.EN ! ){var en translateModel.EN;translateModel.ZH await TranslateFromEN(en, Language.zh);translateModel.CHT await TranslateFromEN(en, Language.cht);translateModel.DE await TranslateFromEN(en, Language.de);translateModel.FR await TranslateFromEN(en, Language.fr);translateModel.ES await TranslateFromEN(en, Language.es);translateModel.IT await TranslateFromEN(en, Language.it);translateModel.PT await TranslateFromEN(en, Language.pt);translateModel.RU await TranslateFromEN(en, Language.ru);translateModel.JA await TranslateFromEN(en, Language.ja);translateModel.KO await TranslateFromEN(en, Language.ko);Console.WriteLine(JsonConvert.SerializeObject(translateModel));}else{Console.WriteLine($Scene[{translateModel.Scene}],Key[{translateModel.Key}]的EN为空);}return translateModel;}/// summary/// EN单独翻译/// /summary/// param nameen/param/// param namelanguage/param/// returns/returnspublic async Taskstring TranslateFromEN(string en, Language language){//防止请求过快,小牛API并发有限制await Task.Delay(100);//Console.WriteLine(language.ToString());var httpHelper new MyHttpHelper(API_URL);var data new{src_text en,from en,to language.ToString(),apikey API_KEY,};var res await httpHelper.JsonHttpPostDictionarystring,string(, data, null);var str res[tgt_text];return str;}}网络帮助类 public class MyHttpHelper {private string baseUrl;/// summary/// 基础Api/// /summarypublic string BaseUrl{get{return baseUrl;}set{baseUrl value;MyHttpClient new HttpClient(){BaseAddress new Uri(baseUrl)};}}public HttpClient MyHttpClient { get; set; }public MyHttpHelper(){}public MyHttpHelper(string baseUrl){BaseUrl baseUrl;}/// summary/// 序列化返回值/// /summary/// typeparam nameT/typeparam/// param nameapi/param/// param namestrParams/param/// returns/returnspublic async TaskT JsonHttpGetT(string api, Dictionarystring, string strParams){var res await MyHttpGet(api, strParams);return await res.Content.ReadFromJsonAsyncT();}/// summary/// 序列化返回值/// /summary/// typeparam nameT/typeparam/// param nameapi/param/// param namevalue/param/// param namestrParams/param/// returns/returnspublic async TaskT JsonHttpPostT(string api, object value, Dictionarystring, string strParams){var res await MyHttpPost(api, value, strParams);return await res.Content.ReadFromJsonAsyncT();}/// summary/// 序列化请求/// /summary/// param nameapi/param/// param nameparam/param/// returns/returnspublic async TaskHttpResponseMessage MyHttpGet(string api, Dictionarystring, string param){string paramStr DictionaryToParams(param);return await MyHttpClient.GetAsync(api paramStr);}/// summary/// 自定义的转发功能/// /summary/// param nameapi/param/// param namedataname/param/// param namevalue/param/// returns/returnspublic TaskHttpResponseMessage MyHttpPost(string api, object value, Dictionarystring, string strParams){return MyHttpClient.PostAsync(api DictionaryToParams(strParams), new StringContent(JsonConvert.SerializeObject(value), Encoding.UTF8, application/json));}/// summary/// 字典转参数/// /summary/// param nameparam/param/// returns/returnspublic string DictionaryToParams(Dictionarystring, string param){var res ;if (param ! null){var list param.ToList();if (list.Count ! 0){for (var i 0; i list.Count; i){if (i ! 0){res ;}res ${list[i].Key}{list[i].Value};}res ? res;}}return res;} }最终效果 翻译前 翻译中 翻译后 总结 多语言发布这样可以让我们的游戏在更多的国家用户使用。虽然我暂时没有这个需求但是说不定也有别的项目需要多语言的本地化接入。
http://www.hkea.cn/news/14260404/

相关文章:

  • 网站html地图怎么做的四川省建设监督网
  • 丽江网站设计公司网站注册会绑定式收费吗
  • 南阳建网站推荐一个做淘客网站
  • 百度站长平台网址高古楼网站 做窗子
  • 做资讯网站怎么挣钱建设银行网站怎么基本转个人
  • 衡量网站质量的标准网站建设综合设计
  • 邢台123式的网站怎么做淮安公司网站建设
  • 网站优化效果企业文化学习心得
  • 自由做图网站长春市建设技工学校网站
  • 注册网站对接的短信平台有哪些可以做网站的平台
  • 网站落地页是什么意思网件路由器重置
  • 河南 网站备案中国在线商城注册管理平台
  • 多域名网站大数据在营销中的应用案例
  • 建设项目验收网站天津手机版建站系统价格
  • 菏泽网站建设做一晚水泥工歌曲网站
  • 上海网站建设中小型企业公司网站备案名称
  • 高性能网站建设进阶指南北京外包seo公司
  • 网站底部备案图标做网站需要后台吗
  • 宠物用品技术支持 东莞网站建设凡建网站
  • 国外做论坛网站网站建设意义
  • 网站做接口需要哪些茶网站开发方案
  • 免费网站入口2021牡丹江做网站
  • 商业网站制作教程开发网站需要多少资金
  • 花万元请人做网站旅游网页设计模板源代码
  • 建设营销网站要什么百度软件开放平台
  • 上海网站关键词高端定制品牌
  • 怎么让网站被百度搜到网站备案周期
  • 医院网站需要前置审批柳州企业网站开发平台
  • 小学学校网站网站备案更改需要多久
  • 杭州市做网站深圳商城软件开发