[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/maintenance/language/ -> transstat.php (source)

   1  <?php
   2  /**
   3   * Statistics about the localisation.
   4   *
   5   * This program is free software; you can redistribute it and/or modify
   6   * it under the terms of the GNU General Public License as published by
   7   * the Free Software Foundation; either version 2 of the License, or
   8   * (at your option) any later version.
   9   *
  10   * This program is distributed in the hope that it will be useful,
  11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13   * GNU General Public License for more details.
  14   *
  15   * You should have received a copy of the GNU General Public License along
  16   * with this program; if not, write to the Free Software Foundation, Inc.,
  17   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18   * http://www.gnu.org/copyleft/gpl.html
  19   *
  20   * @file
  21   * @ingroup MaintenanceLanguage
  22   *
  23   * @author Ævar Arnfjörð Bjarmason <[email protected]>
  24   * @author Antoine Musso <hashar at free dot fr>
  25   *
  26   * Output is posted from time to time on:
  27   * https://www.mediawiki.org/wiki/Localisation_statistics
  28   */
  29  $optionsWithArgs = array( 'output' );
  30  
  31  require_once  __DIR__ . '/../commandLine.inc';
  32  require_once  'languages.inc';
  33  require_once  __DIR__ . '/StatOutputs.php';
  34  
  35  if ( isset( $options['help'] ) ) {
  36      showUsage();
  37  }
  38  
  39  # Default output is WikiText
  40  if ( !isset( $options['output'] ) ) {
  41      $options['output'] = 'wiki';
  42  }
  43  
  44  /** Print a usage message*/
  45  function showUsage() {
  46      print <<<TEXT
  47  Usage: php transstat.php [--help] [--output=csv|text|wiki]
  48      --help : this helpful message
  49      --output : select an output engine one of:
  50          * 'csv'      : Comma Separated Values.
  51          * 'wiki'     : MediaWiki syntax (default).
  52          * 'text'     : Text with tabs.
  53  Example: php maintenance/transstat.php --output=text
  54  
  55  TEXT;
  56      exit( 1 );
  57  }
  58  
  59  # Select an output engine
  60  switch ( $options['output'] ) {
  61      case 'wiki':
  62          $output = new WikiStatsOutput();
  63          break;
  64      case 'text':
  65          $output = new TextStatsOutput();
  66          break;
  67      case 'csv':
  68          $output = new CsvStatsOutput();
  69          break;
  70      default:
  71          showUsage();
  72  }
  73  
  74  # Languages
  75  $wgLanguages = new Languages();
  76  
  77  # Header
  78  $output->heading();
  79  $output->blockstart();
  80  $output->element( 'Language', true );
  81  $output->element( 'Code', true );
  82  $output->element( 'Fallback', true );
  83  $output->element( 'Translated', true );
  84  $output->element( '%', true );
  85  $output->element( 'Obsolete', true );
  86  $output->element( '%', true );
  87  $output->element( 'Problematic', true );
  88  $output->element( '%', true );
  89  $output->blockend();
  90  
  91  $wgGeneralMessages = $wgLanguages->getGeneralMessages();
  92  $wgRequiredMessagesNumber = count( $wgGeneralMessages['required'] );
  93  
  94  foreach ( $wgLanguages->getLanguages() as $code ) {
  95      # Don't check English, RTL English or dummy language codes
  96      if ( $code == 'en' || $code == 'enRTL' || ( is_array( $wgDummyLanguageCodes ) &&
  97              isset( $wgDummyLanguageCodes[$code] ) )
  98      ) {
  99          continue;
 100      }
 101  
 102      # Calculate the numbers
 103      $language = Language::fetchLanguageName( $code );
 104      $fallback = $wgLanguages->getFallback( $code );
 105      $messages = $wgLanguages->getMessages( $code );
 106      $messagesNumber = count( $messages['translated'] );
 107      $requiredMessagesNumber = count( $messages['required'] );
 108      $requiredMessagesPercent = $output->formatPercent(
 109          $requiredMessagesNumber,
 110          $wgRequiredMessagesNumber
 111      );
 112      $obsoleteMessagesNumber = count( $messages['obsolete'] );
 113      $obsoleteMessagesPercent = $output->formatPercent(
 114          $obsoleteMessagesNumber,
 115          $messagesNumber,
 116          true
 117      );
 118      $messagesWithMismatchVariables = $wgLanguages->getMessagesWithMismatchVariables( $code );
 119      $emptyMessages = $wgLanguages->getEmptyMessages( $code );
 120      $messagesWithWhitespace = $wgLanguages->getMessagesWithWhitespace( $code );
 121      $nonXHTMLMessages = $wgLanguages->getNonXHTMLMessages( $code );
 122      $messagesWithWrongChars = $wgLanguages->getMessagesWithWrongChars( $code );
 123      $problematicMessagesNumber = count( array_unique( array_merge(
 124          $messagesWithMismatchVariables,
 125          $emptyMessages,
 126          $messagesWithWhitespace,
 127          $nonXHTMLMessages,
 128          $messagesWithWrongChars
 129      ) ) );
 130      $problematicMessagesPercent = $output->formatPercent(
 131          $problematicMessagesNumber,
 132          $messagesNumber,
 133          true
 134      );
 135  
 136      # Output them
 137      $output->blockstart();
 138      $output->element( "$language" );
 139      $output->element( "$code" );
 140      $output->element( "$fallback" );
 141      $output->element( "$requiredMessagesNumber/$wgRequiredMessagesNumber" );
 142      $output->element( $requiredMessagesPercent );
 143      $output->element( "$obsoleteMessagesNumber/$messagesNumber" );
 144      $output->element( $obsoleteMessagesPercent );
 145      $output->element( "$problematicMessagesNumber/$messagesNumber" );
 146      $output->element( $problematicMessagesPercent );
 147      $output->blockend();
 148  }
 149  
 150  # Footer
 151  $output->footer();


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1