MediaWiki
REL1_24
|
00001 <?php 00029 $optionsWithArgs = array( 'output' ); 00030 00031 require_once __DIR__ . '/../commandLine.inc'; 00032 require_once 'languages.inc'; 00033 require_once __DIR__ . '/StatOutputs.php'; 00034 00035 if ( isset( $options['help'] ) ) { 00036 showUsage(); 00037 } 00038 00039 # Default output is WikiText 00040 if ( !isset( $options['output'] ) ) { 00041 $options['output'] = 'wiki'; 00042 } 00043 00045 function showUsage() { 00046 print <<<TEXT 00047 Usage: php transstat.php [--help] [--output=csv|text|wiki] 00048 --help : this helpful message 00049 --output : select an output engine one of: 00050 * 'csv' : Comma Separated Values. 00051 * 'wiki' : MediaWiki syntax (default). 00052 * 'text' : Text with tabs. 00053 Example: php maintenance/transstat.php --output=text 00054 00055 TEXT; 00056 exit( 1 ); 00057 } 00058 00059 # Select an output engine 00060 switch ( $options['output'] ) { 00061 case 'wiki': 00062 $output = new WikiStatsOutput(); 00063 break; 00064 case 'text': 00065 $output = new TextStatsOutput(); 00066 break; 00067 case 'csv': 00068 $output = new CsvStatsOutput(); 00069 break; 00070 default: 00071 showUsage(); 00072 } 00073 00074 # Languages 00075 $wgLanguages = new Languages(); 00076 00077 # Header 00078 $output->heading(); 00079 $output->blockstart(); 00080 $output->element( 'Language', true ); 00081 $output->element( 'Code', true ); 00082 $output->element( 'Fallback', true ); 00083 $output->element( 'Translated', true ); 00084 $output->element( '%', true ); 00085 $output->element( 'Obsolete', true ); 00086 $output->element( '%', true ); 00087 $output->element( 'Problematic', true ); 00088 $output->element( '%', true ); 00089 $output->blockend(); 00090 00091 $wgGeneralMessages = $wgLanguages->getGeneralMessages(); 00092 $wgRequiredMessagesNumber = count( $wgGeneralMessages['required'] ); 00093 00094 foreach ( $wgLanguages->getLanguages() as $code ) { 00095 # Don't check English, RTL English or dummy language codes 00096 if ( $code == 'en' || $code == 'enRTL' || ( is_array( $wgDummyLanguageCodes ) && 00097 isset( $wgDummyLanguageCodes[$code] ) ) 00098 ) { 00099 continue; 00100 } 00101 00102 # Calculate the numbers 00103 $language = Language::fetchLanguageName( $code ); 00104 $fallback = $wgLanguages->getFallback( $code ); 00105 $messages = $wgLanguages->getMessages( $code ); 00106 $messagesNumber = count( $messages['translated'] ); 00107 $requiredMessagesNumber = count( $messages['required'] ); 00108 $requiredMessagesPercent = $output->formatPercent( 00109 $requiredMessagesNumber, 00110 $wgRequiredMessagesNumber 00111 ); 00112 $obsoleteMessagesNumber = count( $messages['obsolete'] ); 00113 $obsoleteMessagesPercent = $output->formatPercent( 00114 $obsoleteMessagesNumber, 00115 $messagesNumber, 00116 true 00117 ); 00118 $messagesWithMismatchVariables = $wgLanguages->getMessagesWithMismatchVariables( $code ); 00119 $emptyMessages = $wgLanguages->getEmptyMessages( $code ); 00120 $messagesWithWhitespace = $wgLanguages->getMessagesWithWhitespace( $code ); 00121 $nonXHTMLMessages = $wgLanguages->getNonXHTMLMessages( $code ); 00122 $messagesWithWrongChars = $wgLanguages->getMessagesWithWrongChars( $code ); 00123 $problematicMessagesNumber = count( array_unique( array_merge( 00124 $messagesWithMismatchVariables, 00125 $emptyMessages, 00126 $messagesWithWhitespace, 00127 $nonXHTMLMessages, 00128 $messagesWithWrongChars 00129 ) ) ); 00130 $problematicMessagesPercent = $output->formatPercent( 00131 $problematicMessagesNumber, 00132 $messagesNumber, 00133 true 00134 ); 00135 00136 # Output them 00137 $output->blockstart(); 00138 $output->element( "$language" ); 00139 $output->element( "$code" ); 00140 $output->element( "$fallback" ); 00141 $output->element( "$requiredMessagesNumber/$wgRequiredMessagesNumber" ); 00142 $output->element( $requiredMessagesPercent ); 00143 $output->element( "$obsoleteMessagesNumber/$messagesNumber" ); 00144 $output->element( $obsoleteMessagesPercent ); 00145 $output->element( "$problematicMessagesNumber/$messagesNumber" ); 00146 $output->element( $problematicMessagesPercent ); 00147 $output->blockend(); 00148 } 00149 00150 # Footer 00151 $output->footer();