post2go / microsoft-translator

用于调用 Microsoft Translator V2 API 的库

v0.5.1 2014-09-12 22:27 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:32:04 UTC


README

作者:Matthias Noback

安装

使用 Composer,在 composer.json 中添加

{
    "require": {
        "post2go/microsoft-translator": "dev-master"
    }
}

然后使用 Composer 二进制文件

php composer.phar install

用法

此库使用 Buzz 浏览器调用 Microsoft Translator V2 API

您需要在 Azure DataMarket 上注册您的应用程序,从而获取 "client id" 和 "client secret"。这些可以用于实例化 AccessTokenProvider,它是 MicrosoftTranslator 所依赖的

<?php

use Buzz\Browser;
use MatthiasNoback\MicrosoftOAuth\AccessTokenProvider;
use MatthiasNoback\MicrosoftTranslator\MicrosoftTranslator;

$browser = new Browser();

$clientId = '[YOUR-CLIENT-ID]';
$clientSecret = '[YOUR-CLIENT-SECRET]';

$accessTokenProvider = new AccessTokenProvider($browser, $clientId, $clientSecret);

$translator = new MicrosoftTranslator($browser, $accessTokenProvider);

可选:启用访问令牌缓存

每次调用翻译服务之前,都会先调用微软的 OAuth 服务器。但是,每个访问令牌可以缓存 10 分钟,因此您还应该使用内置的 AccessTokenCache

<?php

use MatthiasNoback\MicrosoftOAuth\AccessTokenCache;
use Doctrine\Common\Cache\ArrayCache;

$cache = new ArrayCache();
$accessTokenCache = new AccessTokenCache($cache);
$accessTokenProvider->setCache($accessTokenCache);

实际的缓存提供者可以是任何东西,只要它实现了 Doctrine Common 库中的 Cache 接口。

调用

翻译字符串

$translatedString = $translator->translate('This is a test', 'nl', 'en');

// $translatedString will be 'Dit is een test', which is Dutch for...

翻译字符串并获取多个翻译

$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();
}

检测字符串的语言

$text = 'This is a test';

$detectedLanguage = $translator->detect($text);

// $detectedLanguage will be 'en'

获取字符串的语音版本

$text = 'My name is Matthias';

$spoken = $translator->speak($text, 'en', 'audio/mp3', 'MaxQuality');

// $spoken will be the raw MP3 data, which you can save for instance as a file

测试

查看测试,了解您可以使用 API 做些什么。

要完全启用测试套件,您需要将 phpunit.xml.dist 复制到 phpunit.xml,并用其实际值替换占位符(即 client id、client secret 以及存储语音文本文件的位置)。

Build Status

相关项目

有一个 MicrosoftTranslatorBundle,它使 Microsoft translator 在 Symfony2 项目中可用。

还有一个 MicrosoftTranslatorServiceProvider,它将 Microsoft translator 和相关服务注册到 Silex 应用程序中。

待办事项

还有一些调用要实现,还有一些测试要添加。