X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=languages%2Fclasses%2FLanguageRu.php;h=62de39051d10a823eef786174cbd016d5b546333;hb=53779578b44575ef91feb3fad488f09b52f737d7;hp=60384a85e32c0eb724b1d7b997e702b9ca7686b0;hpb=cb2896f90ebef77c02c9da4067b0e56e37471092;p=lhc%2Fweb%2Fwiklou.git diff --git a/languages/classes/LanguageRu.php b/languages/classes/LanguageRu.php index 60384a85e3..62de39051d 100644 --- a/languages/classes/LanguageRu.php +++ b/languages/classes/LanguageRu.php @@ -31,7 +31,6 @@ * @ingroup Language */ class LanguageRu extends Language { - /** * Convert from the nominative form of a noun to some other case * Invoked with {{grammar:case|word}} @@ -46,19 +45,22 @@ class LanguageRu extends Language { return $wgGrammarForms['ru'][$case][$word]; } - $grammarDataFile = __DIR__ . '/data/grammar.ru.json'; - $grammarData = FormatJson::decode( file_get_contents( $grammarDataFile ), true ); + $grammarTransformations = $this->getGrammarTransformations(); + + if ( isset( $grammarTransformations[$case] ) ) { + foreach ( array_values( $grammarTransformations[$case] ) as $rule ) { + $form = $rule[0]; - if ( array_key_exists( $case, $grammarData ) ) { - foreach ( array_keys( $grammarData[$case] ) as $form ) { if ( $form === '@metadata' ) { continue; } + $replacement = $rule[1]; + $regex = "/$form/"; if ( preg_match( $regex, $word ) ) { - $word = preg_replace( $regex, $grammarData[$case][$form], $word ); + $word = preg_replace( $regex, $replacement, $word ); break; } @@ -70,7 +72,7 @@ class LanguageRu extends Language { /** * Four-digit number should be without group commas (spaces) - * See manual of style at http://ru.wikipedia.org/wiki/Википедия:Оформление_статей + * See manual of style at https://ru.wikipedia.org/wiki/Википедия:Оформление_статей * So "1 234 567", "12 345" but "1234" * * @param string $_