예제 #1
0
 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));
 }
예제 #2
0
 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();
 }