背景
想开发个中文翻译软件,帮我自动翻译一些英文,从上找到了翻译例子,感谢作者,不过我没有用这个例子开发出我的产品,这个例子让我的视野看到了.NET Core,再次感谢作者。
谷歌翻译
向谷歌网站发送请求,会回复结果,但因为是免费的,不能频繁请求,我在我的产品里解决了频繁请求问题,有一定难度。请求的格式处理代码为:
string postData = $"sl={}&" + $"tl={}&" + $"hl=en&" + $"q={Uri.EscapeDataString(originalText)}&" + $"tk={token}&" + "client=t&" + "dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&" + "ie=UTF-8&" + "oe=UTF-8&" + "otf=1&" + "ssel=0&" + "tsel=0&" + "kc=7";
里面的token有算法,在类GoogleKeyTokenGenerator的DecrypthAlgorythm方法里。
翻译例子架构
例子里有基于.NET Core的控制台主程序,还有基于.NET Core 2.0的翻译库项目,翻译库项目里有通信主类、通信辅助类和数据解析类。通信主类是:GoogleTranslator。通信辅助类有:GoogleKeyTokenGenerator和LanguageAttribute。数据解析类有:TranslationResult等。
.NET Core
.NET Core项目在解决方案视图的项目节点下有依赖项节点,依赖项节点下有SDK节点,下面有.NET Core的名称,如下图:
.NET Core和.NET区别
我因为要在.NET下开发翻译软件,所以就尝试把代码放到.NET下用,代码文件拷贝过去,编译通过不了,提示如下:
[DataMember]找不到
后来查微软文档发现DataMember在.NET里没有。
[DataContract] 和[DataMember]
数据契约(DataContract) 服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型。
这些可能是通信里涉及到的,所以修饰的属性还是不能去。
[DataContract] 和[DataMember] 是.NET Core里特有的修饰属性。