MediaWiki  1.34.0
LanguageEn.php
Go to the documentation of this file.
1 <?php
26 class EnConverter extends LanguageConverter {
30  function loadDefaultTables() {
31  $this->mTables = [
32  'en' => new ReplacementArray(),
33  'en-x-piglatin' => new ReplacementArray(),
34  ];
35  }
36 
45  function translate( $text, $toVariant ) {
46  if ( $toVariant !== 'en-x-piglatin' ) {
47  return $text;
48  }
49 
50  // Only process words composed of standard English alphabet, leave the rest unchanged.
51  // This skips some English words like 'naïve' or 'résumé', but we can live with that.
52  // Ignore single letters and words which aren't lowercase or uppercase-first.
53  return preg_replace_callback( '/[A-Za-z][a-z\']+/', function ( $matches ) {
54  $word = $matches[0];
55  if ( preg_match( '/^[aeiou]/i', $word ) ) {
56  return $word . 'way';
57  }
58 
59  return preg_replace_callback( '/^(s?qu|[^aeiou][^aeiouy]*)(.*)$/i', function ( $m ) {
60  $ucfirst = strtoupper( $m[1][0] ) === $m[1][0];
61  if ( $ucfirst ) {
62  return ucfirst( $m[2] ) . lcfirst( $m[1] ) . 'ay';
63  }
64 
65  return $m[2] . $m[1] . 'ay';
66  }, $word );
67  }, $text );
68  }
69 }
70 
76 class LanguageEn extends Language {
77  function __construct() {
78  global $wgUsePigLatinVariant;
79 
80  parent::__construct();
81 
82  if ( $wgUsePigLatinVariant ) {
83  $this->mConverter = new EnConverter( $this, 'en', [ 'en', 'en-x-piglatin' ] );
84  }
85  }
86 }
$matches
$matches
Definition: NoLocalSettings.php:24
EnConverter\translate
translate( $text, $toVariant)
Translates text into Pig Latin.
Definition: LanguageEn.php:45
EnConverter
Definition: LanguageEn.php:26
ReplacementArray
Wrapper around strtr() that holds replacements.
Definition: ReplacementArray.php:24
LanguageEn\__construct
__construct()
Definition: LanguageEn.php:77
LanguageEn
English.
Definition: LanguageEn.php:76
EnConverter\loadDefaultTables
loadDefaultTables()
Dummy methods required by base class.
Definition: LanguageEn.php:30
Language
Internationalisation code.
Definition: Language.php:37
$wgUsePigLatinVariant
$wgUsePigLatinVariant
Whether to enable the pig Latin variant of English (en-x-piglatin), used to ease variant development ...
Definition: DefaultSettings.php:3132