Make WordPress Core


Ignore:
Timestamp:
02/01/2024 08:57:03 PM (3 years ago)
Author:
swissspidy
Message:

I18N: Fix plural forms parsing in WP_Translation_File.

Ensures the plural expression from the translation file header is correctly parsed.
Prevents silent failures in the attempt to create the plural form function.

Adds additional tests.

Props Chouby.
See #59656.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/l10n/wpTranslations.php

    r57513 r57518  
    222222        /**
    223223         * @covers ::translate_plural
     224         * @covers WP_Translation_File::get_plural_form
     225         */
     226        public function test_translate_plural_complex() {
     227                load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/l10n/plural-complex.mo' );
     228
     229                $this->assertSame( '%s razpoložljiva posodobitev', _n( '%s update available', '%s updates available', 101, 'wp-tests-domain' ) ); // 1, 101, 201
     230                $this->assertSame( '%s razpoložljivi posodobitvi', _n( '%s update available', '%s updates available', 102, 'wp-tests-domain' ) ); // 2, 102, 202
     231                $this->assertSame( '%s razpoložljive posodobitve', _n( '%s update available', '%s updates available', 103, 'wp-tests-domain' ) ); // 3, 4, 103
     232                $this->assertSame( '%s razpoložljivih posodobitev', _n( '%s update available', '%s updates available', 5, 'wp-tests-domain' ) ); // 0, 5, 6
     233        }
     234
     235        /**
     236         * @covers ::translate_plural
     237         * @covers WP_Translation_File::get_plural_form
     238         */
     239        public function test_translate_plural_complex_php() {
     240                load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/l10n/plural-complex.php' );
     241
     242                $this->assertSame( '%s razpoložljiva posodobitev', _n( '%s update available', '%s updates available', 101, 'wp-tests-domain' ) ); // 1, 101, 201
     243                $this->assertSame( '%s razpoložljivi posodobitvi', _n( '%s update available', '%s updates available', 102, 'wp-tests-domain' ) ); // 2, 102, 202
     244                $this->assertSame( '%s razpoložljive posodobitve', _n( '%s update available', '%s updates available', 103, 'wp-tests-domain' ) ); // 3, 4, 103
     245                $this->assertSame( '%s razpoložljivih posodobitev', _n( '%s update available', '%s updates available', 5, 'wp-tests-domain' ) ); // 0, 5, 6
     246        }
     247
     248        /**
     249         * @covers WP_Translation_File::get_plural_form
     250         */
     251        public function test_get_plural_form() {
     252                $moe = WP_Translation_File::create( DIR_TESTDATA . '/l10n/plural-complex.mo' );
     253
     254                $this->assertSame( 0, $moe->get_plural_form( 1 ) );
     255                $this->assertSame( 0, $moe->get_plural_form( 101 ) );
     256                $this->assertSame( 0, $moe->get_plural_form( 201 ) );
     257                $this->assertSame( 1, $moe->get_plural_form( 2 ) );
     258                $this->assertSame( 1, $moe->get_plural_form( 102 ) );
     259                $this->assertSame( 1, $moe->get_plural_form( 202 ) );
     260                $this->assertSame( 2, $moe->get_plural_form( 3 ) );
     261                $this->assertSame( 2, $moe->get_plural_form( 4 ) );
     262                $this->assertSame( 2, $moe->get_plural_form( 103 ) );
     263                $this->assertSame( 3, $moe->get_plural_form( 0 ) );
     264                $this->assertSame( 3, $moe->get_plural_form( 5 ) );
     265                $this->assertSame( 3, $moe->get_plural_form( 6 ) );
     266        }
     267
     268        /**
     269         * @covers ::translate_plural
    224270         */
    225271        public function test_translate_plural_missing() {
Note: See TracChangeset for help on using the changeset viewer.