Make WordPress Core


Ignore:
Timestamp:
02/01/2024 08:57:03 PM (4 months 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.