public function translate(Request $request)
 {
     // валидация
     $paramsToValidate = array('phrase' => Input::get('phrase'));
     $validatorRules = array('phrase' => ['required']);
     $validator = Validator::make($paramsToValidate, $validatorRules);
     if ($validator->fails()) {
         return $this->response->validatorError($validator->messages());
     }
     // лог
     Stat::log('translation query');
     // форматируем фразу для дальнейшей работы
     $phraseFormatted = urldecode($request->phrase);
     $phraseFormatted = strtolower($phraseFormatted);
     // поиск в базе только в том случае, если длина фразы < @idiomMaxWordLength слов
     // в @idiomMaxWordLength слов может вписаться идиома
     $phraseWordsCount = count(explode(' ', $phraseFormatted));
     if ($phraseWordsCount < $this->idiomMaxWordLength) {
         $translation = Phrase::findByPhrase($phraseFormatted);
         if ($translation) {
             return $this->response->onSuccess(array('translation' => $translation->translate, 'meaning' => $translation->meaning));
         }
     }
     // если перевод не найден, ищем в гугле, и если гугл не находит перевод то выйдем
     $googleTranslation = GoogleApi::translate($phraseFormatted, 'enru');
     if (!$googleTranslation) {
         return $this->response->onError('no translation for:' . $request->phrase);
     }
     // поиск описания слова в vocabulary.com
     $translationVoc = false;
     if ($phraseWordsCount < $this->idiomMaxWordLength) {
         $translationVoc = VocabularyApi::translation($phraseFormatted);
     }
     // перед тем как вернуть результат, внесем его в базу
     $phraseMeaning = '';
     if ($translationVoc) {
         $phraseMeaning = "<p class=\"short\"> {$translationVoc['short']} </p><p class=\"long\"> {$translationVoc['long']} </p>";
     }
     $newPhrase = Phrase::create(array('phrase' => $phraseFormatted, 'translate' => $googleTranslation, 'meaning' => $phraseMeaning));
     // вернем результат
     return $this->response->onSuccess(array('translation' => $newPhrase->translate, 'meaning' => $newPhrase->meaning));
 }