- if ( $toVariant === 'en-x-piglatin' ) {
- // Only process words composed of standard English alphabet, leave the rest unchanged.
- // This skips some English words like 'naïve' or 'résumé', but we can live with that.
- // Ignore single letters and words which aren't lowercase or uppercase-first.
- return preg_replace_callback( '/[A-Za-z][a-z]+/', function ( $matches ) {
- $word = $matches[0];
- if ( preg_match( '/^[aeiou]/i', $word ) ) {
- return $word . 'way';
- } else {
- return preg_replace_callback( '/^(qu|[^aeiou][^aeiouy]*)(.*)$/i', function ( $m ) {
- $ucfirst = strtoupper( $m[1][0] ) === $m[1][0];
- if ( $ucfirst ) {
- return ucfirst( $m[2] ) . lcfirst( $m[1] ) . 'ay';
- } else {
- return $m[2] . $m[1] . 'ay';
- }
- }, $word );
- }
- }, $text );
- } else {