function getToTranslateApp($app)
 {
     $to_trans = array();
     $tpls = $this->search($app);
     $tpl = new soetemplate();
     // to not alter our own data
     while (list(, $keys) = each($tpls)) {
         if (($keys['name'] != $last['name'] || $keys['template'] != $last['template']) && !strstr($keys['name'], 'test')) {
             $tpl->read($keys);
             $to_trans += $tpl->getToTranslate();
             $last = $keys;
         }
     }
     return $to_trans;
 }
 function read($name, $template = 'default', $lang = 'default', $group = 0, $version = '', $load_via = '')
 {
     if (is_array($name)) {
         $pname =& $name['name'];
     } else {
         $pname =& $name;
     }
     if (empty($pname)) {
         return False;
     }
     $parent = is_array($load_via) ? $load_via['name'] : $load_via;
     if (strstr($pname, '.') === False && !empty($parent)) {
         $pname = $parent . '.' . $pname;
     }
     if (!$this->read_from_cache($name, $template, $lang, $group, $version)) {
         if (!soetemplate::read($name, $template, $lang, $group, $version)) {
             if ($load_via && (is_string($load_via) || !isset($load_via['tpls_in_file']) || $load_via['tpls_in_file'] > 1)) {
                 soetemplate::read($load_via);
                 return $this->read_from_cache($name, $template, $lang, $group, $version);
             }
             return False;
         }
         $this->store_in_cache();
     }
     return True;
 }