protected function execute()
 {
     $lang = $this->loadLanguage();
     $file = new Gpf_Io_Csv_Reader($this->fileName, ';', '"', array('source', 'translation', 'type', 'module', 'status', 'customer'));
     $this->language = new Gpf_Lang_CsvLanguage();
     $this->language->loadFromCsvFile($file);
     $pendingMessage = $this->_('Importing language dictionary %s (%s)', $this->language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_NAME), $this->language->getMetaValue(Gpf_Lang_CsvLanguage::LANG_ENG_NAME));
     if ($this->saveMetadata) {
         if ($this->isPending('saveMetadata', $pendingMessage)) {
             $this->saveLanguageMetadata($lang);
             $this->setDone();
         }
     }
     if ($this->isPending('loadCustomTranslations', $pendingMessage)) {
         $this->loadCustomTranslations($this->language);
         $this->setDone();
     }
     if ($this->isPending('backupOriginalTranslation', $pendingMessage)) {
         $this->backupOriginalTranslation($this->language);
         $this->setDone();
     }
     if ($this->isPending('exportCache', $this->_('Exporting dictionary cache.'))) {
         $this->language->exportAccountCache();
         $this->setDone();
     }
 }
 /**
  * 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;
 }