MediaWiki master
LanguageKsh.php
Go to the documentation of this file.
1<?php
8namespace MediaWiki\Languages;
9
11
17class LanguageKsh extends Language {
22 private const FAMILYGENDER = [
23 'wikipedia' => 'f',
24 'wikiversity' => 'f',
25 'wiktionary' => 'n',
26 'wikibooks' => 'n',
27 'wikiquote' => 'n',
28 'wikisource' => 'n',
29 'wikitravel' => 'n',
30 'wikia' => 'f',
31 'translatewiki.net' => 'n',
32 ];
33
72 public function convertGrammar( $word, $case ) {
73 $lord = strtolower( $word );
74 $gender = 'm'; // Nuutnaarel // default
75 if ( str_ends_with( $lord, 'wiki' ) ) {
76 $gender = 'n'; // Dat xyz-wiki
77 }
78 if ( isset( self::FAMILYGENDER[$lord] ) ) {
79 $gender = self::FAMILYGENDER[$lord];
80 }
81
82 $isGenderFemale = $gender === 'f';
83
84 $case = ' ' . strtolower( $case );
85 if ( preg_match( '/ [is]/', $case ) ) {
86 # däm WikiMaatplaz singe, dä Wikipeedija iere, däm Wikiwööterbooch singe
87 # dem/em WikiMaatplaz singe, de Wikipeedija iere, dem/em Wikiwööterbooch singe
88 # däm WikiMaatplaz sing, dä Wikipeedija ier, däm Wikiwööterbooch sing
89 # dem/em WikiMaatplaz sing, de Wikipeedija ier, dem/em Wikiwööterbooch sing
90 $word = ( str_contains( $case, ' b' )
91 ? ( $isGenderFemale ? 'dä' : 'däm' )
92 : ( $isGenderFemale ? 'de' : 'dem' )
93 ) . ' ' . $word . ' ' .
94 ( $isGenderFemale ? 'ier' : 'sing' ) .
95 ( str_contains( $case, ' m' ) ? 'e' : '' );
96 } elseif ( str_contains( $case, ' e' ) ) {
97 # en dämm WikiMaatPlaz, en dä Wikipeedija, en dämm Wikiwööterbooch
98 # em WikiMaatplaz, en de Wikipeedija, em Wikiwööterbooch
99 if ( str_contains( $case, ' b' ) ) {
100 $word = 'en ' . ( $isGenderFemale ? 'dä' : 'däm' ) . ' ' . $word;
101 } else {
102 $word = ( $isGenderFemale ? 'en de' : 'em' ) . ' ' . $word;
103 }
104 } elseif ( preg_match( '/ [fv]/', $case ) || preg_match( '/ [2jg]/', $case ) ) {
105 # vun däm WikiMaatplaz, vun dä Wikipeedija, vun däm Wikiwööterbooch
106 # vum WikiMaatplaz, vun de Wikipeedija, vum Wikiwööterbooch
107 if ( str_contains( $case, ' b' ) ) {
108 $word = 'vun ' . ( $isGenderFemale ? 'dä' : 'däm' ) . ' ' . $word;
109 } else {
110 $word = ( $isGenderFemale ? 'vun de' : 'vum' ) . ' ' . $word;
111 }
112 } elseif ( preg_match( '/ [3d]/', $case ) ) {
113 # dämm WikiMaatPlaz, dä Wikipeedija, dämm Wikiwööterbooch
114 # dem/em WikiMaatplaz, de Wikipeedija, dem/em Wikiwööterbooch
115 if ( str_contains( $case, ' b' ) ) {
116 $word = ( $isGenderFemale ? 'dää' : 'dämm' ) . ' ' . $word;
117 } else {
118 $word = ( $isGenderFemale ? 'de' : 'dem' ) . ' ' . $word;
119 }
120 } else {
121 # dä WikiMaatPlaz, di Wikipeedija, dat Wikiwööterbooch
122 # der WikiMaatplaz, de Wikipeedija, et Wikiwööterbooch
123 if ( str_contains( $case, ' b' ) ) {
124 $lord = match ( $gender ) {
125 'm' => 'dä',
126 'f' => 'di',
127 default => 'dat'
128 };
129 } else {
130 $lord = match ( $gender ) {
131 'm' => 'der',
132 'f' => 'de',
133 default => 'et'
134 };
135 }
136 $word = $lord . ' ' . $word;
137 }
138 return $word;
139 }
140
149 public function convertPlural( $count, $forms ) {
150 $forms = $this->handleExplicitPluralForms( $count, $forms );
151 if ( is_string( $forms ) ) {
152 return $forms;
153 }
154 if ( !$forms ) {
155 return '';
156 }
157 $forms = $this->preConvertPlural( $forms, 3 );
158
159 return match ( $count ) {
160 1 => $forms[0],
161 0 => $forms[2],
162 default => $forms[1]
163 };
164 }
165}
166
168class_alias( LanguageKsh::class, 'LanguageKsh' );
Base class for language-specific code.
Definition Language.php:68
handleExplicitPluralForms( $count, array $forms)
Handles explicit plural forms for Language::convertPlural()
preConvertPlural($forms, $count)
Checks that convertPlural was given an array and pads it to requested number of forms by copying the ...
Ripuarian (Ripoarėsh)
convertPlural( $count, $forms)
Handle cases of (1, other, 0) or (1, other)
convertGrammar( $word, $case)
Grammatical transformations, needed for inflected languages Invoked by putting {{grammar:case|word}} ...