darrynten/google-cloud-translate-php

此包的最新版本(v1.0.0)没有可用的许可证信息。

PHP Google Cloud Translate 客户端及附加功能

v1.0.0 2017-03-05 13:27 UTC

This package is auto-updated.

Last update: 2024-09-09 10:31:40 UTC


README

Travis Build Status StyleCI Status codecov Packagist Version MIT License

一个非官方、完全单元测试的Google Cloud Translate PHP客户端,附带额外功能。

它基本上基于我们的Google Natural Language库,并且非常相似。

PHP 7.0+

为什么不直接使用官方的?

官方客户端很棒,我们实际上在这个包中使用了它,但它并没有我们需要的那些特性,所以我们用一些额外的功能封装了它。

有哪些额外功能?

节省成本

Google Cloud Translate API需要付费。如果您对其进行大规模操作,您需要密切关注调用,以确保不会失控。它并不便宜。

这就是我们引入节省成本功能的原因。

缓存请求

默认情况下,此包会缓存您的请求,通常您需要自己进行缓存。

它使用框架无关的方法进行缓存,利用任何主机框架的缓存机制,如果没有缓存可用,则回退到临时缓存。

支持的框架在AnyCache项目中详细说明。

包括Laravel、Symfony、Doctrine、Psr6等等。

此功能默认启用,可以轻松禁用。

省钱模式

虽然不太明显,但Google Cloud Translate API按字符收费。截至撰写本文时,大约为每100万个字符20美元。(检测和翻译按相同费率收费)。

如果您首先进行语言检测然后进行翻译,您将为每个字符支付两次费用。

我们添加了省钱模式,此设置允许您限制用于语言检测的文本量。

此功能默认启用,可以轻松禁用。默认情况下,将语言检测限制为推文的字符数,您也可以通过cheapskateCount属性调整该值。

额外的成本节省检查

如果您提交了不支持的语言,您仍然会按字符收费,因此我们确保我们获取所有支持的语言和翻译目标的副本,以确保您不会尝试翻译不支持的语言,从而节省资金。

我们还检查以确保您不会尝试翻译相同的目标和源,这也会很昂贵。

便利性

还有一些其他便利性,例如可以设置目标语言和源语言、类型等。

一个用例是运行单个文本实例通过多个语言尝试。

用法

use DarrynTen\GoogleCloudTranslatePhp\GoogleCloudTranslate;

// Config options
$config = [
  'projectId' => 'my-awesome-project'  // At the very least
];

// Make a translator
$translate = new GoogleCloudTranslate($config);

// Get information
$translate->languages();
$translate->localizedLanguages();

// Detect languages
$translate->detectLanguage($string);
$translate->detectLanguageBatch([$strings]);

// Translate
$translate->translate($string);
$translate->translateBatch([$strings]);

// Set optional things
$language->setType('html');
$language->setModel('base');
$language->setTargetLanguage('en');
$language->setSourceLanguage('es');

// Extra features
$language->setCaching(false);
$language->setCheapskate(false);
$language->setCheapskateCount(50);

// Full config options
$config = [
  'projectId' => 'my-awesome-project',     // required
  'key' => 'api-key',                      // optional see note below
  'target' => 'en',                        // optional default is en
  'source' => 'en',                        // optional default is en
  'model' => 'base',                       // optional
  'type' => 'text',                        // optional
  'authCache' => \CacheItemPoolInterface,  // stores access tokens
  'authCacheOptions' => $array,            // cache config
  'authHttpHandler' => callable(),         // psr-7 auth handler
  'httpHandler' => callable(),             // psr-7 rest handler
  'keyFile' => $json,                      // content
  'keyFilePath' => $string,                // path
  'retries' => 3,                          // default is 3
  'scopes' => $array,                      // app scopes
  'cache' => $boolean,                     // cache
  'cheapskate' => $boolean,                // cheaper detection calls
  'cheapskateCount' => 100,                // how cheap?
];

// authCache, authCacheOptions, authHttpHandler and httpHandler are not
// currently implemented.

有关这些选项及其用法,请参阅Google Cloud 文档

请注意,虽然Google Cloud Translation API支持通过服务帐户和应用程序默认凭据进行身份验证,就像其他云平台API一样,但它还支持通过公共API访问密钥进行身份验证。

如果您想使用API密钥进行身份验证,请先按照以下说明学习如何生成密钥。

选项

  • setType($type) - 可以是 html(默认)或 text
  • setModel($model)
  • setSourceLanguage($language) - 可以是ISO(如enes)或BCP-47(如en-ZAen-GB)。
  • setTargetLanguage($language) - 可以是ISO或BCP-47。

如果没有提供语言,则将从文本中自动检测并随响应返回。

缺失的功能

请随意提交PR!

目前无法使用Google\Cloud\Storage\StorageObject。

  • 自定义authCacheauthCacheOptions
  • 自定义httpHandlerauthHttpHandler

路线图

  • 实现缺失的功能

致谢

  • 提交PR并把自己放这里:)