测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可 | MIT |
发布最后发布 | 2016年1月 |
由George Polak维护。
依赖项 | |
AFNetworking | ~> 2.0 |
PINCache | ~> 2.1 |
一个用于 Google 和 Bing 翻译 API 的简单 iOS 库。
FGTranslator *translator = [[FGTranslator alloc] initWithGoogleAPIKey:@"your_google_key"];
[translator translateText:@"Bonjour!"
completion:^(NSError *error, NSString *translated, NSString *sourceLanguage)
{
if (error)
NSLog(@"translation failed with error: %@", error);
else
NSLog(@"translated from %@: %@", sourceLanguage, translated);
}];
FGTranslator *translator =
[[FGTranslator alloc] initWithBingAzureClientId:@"your_azure_client_id"
secret:@"your_azure_client_secret"];
[translator translateText:@"Bonjour!"
completion:^(NSError *error, NSString *translated, NSString *sourceLanguage)
{
if (error)
NSLog(@"translation failed with error: %@", error);
else
NSLog(@"translated from %@: %@", sourceLanguage, translated);
}];
.xcworkspace
(不是 .xcodeproj
!) 文件。或者您可以直接将 FGTranslator 文件夹添加到您的项目中。FGTranslator 使用 AFNetworking - 如果您以这种方式添加它,则需要您的项目使用此插件。CocoaPods 安装为您管理此依赖项。
使用此库,您需要一个有效的 Google 或 Bing (Azure) 开发者账户。
Google 和 Bing 翻译均为付费服务,但 Bing 提供了免费层。Google 的翻译质量和语言选择通常更好。选择最适合您的方式。
FGTranslator *translator =
[[FGTranslator alloc] initWithGoogleAPIKey:@"your_google_key"];
FGTranslator *translator =
[[FGTranslator alloc] initWithBingAzureClientId:@"your_azure_client_id"
secret:@"your_azure_client_secret"];
[translator translateText:@"Bonjour!" completion:^(NSError *error, NSString *translated, NSString *sourceLanguage)
{
if (error)
{
NSLog(@"failed with error: %@", error);
}
else
{
NSString *fromLanguage = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:sourceLanguage];
NSLog(@"translated from %@: %@", fromLanguage, translated);
}
}];
请注意,翻译是一项一次性操作。每次翻译都需要创建一个新的
FGTranslator
对象。
检测语言并返回其 ISO 语言代码作为 detectedSource
参数。
如果使用 Google 初始化,完成处理程序还会返回一个介于 0 和 1 之间的浮点数,表示匹配的置信度,1 表示置信度最高。Bing 翻译不支持此功能,总是返回 FGTranslatorUnknownConfidence
。
[translator detectLanguage:@"Bonjour"
completion:^(NSError *error, NSString *detectedSource, float confidence)
{
if (error)
{
NSLog(@"failed with error: %@", error);
}
else
{
NSString *language = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:detectedSource];
NSString *confidenceMessage = confidence == FGTranslatorUnknownConfidence
? @"unknown"
: [NSString stringWithFormat:@"%.1f%%", confidence * 100];
NSLog(@"detected %@ with %@ confidence", language, confidenceMessage);
}
}];
Google 和 Bing 翻译支持不同的语言。您可以使用以下函数获取支持的语言 ISO 语言代码列表
[translator supportedLanguages:^(NSError *error, NSArray *languageCodes)
{
if (error)
NSLog(@"failed with error: %@", error);
else
NSLog(@"supported languages:%@", languageCodes);
}];
基本翻译功能会猜测源语言,并根据用户的手机设置指定目标语言。
- (void)translateText:(NSString *)text
completion:(NSError *error, NSString *translated, NSString *sourceLanguage)completion;
如果需要,您可以指定源和/或目标语言。
- (void)translateText:(NSString *)text
withSource:(NSString *)source
target:(NSString *)target
completion:(NSError *error, NSString *translated, NSString *sourceLanguage)completion;
通常您不知道所要翻译的源语言。根据用户的 iPhone 地区设置或键盘语言设置进行判断似乎是显而易见的答案,但这是不可靠的:没有任何阻止您用英语键盘输入 Hola amigo! 的东西。这种情况很常见,特别是在国际用户中。
因此,FGTranslator 在上述函数中会忽略传入的 source
参数,如果它确定可以进行一个好的猜测。通常这意味着 text
参数足够复杂和长,以便引擎可靠地确定语言。对于短字符串片段,通常会尊重传入的 source
参数(如果有的话)。
要强制 FGTranslator 总是尊重 source
参数,请使用以下属性
translator.preferSourceGuess = NO;
注意:除非您确实知道源语言,否则我建议保持智能猜测开启,并在可能的情况下传递源参数作为对语言检测器的提示。
对于 Google 翻译,您可以设置 FGTranslator
实例中的特定用户标识符属性来对每个用户/设备的用法进行节流。有关更多信息,请参阅具体的 Google 文档。
@property (nonatomic) NSString *quotaUser;
- (void)cancel;
翻译会进行缓存以避免不必要的网络调用(以及 Google/Bing API 费用)。如果需要,您可以刷新缓存。
+ (void)flushCache;
Bing 翻译使用基于令牌的认证。您的第一次调用将根据传入的客户 ID 和密钥检索一个令牌并进行缓存以供将来使用。令牌的有效期是 15 分钟,之后它会过期并获取一个新的令牌。要强制令牌过期,请调用以下函数
+ (void)flushCredentials;
FGTranslator使用了以下项目
FGTranslator遵循MIT许可。更多信息请参阅LICENSE文件。
FGTranslator来源于我的Fargate应用。