count($fa), 'bCount' => count($fb), 'diff' => count($fa) - count($fb), ); $missing = array(); $notrans = array(); $ka = array_keys($fa); $kb = array_keys($fb); $missing = array_diff($ka, $kb); $extra = array_diff($kb, $ka); // search for untranslated strings foreach ($fa as $k => $v) { if (array_key_exists($k, $fb)) { if ($v == $fb[$k] || '' == $fb[$k]) { $notrans[] = $k; } } } return array( 'a' => count($fa), 'b' => count($fb), 'missing' => $missing, 'notrans' => $notrans, 'extra' => $extra ); } if ( ! function_exists('glob_recursive')) { // Does not support flag GLOB_BRACE function glob_recursive($pattern, $flags = 0) { $files = glob($pattern, $flags); foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) { $files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags)); } return $files; } } function _lang_file_switch($s, $l) { return $l . substr(str_replace('.en.lang', '.' . $l . '.lang', $s), 2); } function get_lang_references() { return glob_recursive('en/*', GLOB_MARK); } function get_other_langs() { $ls = glob('*'); $re = array(); foreach ($ls as $l) { if (!is_dir($l)) continue; if ($l == 'en') continue; $re[] = $l; } array_unshift($re, 'en'); return $re; }