jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/245184 )

Change subject: Move the Ukrainian grammar rules from PHP and JS to JSON
......................................................................


Move the Ukrainian grammar rules from PHP and JS to JSON

Bug: T115217
Change-Id: I15a06b07e381cc9074e64e746d22ec51e9e638c4
---
M languages/classes/LanguageUk.php
A languages/data/grammarTransformations/uk.json
M resources/Resources.php
D resources/src/mediawiki.language/languages/uk.js
4 files changed, 18 insertions(+), 77 deletions(-)

Approvals:
  Legoktm: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/languages/classes/LanguageUk.php b/languages/classes/LanguageUk.php
index 72bde40..a155d03 100644
--- a/languages/classes/LanguageUk.php
+++ b/languages/classes/LanguageUk.php
@@ -27,50 +27,6 @@
  * @ingroup Language
  */
 class LanguageUk extends Language {
-
-       /**
-        * Convert from the nominative form of a noun to some other case
-        * Invoked with {{grammar:case|word}}
-        *
-        * @param string $word
-        * @param string $case
-        * @return string
-        */
-       function convertGrammar( $word, $case ) {
-               global $wgGrammarForms;
-               if ( isset( $wgGrammarForms['uk'][$case][$word] ) ) {
-                       return $wgGrammarForms['uk'][$case][$word];
-               }
-
-               # These rules don't cover the whole language.
-               # They are used only for site names.
-
-               # join and array_slice instead mb_substr
-               $ar = [];
-               preg_match_all( '/./us', $word, $ar );
-               if ( !preg_match( "/[a-zA-Z_]/us", $word ) ) {
-                       switch ( $case ) {
-                               case 'genitive': # родовий відмінок
-                                       if ( implode( '', array_slice( $ar[0], 
-2 ) ) === 'ія' ) {
-                                               $word = implode( '', 
array_slice( $ar[0], 0, -2 ) ) . 'ії';
-                                       } elseif ( implode( '', array_slice( 
$ar[0], -2 ) ) === 'ти' ) {
-                                               $word = implode( '', 
array_slice( $ar[0], 0, -2 ) ) . 'т';
-                                       } elseif ( implode( '', array_slice( 
$ar[0], -2 ) ) === 'ди' ) {
-                                               $word = implode( '', 
array_slice( $ar[0], 0, -2 ) ) . 'дів';
-                                       } elseif ( implode( '', array_slice( 
$ar[0], -3 ) ) === 'ник' ) {
-                                               $word = implode( '', 
array_slice( $ar[0], 0, -3 ) ) . 'ника';
-                                       }
-                                       break;
-                               case 'accusative': # знахідний відмінок
-                                       if ( implode( '', array_slice( $ar[0], 
-2 ) ) === 'ія' ) {
-                                               $word = implode( '', 
array_slice( $ar[0], 0, -2 ) ) . 'ію';
-                                       }
-                                       break;
-                       }
-               }
-               return $word;
-       }
-
        /**
         * Ukrainian numeric format is "12 345,67" but "1234,56"
         *
diff --git a/languages/data/grammarTransformations/uk.json 
b/languages/data/grammarTransformations/uk.json
new file mode 100644
index 0000000..6512225
--- /dev/null
+++ b/languages/data/grammarTransformations/uk.json
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gutsul",
+                       "Amir E. Aharoni (amir.ahar...@mail.huji.ac.il)"
+               ],
+               "comment": "These rules don't cover the whole grammar of the 
language, and are intended only for names of languages and Wikimedia projects."
+       },
+       "genitive": [
+               [ "(.+)ія$", "$1ії" ],
+               [ "(.+)ти$", "$1т" ],
+               [ "(.+)ди$", "$1дів" ],
+               [ "(.+)ник$", "$1ника" ]
+       ],
+       "accusative": [
+               [ "(.+)ія$", "$1ію" ]
+       ]
+}
diff --git a/resources/Resources.php b/resources/Resources.php
index 3fef2cc..e8be528 100644
--- a/resources/Resources.php
+++ b/resources/Resources.php
@@ -1597,7 +1597,6 @@
                        'la' => 
'resources/src/mediawiki.language/languages/la.js',
                        'os' => 
'resources/src/mediawiki.language/languages/os.js',
                        'sl' => 
'resources/src/mediawiki.language/languages/sl.js',
-                       'uk' => 
'resources/src/mediawiki.language/languages/uk.js',
                ],
                'dependencies' => [
                        'mediawiki.language.data',
diff --git a/resources/src/mediawiki.language/languages/uk.js 
b/resources/src/mediawiki.language/languages/uk.js
deleted file mode 100644
index 138045c..0000000
--- a/resources/src/mediawiki.language/languages/uk.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*!
- * Ukrainian (Українська) language functions
- */
-
-mediaWiki.language.convertGrammar = function ( word, form ) {
-       var grammarForms = mediaWiki.language.getData( 'uk', 'grammarForms' );
-       if ( grammarForms && grammarForms[ form ] ) {
-               return grammarForms[ form ][ word ];
-       }
-       switch ( form ) {
-               case 'genitive': // родовий відмінок
-                       if ( word.slice( -2 ) === 'ія' ) {
-                               word = word.slice( 0, -2 ) + 'ії';
-                       } else if ( word.slice( -2 ) === 'ти' ) {
-                               word = word.slice( 0, -2 ) + 'т';
-                       } else if ( word.slice( -2 ) === 'ди' ) {
-                               word = word.slice( 0, -2 ) + 'дів';
-                       } else if ( word.slice( -3 ) === 'ник' ) {
-                               word = word.slice( 0, -3 ) + 'ника';
-                       }
-
-                       break;
-               case 'accusative': // знахідний відмінок
-                       if ( word.slice( -2 ) === 'ія' ) {
-                               word = word.slice( 0, -2 ) + 'ію';
-                       }
-
-                       break;
-       }
-
-       return word;
-};

-- 
To view, visit https://gerrit.wikimedia.org/r/245184
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I15a06b07e381cc9074e64e746d22ec51e9e638c4
Gerrit-PatchSet: 8
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Amire80 <amir.ahar...@mail.huji.ac.il>
Gerrit-Reviewer: Amire80 <amir.ahar...@mail.huji.ac.il>
Gerrit-Reviewer: Edokter <er...@darcoury.nl>
Gerrit-Reviewer: Jack Phoenix <j...@countervandalism.net>
Gerrit-Reviewer: Legoktm <lego...@member.fsf.org>
Gerrit-Reviewer: Nikerabbit <niklas.laxst...@gmail.com>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to