topaz2/translator

基于API的调用翻译库。例如:Microsoft, Google

v0.4.2 2014-01-29 10:14 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:19:48 UTC


README

由Matthias Noback编写

Build Status Scrutinizer Quality Score

安装

使用Composer,将其添加到 composer.json

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

然后使用Composer二进制文件

php composer.phar install

用法

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

您需要在Azure DataMarket注册您的应用程序,从而检索“客户端ID”和“客户端密钥”。这些可以用于实例化依赖于MicrosoftTranslatorAccessTokenProvider

<?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);

可选:启用访问令牌缓存

每次调用翻译服务之前,都会调用Microsoft的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,并用实际值替换占位符(即客户端ID、客户端密钥和存储口语文本文件的存储位置)。

Build Status

相关项目

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

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

待办事项

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