FGTranslator 1.1.3

FGTranslator 1.1.3

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布最后发布2016年1月

George Polak维护。



 
依赖项
AFNetworking~> 2.0
PINCache~> 2.1
 

  • George Polak

一个用于 Google 和 Bing 翻译 API 的简单 iOS 库。

快速开始 (Google)

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);
}];

快速开始 (Bing)

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);
}];

演示

  1. 转到 FGTranslatorDemo 目录。
  2. 打开 .xcworkspace (不是 .xcodeproj) 文件。
  3. 运行应用。

将 FGTranslator 添加到您的项目

源文件

或者您可以直接将 FGTranslator 文件夹添加到您的项目中。FGTranslator 使用 AFNetworking - 如果您以这种方式添加它,则需要您的项目使用此插件。CocoaPods 安装为您管理此依赖项。

与 Google 或 Bing 注册

使用此库,您需要一个有效的 Google 或 Bing (Azure) 开发者账户。

Google 和 Bing 翻译均为付费服务,但 Bing 提供了免费层。Google 的翻译质量和语言选择通常更好。选择最适合您的方式。

  • Google
    1. https://developers.google.com/translate/v2/getting_started
  • Bing
    1. Azure Marketplace 上订阅 Microsoft Translator API。基本订阅费用(每月最多 200 万字符)是免费的。
    2. 要注册您的应用程序,请访问 Azure DataMarket,使用步骤 1 中的 LiveID 证书,然后单击“注册”。在“注册您的应用程序”对话框中,您可以定义自己的客户端 ID 和名称。重定向 URI 不会被 Microsoft Translator API 使用。但是,重定向 URI 字段是必填项,您必须提供一个 URI 来获得访问代码(只需使用 http://example.com 以使其高兴)。记下 客户端 ID客户端密钥 值。
    3. 确保您有一个 活跃的订阅 数据计划。第一层(2M 字符)是免费的。

使用方法

使用 Google 初始化...

FGTranslator *translator =
    [[FGTranslator alloc] initWithGoogleAPIKey:@"your_google_key"];

...或 Bing

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)

对于 Google 翻译,您可以设置 FGTranslator 实例中的特定用户标识符属性来对每个用户/设备的用法进行节流。有关更多信息,请参阅具体的 Google 文档

@property (nonatomic) NSString *quotaUser;

取消翻译中进程

- (void)cancel;

刷新缓存

翻译会进行缓存以避免不必要的网络调用(以及 Google/Bing API 费用)。如果需要,您可以刷新缓存。

+ (void)flushCache;

刷新凭证(仅限 Bing)

Bing 翻译使用基于令牌的认证。您的第一次调用将根据传入的客户 ID 和密钥检索一个令牌并进行缓存以供将来使用。令牌的有效期是 15 分钟,之后它会过期并获取一个新的令牌。要强制令牌过期,请调用以下函数

+ (void)flushCredentials;

归属

FGTranslator使用了以下项目

许可

FGTranslator遵循MIT许可。更多信息请参阅LICENSE文件。

杂项

FG?

FGTranslator来源于我的Fargate应用。

鱼图标?

鱼图标。