Beispiel #1
0
function __($phrase, array $replacePhrase = [])
{
    $thisLang = Lang::locale();
    $arrayTranslate = Trans::fillCacheTrans();
    if (isset($arrayTranslate[$phrase][$thisLang])) {
        $phrase = $arrayTranslate[$phrase][$thisLang];
    } else {
        $phrase = Trans::generateTranslation($phrase, $thisLang);
    }
    if (count($replacePhrase)) {
        $phrase = str_replace(array_keys($replacePhrase), array_values($replacePhrase), $phrase);
    }
    return $phrase;
}
Beispiel #2
0
 public static function generateTranslation($phrase, $thisLang)
 {
     if ($phrase && $thisLang) {
         $checkPresentPhrase = self::where("phrase", "like", $phrase)->first();
         if (!isset($checkPresentPhrase->id)) {
             $newPhrase = self::create(["phrase" => $phrase]);
             try {
                 $langsDef = Config::get('translations::config.def_locale');
                 $langsAll = Config::get('translations::config.alt_langs');
                 foreach ($langsAll as $lang) {
                     $lang = str_replace("ua", "uk", $lang);
                     $langsDef = str_replace("ua", "uk", $langsDef);
                     $translator = new Translator(Config::get('builder::translate_cms.api_yandex_key'));
                     $translation = $translator->translate($phrase, $langsDef . '-' . $lang);
                     $lang = str_replace("uk", "ua", $lang);
                     if (isset($translation->getResult()[0])) {
                         Translate::create(["id_translations_phrase" => $newPhrase->id, "lang" => $lang, "translate" => $translation->getResult()[0]]);
                     } else {
                         return "error.No get results";
                     }
                 }
             } catch (Yandex\Translate\Exception $e) {
                 return $e->getMessage();
                 // handle exception
             }
             self::reCacheTrans();
             $arrayTranslate = Trans::fillCacheTrans();
             if (isset($arrayTranslate[$phrase][$thisLang])) {
                 $phraseReturn = $arrayTranslate[$phrase][$thisLang];
             } else {
                 $phraseReturn = "Ошибка перевода";
             }
             return $phraseReturn;
         } else {
             $translatePhrase = Translate::where("id_translations_phrase", $checkPresentPhrase->id)->where("lang", "like", $thisLang)->first();
             if (isset($translatePhrase->translate)) {
                 return $translatePhrase->translate;
             }
         }
     }
 }