_module = Prado::getApplication()->getGlobalization(FALSE); $this->_catalogue = $catalogue; } private $_language = NULL; function setLanguage(/* ... */) { $this->_source = NULL; $langs = array_filter(func_get_args()); if ($langs) { $availableLangs = $this->_module->AllowedCultures; foreach ($langs as $lang) { if (in_array($lang, $availableLangs)) { $this->_language = $lang; return; } } throw new TInvalidDataValueException( Prado::localize( 'Languages [{lang}] not available', ['lang' => implode(',', $langs)] ) ); } else { $this->_language = NULL; } } function setEncoding($encoding) { $this->_charset = $encoding; } function useDomain($domain) { $this->_catalogue = $domain; } private $_variables = []; function setVar($key, $value) { $this->_variables[$key] = $value; } function translate($key, $htmlescape=TRUE) { $key = preg_replace('/\$(\{.*\})/', '\1', $key); if ($this->_language) { if (!$this->_source) { $appConfig = Prado::getApplication()->getGlobalization()->getTranslationConfiguration(); $this->_source = MessageSource::factory($appConfig['type'], $appConfig['source'], $appConfig['filename']); $this->_source->setCulture($this->_language); } $this->_formatter = new MessageFormat( $this->_source, $this->_charset ?: Prado::getApplication()->getGlobalization()->getCharset() ); $variables = []; foreach ($this->_variables as $varKey => $value) { $variables['{' . $varKey . '}'] = $value; } return $this->_formatter->format($key, $variables, $this->_catalogue); } else { return Prado::localize($key, $this->_variables); } } } ?>