darrynten / google-cloud-translate-php
PHP Google Cloud Translate 客户端及附加功能
Requires
- php: ^7.0
- darrynten/any-cache: ^1.0
- google/cloud: ^0.20.2
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: ~5.0
This package is auto-updated.
Last update: 2024-09-09 10:31:40 UTC
README
一个非官方、完全单元测试的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(如en
、es
)或BCP-47(如en-ZA
、en-GB
)。setTargetLanguage($language)
- 可以是ISO或BCP-47。
如果没有提供语言,则将从文本中自动检测并随响应返回。
缺失的功能
请随意提交PR!
目前无法使用Google\Cloud\Storage\StorageObject。
- 自定义
authCache
和authCacheOptions
- 自定义
httpHandler
和authHttpHandler
路线图
- 实现缺失的功能
致谢
- 提交PR并把自己放这里:)