public function saveLanguageMetadata(Gpf_Db_Language $lang)
 {
     $lang->setName($this->language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_NAME));
     $lang->setEnglishName($this->language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_ENG_NAME));
     $lang->setActive(true);
     $lang->setAuthor($this->language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_AUTHOR));
     $lang->setVersion($this->language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_VERSION));
     $lang->setImported(Gpf_DbEngine_Database::getDateString());
     $lang->setDateFormat($this->language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_DATE_FORMAT));
     $lang->setTimeFormat($this->language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_TIME_FORMAT));
     $lang->setThousandsSeparator($this->language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_THOUSANDS_SEPARATOR));
     $lang->setDecimalSeparator($this->language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_DECIMAL_SEPARATOR));
     $lang->setTranslatedPercentage($this->language->getTranslationPercentage());
     $lang->setIsDefault(false);
     $lang->save();
 }
 public function recomputeTranslationPercentage($languageId)
 {
     $lang = new Gpf_Db_Language();
     $lang->setId($languageId);
     $lang->load();
     $fileName = Gpf_Lang_CsvLanguage::getAccountCsvFileName($language->getCode());
     $csvLanguage = new Gpf_Lang_CsvLanguage();
     $csvLanguage->loadFromCsvFile(new Gpf_Io_Csv_Reader($fileName));
     $lang->setTranslatedPercentage($csvLanguage->getTranslationPercentage());
     $lang->update(array(self::TRANSLATED_PERCENTAGE));
 }
 /**
  * Load metadata from imported language
  *
  * @service language import
  * @param Gpf_Rpc_Params $params
  * @return Gpf_Rpc_Form
  */
 public function loadCsvFileMetadata(Gpf_Rpc_Params $params)
 {
     $form = new Gpf_Rpc_Form($params);
     try {
         $file = new Gpf_Io_Csv_Reader($form->getFieldValue("Id"), ';', '"', array('source', 'translation', 'type', 'module', 'status', 'customer'));
         $language = new Gpf_Lang_CsvLanguage();
         $language->loadFromCsvFile($file);
         $form->setField('code', $language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_CODE));
         $form->setField('name', $language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_NAME));
         $form->setField('eng_name', $language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_ENG_NAME));
         $form->setField('author', $language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_AUTHOR));
         $form->setField('version', $language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_VERSION));
         $form->setField('translated', $language->getTranslationPercentage());
     } catch (Exception $e) {
         $form->setErrorMessage($this->_('Failed to import language file. Incorrect file format. (%s)', $e->getMessage()));
     }
     return $form;
 }
 /**
  * @service language write
  * @return Gpf_Rpc_Action
  */
 public function saveFields(Gpf_Rpc_Params $params)
 {
     $action = new Gpf_Rpc_Action($params);
     $action->setErrorMessage($this->_('Failed to save %s field(s)'));
     $action->setInfoMessage($this->_('%s field(s) successfully saved'));
     $language = new Gpf_Db_Language();
     $language->setId($action->getParam(Gpf_Db_Table_Languages::ID));
     $language->load();
     $csvFile = new Gpf_Io_Csv_Reader(Gpf_Lang_CsvLanguage::getAccountCsvFileName($language->getCode()));
     $csvLanguage = new Gpf_Lang_CsvLanguage();
     $csvLanguage->loadFromCsvFile($csvFile);
     $fields = new Gpf_Data_RecordSet();
     $fields->loadFromArray($action->getParam("fields"));
     foreach ($fields as $field) {
         $translation = new Gpf_Lang_Parser_Translation();
         $translation->setSourceMessage($field->get('id'));
         if ($csvLanguage->existTranslation($translation)) {
             $existingTranslation = $csvLanguage->getTranslation($translation);
             if ($existingTranslation->getStatus() == Gpf_Lang_Parser_Translation::STATUS_NOT_TRANSLATED) {
                 $existingTranslation->setStatus(Gpf_Lang_Parser_Translation::STATUS_TRANSLATED);
                 $csvLanguage->incrementTranslatedCount();
             }
             $existingTranslation->set($field->get("name"), $this->sourceCodeSpecialChars($field->get("value")));
         }
         $action->addOk();
     }
     $csvLanguage->exportAccountCache();
     $language->setTranslatedPercentage($csvLanguage->getTranslationPercentage());
     $language->save();
     return $action;
 }