精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
想开发个中文翻译软件,帮我自动翻译一些英文,从https://github.com/Grizley56/GoogleTranslateFreeApi上找到了翻译例子,感谢作者,不过我没有用这个例子开发出我的产品,这个例子让我的视野看到了.NET Core,再次感谢作者。
向谷歌网站https://translate.google.cn发送请求,会回复结果,但因为是免费的,不能频繁请求,我在我的产品里解决了频繁请求问题,有一定难度。请求的格式处理代码为:
string postData = $"sl={fromLanguage.ISO639}&" +
$"tl={toLanguage.ISO639}&" +
$"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项目在解决方案视图的项目节点下有依赖项节点,依赖项节点下有SDK节点,下面有.NET Core的名称,如下图:
我因为要在.NET下开发翻译软件,所以就尝试把代码放到.NET下用,代码文件拷贝过去,编译通过不了,提示如下:
[DataMember]找不到
后来查微软文档发现DataMember在.NET里没有。
[DataContract] 和[DataMember]
数据契约(DataContract) 服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型。
[DataContract] 和[DataMember] 是.NET Core里特有的修饰属性。