Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2016, 11:25   #1
seozzzam
Новичок
Джуниор
 
Регистрация: 05.10.2016
Сообщений: 11
По умолчанию Правка в коде переводчика.

Привет!

На днях переводчик бббиндддд - его за ногу, отключил старое АПИ V1
я нашел вариант скрипта переводчика, использует версию v2
как раз то что в спецификации АПИ - https://msdn.microsoft.com/en-us/lib...spx#phpexample

вроде все в скрипте соответствует апи бинга на данный момент, кое что добавил в нем... ура работает, но есть некоторые моменты, собственно я прошу помощи их решить.

1. Как устранить эту проблему (если перегрузить или нажать F5 в 50% случаев не выводит перевод в браузер, от чего такое?)
2. Как мне сделать если вдруг нет связи с АПИ бинга или он по какой-то причине блокировка/глюки на его стороне бинг апи, не сможет перевести предложение то мне нужно чтобы в таком случае в браузер всегда возвращало исходный текст перевода (не переведенное предложение) - это на всякий случай.



вот код, внизу скрипта с английского на русский переводит слово home


PHP код:

<?php
 
$your_client_id 
'0750facb-bb29-43b4-a629-42603c2efbea';
$your_secret 'I3GDuMftmn4pTeUTiJgJp0VGNbEkfDbBgwFDC7eb6E0';
 
 
 
    class 
BingTranslation
    
{
        public 
$clientID;
        public 
$clientSecret;
        
        public function 
__construct($cid$secret)
        {
            
$this->clientID $cid;
            
$this->clientSecret $secret;
        }
            
        public function 
get_access_token()
        {   
            
//if access token is not expired and is stored in COOKIE
            
if(isset($_COOKIE['bing_access_token']))
                return 
$_COOKIE['bing_access_token'];
        
            
// Get a 10-minute access token for Microsoft Translator API.
            
$url 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13';
            
$postParams 'grant_type=client_credentials&client_id='.urlencode($this->clientID).
            
'&client_secret='.urlencode($this->clientSecret).'&scope=http://api.microsofttranslator.com';
            
            
$ch curl_init();
            
curl_setopt($chCURLOPT_URL$url); 
            
curl_setopt($chCURLOPT_POSTFIELDS$postParams);
            
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);  
            
$rsp curl_exec($ch); 
            
$rsp json_decode($rsp);
            
$access_token $rsp->access_token;
            
            
setcookie('bing_access_token'$access_token$rsp->expires_in);
            
            return 
$access_token;
        }
 
        
        public function 
translate($word$from$to)
        {
            
$access_token $this->get_access_token();
            
$url 'http://api.microsofttranslator.com/V2/Http.svc/Translate?text='.$word.'&from='.$from.'&to='.$to;
            
            
$ch curl_init();
            
curl_setopt($chCURLOPT_URL$url); 
            
curl_setopt($chCURLOPT_HTTPHEADER, array('Authorization:bearer '.$access_token));
            
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);  
            
$rsp curl_exec($ch); 
            
            
preg_match_all('/<string (.*?)>(.*?)<\/string>/s'$rsp$matches);
            return 
$matches[2][0];
        }
    }
    
    
    
//usage example
    
$bt = new BingTranslation($your_client_id$your_secret);
    echo 
$bt->translate('home''en''ru');
?>
seozzzam вне форума Ответить с цитированием
Старый 05.10.2016, 12:37   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от seozzzam Посмотреть сообщение
Как мне сделать если вдруг нет связи с АПИ бинга или он по какой-то причине блокировка/глюки на его стороне бинг апи, не сможет перевести предложение то мне нужно чтобы в таком случае в браузер всегда возвращало исходный текст перевода (не переведенное предложение) - это на всякий случай.
Читать документацию curl, обрабатывать HTTP ошибки.
И читать документацию API про формат ответов, обрабатывать его ошибки (если оно их сообщает не просто через HTTP коды ответа).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.10.2016, 12:44   #3
seozzzam
Новичок
Джуниор
 
Регистрация: 05.10.2016
Сообщений: 11
По умолчанию

Спасибо, но причем тут curl
в браузер не выводит ошибку, просто не выводит переведенный текст и все - пустая страница
, успешно переводит в 50 проц. случаев это если перегружать страницу снова и снова много раз
seozzzam вне форума Ответить с цитированием
Старый 05.10.2016, 12:55   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну если "вдруг нет связи", то curl выдаст ошибку.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.10.2016, 13:11   #5
seozzzam
Новичок
Джуниор
 
Регистрация: 05.10.2016
Сообщений: 11
По умолчанию

2. Как мне сделать если вдруг нет связи с АПИ бинга или он по какой-то причине блокировка/глюки на его стороне бинг апи, не сможет перевести предложение то мне нужно чтобы в таком случае в браузер всегда возвращало исходный текст перевода (не переведенное предложение) - это на всякий случай.
seozzzam вне форума Ответить с цитированием
Старый 05.10.2016, 13:18   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И? Зачем вы скопипастили это? Про это и есть ответ выше.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.10.2016, 17:27   #7
seozzzam
Новичок
Джуниор
 
Регистрация: 05.10.2016
Сообщений: 11
По умолчанию

Alex11223 приведите пример пожалуйста как использовать в моей ситуации
curl для решения данного вопроса.
seozzzam вне форума Ответить с цитированием
Старый 05.10.2016, 18:23   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Начните с чтения http://php.net/manual/en/function.curl-exec.php, особенно про возвращаемое знание.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.10.2016, 18:45   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

curl_error
libcurl error codes
Andkorol вне форума Ответить с цитированием
Старый 06.10.2016, 18:05   #10
Edward_Freedom
Новичок
Джуниор
 
Регистрация: 01.10.2010
Сообщений: 2
По умолчанию

От того, что ты создал свой вопрос на всех форумах, ответов больше не появится. Бесплатно никто не будет ничего делать

Последний раз редактировалось Edward_Freedom; 06.10.2016 в 18:08.
Edward_Freedom вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг гугл-переводчика: simple HTML DOM и/или cURL? Artkuznya PHP 2 19.07.2013 12:54
Анкета переводчика nikagru PHP 2 24.11.2012 13:11
Учиться ли на переводчика? jezzit Свободное общение 7 26.10.2011 00:19
инструментарий для переводчика на C# Lawina Помощь студентам 0 11.05.2011 14:17
Второе высшее переводчика fs444 Свободное общение 4 24.04.2010 23:14