public function collectFromTemplate($content, $fileName, $module, &$parsedFiles = [])
 {
     $entities = [];
     // use parser to extract <%t style translatable entities
     $translatables = i18nTextCollector_Parser::GetTranslatables($content);
     $entities = array_merge($entities, (array) $translatables);
     // use the old method of getting _t() style translatable entities
     // Collect in actual template
     if (preg_match_all('/(_t\\([^\\)]*?\\))/ms', $content, $matches)) {
         foreach ($matches[1] as $match) {
             $entities = array_merge($entities, $this->collectFromCode($match, $module));
         }
     }
     foreach ($entities as $entity => $spec) {
         unset($entities[$entity]);
         $entities[$this->normalizeEntity($entity, $module)] = $spec;
     }
     ksort($entities);
     return $entities;
 }
 /**
  * Parses a template and returns any translatable entities
  */
 public static function GetTranslatables($template)
 {
     self::$entities = array();
     // Run the parser and throw away the result
     $parser = new i18nTextCollector_Parser($template);
     if (substr($template, 0, 3) == pack("CCC", 0xef, 0xbb, 0xbf)) {
         $parser->pos = 3;
     }
     $parser->match_TopTemplate();
     return self::$entities;
 }