From f1c5b6c282e34a9e6b5c140371acd623c7b50d60 Mon Sep 17 00:00:00 2001 From: emkael Date: Mon, 31 Oct 2016 21:57:54 +0100 Subject: * mail templating module --- app/frontend/mail/MailTemplateTranslator.php | 80 ++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 app/frontend/mail/MailTemplateTranslator.php (limited to 'app/frontend/mail/MailTemplateTranslator.php') diff --git a/app/frontend/mail/MailTemplateTranslator.php b/app/frontend/mail/MailTemplateTranslator.php new file mode 100644 index 0000000..0e9d7c9 --- /dev/null +++ b/app/frontend/mail/MailTemplateTranslator.php @@ -0,0 +1,80 @@ +_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); + } + } + +} + +?> -- cgit v1.2.3