WordPress.org

Make WordPress Core

Ticket #43902: mo-small-optimize2.diff

File mo-small-optimize2.diff, 3.6 KB (added by likemusic, 19 months ago)

Patch file

  • wp-includes/pomo/mo.php

    diff --git wp-includes/pomo/mo.php wp-includes/pomo/mo.php
    index 6ec3524..777d9db 100644
    require_once dirname( __FILE__ ) . '/streams.php'; 
    1212
    1313if ( ! class_exists( 'MO', false ) ) :
    1414        class MO extends Gettext_Translations {
     15                const SINGULAR_PLURAL_SEPARATOR = "\x0";
     16                const CONTEXT_SEPARATOR = "\x4";
    1517
    1618                var $_nplurals = 2;
    1719
    if ( ! class_exists( 'MO', false ) ) : 
    117119                        // headers' msgid is an empty string
    118120                        fwrite( $fh, pack( 'VV', 0, $current_addr ) );
    119121                        $current_addr++;
    120                         $originals_table = chr( 0 );
     122                        $originals_table = self::SINGULAR_PLURAR_SEPARATOR;
    121123
    122124                        $reader = new POMO_Reader();
    123125
    124126                        foreach ( $entries as $entry ) {
    125                                 $originals_table .= $this->export_original( $entry ) . chr( 0 );
     127                                $originals_table .= $this->export_original( $entry ) . self::SINGULAR_PLURAR_SEPARATOR;
    126128                                $length           = $reader->strlen( $this->export_original( $entry ) );
    127129                                fwrite( $fh, pack( 'VV', $length, $current_addr ) );
    128130                                $current_addr += $length + 1; // account for the NULL byte after
    if ( ! class_exists( 'MO', false ) ) : 
    131133                        $exported_headers = $this->export_headers();
    132134                        fwrite( $fh, pack( 'VV', $reader->strlen( $exported_headers ), $current_addr ) );
    133135                        $current_addr      += strlen( $exported_headers ) + 1;
    134                         $translations_table = $exported_headers . chr( 0 );
     136                        $translations_table = $exported_headers . self::SINGULAR_PLURAR_SEPARATOR;
    135137
    136138                        foreach ( $entries as $entry ) {
    137                                 $translations_table .= $this->export_translations( $entry ) . chr( 0 );
     139                                $translations_table .= $this->export_translations( $entry ) . self::SINGULAR_PLURAR_SEPARATOR;
    138140                                $length              = $reader->strlen( $this->export_translations( $entry ) );
    139141                                fwrite( $fh, pack( 'VV', $length, $current_addr ) );
    140142                                $current_addr += $length + 1;
    if ( ! class_exists( 'MO', false ) ) : 
    153155                        //TODO: warnings for control characters
    154156                        $exported = $entry->singular;
    155157                        if ( $entry->is_plural ) {
    156                                 $exported .= chr( 0 ) . $entry->plural;
     158                                $exported .= self::SINGULAR_PLURAR_SEPARATOR . $entry->plural;
    157159                        }
    158160                        if ( $entry->context ) {
    159                                 $exported = $entry->context . chr( 4 ) . $exported;
     161                                $exported = $entry->context . self::CONTEXT_SEPARATOR . $exported;
    160162                        }
    161163                        return $exported;
    162164                }
    if ( ! class_exists( 'MO', false ) ) : 
    167169                 */
    168170                function export_translations( $entry ) {
    169171                        //TODO: warnings for control characters
    170                         return $entry->is_plural ? implode( chr( 0 ), $entry->translations ) : $entry->translations[0];
     172                        return $entry->is_plural ? implode( self::SINGULAR_PLURAR_SEPARATOR, $entry->translations ) : $entry->translations[0];
    171173                }
    172174
    173175                /**
    if ( ! class_exists( 'MO', false ) ) : 
    304306                function &make_entry( $original, $translation ) {
    305307                        $entry = new Translation_Entry();
    306308                        // look for context
    307                         $parts = explode( chr( 4 ), $original );
     309                        $parts = explode( self::CONTEXT_SEPARATOR, $original );
    308310                        if ( isset( $parts[1] ) ) {
    309311                                $original       = $parts[1];
    310312                                $entry->context = $parts[0];
    311313                        }
    312314                        // look for plural original
    313                         $parts           = explode( chr( 0 ), $original );
     315                        $parts           = explode( self::SINGULAR_PLURAR_SEPARATOR, $original );
    314316                        $entry->singular = $parts[0];
    315317                        if ( isset( $parts[1] ) ) {
    316318                                $entry->is_plural = true;
    317319                                $entry->plural    = $parts[1];
    318320                        }
    319321                        // plural translations are also separated by \0
    320                         $entry->translations = explode( chr( 0 ), $translation );
     322                        $entry->translations = explode( self::SINGULAR_PLURAR_SEPARATOR, $translation );
    321323                        return $entry;
    322324                }
    323325