1<?php 2// +-----------------------------------------------------------------------+ 3// | This file is part of Piwigo. | 4// | | 5// | For copyright and license information, please view the COPYING.txt | 6// | file that was distributed with this source code. | 7// +-----------------------------------------------------------------------+ 8 9define('PHPWG_ROOT_PATH', '../'); 10include_once( PHPWG_ROOT_PATH.'include/common.inc.php' ); 11include_once( PHPWG_ROOT_PATH.'tools/language/translation_validated.inc.php' ); 12$languages = array_keys(get_languages()); 13sort($languages); 14 15$page['ref_compare'] = 'en_UK'; 16$page['ref_default_values'] = 'en_UK'; 17 18if (!isset($_GET['lang'])) 19{ 20 echo '<a href="?lang=all">All languages</a><br><br>'; 21 echo '<ul>'; 22 foreach ($languages as $language) 23 { 24 if ($page['ref_compare'] == $language) 25 { 26 continue; 27 } 28 echo '<li><a href="?lang='.$language.'">'.$language.'</a></li>'; 29 } 30 echo '</ul>'; 31 exit(); 32} 33else if (in_array($_GET['lang'], $languages)) 34{ 35 $languages = array($_GET['lang']); 36} 37 38$file_list = array('common', 'admin', 'install', 'upgrade'); 39 40$metalang = array(); 41 42// preload reference languages 43$metalang[ $page['ref_compare'] ] = load_metalang($page['ref_compare'], $file_list); 44$metalang[ $page['ref_default_values'] ] = load_metalang($page['ref_default_values'], $file_list); 45 46foreach ($languages as $language) 47{ 48 if (in_array($language, array($page['ref_compare'], $page['ref_default_values']))) 49 { 50 continue; 51 } 52 echo '<h2>'.$language.'</h2>'; 53 $metalang[$language] = load_metalang($language, $file_list); 54 55 foreach ($file_list as $file) 56 { 57 if (isset($metalang[ $language ][$file])) 58 { 59 $missing_keys = array_diff( 60 array_keys($metalang[ $page['ref_compare'] ][$file]), 61 array_keys($metalang[ $language ][$file]) 62 ); 63 64 $output_missing = ''; 65 foreach ($missing_keys as $key) 66 { 67 $output_missing.= get_line_to_translate($file, $key); 68 } 69 70 // strings not "really" translated? 71 $output_duplicated = ''; 72 $output_lost = ''; 73 foreach (array_keys($metalang[$language][$file]) as $key) 74 { 75 $exceptions = array('Level 0'); 76 if (in_array($key, $exceptions)) 77 { 78 continue; 79 } 80 81 if (isset($validated_keys[$language]) and in_array($key, $validated_keys[$language])) 82 { 83 continue; 84 } 85 86 $local_value = $metalang[$language][$file][$key]; 87 if (!isset($metalang[ $page['ref_default_values'] ][$file][$key])) 88 { 89 $output_lost.= '#'.$key.'# does not exist in the reference language'."\n"; 90 } 91 else 92 { 93 $ref_value = $metalang[ $page['ref_default_values'] ][$file][$key]; 94 if ($local_value == $ref_value) 95 { 96 $output_duplicated.= get_line_to_translate($file, $key); 97 } 98 } 99 } 100 101 echo '<h3>'.$file.'.lang.php</h3>'; 102 103 if ('' != $output_missing or '' != $output_duplicated) 104 { 105 $output = ''; 106 if ('' != $output_missing) 107 { 108 $output.= "// missing translations\n".$output_missing; 109 } 110 if ('' != $output_duplicated) 111 { 112 $output.= "\n// untranslated yet\n".$output_duplicated; 113 } 114 echo '<textarea style="width:100%;height:250px;">'.$output.'</textarea>'; 115 } 116 117 if ('' != $output_lost) 118 { 119 echo '<pre>'.$output_lost.'</pre>'; 120 } 121 } 122 else 123 { 124 echo '<h3>'.$file.'.lang.php is missing</h3>'; 125 } 126 } 127} 128 129function load_metalang($language, $file_list) 130{ 131 global $lang, $user; 132 133 $metalang = array(); 134 foreach ($file_list as $file) 135 { 136 $lang = array(); 137 $user['language'] = $language; 138 if (load_language($file.'.lang', '', array('language'=>$language, 'no_fallback'=>true))) 139 { 140 $metalang[$file] = $lang; 141 } 142 } 143 return $metalang; 144} 145 146function get_line_to_translate($file, $key) 147{ 148 global $metalang, $page; 149 150 $print_key = str_replace("'", '\\\'', $key); 151 $print_value = str_replace("'", '\\\'', $metalang[ $page['ref_default_values'] ][$file][$key]); 152 return '$'."lang['".$print_key."'] = '".$print_value."';\n"; 153} 154?>