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