matthiasnoback / microsoft-translator
用于调用 Microsoft Translator V2 API 的库
v4.0.0
2024-08-23 08:11 UTC
Requires
- doctrine/cache: ^1.11
- kriswallsmith/buzz: ^1.2
Requires (Dev)
- cache/array-adapter: ^1.1
- nyholm/psr7: ^1.4
- phpunit/phpunit: 9.5
README
由 Matthias Noback(由 Alayn Gortazar 维护)
安装
使用 Composer,添加到 composer.json
{
"require": {
"matthiasnoback/microsoft-translator": "dev-master"
}
}
然后使用 Composer 二进制文件
php composer.phar install
用法
此库使用 Buzz 浏览器调用 Microsoft Translator Text API 3.0。
您需要 获取 Microsoft Azure Cognitive Services 订阅密钥。这可以用于实例化 AzureTokenProvider
<?php use MatthiasNoback\MicrosoftOAuth\AzureTokenProvider; use MatthiasNoback\MicrosoftTranslator\MicrosoftTranslator; use Buzz\Browser; use Buzz\Client\Curl; use Nyholm\Psr7\Factory\Psr17Factory; $client = new Curl(new Psr17Factory()); $browser = new Browser($client, new Psr17Factory()); $azureKey = '[YOUR-AZURE-SUBSCRIPTION-KEY]'; $accessTokenProvider = new AzureTokenProvider($browser, $azureKey); $translator = new MicrosoftTranslator($browser, $accessTokenProvider);
选择 azure 令牌提供程序 URL
默认情况下,acesstoken 将从 https://api.cognitive.microsoft.com/sts/v1.0/issueToken 获取,可以传递第三个参数到 AzureTokenProvider 以选择另一个源。
<?php // Some code $accessTokenProvider = new AzureTokenProvider($browser, $azureKey, 'https://westus.api.cognitive.microsoft.com/sts/v1.0/issueToken');
可选:启用访问令牌缓存
每次调用翻译服务之前,都会先调用 Microsoft 的 OAuth 服务器。但是,每个访问令牌都可以缓存 10 分钟,因此您还应该使用内置的 AccessTokenCache
<?php use MatthiasNoback\MicrosoftOAuth\AccessTokenCache; use Cache\Adapter\PHPArray\ArrayCachePool; $cache = new ArrayCachePool(); $accessTokenCache = new AccessTokenCache($cache); $accessTokenProvider->setCache($accessTokenCache);
实际的缓存提供程序可以是任何实现 FIG-PSR6 的 CachePoolInterface
接口的对象
调用
翻译字符串
<?php // Some code $translatedString = $translator->translate('This is a test', 'nl', 'en'); // $translatedString will be 'Dit is een test', which is Dutch for...
翻译字符串并获取多个翻译
<?php // Some code $matches = $translator->getTranslations('This is a test', 'nl', 'en'); foreach ($matches as $match) { // $match is an instance of MatthiasNoback\MicrosoftTranslator\ApiCall\TranslationMatch $degree = $match->getDegree(); $translatedText = $match->getTranslatedText(); }
检测字符串的语言
<?php // Some code $text = 'This is a test'; $detectedLanguage = $translator->detect($text); // $detectedLanguage will be 'en'
测试
查看测试以了解您可以使用 API 做什么。
要完全启用测试套件,您需要将 phpunit.xml.dist
复制到 phpunit.xml
并将占位符值替换为其实际值(即客户端 ID、客户端密钥和存储语音文件的存储位置)。
待办事项
- 还有一些要实现的调用,还有一些要添加的测试。