Перевод текстов посредством Bing API (устарело)

23 июня 2011

Сегодня, в связи с тем что гугл собирается закрывать свой translate api, таки собрался и сотворил класс для перевода текста через SOAP сервис Bing

В связи с тем, что по каким-то странным обстоятельствам нормальной документации нет, а есть только куцый пример на VB (о ужас!) и C# с использованием видимо готовых библиотек пришлось повозиться и подбирать параметры и вид, в котором надо данные отправить сервису, чтоб он не ругался непонятными словами.

В результате родилось вот что:

<?php
class Bing_Translate_API {
 
    function translate($text, $from = 'en', $to = 'ru') {
 
        if (mb_strlen($text)>2000)
        {
            echo "шмахтунг\n";
            return false;
        }
 
        $c=new SoapClient("http://api.bing.net/search.wsdl",array(
            "AppId"=>"bingApiId",
            "Version"=>"2.2"
        ));
 
        $arr=array(
            "parameters"=>array(
                "AppId"=>"bingApiId",
                "Market"=>"en-us",
                "Version"=>"2.2",
                "Sources"=>array(
                    "Translation"
                ),
                "Translation"=>array(
                    "SourceLanguage"=>$from,
                    "TargetLanguage"=>$to
                ),
                "Query"=>$text)
        );
 
        $r=$c->Search($arr);
 
        if (isset($r->parameters->Translation->Results->TranslationResult->TranslatedTerm))
        {
            return $r->parameters->Translation->Results->TranslationResult->TranslatedTerm;
        }
        else
        {
            echo "ахтунг\n";
            return false;
        }
 
 
    }
}
?>

а вызывать пользоваться этим безобразием теперь вообщем-то просто:

<?php
echo Bing_Translate_API::translate("text to translate","en","ru");
?>

Кроме того, выяснилось, что у Bing API есть ограничение на размер запроса примерно в 2кБ текста. А Примерно потому, что через раз он текст с размером 2048 символов не переводил, уж не знаю почему.

BingApiId получать по ссылке http://www.bing.com/developers/

З.Ы. я знаю что код кривой, и при малейшем чихе упадет, но делать ничего не буду, это есть пример 🙂

Опубликовал:

85 комментариев на «“Перевод текстов посредством Bing API (устарело)”»

  1. Klerance:

    у вас очень интересный блог. Спасибо!

  2. Спасибо автору.

    mb_strlen($text, ‘UTF-8’)

  3. k 1:

    не работает совсем — Fatal error: Uncaught SoapFault exception: [soapenv:Client] Client error in /home/seosmm/e2l.org/www/BingTranslator.php:32 Stack trace: #0 /home/seosmm/e2l.org/www/BingTranslator.php(32): SoapClient->__call(‘Search’, Array) #1 /home/seosmm/e2l.org/www/BingTranslator.php(32): SoapClient->Search(Array) #2 /home/seosmm/e2l.org/www/translate1.php(17): Bing_Translate_API::translate(‘? English li…’, ‘en’, ‘ru’) #3 {main} thrown in/home/seosmm/e2l.org/www/BingTranslator.php on line 32