public function postSave($id = false)
 {
     #Helper::dd($entity);
     if (@$id) {
         Allow::permission($this->module['group'], 'edit');
     } else {
         Allow::permission($this->module['group'], 'create');
     }
     if (!Request::ajax()) {
         App::abort(404);
     }
     #$id = Input::get('id');
     $input = Input::all();
     if (Allow::action($this->module['group'], 'settings')) {
         $input['entity'] = Input::get('entity') ? 1 : NULL;
         $input['hide_slug'] = Input::get('hide_slug') ? 1 : NULL;
         $input['make_slug_from_name'] = Input::get('make_slug_from_name') > 0 ? (int) Input::get('make_slug_from_name') : NULL;
         $input['name_title'] = Input::get('name_title') ?: NULL;
         $input['view_access'] = is_numeric(Input::get('view_access')) ? (int) Input::get('view_access') : NULL;
         $input['sortable'] = Input::get('sortable') ? (int) Input::get('sortable') : 0;
         $input['sort_by'] = Input::get('sort_by') != 'order' ? Input::get('sort_by') : NULL;
     }
     $json_request['responseText'] = "<pre>" . print_r($_POST, 1) . "</pre>";
     #return Response::json($json_request,200);
     $json_request = array('status' => FALSE, 'responseText' => '', 'responseErrorText' => '', 'redirect' => FALSE);
     $validator = Validator::make($input, array('name' => 'required'));
     if ($validator->passes()) {
         $redirect = false;
         if ($id > 0 && NULL !== ($element = Dictionary::find($id))) {
             #$json_request['responseText'] = "<pre>" . print_r($_POST, 1) . "</pre>";
             #return Response::json($json_request,200);
             $element->update($input);
             $redirect = false;
         } else {
             $element = new Dictionary();
             $element->save();
             $element->update($input);
             $dic_id = $element->id;
             $redirect = action('dicval.index', array('dic_id' => $dic_id));
         }
         ## Clear & reload dics cache
         Dic::drop_cache();
         Dic::preload();
         $json_request['responseText'] = 'Сохранено';
         if ($redirect) {
             $json_request['redirect'] = $redirect;
         }
         $json_request['status'] = TRUE;
     } else {
         $json_request['responseText'] = 'Неверно заполнены поля';
         $json_request['responseErrorText'] = $validator->messages()->all();
     }
     return Response::json($json_request, 200);
 }
 public function translateStrings(&$arr)
 {
     if (CLI) {
         echo "Translation language package strings:" . PHP_EOL;
     }
     //$orgArr = $arr;
     //$this->loadPack($orgArr);
     require_once 'Dictionary.php';
     $lang = $this->lang;
     $locale = explode("_", $lang);
     $target_lang = strtolower($locale[0]);
     $dictionary = new Dictionary('en', $target_lang);
     if ($this->systemOnly == false) {
         foreach (array("Module", "Theme") as $mainKey) {
             if (!isset($arr[$mainKey])) {
                 continue;
             }
             foreach ($arr[$mainKey] as $key => $value) {
                 $module_name = strtolower($key);
                 foreach ($arr[$mainKey][$key] as $section => $value) {
                     $str_count = count($arr[$mainKey][$key][$section]);
                     $i = 0;
                     foreach ($arr[$mainKey][$key][$section] as $str_key => $str_value) {
                         $i++;
                         $str_value_translated = $dictionary->translate($str_value);
                         if ($str_value_translated) {
                             $arr[$mainKey][$key][$section][$str_key] = $str_value_translated;
                             if (CLI) {
                                 if ($target_lang == 'zh') {
                                     $str_value_translated = iconv("UTF-8", "GB2312", $str_value_translated);
                                 }
                                 echo " {$key}: (" . sprintf('%0' . strlen($str_count) . 'd', $i) . "/{$str_count}) Translation string : {$str_value} => {$str_value_translated}" . PHP_EOL;
                             }
                         }
                     }
                 }
             }
         }
     }
     //if ($this->module == '*') {
     if ($this->systemOnly) {
         //load system.ini
         if (CLI) {
             echo "Translation System strings:" . PHP_EOL;
         }
         $module_name = "SYSTEM";
         $module_filename = OPENBIZ_APP_PATH . DIRECTORY_SEPARATOR . "languages" . DIRECTORY_SEPARATOR . $this->lang . DIRECTORY_SEPARATOR . "system.ini";
         if (is_file($module_filename)) {
             //$strArr = parse_ini_file($module_filename,1);
             //foreach($strArr as $key=>$value){
             foreach ($arr["System"] as $key => $value) {
                 $i = 0;
                 $str_count = count($arr["System"][$key]);
                 foreach ($value as $str_key => $str_value) {
                     $i++;
                     $str_value_translated = $dictionary->translate($str_value);
                     if ($str_value_translated) {
                         $arr["System"][$key][$str_key] = $str_value_translated;
                         if ($target_lang == 'zh') {
                             $str_value_translated = iconv("UTF-8", "GB2312", $str_value_translated);
                         }
                         echo " {$key}: (" . sprintf('%0' . strlen($str_count) . 'd', $i) . "/{$str_count}) Translation string : {$str_value} => {$str_value_translated}" . PHP_EOL;
                     }
                 }
             }
         }
     }
     if (CLI) {
         echo PHP_EOL;
     }
     // update dictionary file
     $dictionary->update();
     return $arr;
 }