[ios開發]利用有道翻譯API實現簡單的翻譯功能

來源:互聯網
上載者:User

使用開發工具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,發現還是挺強大的,對錯誤的屏蔽挺好的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.