aboutsummaryrefslogtreecommitdiffstats
path: root/langs/report.php
diff options
context:
space:
mode:
Diffstat (limited to 'langs/report.php')
-rw-r--r--langs/report.php423
1 files changed, 0 insertions, 423 deletions
diff --git a/langs/report.php b/langs/report.php
deleted file mode 100644
index d493c6971..000000000
--- a/langs/report.php
+++ /dev/null
@@ -1,423 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <meta name="robots" content="noindex,nofollow,nosnippet">
- <title>www.mageia.org translation report</title>
- <style>
- html, body { margin: 0; padding: 0; font-family: Verdana, "Trebuchet MS", "Lucida Grande", "Lucida Sans", Verdana, Tahoma, Arial, sans-serif; }
- table, th, td {
- border:1px solid gray;
- border-collapse:collapse;
- }
- th { text-align: left; }
- td, th { font-size: 80%; padding: 0.3em; }
- td a div, td.progress div { float: left; }
- #page { padding: 1em; position: absolute; top: 128px; }
- .done, .partial, .add { }
- .done { color: darkgreen; background: lightgreen; }
- .partial { color: darkslategray; background: orange; }
- .add { color: black; background: lightgrey; }
- .done a, .partial a, .add a { color: inherit; padding-right: 0.5em; }
- .view_page { background: rgba(0, 0, 0, 0.1); border-radius: 3px; padding: 0em 0.5em; margin: 0.3em; }
- .bold { font-weight: bold; }
- .minor { font-weight: normal; font-size: smaller; }
- .progress { text-align: right; }
- .percent { width: 45px; }
- .stat { font-size: smaller; }
- </style>
-</head>
-<body class="contribute">
- <header id="mgnavt">
- <h1><a href="//www.mageia.org/">www.mageia.org</a> translation report</h1>
- <ul>
- <li>Please check <a href="https://wiki.mageia.org/en/Internationalisation_Team_(i18n)#Website_translation">localization Wiki page</a> for special cases for navigation and some web pages like <a href="https://wiki.mageia.org/en/Internationalisation_Team_%28i18n%29#Special_cases_of_web_pages">downloads/get, constitution, license...</a></li>
- </ul>
- </header>
- <div id="page">
- <?php
- define('HLANG', TRUE);
-
- /*
- * from http://www.php.net/manual/en/function.array-search.php#91365
- *
- * copyright (c) the PHP Documentation
- * covered by the Creative Commons Attribution 3.0 License (http://creativecommons.org/licenses/by/3.0/legalcode)
- */
- function recursive_array_search($needle, $haystack)
- {
- foreach ($haystack as $key => $value) {
- $current_key = $key;
- if ($needle === $value OR (is_array($value) && recursive_array_search($needle, $value) !== FALSE)) {
- return $current_key;
- }
- }
- return FALSE;
- }
-
- include 'lib.php';
- $one_language = isset($_GET['l']) ? strip_tags(trim($_GET['l'])) : NULL;
- $one_resource = isset($_GET['r']) ? strip_tags(trim($_GET['r'])) : NULL;
-
- $one_language_all_resources = FALSE;
- $all_languages_only_one_resource = FALSE;
-
- if (isset($one_language) && $one_language != 'all') {
- $one_language_all_resources = TRUE;
- $otherLangs = array('en', $one_language);
- } else {
- $otherLangs = get_other_langs();
- }
-
- if (isset($one_resource) && $one_resource != 'all') {
- $all_languages_only_one_resource = TRUE;
- $enFiles = array($one_resource);
- } else {
- $enFiles = array_merge(array('../_nav/langs/en.pot'), get_lang_references('*.pot')); // added navigation file
- }
- $num_of_enFiles = count($enFiles);
-
-
- $report = array();
- $ok_link = '<div class="done">%s <a href="%s" title="get a copy of the file">file</a></div>';
- $diff_link = '<div class="partial">%s<a href="diff.php?s=%s&amp;l=%s" title="see detailed diff">';
- $add_trans = '<div class="add"><a href="missing.php?s=%s&amp;l=%s" class="view_page">add translation</a>%s</div>';
-
- $unique_lines_in_eng_constitution = array();
- $number_of_unique_lines_in_eng_constitution = 0;
-
- foreach ($otherLangs as $l) {
- foreach ($enFiles as $f) {
- $references = '';
- $page_not_linked = '';
- $old_page = '';
- $resource = _extract_resource($f);
- $resource_filename = str_replace('index', '', $resource);
- $mga = array('view page' => $resource_filename);
- $langF = _po_file_switch($f, $l);
- if (strstr($f, '../_nav/langs/en.') !== FALSE) {
- $nav = TRUE;
- $dest_en = sprintf('%s/%s/%s', G_APP_ROOT, '_nav/langs', 'en.pot');
- $dest_l = sprintf('%s/%s/%s', G_APP_ROOT, '_nav/langs', $l . '.po');
- $langF = '../_nav/langs/' . $l . '.po' . (($l == 'en') ? 't' : '');
- } else {
- $nav = FALSE;
- $dest_en = sprintf('%s/%s/%s/%s', G_APP_ROOT, 'en', $resource_filename, 'index.php');
- $dest_l = sprintf('%s/%s/%s/%s', G_APP_ROOT, $l, $resource_filename, 'index.php');
- }
-
- // if symlink e.g. does directly translated page exist?
- if ((realpath($dest_l) != realpath($dest_en)) && !$nav) {
- $page_not_linked = sprintf('<a href="/%s/%s">old page</a> still exists!', $l, $resource_filename);
- $old_page = sprintf(' by recycling <a href="/%s/%s">old page</a>', $l, $resource_filename);
- }
- $add_new_translation = sprintf($add_trans, $f, $l, $old_page);
-
- if (file_exists($langF)) {
- $test = _po_diff($l, $resource);
- $num_of_fuzzy_or_missing_strings = count($test['fuzzy_or_missing']);
- $num_of_untranslated_strings = count($test['notrans']);
-
- if ($nav) {
- $mga = array('see navigation' => '');
- } else if ($resource_filename == 'downloads/get') {
- $mga = array(
- 'view page A' => 'downloads/get/index.php?q=Mageia-2-dual-CD.iso&amp;d=1',
- 'B' => 'downloads/get/index.php?q=Non_existing_file&amp;d=1',
- );
- } else if ($resource_filename == '2') {
- $mga = array(
- 'view page A' => '2/index.php',
- 'B' => '2/download_index.php',
- 'C' => '2/for-pc/index.php',
- 'D' => '2/for-server/index.php',
- );
- } else if ($resource_filename == '3') {
- $mga = array(
- 'view page A' => '3/index.php',
- 'B' => '3/download_index.php',
- 'C' => '3/for-pc/index.php',
- 'D' => '3/for-server/index.php',
- );
- } else if ($resource_filename == '4') {
- $mga = array(
- 'view page A' => '4/index.php',
- 'B' => '4/download_index.php',
- );
- } else if ($resource_filename == 'cauldron') {
- $mga = array('view page' => '5/download_index.php');
- } else if ($resource_filename == 'documentation') {
- $mga = array(
- 'view page doc' => 'doc/index.php',
- 'archive' => 'doc/archive.php',
- );
- } else if ($resource_filename == 'about/constitution') {
- $constitution_results = aproximate_number_of_untranslated_constitution_lines(G_APP_ROOT, $l, $unique_lines_in_eng_constitution);
- if ($l == 'en') {
- $unique_lines_in_eng_constitution = $constitution_results['unique_lines_in_constitution'];
- $number_of_unique_lines_in_eng_constitution = count($unique_lines_in_eng_constitution);
- }
- $test['a'] += $number_of_unique_lines_in_eng_constitution; // add aproximate number of lines from constitution to translate
- $num_of_untranslated_strings += $constitution_results['aproximate_number_of_untranslated_lines'];
- } else if ($resource_filename == 'about/license') {
- require_once('../en/about/license/license.php');
- $license_numbers = load_license_numbers($l, TRUE);
- if ($l == 'en') {
- $number_of_unique_lines_in_eng_license = $license_numbers["all"];
- }
- $test['a'] += $license_numbers["all"]; // add aproximate number of untranslated sentences from license
- $num_of_untranslated_strings += $license_numbers["untran"]; // add number of all license sentences
- }
- $link = '';
- foreach ($mga as $k => $v) {
- $link .= sprintf('<a href="/%s/%s" class="view_page">%s</a>', $l, $v, $k);
- }
- $link .= $page_not_linked; // . '</div>';
-
- if ($num_of_fuzzy_or_missing_strings === 0 && $num_of_untranslated_strings === 0) {
- $references .= sprintf($ok_link, $link, $langF);
- } else {
- if(($num_of_fuzzy_or_missing_strings + $num_of_untranslated_strings) < $test['a']) {
- $references .= sprintf($diff_link, $link, $f, $l);
- $fuzzy = FALSE;
- if ($num_of_fuzzy_or_missing_strings > 0) {
- $references .= $num_of_fuzzy_or_missing_strings . '&nbsp;fuzzy or missing';
- $fuzzy = TRUE;
- }
- if ($num_of_untranslated_strings > 0) {
- $references .= ($fuzzy ? ', ' : '') . $num_of_untranslated_strings . '&nbsp;untranslated';
- }
- $references .= '</a></div>';
- } else {
- $references .= $add_new_translation;
- }
- }
- } else { // file $langF doesn't exists
- $references .= $add_new_translation;
- $test = _po_diff('en', $resource);
- $num_of_fuzzy_or_missing_strings = 0;
- $num_of_untranslated_strings = count($test['notrans']);
- if ($resource_filename == 'about/constitution') { // add aproximate number of all lines from constitution
- $test['a'] += $number_of_unique_lines_in_eng_constitution;
- $num_of_untranslated_strings += $number_of_unique_lines_in_eng_constitution;
- }
- if ($resource_filename == 'about/license') { // add number of all license sentences
- $test['a'] += $number_of_unique_lines_in_eng_license;
- $num_of_untranslated_strings += $number_of_unique_lines_in_eng_license;
- }
- }
- $report[] = array(
- 'language' => $l,
- 'resource_filename' => $f,
- 'num_of_all_strings' => $test['a'],
- 'num_of_fuzzy_or_missing_strings' => $num_of_fuzzy_or_missing_strings,
- 'num_of_untranslated_strings' => $num_of_untranslated_strings,
- 'references' => $references,
- );
- }
- }
-
- $total_num_of_strings = 0; // total of all source strings
- $language_summary = array();
- $resource_summary = array();
- foreach ($report as $resource_data) {
- if ($resource_data['language'] == 'en') {
- $total_num_of_strings += $resource_data['num_of_all_strings'];
- }
- // don't add if there is a need to store languages only for one resource
- if(!$all_languages_only_one_resource || $resource_data['resource_filename'] == $one_resource) {
- $key_exists = recursive_array_search($resource_data['language'], $language_summary); // is language already in the $language_summary array?
- if($resource_data['resource_filename'] == $one_resource) {
- $temp_var[0]['language'] = $resource_data['language'];
- $temp_var[0]['num_of_all_strings'] = $resource_data['num_of_all_strings'];
- $temp_var[0]['num_of_fuzzy_or_missing_strings'] = $resource_data['num_of_fuzzy_or_missing_strings'];
- $temp_var[0]['num_of_untranslated_strings'] = $resource_data['num_of_untranslated_strings'];
- $temp_var[0]['references'] = $resource_data['references'];
- $language_summary[] = $temp_var[0];
- unset($temp_var[0]); // clear var
- } else {
- if ($key_exists !== FALSE) {
- $language_summary[$key_exists]['num_of_all_strings'] += $resource_data['num_of_all_strings'];
- $language_summary[$key_exists]['num_of_fuzzy_or_missing_strings'] += $resource_data['num_of_fuzzy_or_missing_strings'];
- $language_summary[$key_exists]['num_of_untranslated_strings'] += $resource_data['num_of_untranslated_strings'];
- } else {
- if($key_exists === FALSE) {
- $key_exists = count($language_summary);
- }
- $language_summary[$key_exists]['language'] = $resource_data['language'];
- $language_summary[$key_exists]['num_of_all_strings'] = $resource_data['num_of_all_strings'];
- $language_summary[$key_exists]['num_of_fuzzy_or_missing_strings'] = $resource_data['num_of_fuzzy_or_missing_strings'];
- $language_summary[$key_exists]['num_of_untranslated_strings'] = $resource_data['num_of_untranslated_strings'];
- $language_summary[$key_exists]['references'] = $resource_data['references'];
- }
- }
- }
-
- // don't add if there is a need to store resources only for one language
- if(!$one_language_all_resources || ($resource_data['language'] == $one_language || $resource_data['language'] == 'en')) {
- $key_exists = recursive_array_search($resource_data['resource_filename'], $resource_summary); // is resource already in the $resource_summary array?
- if($resource_data['language'] == 'en') {
- $temp_var[0]['resource_filename'] = $resource_data['resource_filename'];
- $temp_var[0]['num_of_all_strings'] = $resource_data['num_of_all_strings'];
- $temp_var[0]['num_of_fuzzy_or_missing_strings'] = $resource_data['num_of_fuzzy_or_missing_strings'];
- $temp_var[0]['num_of_untranslated_strings'] = $resource_data['num_of_untranslated_strings'];
- $temp_var[0]['references'] = $resource_data['references'];
- $resource_summary[] = $temp_var[0];
- unset($temp_var[0]); // clear var
- } else {
- if($one_language_all_resources) {
- if($key_exists === FALSE) {
- $key_exists = count($resource_summary);
- }
- $resource_summary[$key_exists]['num_of_fuzzy_or_missing_strings'] = $resource_data['num_of_fuzzy_or_missing_strings'];
- $resource_summary[$key_exists]['num_of_untranslated_strings'] = $resource_data['num_of_untranslated_strings'];
- $resource_summary[$key_exists]['references'] = $resource_data['references'];
- } else if ($key_exists !== FALSE) {
- $resource_summary[$key_exists]['num_of_all_strings'] += $resource_data['num_of_all_strings'];
- $resource_summary[$key_exists]['num_of_fuzzy_or_missing_strings'] += $resource_data['num_of_fuzzy_or_missing_strings'];
- $resource_summary[$key_exists]['num_of_untranslated_strings'] += $resource_data['num_of_untranslated_strings'];
- }
- }
- }
- }
- foreach ($language_summary as &$single_language_summary) {
- $single_language_summary['num_of_translated_strings'] =
- $single_language_summary['num_of_all_strings'] -
- $single_language_summary['num_of_fuzzy_or_missing_strings'] -
- $single_language_summary['num_of_untranslated_strings'];
- }
- unset($single_language_summary); // foreach by reference
- foreach ($resource_summary as &$single_resource_summary) {
- $single_resource_summary['num_of_translated_strings'] =
- $single_resource_summary['num_of_all_strings'] -
- $single_resource_summary['num_of_fuzzy_or_missing_strings'] -
- $single_resource_summary['num_of_untranslated_strings'];
- }
- unset($single_resource_summary); // foreach by reference
-
- if ($one_language_all_resources) {
- $report_text = '<p>Restore <a href="?l=all" title="see all languages">all languages</a>.</p>';
- $count = 'One language: ' . $langs[$one_language];
- $summary_text = 'Summary for each of ' . $num_of_enFiles . ' resources';
- $display_array = $resource_summary;
- $progress = 'References</th><th>Progress';
- $stats_width = '65px';
- } else if ($all_languages_only_one_resource) {
- $report_text = '<p>Restore <a href="?r=all" title="see all resources">all resources</a>.</p>';
- $count = 'Together ' . count($otherLangs) . ' languages';
- $summary_text = 'Summary for resource: ' . $one_resource;
- $eng_language = array_shift($language_summary); // shift English for proper sorting
- $display_array = $language_summary;
- $stats_width = '65px';
- $progress = 'References</th><th>Progress';
- } else { // all languages, all resources
- $report_text = ''; // <p>Overview of all languages.</p>
- $count = 'Together ' . count($otherLangs) . ' languages';
- $summary_text = 'Summary for all ' . $num_of_enFiles . ' resources';
- $eng_language = array_shift($language_summary); // shift English for proper sorting
- $display_array = $language_summary;
- $sum_for_stat = $total_num_of_strings;
- $stats_width = '85px';
- $references = '';
- $progress = 'Progress';
- }
-
- // build helper arrays
- foreach ($display_array as $key => $row) {
- if ($one_language_all_resources) {
- $first_helper[$key] = $row['num_of_translated_strings'] / $row['num_of_all_strings'];
- $second_helper[$key] = $row['num_of_fuzzy_or_missing_strings'] / $row['num_of_all_strings'];
- $third_helper[$key] = $row['resource_filename'];
- } else if ($all_languages_only_one_resource) {
- $first_helper[$key] = $row['num_of_translated_strings'] / $row['num_of_all_strings'];
- $second_helper[$key] = $row['num_of_fuzzy_or_missing_strings'] / $row['num_of_all_strings'];
- $third_helper[$key] = $row['language'];
- } else { // all languages, all resources
- $first_helper[$key] = $row['num_of_translated_strings'] / $total_num_of_strings;
- $second_helper[$key] = $row['num_of_fuzzy_or_missing_strings'] / $total_num_of_strings;
- $third_helper[$key] = $row['language'];
- }
- }
- array_multisort($first_helper, SORT_DESC, $second_helper, $third_helper, $display_array); // , SORT_STRING
-// array_unshift($language_summary, $eng_language); // unshift English back
- $table_lines = array();
- $progress_width = 350;
- foreach ($display_array as $one_member) {
- $translation_status = 'translated: ' . $one_member['num_of_translated_strings'];
- $translation_status .= ', fuzzy or missing: ' . $one_member['num_of_fuzzy_or_missing_strings'];
- $translation_status .= ', untranslated: ' . $one_member['num_of_untranslated_strings'];
- if ($one_language_all_resources) {
- $first_clmn = $one_member['resource_filename'];
- $link_one = '<a href="?r=' . $first_clmn . '" title="%s">';
- if ($first_clmn == '../_nav/langs/en.pot') {
- $frst_clmn_t = '_nav/langs/en.pot';
- } else {
- $frst_clmn_t = str_replace('en/', '', $first_clmn);
- }
- $first_clm_text = sprintf('<span class="bold">' . $link_one . '%s</a></span>', 'see this resource only', $frst_clmn_t);
- $single_stat = $one_member['num_of_translated_strings'];
- $sum_for_stat = $one_member['num_of_all_strings'];
- $references = '<td>' . $one_member['references'] . '</td>';
- } else if ($all_languages_only_one_resource) {
- $first_clmn = $one_member['language'];
- $link_one = '<a href="?l=' . $first_clmn . '" title="%s">';
- $first_clm_text = sprintf('<span class="bold">' . $link_one . '%s</a></span>, ', 'see this language only', $langs[$first_clmn]);
- $single_stat = $one_member['num_of_translated_strings'];
- $sum_for_stat = $one_member['num_of_all_strings'];
- $references = '<td>' . $one_member['references'] . '</td>';
- } else { // all languages, all resources
- $first_clmn = $one_member['language'];
- $link_one = '<a href="?l=' . $first_clmn . '" title="%s">';
- $first_clm_text = sprintf('<span class="bold">' . $link_one . '%s</a></span>, ', 'see this language only', $langs[$first_clmn]);
- $first_clm_text .= sprintf('<span class="minor">%s</span>', $first_clmn);
- $single_stat = $one_member['num_of_translated_strings'];
- }
- $progress_tran_float = $one_member['num_of_translated_strings'] / $sum_for_stat;
- $progress_trans = floor($progress_tran_float * 100);
- $progress_tran_round = floor($progress_tran_float * $progress_width);
- $progress_fom_float = $one_member['num_of_fuzzy_or_missing_strings'] / $sum_for_stat;
- $progress_fom_round = round($progress_fom_float * $progress_width);
- $progress_untrans = $progress_width - $progress_tran_round - $progress_fom_round;
-
-
- $row = '<tr><td>' . $first_clm_text . '</td>';
- $row .= $references;
- $row .= '<td class="progress"><div class="percent">' . $progress_trans . ' %</div>';
- $row .= '<div class="stat" style="width: ' . $stats_width . ';"> (' . $single_stat . ' / ' . $sum_for_stat . ')</div></td>';
- $row .= sprintf('<td>' . $link_one, $translation_status);
- $row .= '<div style="width: ' . $progress_tran_round . 'px; background-color: LightGreen;">&nbsp;</div>' . PHP_EOL;
- $row .= '<div style="width: ' . $progress_fom_round . 'px; background-color: Orange;">&nbsp;</div>' . PHP_EOL;
- $row .= '<div style="width: ' . $progress_untrans . 'px; background-color: OrangeRed;">&nbsp;</div>' . PHP_EOL;
- $row .= '</a></td></tr>' . PHP_EOL;
- $table_lines[] = $row;
- }
- $table_rows = implode('', $table_lines);
-
- echo $report_text;
-
- echo <<<S
-<table>
-<thead><tr>
- <th>{$count}</th>
- <th>{$progress}</th>
- <th>{$summary_text}</th>
-</tr></thead>
-<tbody>
-{$table_rows}
-</tbody>
-</table>
-
-<hr>
-S;
-?>
- </div>
- <script src="/_nav/js/source.js"></script>
-</body>
-</html><?php
-
-// regenerating cache
-// TODO move it to the cron
-require_once('../en/about/license/license.php');
-foreach ($otherLangs as $lang) {
- load_license_numbers($lang);
-} \ No newline at end of file