微软翻译 iOS API
微软结束免费 Bing 搜索 API,转移到 Azure 市场上的付费服务。Bing 翻译已弃用,并强迫开发者使用比以前使用 AppID 更复杂的方式。
微软翻译新 API 涉及一个时间戳,称为访问令牌,它在获取后10分钟内会过期。在您获取令牌之前,您必须注册您的应用程序。
请参阅以下步骤。(省略了 Microsoft Azure Market 加入步骤。)
(1) 访问 https://datamarket.azure.com/developer/applications 并注册客户端应用程序(即使用该 API 的应用程序),在那里您可以创建您自己的客户端 ID 和名称,并且您还必须输入重定向 URI,它应该是一个有效的 URL 地址(例如,“http://www.....”);
(2) 如果您完成注册,将出现以下屏幕。
更多信息: http://msdn.microsoft.com/en-us/library/hh454950.aspx
MSTranslateVendor 是基于 Microsoft Translator V2 HTTP 构建的,并且是基于基于块的,尽可能地不依赖于其他框架,仅使用 Cocoa 库设计。
MSTranslateVendor 通过 CocoaPods 安装。只需将以下内容添加到 Podfile 中。
platform :ios
pod 'MSTranslateVendor'
另一种方式是将包含的 MSTranslateVendor 文件夹拖到您的项目中。
在 MSTranslateAccessTokenRequester.h
中,必须将 CLIENT_ID
和 CLIENT_SECRET
更改为您注册的应用程序的客户端 ID 和客户端密钥。参考上面的图片。
#define CLIENT_ID @""
#define CLIENT_SECRET @""
这些类是在 ARC 下编写的。如果您不是在整个项目中使用 ARC,请确保为每个文件指定 'Compile Sources' 构建阶段中的 -fobjc-arc
。
- (void)requestTranslate:(NSString *)text
to:(NSString *)to
blockWithSuccess:(void (^)(NSString *translatedText))successBlock
failure:(void (^)(NSError *error))failureBlock;
//if 'from' is a nil, 'from language' automatically detect.
- (void)requestTranslate:(NSString *)text
from:(NSString *)from
to:(NSString *)to
blockWithSuccess:(void (^)(NSString *translatedText))successBlock
failure:(void (^)(NSError *error))failureBlock;
- (void)requestTranslateArray:(NSArray *)translateArray
to:(NSString *)to
blockWithSuccess:(void (^)(NSArray *translatedTextArray))successBlock
failure:(void (^)(NSError *error))failureBlock;
//if 'from' is a nil, 'from language' automatically detect.
- (void)requestTranslateArray:(NSArray *)translateArray
from:(NSString *)from
to:(NSString *)to
blockWithSuccess:(void (^)(NSArray *translatedTextArray))successBlock
failure:(void (^)(NSError *error))failureBlock;
- (void)requestDetectTextLanguage:(NSString *)text
blockWithSuccess:(void (^)(NSString *language))successBlock
failure:(void (^)(NSError *error))failureBlock;
//return audio type default(.mp3)
- (void)requestSpeakingText:(NSString *)text
language:(NSString *)language
blockWithSuccess:(void (^)(NSData *audioData))successBlock
failure:(void (^)(NSError *error))failureBlock;
- (void)requestSpeakingText:(NSString *)text
language:(NSString *)language
audioFormat:(MSRequestAudioFormat)requestAudioFormat
blockWithSuccess:(void (^)(NSData *audioData))successBlock
failure:(void (^)(NSError *error))failureBlock;
//return number of a letter. a key is began from @"1",... @"1" means first sentence.
- (void)requestBreakSentences:(NSString *)text
language:(NSString *)language
blockWithSuccess:(void (^)(NSDictionary *sentencesDict))successBlock
failure:(void (^)(NSError *error))failureBlock;
#import "MSTranslateAccessTokenRequester.h"
#import "MSTranslateVendor.h"
//Must be called before used to MSTranslateVendor
[[MSTranslateAccessTokenRequester sharedRequester] requestSynchronousAccessToken:CLIENT_ID clientSecret:CLIENT_SECRET];
MSTranslateVendor *vendor = [[MSTranslateVendor alloc] init];
[vendor requestTranslate:@"독도는 대한민국 영토 입니다." from:@"ko" to:@"en" blockWithSuccess:
^(NSString *translatedText)
{
NSLog(@"translatedText: %@", translatedText);
}
failure:^(NSError *error)
{
NSLog(@"error_translate: %@", error);
}];
[vendor requestDetectTextLanguage:@"독도는 대한민국 영토 입니다." blockWithSuccess:
^(NSString *language)
{
NSLog(@"language:%@", language);
}
failure:
^(NSError *error)
{
NSLog(@"error_detect: %@", error);
}];
[vendor requestSpeakingText:@"Dokdo is korean territory." language:@"en" blockWithSuccess:
^(NSData *streamData)
{
NSError *error;
self.player = [[AVAudioPlayer alloc] initWithData:streamData error:&error];
[_player play];
}
failure:
^(NSError *error)
{
NSLog(@"error_speak: %@", error);
}];
[vendor requestBreakSentences:@"Dokdo est un territoire de la République de Corée. Géographiquement situé dans l'est de la République de Corée.
Historiquement, géographiquement Vonage Dokdo est clairement le territoire de la République de Corée."
language:@"fr" blockWithSuccess:
^(NSDictionary *sentencesDict)
{
NSLog(@"sentences_dict:%@", sentencesDict);
}
failure:^(NSError *error)
{
}];
[vendor requestTranslateArray:@[@"만나서 반갑습니다.", @"이 라이브러리가 당신에게 조금이나마 도움이 되기를 바랍니다.", @"최선을 다하겠습니다. 감사합니다."] from:@"ko" to:@"en" blockWithSuccess:^(NSArray *translatedTextArray) {
NSLog(@"translatedTextArray:%@", translatedTextArray);
} failure:^(NSError *error) {
}];
软件许可证协议(BSD 许可证)
版权(c)2013 SHIM MIN SEOK。版权所有。
以下条件满足时,允许重新分配和使用源代码和二进制代码,无论是否修改:
源代码重新分配必须保留上述版权声明、本条件列表和以下免责声明。
二进制形式的再分发必须复制上述版权声明、本条款列表以及以下免责声明在提供的文档和其他材料中。
未经具体事先书面许可,不得使用Infrae或其贡献者的姓名来认可或推广从本软件派生出的产品。
本软件按照“现状”提供,版权所有者和贡献者不做任何明示或暗示的保证,包括但不限于适销性和针对特定目的的适用性的隐含保证。在任何情况下,Infrae或贡献者不对任何直接、间接、偶然、特殊、示范性或后果性的损害(包括但不限于替代产品或服务的采购;使用、数据或利润的损失;或业务的中断)承担责任,无论这种损害是由于何种原因引起的,也不论是根据何种法律理论,即使被告知了发生此类损害的可能性。