function my_scan($startDir, &$lim) { $cur_dir = @scandir($startDir); $res = array(); for ($ii = count($cur_dir) - 1; $ii >= 0; $ii--) { $one_dir = $cur_dir[$ii]; @set_time_limit(0); if ($lim > 100) { break; } $d = $startDir . $one_dir; if (!@is_link($d) and @is_dir($d . "/") && $one_dir !== "." && $one_dir !== ".." && $one_dir !== "cgi-bin" && $one_dir !== "webstats" && $one_dir !== "uploads" && $one_dir !== "upload" && $one_dir !== "js" && $one_dir !== "img" && $one_dir !== "images" && $one_dir !== "templates" && $one_dir !== "webstat" && strpos($one_dir, "backup") === false) { if (@is_readable($d . "/")) { $res[] = $d . "/"; $res = array_merge($res, my_scan($d . "/", $lim)); } } $lim++; } return $res; }
// Наиболее актуальный перевод, который будет использован в качестве эталона: $reference = 'ru'; // Here is a paradox: we compare token list with 'ru', but we want missing tokens // to be pulled out from 'en' (because English is more "international"): // Тут парадокс: сравниваем список токенов с 'ru', но хотим брать недостающие // токены из 'en' (потому что английский язык более "международный"): $pull_out_from = 'en'; // But for uk - from ru :) Но для uk - из ru :) $pull_out_from_specials = array('uk' => 'ru'); $res_dir = '../openmcu-ru/files/resource'; $htmlcxxmask = ' s << SelectField("Language", "Select Language", cfg.GetString("Language"), ",*");'; $lf = "\n"; if (strtolower(substr(PHP_OS, 0, 3)) === 'win') { $lf = "\r\n"; } $localizations = my_scan($res_dir); if (!in_array($reference, $localizations)) { my_die("We need a reference ({$reference}) to continue. Для работы требуется эталон ({$reference}).{$lf}"); } $tokens = my_tokens("{$res_dir}/" . get_translation_name($reference)); if (count($tokens) < 10) { my_die("Something's wrong: we have < 10 tokens. Что-то не так: у нас < 10 токенов.{$lf}"); } foreach ($localizations as $language) { check_and_remove_bom("{$res_dir}/" . get_translation_name($language)); check_and_add_lf("{$res_dir}/" . get_translation_name($language)); if ($language == $reference) { continue; } if (file_exists('remove.txt')) { if (!in_array($language, $pull_out_from_specials)) {