public function execute($params) { $lang = $params[0]; if (!in_array($lang, Config::getAllLangs())) { throw new Exception('Specified lang is not part of this project handled languages'); } foreach (FileUtils::getAllFiles(APP_ROOT . 'app/' . APP_NAME) as $file) { $result = preg_match_all('`(?:__|_e)\\(\'(.+)\'(?:,array\\(.+\\))?\\)`sU', file_get_contents($file), $matches); foreach ($matches[1] as $elem) { $nbfound++; __(str_replace("\\'", "'", $elem)); } } $arr = T::getInstance($lang)->getStrings(); T::getInstance($lang)->save(true); }
/** * * Get Alternate Languages (i.e. all languages that are handled by the application except the default language) * * @access public * @static * */ public static function getAlternateLangs() { $l = Config::getAllLangs(); $cur = array_search(self::get('defaultLang'), $l); unset($l[$cur]); return $l; }
public function testprepareTranslationRecords() { // Main tests $langs = Config::getAllLangs(); $t = DB_DataObject::factory('formtest'); $t->get(2); $res = $t->getPlugin('international')->prepareTranslationRecords($t, $langs); $this->assertTrue(is_a($res['fr'], 'DataObjects_Formtest_i18n')); $this->assertTrue(is_a($res['en'], 'DataObjects_Formtest_i18n')); $this->assertTrue(is_a($res['es'], 'DataObjects_Formtest_i18n')); $this->assertEqual($res['fr']->fb_elementNamePostfix, '_fr'); $this->assertEqual($res['en']->titre, 'element two'); $this->assertEqual($res['fr']->fb_fieldAttributes['titre'], 'size="50" lang="fr"'); $this->assertEqual($res['es']->fb_fieldAttributes['description'], 'class="red" lang="es"'); // Testing elementnamepostfix is OK $t = DB_DataObject::factory('formtest'); $t->get(2); $t->fb_elementNamePostfix = '_test'; $res = $t->getPlugin('international')->prepareTranslationRecords($t, $langs); $this->assertEqual($res['fr']->fb_elementNamePostfix, '_test_fr'); // Testing with a new record (no pk) $t = DB_DataObject::factory('formtest'); $res = $t->getPlugin('international')->prepareTranslationRecords($t, $langs); $this->assertTrue(is_a($res['fr'], 'DataObjects_Formtest_i18n')); $this->assertTrue(is_a($res['en'], 'DataObjects_Formtest_i18n')); $this->assertTrue(is_a($res['es'], 'DataObjects_Formtest_i18n')); // Testing with fewer langs $t = DB_DataObject::factory('formtest'); $res = $t->getPlugin('international')->prepareTranslationRecords($t, array('en', 'es')); $this->assertFalse(is_a($res['fr'], 'DataObjects_Formtest_i18n')); $this->assertTrue(is_a($res['en'], 'DataObjects_Formtest_i18n')); $this->assertTrue(is_a($res['es'], 'DataObjects_Formtest_i18n')); }
/** * fetches and returns an associative array of all translated values for $obj's $field for every installed * languages. * @param $obj DB_DataObject * @param $field string object's field name * @return array translated values array('en'=>$string,'es'=>$string, etc...) * Only returns translated values (i.e. not translated field returns an empty array) **/ function getPoly(&$obj, $field) { if (!$obj->pk()) { return array(); } $translateDO =& DB_DataObject::factory($obj->tableName() . '_l10n'); foreach (Config::getAllLangs() as $lang) { $out[$lang] = ''; } $translateDO->l10n_record_id = $obj->pk(); if ($translateDO->find()) { while ($translateDO->fetch()) { $out[$translateDO->l10n_lang] = $translateDO->{$field}; } } return $out; }