/**
  * Singleton loader
  *
  * @return JwTranslations_Loader
  */
 public static function fetch()
 {
     if (!isset(self::$instance)) {
         $c = __CLASS__;
         self::$instance = new $c();
     }
     return self::$instance;
 }
 /**
  * Parses perch:trans tag structure for attributes
  *
  * @param $opening_tag
  * @return array
  */
 private function parse_tags($opening_tag)
 {
     $TranslationHelper = JwTranslations_Loader::fetch();
     $Tag = new PerchXMLTag($opening_tag);
     $translation_key = $Tag->id();
     $translation_lang = strtolower($Tag->lang() ? $Tag->lang() : PERCH_TRANSLATION_LANG);
     $translation_default_message = $Tag->default() ? $Tag->default() : null;
     $value_string = $TranslationHelper->get_translation($translation_key, $translation_lang, $translation_default_message);
     return array('key' => $translation_key, 'value' => $this->parse_placeholders($value_string, $Tag));
 }
Пример #3
0
/**
 * Get translation string
 *
 * @param $id
 * @param array $opts
 * @param bool|false $return
 * @return array|mixed|null
 */
function get_translation($id, array $opts = array(), $return = false)
{
    $defaults = array('default' => null, 'lang' => PERCH_TRANSLATION_LANG, 'placeholders' => false);
    $opts = array_merge($defaults, $opts);
    $TranslationHelper = JwTranslations_Loader::fetch();
    $value_string = $TranslationHelper->get_translation($id, $opts['lang'], $opts['default']);
    if ($opts['placeholders']) {
        $s = '/:\\w+/';
        $count = preg_match_all($s, $value_string, $matches, PREG_SET_ORDER);
        if ($count > 0) {
            foreach ($matches as $match) {
                $replacement = $match[0];
                $placeholder = str_replace('-', '_', trim($match[0], ':'));
                if (array_key_exists($placeholder, $opts['placeholders'])) {
                    $value_string = str_replace($replacement, $opts['placeholders'][$placeholder], $value_string);
                }
            }
        }
    }
    if ($return) {
        return $value_string;
    }
    echo $value_string;
}