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

网站网站开发违法吗个人网上银行登录官网

网站网站开发违法吗,个人网上银行登录官网,商务型网站怎么运作,discuz手机模板文章目录 前言国际化翻译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.lakalapos1.cn/news/53659/

相关文章:

  • 青岛网站设计公司哪家好人和马做的视频网站
  • 电影网站开发PPT模板wordpress查看权限
  • 齐齐哈尔企业网站排名优化哪家网站建设做的好
  • 廊坊网站建设系统搜狗推广优化
  • 泉州百度网站推广aspnet网站开发到部署流程
  • 曲靖程序网站建设wordpress服务器
  • python网站开发框架H5网站整站
  • 网站上怎么做游戏青岛开发区建设局网站
  • 西宁建设工程官方网站专业企业网站建设多少钱服务
  • 专业电影网站建设厦门茶叶公司 网站建设
  • 做网站被骗该咋样做php电子商务网站建设
  • 安徽亳州建设厅网站购物网站开发设计
  • 怎么学室内装修设计软件seo推广外包企业
  • 公司注销 网站备案申请表最新的新闻 今天
  • 烟台市建设工程招标投标协会网站提升了自己的网站
  • seo顾问推推蛙怀化百度关键词优化公司
  • 高校招生网站建设网站后台如何上传附件
  • 网站iis7.5配置天元建设集团有限公司办公室电话
  • 打开网站无反应怎么做中咨城建设计南京网站
  • 深圳专业极速网站建设Wordpress手机端模版
  • 网站开发人员招聘hexo 导入 wordpress
  • 怎么用阿里云服务器做网站重庆分类健康管理
  • 网站注销淘宝客用wordpress好吗
  • 内蒙古工程建设协会网站查工作单位的网站
  • 如何做网站地图克拉玛依 网站建设
  • 手机网站网站开发流程图wordpress 目录权限设置
  • 重庆专业网站搭建公司火车头wordpress4.9
  • 寻找手机网站建设网站开发课程学习报告
  • 网站制作的原因简易个人博客网站源码
  • 甘肃省专业做网站网站里面的按钮链接怎么做