【C语言】【window】--在线翻译器

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C

线

光影

2012年7月8日22:03:22

【C语言】【Windows】--在线翻译器01.程序简介

程序名称:在线翻译器

编译器:vs2010(其它也可以……)

程序大小:109K

文件包括:在线翻译器.exe,skinh.she,SkinH.dll,msvcr100.dll

程序界面:

02.任务说明

/********************************************************************

【光影队】【任务】【LV5】在线翻译器

********************************************************************/

任务名称:在线翻译器

任务难度:等级5

任务发布时间:

任务所需知识:C语言界面编程。算法。

任务简介:一个多国语言的在线翻译器。N天前使用学校的电脑,结果鼠标的半报废的货。使用谷歌翻译的时候需要全部删除输入的内容,结果鼠标选择不了,只能一个个字符Delete,或者点击打开新的窗口。每次使用翻译都需要这样很麻烦,突然想要自己写一个翻译器,于是开工了……程序需要可以对常用的几种语言间进行翻译。

任务资料提示:

·可以使用URLDownloadToFile对翻译结果的网页进行下载,然后分析网页即可得出翻译结果。

·URL是:/translate_t?q=要翻译的内容&hl=zh-CN&langpair=源语言|目标语言

·源语言与目标语言可以在谷歌翻译找到,如:en是英语,zh-CN是中文简体·要翻译的内容中的空格用%20代替,换行(\r\n)用%0A代替。

·注意网页是UTF-8编码。

·网页打开:

backgroundColor='#fff'"> 后面开始是翻译后的内容

后面的内容如果有换行那就带

?和其它……

后面如果没有内容了那就带

·具体网页可以自己下载网页进行分析。

/********************************************************************

03.相关技术

001.程序界面:

使用对话框。我们按下翻译按钮后。程序得到文本框的内容,然后根据文本的内容长度与标点符号进行分割,然后将分割的内容与相应的语言选择进行URL构造。根据构造的URL下载网页。最后分析网页得到翻译后的内容。

002.URL:

目标URL是:/translate_t?q=要翻译的内容&hl=zh-CN&langpair=源语言|目标语言

源语言与目标语言可以通过用户的下拉列表(Combobox)选择得到。

如:

中文简体:zh-CN

中文繁体:zh-TW

英语:en

日语:ja

韩语:ko

法语:fr

菲律宾语:tl

越南语:vi

拉丁语:la

更多可以到谷歌翻译上找……

如将“lucifer”以为中文,那么下载的链接就是:

/translate_t?q=lucifer&hl=zh-CN&langpair=en|zh-CN

然后使用:URLDownloadToFile进行下载

URLDownloadToFile(0,下载目标,保存的文件名,0,NULL);

然后就是文件操作了。

003.编码

网页文件是使用UTF-8编码,我们直接读取的网页内容然后进行显示的时候就会发现,英文正常显示,中文全部都变成了乱码。

于是我们需要对其进行编码转换。

我们使用char型的数组buffer进行读取然后在进行一下转换:

//先转换为Unicode

int wLen2 = MultiByteToWideChar(CP_UTF8, 0, buffer, -1, NULL, 0);

wchar_t* wStr2 = (wchar_t*)malloc(sizeof(wchar_t)*wLen2);

MultiByteToWideChar(CP_UTF8, 0, buffer, -1, wStr2, wLen2);

//再转换为Ascii

int aLen2 = WideCharToMultiByte(CP_ACP, 0, wStr2, -1, NULL, 0, NULL, NULL);

char* converted2 = (char*)malloc(sizeof(char)*aLen2);

WideCharToMultiByte(CP_ACP, 0, wStr2, -1, converted2, aLen2, NULL, NULL);

之后显示的内容就不会是乱码了。于是后续的字符串操作,翻译内容的定位就简单了……

004.检查输入的内容。

input是得到的输入内容。然后检查有没有空格和换行。如果有就进行替换。

空格换成“%20”

换行符换成“%0A”。

大致流程是:

/******************************************************************** 替换空格和换行。

接着

我们判断它的大小:

int inputlen=strlen(input);

while(inputlen>500){

截取字符串,进行翻译,得到结果后,继续截取,直到inputlen小于500跳出循环。

因为太长的URL得不到结果。

}

最后将剩下那段长度小于500的字符串进行翻译并得出结果。

以上完成。

********************************************************************/

相关文档
最新文档