/** * 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()); } }
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; } }
/** * 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); } } }
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>'; }
<?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.';
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(); }
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)); }
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(); }
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); }
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')); }