Pull to refresh

Comments 20

Класс Yandex_Translate содержит три метода с говорящими названиями:
yandexGetLangsPairs() — получение доступных пар языков FROM->TO
yandexGet_FROM_Langs()
yandexGet_TO_Langs()

навеяло.
$Yandex_Translator->yandexGetYandexLangsYandexPairsYandex('Yandex');
$Yandex_Translator->yandex_Get_Yandex_Langs_Yandex_Pairs_Yandex('Yandex');
Поясните, пожалуйста, вы ярый противник camel case?
Или от такого подхода Yandex станет меньше в названии метода? :)
Я ярый противник использования и CamelCase, и подчёркивания для разделения слов в именах. Что-нибудь одно.
ИМХО codestyle тут решит. Согласитесь, же, что если в корпоративном стиле для классов у нас '_', все слова в переменных разделяются восьмеркой, а функции начинаются с заглавной буквы — все вроде бы нормально :D

Но это уже наболевшее, спасибо за ответ, просмотрел, что у автора классы так называются.
Я русский бы выучил только за то, что им разговаривал Яндекс.
а что делать если сайт написано не на php как исходники яндекса?
UFO just landed and posted this here
наверное, не проблема


Почему так неуверенно? json_encode($data) -> получаем нативный массив
Спасибо, отличный класс и давно хотел сравнить переводы с Bing
в исходном коде смутила проверка на возможность перевода, например не проверяется возможность перевода с русского на итальянский (ru-it), которой нет в возвращаемом json. поэтому не лучше ли было заменить эту конструкцию:

public function yandexTranslate($fromLang, $toLang, $text) {
        //один из языков должен быть ru - проверяем, хотя переводчик и так вернет текст - сообщение об ошибке

        if ($fromLang != 'ru' AND $toLang != 'ru'){
            return 'Sorry, translation directly from '.$fromLang.' to '.$toLang.' is impossible';
        }


следующей:

public function yandexTranslate($fromLang, $toLang, $text) {
        $langPair = $fromLang."-".$toLang;

        // проверяем возможность перевода с $fromLang на $toLang
        if (!in_array($langPair, $this->yandexGetLangsPairs())){
            return 'Sorry, translation directly from '.$fromLang.' to '.$toLang.' is impossible';
        }
Эта конструкция служит только для того, чтобы не дергать переводчик вследствие заведомо некорректных запросов.
Можно ее вообще в принципе убрать — в случае некорректной пары языков переводчик просто вернет текст с сообщением о невозможности ее обработать.
понятно. просто сама идея проверки не понравилась: наличие в langPair русского языка, (а вдруг впоследствии яндекс научится переводить не только с ru / на ru, или разучится как в примере с итальянским). в любом случае спасибо за статью.

кстати, а может имеет смысл поместить полученние массива langPairs в конструктор класса, и впоследствие уже сверять с имеющимся значением, или тоже лишняя нагрузка на переводчик?
Всё равно ни яндекс, ни бинг не альтернатива гуглу — набор языков совершенно неудовлетворительный…
Яндекс переводит с русского на русский. Долго осознавал глубину фразы!
Библиотека больше не работает.
Чтобы оживить нужно:
1. Получить ключ API api.yandex.ru/key/form.xml?service=trnsl
2. Заменить URL protected $rootURL = 'https://translate.yandex.net/api/v1.5/tr.json';
3. Передавать ключ с каждым запросом, обратно будет приходить JSON.
Да.
Я в самом ближайшем времени выложу на Гитхабе новую версию: для Яндекса и Гугла.
Константин, подскажите, пожалуйста, ссылку на GitHub. Там актуальная версия?
Sign up to leave a comment.

Articles