public function actionTranslate() { if (!Yii::app()->request->isPostRequest) { throw new CHttpException(403, 'Forbidden'); } if (empty($_POST) || !array_key_exists('form', $_POST) || !array_key_exists('text_id', $_POST['form']) || !array_key_exists('text_translate', $_POST['form']) || !is_array($_POST['form']['text_translate'])) { throw new CHttpException(403, 'Forbidden'); } $text = Translate::model()->findByPk($_POST['form']['text_id']); if ($text == NULL) { throw new CHttpException(403, 'Forbidden'); } $isChange = FALSE; $textTranslated = $_POST['form']['text_translate']; $langs = Langs::model()->findAll(); foreach ($langs as $lang) { if (array_key_exists($lang->alias, $textTranslated)) { $translateLang = TranslateLang::model()->find('translate__id=:translate__id AND lang=:lang', array(':translate__id' => $text->id, ':lang' => $lang->alias)); if ($translateLang == NULL) { $translateLang = new TranslateLang(); $translateLang->translate__id = $text->id; $translateLang->lang = $lang->alias; } if ($translateLang->translate != $textTranslated[$translateLang->lang]) { $isChange = TRUE; $translateLang->translate = $textTranslated[$translateLang->lang]; if (!$translateLang->save()) { Yii::trace('TRANSLATE EDIT SAVE FATAL ERROR. CODE#1: ' . var_export($translateLang->getErrors(), TRUE)); throw new CException('Ошибка сохранения перевода', E_USER_ERROR); } } } } if ((bool) $isChange) { if ($text->object_type == Translate::OBJECT_TYPE_STATIC_JAVASCRIPT) { Translate::fileRegenerateJavascript(); } else { Translate::fileRegenerate(); } } echo CJSON::encode(array('result' => $isChange, 'texts' => $textTranslated)); }
public static function saveTranslateForJavascript($text) { $translate = new Translate(); $translateLang = new TranslateLang(); $translate->text = $text; $translate->category = 'javascript'; $translate->context = (string) FALSE; $translate->guid = Translate::setNewGuid($translate->text, $translate->category, $translate->context); $translate->object_type = Translate::OBJECT_TYPE_STATIC_JAVASCRIPT; if (!$translate->save()) { Yii::trace('JAVASCRIPT LANGS COLLECTION ERROR. CODE#1: ' . var_export($translate->getErrors(), TRUE)); } $translateLang->translate__id = $translate->id; $translateLang->lang = Yii::app()->sourceLanguage; $translateLang->translate = $text; if (!$translateLang->save()) { Yii::trace('JAVASCRIPT LANGS COLLECTION ERROR. CODE#2: ' . var_export($translateLang->getErrors(), TRUE)); } Translate::fileRegenerateJavascript(); }