上海品茶

D会场-周国庆-DotNET应用国际化实践-AIGC智能翻译_代码生成.pdf

编号:161038 PDF 35页 4.44MB 下载积分:VIP专享
下载报告请您先登录!

D会场-周国庆-DotNET应用国际化实践-AIGC智能翻译_代码生成.pdf

1、NET ConfChinaNET20232023/12/168NET09:30-18:00NEL中国北京#page#NET Conf China 2023NET中文社区中国北京NET应用国际化-AIGC智能翻译+代码生成周国庆2023/12/16#page#NET Conf China 2023NET中文社区中国北京周国庆特来电云平台技术负责人MicrosoftTELDAGMVPMost Valuable(2020-2022).NET领域-微软MVP特来电Professional济南.NET俱乐部主席#page#page#NET Conf China 2023NET中文社区中国北京一、业务背景

2、特来电新能源股份有限公司,中国最大最强新能源汽车充电网运营商,主要从事新能源汽车充电网的建设、运营以及互联网增值服务。台亿万万我们已经ELD36025.198.856,918476,44725.758.83211,199,491,964做到特来电总充电量(度)运营终端数覆盖城市碳减排(吨)节油量(升)注册用户充电桩日充电量日均服务调用日均数据存储日均消息处理A10T+100亿+10亿+47w+3200w+2000w+2022年,特来电正式启动出海业务,产品和应用全面支持国际化,走向海外。#page#NET Conf China 2023NET中文社区中国北京.NET应用如何实现国际化目前我们的

3、充电服务平台包含16大子系统,上千个功能菜单,数十个数据库大部分应用基于.NET技术栈构建,都需要支持国际化&本地化。如何快速、高效、准确地完成产品国际化&本地化改造是团队面临的一个巨大的挑战!没有相关经验怎么办?好在有了ChatGPT!我们先问一下ChatGPTChatGPT#page#NET Conf China 2023NET中文社区中国北京二、.NET应用如何实现国际化GPT4果然牛NET应用如何实现国际化?NET应用程序的国际化(也称为本地化)涉及将应用程序设计成可以适应不同的语言和区域设置,而不需要重新编写代码。这通常包括翻译家文本、支持不同的日期和时间格式以及处理不同的货币单位等

4、。以下是实现NET应用程序国际化的几个关键步骤:1.资源文件:创建资源文件(通常是.resx文件),用于存储可本地化的字符串和其他文化相关的资源。每种语言/区域设置都应有其相应的资源文件,例如Messages.en.resx(英文),Messages.fr.resx(法文)等。2.文化信息:使用system.Globalization.CultureInfo类来设置和获取当前线程的文化信息。这会影响日期、时间、数字和货币的格式。3.资源管理器:使用ResourceManager类来检索适当文化的资源。这个类会根据当前文化自动查找和加载正确的资源文件。4.字符串外部化:确保所有用户界面元素和需要

5、显示给用户的字符串都存储在资源文件中,而不是硬编码在应用程序中。5.日期和数字格式化:使用DateTime.Tostring()、double.Tostring()等方法来格式化日期、时间和数字,这些方法会根据当前文化自动应用适当的格式。6.文本方向:对于从右向左(RTL)阅读的语言(如阿拉伯语和希伯来语),确保用户界面可以适当地调整。7.测试:在开发过程中进行彻底的国际化测试,以确保应用程序在不同的文化设置中表现正确。8.第三方库:在需要时使用第三方库来处理复杂的国际化需求,如高级日期处理、复数形式和文化特定的校验。#page#NET Conf China 2023NET中文社区中国北京二、

6、.NET应用如何实现国际化创建资源文件技术方案可行,但是有几个架构设计上的问题Strings,resx:默认资源(通常为英文)Strings.fr.rasx:法文资源1.重度依赖资源文件x对3.在代码中使用资源2.大型分布式部署,分发、管理成本很高、很复杂3.需要大范围扫描、改造代码4.翻译、校对工作量巨大5.无法批量、动态修改翻译文本#page#NET Conf China 2023NET中文社区中国北京二、.NET应用如何实现国际化在ChatGPT基础上,发挥.NET技术栈的能力,创新设计了一个新的解决方案抽象封装一个词条服务,根据线程上下文的Curturelnfo,动态获取对应的多语言文

7、本注:词条通常用于标识需要被翻译文本的唯一标识。基于Roslyn,解析代码中的中文,形成多语言词条,同时做代码替换封装一个翻译服务,批量翻译词条。统一管理所有的多语言词条,支持动态修改,提供本地化的SDK,实现时间、数字、单位的本地化#page#NET Conf China 2023NET中文社区中国北京NET应用如何实现国际化抽象封装词条和词条服务BaseElemnenLising=newlitwin词条类I18NTerm:用于存储词条数据词条管理接口:用于词条的批量新增、修改词条服务接口:支持按词条查询对应的翻译文本。#page#NET Conf China 2023NET中文社区中国北京

8、二、.NET应用如何实现国际化基于Roslyn,解析识别代码中的中文,批量进行代码替换再次找到ChatGPT问一问只长键CS Translate(IDictionaryint, string textlist, string language)pluginDirectory = Path.Combine(System.Io.Directory.GetcurrentDirectory(),“Plugins”)varvarplugin = kernel.ImportSemanticFunctionsFromDirectory(pluginDirectory, “TranslatePlugin”)V

9、arjson=JsonConvert.Serializeobject(textList)1F(!string.IsNul1orEmpty(json)var output =kernel.RunAsync(json, plugin“Translator_”+language +“”).Result.ToString()if(lstring,IsNul1orwhiteSpace(output)上Console.NriteLine(output)return Jsonconvert.DeserializeobiectsDictionarysintastring(output2return new D

10、ictionary()#page#NET Conf China 2023NET中文社区中国北京二、.NET应用如何实现国际化机器翻译VschatGPT翻译Translatepluginsinput请将上面的输入翻译为英文,不要返回任何解释说明B Translator de3请扮演一个美国电动汽车充电服务运营商(精通中文和英文),用户的输入数据是JSoM格式,例如“1“:“充电站”,“充电桩”ETranslator_en如果不是JSON格式,请返回无效的输入请使用以下专业术语进行翻译Translator.fr“充电站”:“chargingstation”,Translator jpW“电站”:“

11、Chargingstation”,ETranslatorkr9“场站”:“chargingstation”,16“充电桩”:“chargingpoint”,ETranslator pt11“充电终端”:“chargingpoint”12“终端”:“Chargingpoint”,13“电动汽车”:ElectricVehicle”14“直流快充”:“DCFastCharger”15“超级充电站”:“Supercharger”,16“智能充电”“SmartCharging”,17“交流慢充”:ACSlowCharging”1819翻译结果请以JSON格式返回,例如“1:“chargingstatio

12、n”,“2”:“chargingpoint”#page#NET Conf China 2023NET中文社区中国北京二、.NET应用如何实现国际化机器翻译VschatGPT翻译Translatepluginsinput请将上面的输入翻译为葡萄牙语,不要返回任何解释说明,请扮演一个巴西的电动汽车充电服务运营商(精通葡萄牙语、中文和英文)B Translator de用户的输入数据是J50M格式,例如“12:“充电桩”,如果不是JSOM格式,请返回无效的输入“充电站“ETranslator_en请使用以下专业术语进行翻译5Translator.fr“充电站”:“Estacaodecarregame

13、nto”“电站”:“Estacaode carregamento”Translator jpW8“场站”:“Estacao decarregamento”ETranslatorkr9“充电桩”:“Ponto de carregamento”,16“充电终端“:“Pontodecarregamento”ETranslator pt1112“电动汽车”“Veiculo Eletrico”,13“直流快充”“Carregador Rapido DC”14“超级充电站”:“Supercharger”,15“智能充电”16“交流慢充”“Carregamento AC Lento1718#page#NET

14、 Conf China 2023NET中文社区中国北京二、.NET应用如何实现国际化机器翻译VschatGPT翻译var culture = new CultureInfo(“en-US”);var translator s new GPT4TranslateService()translator.Translate(newDictionary()1,当前电站不可用“,2,“终端不可用”),3,“充电桩不可用”)4,“代码质量“,5,“数量”,culture);culture s new CultureInfo(”pt-BR”);4,“代码质量“,5,“数量”,culture);“1”;“2”

15、:“Charging point is not available”3”:“Charging point is not available”“4”;“Code quality”,JSON结构化的数据“5”:Quantity写到词条翻译结果表中点1”;“Esta?7o de carregamento atual n?o esta disponivel”基于这个数据生成产品的多语言包“2”:“3:“Ponto de carregamento no esta disponivel”A”“Qualidade do codigo”“5”“Quantidade”AA#page#NET Conf China

16、 2023NET中文社区中国北京三、使用GithubCopilot生成度量衡服务代码除了国际化翻译之外,我们还需要做应用的本地化处理。例如:提供一个公共的本地化组件,支持对数字、时间、度量衡在不同区域下的处理。接下来分享团队基于GithubCopiilot开发副驾,示例完成以上代码的生成过程#page#NET Conf China 2023NET中文社区中国北京三、使用GithubCopilot生成度量衡服务代码GitHub集成在IDE里的插件Open Al Modelfetch_pic.jsconst fetchNASAPictureOfT自动构建提示词return fetch(https:

17、/amethod:GET”headers:t代码建议Content-Type:F。改进建议.then(responseVethen(json=GitHubreturn jsoniCopilot服务3);心)色Copild利用公开库进行训练5#page#NET Conf China 2023NET中文社区中国北京三、使用GithubCopilot生成度量衡服务代码Prompt:请用C#生成一个提供度量衡服务的实现类MeasurementService,它提供了以下方法将长度值转换为英寸、长度值转换为英尺、将长度值转换为英里、将长度值转换为厘米、将长度值转换为千米、将重量值转换为克、将重量值转换为

18、千克、将功率值转换为瓦特、将电流值转换为安培、将电压值转换为伏特。例如将长度值转换为英寸的实现方法是publicdoubleConvertTolnch(doublevalue,LengthUnitlengthUnit),这个方法法中遍历LengthUniit,做长度转换。方法请添加标准注释,使用中文注释。#page#Conf China 2023NET中文社区中国北京Prompt:请用C*生成一个提供度是衡服务的实现类MemtSenice,它提供了以下方法将长度值转换为英寸、长度值传换为英尺、将长度值转换为英里、将长度值转换为厘米、将长度值转换为千米、将重量值转换为克、将重量值转换为千克、将功

19、率值转换为面特、将电流值转换为安培、将电压值转换为快持,例如将长度值转换为英寸的实现方法是publicdouble ComvertTolnchdoublelengthunit,这个方法中将变GitHubCopllotSurehere isa Meawice classinC#that prowlest05.aTadedasimpleswtchstatementto hanledifernt engthuntlus.Youl needtoreplaoehpublic class Me/summ/将长度值转换为英寸/ public double ConvertToInch(doublswitch(

20、lengthunit)caseLengthUnit.Meter:return value39.3701ase Lengthunit.Centimeterreturn value*0.393701;cLengthunit.Kilometer:return value*39370.1case Lengthunit.Mile:peturn value*63368;case LengthUnit.Foot:#page#NET Conf China 2023NET中文社区中国北京三、使用GithubCopilot生成度量衡服务代码这里你会发现,其他方法未实现,需要继续告诉GithubCopilot继续生

21、成代码GithubCopilot生成的代码不一定全面准确,需要做代码确认,这个很关键Prompt:MeasurementService类中,请参考ConvertTolnch这个方法的实现方式和注释要求,继续生成ConvertToMile,ConvertToFoot,ConvertToCentimeter,ConvertTokilometer,ConvertToGram, ConvertTokilogramConvertToWatt, ConvertToAmpere,ConvertToVolt等方法的具体转换逻辑,每个方法都要实现代码输出#page#NET Conf China 2023NET中

22、文社区中国北京三、使用GithubCopilot生成度量衡服务代码首先选择整个类,然后输入以下PromptPrompt:workspace/tests请对选中的代码,使用MSTest单元测试框架,生成单元测试代码,请为每个方法都实现单元测试#page#NET Conf China 2023NET中文社区中国北京区D口口味G店0808出4A3究行Q染#page#NET Conf China 2023NET中文社区中国北京今天我们共同探讨了基于AIGC实现.NET应用国际化从智能翻译到代码生成,这是LLM时代一个小小的案例,但是未来:有LLM加持的智能翻译将更精准,全面提升用户体验。代码自动生成将全面释放开发者创造力。随着AIGC的送代升级,AI将为我们带来更多应用创新和价值创造感谢大家的玲听。#page#

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(D会场-周国庆-DotNET应用国际化实践-AIGC智能翻译_代码生成.pdf)为本站 (张5G) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
客服
商务合作
小程序
服务号
会员动态
会员动态 会员动态:

186**86... 升级为高级VIP  Ji**n方... 升级为至尊VIP 

188**48...  升级为标准VIP  wei**n_... 升级为高级VIP

 iam**in... 升级为至尊VIP   wei**n_... 升级为标准VIP

135**70... 升级为至尊VIP   199**28... 升级为高级VIP 

 wei**n_... 升级为至尊VIP  wei**n_...  升级为标准VIP

wei**n_... 升级为至尊VIP 火星**r...   升级为至尊VIP

139**13... 升级为至尊VIP 186**69... 升级为高级VIP

 157**87... 升级为至尊VIP 鸿**...  升级为至尊VIP

 wei**n_...  升级为标准VIP 137**18... 升级为至尊VIP 

wei**n_... 升级为至尊VIP wei**n_...  升级为标准VIP 

139**24... 升级为标准VIP   158**25... 升级为标准VIP

wei**n_...  升级为高级VIP 188**60...  升级为高级VIP

Fly**g ... 升级为至尊VIP   wei**n_... 升级为标准VIP

186**52...  升级为至尊VIP  布** 升级为至尊VIP

186**69... 升级为高级VIP  wei**n_...  升级为标准VIP

  139**98... 升级为至尊VIP 152**90...   升级为标准VIP

138**98...  升级为标准VIP 181**96... 升级为标准VIP 

185**10...  升级为标准VIP wei**n_...   升级为至尊VIP

高兴   升级为至尊VIP wei**n_... 升级为高级VIP

  wei**n_... 升级为高级VIP 阿**... 升级为标准VIP 

 wei**n_... 升级为高级VIP  lin**fe...  升级为高级VIP

wei**n_...  升级为标准VIP wei**n_... 升级为高级VIP 

wei**n_... 升级为标准VIP  wei**n_... 升级为高级VIP 

wei**n_...  升级为高级VIP wei**n_...  升级为至尊VIP

 wei**n_... 升级为高级VIP wei**n_... 升级为高级VIP  

180**21... 升级为标准VIP    183**36... 升级为标准VIP

 wei**n_... 升级为标准VIP wei**n_... 升级为标准VIP

xie**.g...  升级为至尊VIP  王** 升级为标准VIP 

172**75... 升级为标准VIP wei**n_...  升级为标准VIP

wei**n_...  升级为标准VIP  wei**n_... 升级为高级VIP

 135**82...  升级为至尊VIP 130**18... 升级为至尊VIP 

 wei**n_...  升级为标准VIP wei**n_...  升级为至尊VIP 

wei**n_...  升级为高级VIP  130**88... 升级为标准VIP

张川  升级为标准VIP  wei**n_... 升级为高级VIP

  叶** 升级为标准VIP wei**n_... 升级为高级VIP 

138**78... 升级为标准VIP  wu**i  升级为高级VIP

 wei**n_... 升级为高级VIP  wei**n_... 升级为标准VIP

 wei**n_... 升级为高级VIP 185**35...  升级为至尊VIP

 wei**n_... 升级为标准VIP 186**30... 升级为至尊VIP 

 156**61...  升级为高级VIP 130**32...  升级为高级VIP 

136**02...  升级为标准VIP wei**n_...  升级为标准VIP 

133**46... 升级为至尊VIP  wei**n_... 升级为高级VIP

  180**01... 升级为高级VIP 130**31...  升级为至尊VIP

 wei**n_... 升级为至尊VIP 微**...  升级为至尊VIP

wei**n_... 升级为高级VIP wei**n_...   升级为标准VIP

刘磊  升级为至尊VIP wei**n_... 升级为高级VIP

 班长 升级为至尊VIP wei**n_...  升级为标准VIP

 176**40... 升级为高级VIP  136**01... 升级为高级VIP

159**10...  升级为高级VIP 君君**i...   升级为至尊VIP

wei**n_... 升级为高级VIP   wei**n_...   升级为标准VIP