有道翻译iOS SDK开发指南


有道翻译SDK简介

有道翻译SDK是有道开放平台提供的云服务之一,是有道在线翻译接口的一种实现,同时,支持离线中英查词。有道翻译SDK支持中文和日文、英文、韩文、法文、俄文、葡萄牙文、西班牙文之间的互译。

通过SDK接入优势:

  1. 可以使用离线翻译,不联网也可以翻译
  2. 接入简单,不用实现整个翻译协议
  3. 方便进行数据统计,了解用户翻译使用情况

集成前提

开始集成SDK之前开发者需要登录有道开放平台(http://ai.youdao.com),创建应用获取应用ID(或者通过运营人员获取应用ID),以便使用翻译服务。

翻译sdk由如下几个sdk组成,用户可根据需要组合使用:

文件 说明
FanYiSDK.h 头文件(必选)
libbase.a 翻译相关sdk基础库(必选)
libhanyucidianoffline.a 汉语词典翻译sdk(可选,使用汉语词典功能时使用)
libonline.a 在线翻译sdk(可选,包含英汉互译,以及小语种翻译,在线查询)
libwordoffline.a 离线查词sdk(可选,中英单词的离线查询)
libsencentenceoffline.a 离线句子sdk(可选,中英句子的离线查询)
fanyidemo sdk使用demo
StaticResource StaticResource文件夹下的文件用于离线查词和汉语词典翻译,如果不使用离线功能,不需要StaticResource文件。

文件目录如下图所示:

_static/t_ios_1.png

说明:无论使用何种功能,都需要加入FanYiSDK.h和libbase.a,和相应功能的sdk,各sdk可组合使用。

SDK集成步骤

1. 头文件及SDK库引入(所有功能都需要这一步)

  1. 添加头文件和库文件:将translateSDK添加到工程中,包括FanYiSDK.h头文件和libFanYiSDK.a文件。可以直接将translateSDK文件夹拖动到工程中,也可以选择File “Add files to ‘Project Name’…”
  2. 设置工程Other Linker Flags为-ObjC
_static/t_ios_2.png
  1. 修改工程中任意一个类后缀名为.mm,参 见demo中ViewController.mm(只有在使用离线查词功能的时候需要做这个修改)
  2. 在工程build Phases – Link Binary With Libraries中添加libFanYiSDK.a, AdSupport.framework, libstc++.6.0.9.tbd(只有在使用离线查词功能的时候需要做这个修改), CoreTelephony.framework, SystemConfiguration, libz.tbd和libsqlite3.tbd。如下:
_static/t_ios_3.png

2. 功能集成说明

2.1 初始化key

说明:所有的查询都需要初始化key,只执行初始化一次即可。

//初始化key
YDTranslateInstance *yd = [YDTranslateInstance sharedInstance];
yd.appKey = @"your appkey";

2.2 离线汉语词典查词功能

说明:请参考demo中HanyucidianViewController的使用

1)使用的库文件:头文件、libbase.a、libhanyucidianoffline.a,以及离线词库文件hh,离线词库可以下载或者放入工程中,开发者根据需求自行决定:若下载则需要提供下载url,先下载再初始化;若放入工程中则可提词库路径直接初始化。

2)构造查询器

offlinetranslate = [YDHanyucidianOfflineTranslate request];

3)初始化离线词库

-(void)offLineInit {
  // 执行此初始化方法之后,确保hh文件在指定路径中存在(hh文件可压缩成zip文件后供用户下载,客户端使用之前解压即可)
  if([offlinetranslate initOfflineWithPath:[XUtil getDownloadPath]]){
      [HUDUtil show:self.view text:@"离线查词初始化成功"];
  }else{
      [HUDUtil show:self.view text:@"离线查词初始化失败"];
  }
}

注意:initOffline方法是YDHanyucidianOfflineTranslate的实例方法,当YDHanyucidianOfflineTranslate被重新初始化之后,若想使用离线查词,必须调用initOffline方法。

4)执行查词过程。
查询,返回两种情况,一种是成功,相关结果存储在response参数中,另外一种是失败,失败信息放在TranslateErrorCode 是一个枚举类,整个查询是异步的,查询结果存在数组中。
[offlinetranslate lookup:textField.text WithCompletionHandler:^(YDHanyucidianOfflineTranslate *request, NSArray *transltes, NSError *error) {
      if (error) {
          NSString *des = [error.userInfo objectForKey:NSLocalizedDescriptionKey];
          NSLog(@"================> %ld%@", (long)error.code,des);

      }
      [self showTrans:transltes];
}];

2.3 在线查词和翻译功能(支持小语种)

说明:请参考demo中TranslatesViewController的使用

1)使用的库文件:头文件、libbase.a、libonline.a

2)构造查询器

translateRequest  = [YDTranslateRequest request];

设置查词所需要的附加信息

YDTranslateParameters *parameters = [YDTranslateParameters targeting];
parameters.source = @"youdaosw";
parameters.from = YDLanguageTypeChinese;
parameters.to = YDLanguageTypeEnglish;
translateRequest.translateParameters = parameters;

3)执行查词过程

查询,返回两种情况,一种是成功,相关结果存储在response参数中,另外一种是失败,失败信息放在TranslateErrorCode 是一个枚举类,整个查询是异步的。

[translateRequest lookup:[_translate objectForKey:@"content"] WithCompletionHandler:^(YDTranslateRequest *request, YDTranslate *response, NSError *error) {
      if (error) {
          //查询失败
      } else {
         //查询成功
      }
}];

2.4 离线汉英单词互译功能

说明:请参考demo中OfflineTranslatesViewController的使用StaticResource中文件夹中包含离线查词的库。

1)使用的库文件:头文件、libbase.a、libwordoffline.a、以及离线词库,离线词库可以下载或者放入工程中,开发者根据需求自行决定:若下载则需要提供下载url,先下载再初始化;若放入工程中则可提词库路径直接初始化。

2)构造查询器

offlinetranslate  = [YDWordOfflineTranslate request];

3)初始化离线词库

离线查词包含2个库,dicta和dictb,区别是dicta词库包含的词比较多,文件较大,dictb只包含常见词汇。开发者可根据实际情况,选择一个词库使用即可。下面以dictb词库为例,介绍如何使用离线查词功能。

使用离线查询功能, 涉及到4个包,ba160111.ydd,bb160111,dictWithSeg.dat,yddict.dat.其中dictWithSeg.dat和yddict.idx文件必须导入到工程中,并且已经添加到Copy bundle Resource中。如下:

_static/t_ios_4.png

2) ba160111.ydd和bb160111支持两种路径。开发者可指定词库的位置,也可以打到安装包中,分别调用不同的初始化方法即可。

//可选方式一、指定离线词库(ba160111.ydd和bb160111.ydd文件的)路径。注意,调用前提是该位置下已经包含这两个文件,否则初始化失败。
[offlinetranslate initOfflineWithPath:[XUtil getDownloadPath]];//布尔型返回值,代表初始化成功或者失败

//可选方式二、离线词库在安装包中(需要将这2个文件导入到工程中,确保Copy bundle Resource中能找到这2个文件)
[offlinetranslate initOffline]; //布尔型返回值,代表初始化成功或者失败

注意:initOffline方法是YDWordOfflineTranslate的实例方法,当YDWordOfflineTranslate被重新初始化之后,若想使用离线查词,必须调用initOffline方法。

4)执行查词过程

查询,返回两种情况,一种是成功,相关结果存储在response参数中,另外一种是失败,失败信息放在TranslateErrorCode 是一个枚举类,整个查询是异步的。
[offlinetranslate lookup:[_translate objectForKey:@"content"] WithCompletionHandler:^(YDWordOfflineTranslate *request, YDTranslate *translte, NSError *error) {
     if (error) {
        //查询失败
    } else {
       //查询成功
    }
}];

2.5 离线汉英句子互译功能

说明:请参考demo中SentenceOfflineTranslateViewController的使用

1)使用的库文件:头文件、libbase.a、libsencentenceoffline.a,以及离线词库文件ce.zip,离线词库可以下载或者放入工程中,开发者根据需求自行决定:若下载则需要提供下载url,先下载再初始化;若放入工程中则可提词库路径直接初始化。

2)构造查询器

offlinetranslate  = [YDSentenceOfflineTranslate request];

3)初始化离线词库

-(void)offLineInit{
   //初始化之前先下载离线词库文件ce.zip(参见demo),每次查询均要先初始化离线翻译句子词库
   if([offlinetranslate initOfflineSenWithPath:[XUtil getDownloadPath]]){
       [HUDUtil show:self.view text:@"离线句子初始化成功"];
   }else{
       [HUDUtil show:self.view text:@"离线句子初始化失败"];
   }
}

注意:offLineInit方法是YDSentenceOfflineTranslate的实例方法,当YDSentenceOfflineTranslate被重新初始化之后,若想使用离线查词,必须调用offLineInit方法。

4)执行查词过程。

查询,返回两种情况,一种是成功,相关结果存储在response参数中,另外一种是失败,失败信息放在TranslateErrorCode 是一个枚举类,整个查询是异步的,查询结果存在数组中。

[offlinetranslate lookup:[_translate objectForKey:@"content"] WithCompletionHandler:^(YDSentenceOfflineTranslate *request, YDTranslate *translte, NSError *error) {
       if (error) {
           //查询失败
       } else {
           //查询成功
       }
}];

常见问题及注意事项

1. 翻译没结果?

检查下翻译接口回调的错误信息,保证申请的appKey是有效且提前绑定了。

2. 离线查询无效?

确保离线库正确放置,离线初始化成功。

3. 添加翻译SDK之后审核没有通过?

翻译SDK使用了AdSupport框架获取设备IDFA信息用以统计计费,提交审核时对应用是否有广告选项请选择是。

支持语言

自动,中文, 日文, 英文, 韩文,法文, 俄文, 葡萄牙文, 西班牙文

错误码

(1)参数错误

INPUT_PARAM_ILLEGAL = 100,

INPUT_PARAM_ILLEGAL_MUST = 101,

INPUT_PARAM_ILLEGA_LANGUAGE = 102,

INPUT_PARAM_ILLEGAL_TEXT_LONG = 103,

INPUT_PARAM_ILLEGAL_VER_NOT_SUPPORT = 104,

INPUT_PARAM_ILLEGAL_SIGN_TYPE_NOT_SUPPORT = 105,

INPUT_PARAM_ILLEGAL_RESPONSE = 106,

INPUT_PARAM_ILLEGAL_ET = 107,

INPUT_PARAM_ILLEGAL_APPKEY = 108,

(2)验证错误

INPUT_DECRYPTION_ERROR = 201,

INPUT_DECRYPTION_ERROR_SIGN = 202,

(3)服务器错误

DICT_QUERY_ERROR = 301,

SMALL_LANG_QUERY_ERROR = 302,

SERVER_EXCEPTION = 303,

(4)账户异常

ACCOUNT_CHECK_ERROR = 401,

(5)未知错误

UNKNOWN = -1000,

(6)查询输入为空

EMPTY = -2000
 
有道智云平台介绍
网易有道旗下一个为开发者、企业和政府机构等提供自然语言翻译、文字识别OCR等服务以及行业解决方案的云服务平台,致力于提供安全、可靠和高效的云服务。
联系方式
联系电话:010-8255-8901
商务合作:
投诉反馈:
地址:北京市海淀区西北旺东路10号院 中关村软件园二期西区7号 网易(北京)公司
微信公众号
 
 
 
©2017 网易公司 京ICP证080268号