您的位置:首页 > 移动开发 > IOS开发

[ios开发]利用有道翻译API实现简单的翻译功能

2013-04-19 16:03 721 查看
使用开发工具xcode4.6,模拟器IOS 6.1,本例使用的ARC模式,不需要手工autorelease,请各位看客不要吐槽。

先看效果图,支持汉译英,英译汉,试了一下日语,居然翻译出来的是英文。。。









不说废话,直奔主题:

一、到有道翻译API官网(http://fanyi.youdao.com/openapi)上申请Key



选择我是开发者,如果是为公司申请的,请选择我是网站主。

在申请页面填写网站名称及地址,如果是练习的项目就随便起,但要超过6个字符,网站地址不能写localhost,写IP地址没事。



填写完后点击申请,会给你这样的信息,其中API key和keyfrom一定要记住,API的URL中会用到。



并且下面还会给出API的URL,其中的keyfrom和api key已经替换成刚刚申请的了。



建议将此接口URL和keyfrom及api key记录下来,以备后续使用。

到此有道翻译API就成功申请了。

二、在xcode主视图中加入UI控件

具体方法就不一一截图了,相信会用xcode的就会,都是此托来托去的活。
用到了UITextField,UILabel,UIButton
声明变量及方法的代码如下:

@interface MainViewController :
UIViewController<UITextFieldDelegate,UITabBarDelegate>{

IBOutlet UITextField *_textfield;
IBOutlet UILabel *_lblresult;

- (IBAction)querytran:(UIButton *)sender;

三、在按钮事件querytran
有道返回值有两种数据类型,一种是JSON一种是XML,本文以JSON格式为例,数据格式如下:




所以需要对JSON数据进行解析,本例只取translation中的翻译,其它的暂时不用。
代码如下:

- (IBAction)querytran:(UIButton *)sender
{
if([_textfield.text
length] == 0)
{
return;
}
else
{
//键盘消失
if([_textfield
isFirstResponder])
{
[_textfield
resignFirstResponder];
}
NSString *txt = _textfield.text;
NSString *strURL = [NSString
stringWithFormat:@"http://fanyi.youdao.com/openapi.do?keyfrom=xxxxxxx&key=1618693256&type=data&doctype=json&version=1.1&q=%@",[txt
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

NSError *err = nil;
NSString *strResult;

NSLog(@"URL:%@",strURL);
if(strURL!=nil)
{
NSURL *url = [NSURL
URLWithString:strURL];
NSData *data = [NSData
dataWithContentsOfURL:url];
strResult = [self
parseJsonDataWithKey:data];
}

if(result != nil)

NSLog(@"result:%@",strResult);
if(err)
{
NSLog(@"error=%@", [err
description]);
}
else
{
_lblresult.text = strResult;
}



//解析JSON数据方法,并且取某key对应的值
-(NSString *) parseJsonDataWithKey:(NSData *)data
{
NSString *result = nil;
NSError *error;
NSDictionary *json = [NSJSONSerialization
JSONObjectWithData:data options:kNilOptions
error:&error];
if (json == nil)
{
NSLog(@"json parse failed \r\n");
return nil;
}

NSInteger *errcode = [[json
objectForKey:@"errorCode"] intValue];
NSLog(@"JSON ErrorCode: %d\r\n", errcode);
if(errcode != 0)
{
return nil;
}

NSArray *array = [json
objectForKey:@"translation"];
result = [array objectAtIndex:0];
NSLog(@"JSON translation: %@\r\n",result);

return result;
}

四、运行调试即可看到效果
没事用各种特殊字符来测试一下有道API,发现还是挺强大的,对错误的屏蔽挺好的。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐