Пример #1
0
 /**
  * Implementation for 'POST' method for Rest API
  *
  * @param  mixed $trnCategory, $trnId, $trnLang Primary key
  *
  * @return array $result Returns array within multiple records or a single record depending if
  *                       a single selection was requested passing id(s) as param
  */
 protected function post($trnCategory, $trnId, $trnLang, $trnValue, $trnUpdateDate)
 {
     try {
         $result = array();
         $obj = new Translation();
         $obj->setTrnCategory($trnCategory);
         $obj->setTrnId($trnId);
         $obj->setTrnLang($trnLang);
         $obj->setTrnValue($trnValue);
         $obj->setTrnUpdateDate($trnUpdateDate);
         $obj->save();
     } catch (Exception $e) {
         throw new RestException(412, $e->getMessage());
     }
 }
Пример #2
0
 public function translate($s)
 {
     global $language_data;
     if (isset($language_data) and isset($language_data[$s])) {
         return $language_data[$s];
     } else {
         global $config, $home_dir, $db;
         if ($config['debug_mode']) {
             require_once $home_dir . 'models/translation.m.php';
             require_once $home_dir . 'models/language.m.php';
             $language = new Language($db);
             $language->loadByCode($language_data['language_code']);
             $t = new Translation($db);
             $t->load($language->ival('language_id'), $s);
             if (!$t->is_loaded) {
                 $t->data['translation_name'] = $s;
                 $t->data['translation_language_id'] = $language->ival('language_id');
                 $t->save();
             }
         }
         return $s;
     }
 }
Пример #3
0
 /**
  * returns an array with
  * codError      0 - no error, < 0 error
  * rowsAffected  0,1 the number of rows affected
  * message       message error.
  */
 function addTranslation($category, $id, $languageId, $value)
 {
     //if exists the row in the database propel will update it, otherwise will insert.
     $tr = TranslationPeer::retrieveByPK($category, $id, $languageId);
     if (!(is_object($tr) && get_class($tr) == 'Translation')) {
         $tr = new Translation();
     }
     $tr->setTrnCategory($category);
     $tr->setTrnId($id);
     $tr->setTrnLang($languageId);
     $tr->setTrnValue($value);
     $tr->setTrnUpdateDate(date('Y-m-d'));
     if ($tr->validate()) {
         // we save it, since we get no validation errors, or do whatever else you like.
         $res = $tr->save();
     } else {
         // Something went wrong. We can now get the validationFailures and handle them.
         $msg = '';
         $validationFailuresArray = $tr->getValidationFailures();
         foreach ($validationFailuresArray as $objValidationFailure) {
             $msg .= $objValidationFailure->getMessage() . "\n";
         }
         return array('codError' => -100, 'rowsAffected' => 0, 'message' => $msg);
     }
     return array('codError' => 0, 'rowsAffected' => $res, 'message' => '');
     //to do: uniform  coderror structures for all classes
 }
 public static function resetLang(Language $language, $pages = [], $level = 1)
 {
     /*
     @level
         - level 1 : adds only non existing values
         - level 2 : reset everything
     */
     // create new language config file
     foreach ($language->getLanguageList() as $lang_temp) {
         // check if lang dir exists
         $langDir = './languages/' . $lang_temp;
         if (!file_exists($langDir)) {
             mkdir($langDir, 0755);
         }
         $targets = array_merge(self::listTemplates(), self::listPages());
         foreach ($targets as $target) {
             // store found items
             $items = [];
             // name of the file
             $name = $target['filename'];
             $translation = new Translation();
             if ($level == 1) {
                 // get existing translations from file
                 $translation->setList($language, $name);
             }
             if ($name == 'main') {
                 // main is a built in file which is generated manually (for now)
                 // it contains global translations
                 #$translation->addItem('%head-title%', '');
                 #$translation->addItem('%head-author%', '');
                 #$translation->addItem('%head-description%', '');
                 #$translation->addItem('%head-keywords%', '');
                 $items['%head-title%'] = '';
                 $items['%head-author%'] = '';
                 $items['%head-description%'] = '';
                 $items['%head-keywords%'] = '';
                 foreach ($pages as $temp) {
                     #$translation->addItem('%page-'.$temp.'-title%', '');
                     $items['%page-' . $temp . '-title%'] = '';
                 }
                 foreach ($language->getLanguageList() as $temp) {
                     #$translation->addItem('%lang-'.$temp.'-name%', '');
                     $items['%lang-' . $temp . '-name%'] = '';
                 }
             } else {
                 // need to read to tpl file to get each entries
                 $file = $target['dirname'] . '/' . $target['basename'];
                 if (file_exists($file)) {
                     preg_match_all("#%[a-z\\-0-9]+%#isU", file_get_contents($file), $matches);
                     if (is_array($matches[0])) {
                         foreach ($matches[0] as $match) {
                             #$translation->addItem($match, '');
                             $items[$match] = '';
                         }
                     }
                 }
             }
             if ($level == 1) {
                 // clean files from unused translations
                 $temp = $translation->getList();
                 foreach ($items as $key => $value) {
                     if (isset($temp[$key]) && !empty($temp[$key])) {
                         $items[$key] = $temp[$key];
                     }
                 }
             }
             // force list setup
             $translation->setListBypass($items);
             // set a type based on the file location
             if (file_exists('./view/pages/' . $target['basename'])) {
                 $translation->setType(Translation::TYPE_PAGE);
             } else {
                 if (file_exists('./view/templates/' . $target['basename'])) {
                     $translation->setType(Translation::TYPE_TEMPLATE);
                 } else {
                     $translation->setType(Translation::TYPE_UNDEFINED);
                 }
             }
             $translation->save($lang_temp, $name);
         }
     }
 }
Пример #5
0
 function onSubmit($vals)
 {
     $collection = $vals['_collection'];
     $status = $vals['_status'];
     $key = $vals['_key'];
     $lang = $vals['_lang'];
     unset($vals['_collection']);
     unset($vals['_status']);
     unset($vals['_key']);
     unset($vals['_lang']);
     unset($vals['_header']);
     unset($vals['submit_button']);
     foreach ($vals as $k => $v) {
         if (empty($v)) {
             unset($vals[$k]);
         }
     }
     $tr = new Translation($collection, $lang);
     $id = $tr->getID($key);
     if (!$id) {
         $tr->add($key, $status, $vals);
     } else {
         $tr->save($key, $status, $vals);
     }
     page_title(intl_get('Translation Saved'));
     echo '<p><a href="' . site_prefix() . '/index/multilingual-app">' . intl_get('Continue') . '</a></p>';
 }
Пример #6
0
<?php

global $home_dir, $language_data;
require_once $home_dir . 'classes/localization.php';
require_once $home_dir . 'models/translation.m.php';
require_once $home_dir . 'models/language.m.php';
$localization = new Localization($home_dir . 'lang/');
$language = new Language($db);
$language->loadByCode($language_data['language_code']);
foreach ($language_data as $name => $translation) {
    $t = new Translation($db);
    $t->load($language->ival('language_id'), $name);
    $t->data['translation_name'] = $name;
    $t->data['translation_translation'] = $translation;
    $t->data['translation_language_id'] = $language->ival('language_id');
    $t->save();
}
echo 'Language imported.';
Пример #7
0
 public static function addOrUpdateString($sStringKey, $sContent, $sLanguageId = null)
 {
     if ($sLanguageId === null) {
         $sLanguageId = Session::language();
     }
     $oString = TranslationQuery::create()->findPk(array($sLanguageId, $sStringKey));
     if (!$sContent) {
         if ($oString !== null) {
             $oString->delete();
         }
         return;
     }
     if ($oString === null) {
         $oString = new Translation();
         $oString->setLanguageId($sLanguageId);
         $oString->setStringKey($sStringKey);
     }
     $oString->setText($sContent);
     $oString->save();
 }
Пример #8
0
 public function generateAction()
 {
     if (!empty($_POST)) {
         require_once MODEL . 'Translation.php';
         $translation = new Translation();
         foreach ($_POST as $variable => $languages) {
             $translation->languages = $languages;
             $translation->variable = $variable;
             $translation->save();
         }
     }
     $this->generate();
     Header::location(UrlFactory::module($this->module));
 }
Пример #9
0
 public function saveData($aTagData)
 {
     $aTagData['name'] = StringUtil::normalize($aTagData['name']);
     if ($this->iTagId === null) {
         $oTag = new Tag();
     } else {
         $oTag = TagQuery::create()->findPk($this->iTagId);
     }
     $this->validate($aTagData);
     if (!Flash::noErrors()) {
         throw new ValidationException();
     }
     $sStringName = "tag.{$aTagData['name']}";
     if ($oTag->getName() !== $aTagData['name']) {
         //Rename Strings for the tag
         $sOldStringName = "tag.{$oTag->getName()}";
         foreach (TranslationQuery::create()->filterByStringKey($sOldStringName)->find() as $oString) {
             $sLanguageId = $oString->getLanguageId();
             //You can’t technically rename strings because string_key is the PKEY so we delete it and re-generate
             $oString->delete();
             $oString = new Translation();
             $oString->setStringKey($sStringName);
             $oString->setLanguageId($sLanguageId);
             $oString->save();
         }
         $oTag->setName($aTagData['name']);
     }
     foreach ($aTagData['edited_languages'] as $iIndex => $sLanguageId) {
         TranslationPeer::addOrUpdateString($sStringName, $aTagData['text'][$iIndex], $sLanguageId);
     }
     $oTag->save();
 }
Пример #10
0
 public function saveData($aStringData)
 {
     $this->validate($aStringData);
     if (!Flash::noErrors()) {
         throw new ValidationException();
     }
     $oConnection = Propel::getConnection();
     foreach (LanguageQuery::create()->orderById()->find() as $oLanguage) {
         $oUpdateCriteria = new Criteria();
         $oUpdateCriteria->add(TranslationPeer::LANGUAGE_ID, $oLanguage->getId());
         $oUpdateCriteria->add(TranslationPeer::STRING_KEY, $this->sStringId);
         if (isset($aStringData['text_' . $oLanguage->getId()])) {
             $sText = trim($aStringData['text_' . $oLanguage->getId()]);
             $oString = TranslationQuery::create()->findPk(array($oLanguage->getId(), $this->sStringId));
             if ($sText === '') {
                 if ($oString !== null) {
                     $oString->delete();
                 }
                 continue;
             }
             if ($oString === null) {
                 $oString = new Translation();
                 $oString->setLanguageId($oLanguage->getId());
                 $oString->setStringKey($aStringData['string_key']);
             } else {
                 if ($this->sStringId !== null && $this->sStringId !== $aStringData['string_key']) {
                     $oString->setStringKey($aStringData['string_key']);
                     BasePeer::doUpdate($oUpdateCriteria, $oString->buildCriteria(), $oConnection);
                 }
             }
             $oString->setText($sText);
             $oString->save();
         } else {
             $oString = TranslationQuery::create()->findPk(array($oLanguage->getId(), $this->sStringId));
             if ($oString === null) {
                 continue;
             }
             if ($this->sStringId !== null && $this->sStringId !== $aStringData['string_key']) {
                 $oString->setStringKey($aStringData['string_key']);
                 BasePeer::doUpdate($oUpdateCriteria, $oString->buildCriteria(), $oConnection);
             }
         }
     }
     // check sidebar reload criteria
     $sNameSpaceOld = TranslationPeer::getNameSpaceFromStringKey($this->sStringId);
     $sNameSpaceNew = TranslationPeer::getNameSpaceFromStringKey($aStringData['string_key']);
     // if both are the same the sidebar is not effected
     $bSidebarHasChanged = false;
     if ($sNameSpaceOld !== $sNameSpaceNew) {
         // if there was an old name space then we have to check whether it was the last string with this namespace
         if ($sNameSpaceOld !== null && !TranslationPeer::nameSpaceExists($sNameSpaceOld)) {
             $bSidebarHasChanged = true;
         }
         // if the new exits only once it has been created and the sidebar needs to be relaoded
         if ($sNameSpaceNew !== null && TranslationPeer::countNameSpaceByName($sNameSpaceNew) === 1) {
             $bSidebarHasChanged = true;
         }
     }
     $this->sStringId = $aStringData['string_key'];
     return array('id' => $this->sStringId, self::SIDEBAR_CHANGED => $bSidebarHasChanged);
 }
Пример #11
0
 public function actionTransupdate()
 {
     /* @var $word Translation */
     /* @var $lngObject TranslationLng */
     //get id from request
     $id = Yii::app()->request->getParam('id', null);
     // get word array
     $words = Yii::app()->request->getParam('word', null);
     // get label
     $label = Yii::app()->request->getParam('label', null);
     $word = null;
     if ($id == null) {
         $word = new Translation();
         $word->save();
     } else {
         $word = Translation::model()->findByPk($id);
     }
     //update lng objects
     foreach (Constants::GetLngArray() as $lngIndex => $lng) {
         $lngObject = $word->getLng($lng);
         $lngObject->word = $words[$lng];
         if ($lngObject->isNewRecord) {
             $lngObject->save();
         } else {
             $lngObject->update();
         }
     }
     $word->label = $label;
     $word->status = Constants::STATUS_VISIBLE;
     $word->update();
     //redirect to list
     $this->redirect($this->createUrl('/admin/panel/translations'));
 }