WordPress.org

Make WordPress Core

Changeset 18528


Ignore:
Timestamp:
08/11/11 04:29:35 (6 years ago)
Author:
nbachiyski
Message:

Sync pomo library with the current GlotPress version

Location:
trunk/wp-includes/pomo
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/pomo/entry.php

    r13228 r18528  
    33 * Contains Translation_Entry class 
    44 * 
    5  * @version $Id: entry.php 406 2010-02-07 11:10:24Z nbachiyski $ 
     5 * @version $Id: entry.php 621 2011-06-13 12:21:50Z nbachiyski $ 
    66 * @package pomo 
    77 * @subpackage entry 
     
    6666        return is_null($this->context)? $this->singular : $this->context.chr(4).$this->singular; 
    6767    } 
     68     
     69    function merge_with(&$other) { 
     70        $this->flags = array_unique( array_merge( $this->flags, $other->flags ) ); 
     71        $this->references = array_unique( array_merge( $this->references, $other->references ) ); 
     72        if ( $this->extracted_comments != $other->extracted_comments ) { 
     73            $this->extracted_comments .= $other->extracted_comments; 
     74        } 
     75         
     76    } 
    6877} 
    6978endif; 
  • trunk/wp-includes/pomo/mo.php

    r13830 r18528  
    33 * Class for working with MO files 
    44 * 
    5  * @version $Id: mo.php 406 2010-02-07 11:10:24Z nbachiyski $ 
     5 * @version $Id: mo.php 602 2011-01-30 12:43:29Z nbachiyski $ 
    66 * @package pomo 
    77 * @subpackage mo 
     
    3131        $fh = fopen($filename, 'wb'); 
    3232        if ( !$fh ) return false; 
     33        $res = $this->export_to_file_handle( $fh ); 
     34        fclose($fh); 
     35        return $res; 
     36    } 
     37     
     38    function export() { 
     39        $tmp_fh = fopen("php://temp", 'r+'); 
     40        if ( !$tmp_fh ) return false; 
     41        $this->export_to_file_handle( $tmp_fh ); 
     42        rewind( $tmp_fh ); 
     43        return stream_get_contents( $tmp_fh ); 
     44    } 
     45     
     46    function export_to_file_handle($fh) { 
    3347        $entries = array_filter($this->entries, create_function('$e', 'return !empty($e->translations);')); 
    3448        ksort($entries); 
     
    4458            $translations_lenghts_addr, $size_of_hash, $hash_addr)); 
    4559        fseek($fh, $originals_lenghts_addr); 
    46  
     60         
    4761        // headers' msgid is an empty string 
    4862        fwrite($fh, pack('VV', 0, $current_addr)); 
     
    5670            $current_addr += $length + 1; // account for the NULL byte after 
    5771        } 
    58  
     72         
    5973        $exported_headers = $this->export_headers(); 
    6074        fwrite($fh, pack('VV', strlen($exported_headers), $current_addr)); 
    6175        $current_addr += strlen($exported_headers) + 1; 
    6276        $translations_table = $exported_headers . chr(0); 
    63  
     77         
    6478        foreach($entries as $entry) { 
    6579            $translations_table .= $this->export_translations($entry) . chr(0); 
     
    6882            $current_addr += $length + 1; 
    6983        } 
    70  
     84         
    7185        fwrite($fh, $originals_table); 
    7286        fwrite($fh, $translations_table); 
    73         fclose($fh); 
    74     } 
    75  
     87        return true; 
     88    } 
     89     
    7690    function export_original($entry) { 
    7791        //TODO: warnings for control characters 
     
    8195        return $exported; 
    8296    } 
    83  
     97     
    8498    function export_translations($entry) { 
    8599        //TODO: warnings for control characters 
    86100        return implode(chr(0), $entry->translations); 
    87101    } 
    88  
     102     
    89103    function export_headers() { 
    90104        $exported = ''; 
     
    194208     * Build a Translation_Entry from original string and translation strings, 
    195209     * found in a MO file 
    196      * 
     210     *  
    197211     * @static 
    198212     * @param string $original original string to translate from MO file. Might contain 
  • trunk/wp-includes/pomo/po.php

    r13830 r18528  
    33 * Class for working with PO files 
    44 * 
    5  * @version $Id: po.php 406 2010-02-07 11:10:24Z nbachiyski $ 
     5 * @version $Id: po.php 589 2010-12-18 01:40:57Z nbachiyski $ 
    66 * @package pomo 
    77 * @subpackage po 
     
    1919if ( !class_exists( 'PO' ) ): 
    2020class PO extends Gettext_Translations { 
    21  
     21     
     22    var $comments_before_headers = ''; 
    2223 
    2324    /** 
     
    3233        } 
    3334        $poified = PO::poify($header_string); 
    34         return rtrim("msgid \"\"\nmsgstr $poified"); 
     35        if ($this->comments_before_headers) 
     36            $before_headers = $this->prepend_each_line(rtrim($this->comments_before_headers)."\n", '# '); 
     37        else 
     38            $before_headers = ''; 
     39        return rtrim("{$before_headers}msgid \"\"\nmsgstr $poified"); 
    3540    } 
    3641 
     
    7681        return fclose($fh); 
    7782    } 
     83     
     84    /** 
     85     * Text to include as a comment before the start of the PO contents 
     86     *  
     87     * Doesn't need to include # in the beginning of lines, these are added automatically 
     88     */ 
     89    function set_comment_before_headers( $text ) { 
     90        $this->comments_before_headers = $text; 
     91    } 
    7892 
    7993    /** 
     
    107121        return $po; 
    108122    } 
    109  
     123     
    110124    /** 
    111125     * Gives back the original string from a PO-formatted string 
    112      * 
     126     *  
    113127     * @static 
    114128     * @param string $string PO-formatted string 
     
    140154 
    141155    /** 
    142      * Inserts $with in the beginning of every new line of $string and 
     156     * Inserts $with in the beginning of every new line of $string and  
    143157     * returns the modified string 
    144158     * 
     
    218232        return $res !== false; 
    219233    } 
    220  
     234     
    221235    function read_entry($f, $lineno = 0) { 
    222236        $entry = new Translation_Entry(); 
     
    255269                } 
    256270                // add comment 
    257                 $this->add_comment_to_entry($entry, $line); 
     271                $this->add_comment_to_entry($entry, $line);; 
    258272            } elseif (preg_match('/^msgctxt\s+(".*")/', $line, $m)) { 
    259273                if ($is_final($context)) { 
     
    323337        return array('entry' => $entry, 'lineno' => $lineno); 
    324338    } 
    325  
     339     
    326340    function read_line($f, $action = 'read') { 
    327341        static $last_line = ''; 
     
    340354        return $line; 
    341355    } 
    342  
     356     
    343357    function add_comment_to_entry(&$entry, $po_comment_line) { 
    344358        $first_two = substr($po_comment_line, 0, 2); 
     
    354368        } 
    355369    } 
    356  
     370     
    357371    function trim_quotes($s) { 
    358372        if ( substr($s, 0, 1) == '"') $s = substr($s, 1); 
  • trunk/wp-includes/pomo/streams.php

    r15590 r18528  
    44 * Based on the classes from Danilo Segan <danilo@kvota.net> 
    55 * 
    6  * @version $Id: streams.php 406 2010-02-07 11:10:24Z nbachiyski $ 
     6 * @version $Id: streams.php 597 2011-01-16 20:14:36Z nbachiyski $ 
    77 * @package pomo 
    88 * @subpackage streams 
     
    1111if ( !class_exists( 'POMO_Reader' ) ): 
    1212class POMO_Reader { 
    13  
     13     
    1414    var $endian = 'little'; 
    1515    var $_post = ''; 
    16  
     16     
    1717    function POMO_Reader() { 
    1818        $this->is_overloaded = ((ini_get("mbstring.func_overload") & 2) != 0) && function_exists('mb_substr'); 
    1919        $this->_pos = 0; 
    2020    } 
    21  
     21     
    2222    /** 
    2323     * Sets the endianness of the file. 
    2424     * 
    25      * @param string $endian 'big' or 'little' 
     25     * @param $endian string 'big' or 'little' 
    2626     */ 
    2727    function setEndian($endian) { 
     
    5858        return unpack($endian_letter.$count, $bytes); 
    5959    } 
    60  
    61  
     60     
     61     
    6262    function substr($string, $start, $length) { 
    6363        if ($this->is_overloaded) { 
     
    6767        } 
    6868    } 
    69  
     69     
    7070    function strlen($string) { 
    7171        if ($this->is_overloaded) { 
     
    7575        } 
    7676    } 
    77  
     77     
    7878    function str_split($string, $chunk_size) { 
    7979        if (!function_exists('str_split')) { 
     
    8787        } 
    8888    } 
    89  
    90  
     89     
     90         
    9191    function pos() { 
    9292        return $this->_pos; 
     
    9696        return true; 
    9797    } 
    98  
     98     
    9999    function close() { 
    100100        return true; 
     
    107107    function POMO_FileReader($filename) { 
    108108        parent::POMO_Reader(); 
    109         $this->_f = fopen($filename, 'r'); 
    110     } 
    111  
     109        $this->_f = fopen($filename, 'rb'); 
     110    } 
     111     
    112112    function read($bytes) { 
    113113        return fread($this->_f, $bytes); 
    114114    } 
    115  
     115     
    116116    function seekto($pos) { 
    117117        if ( -1 == fseek($this->_f, $pos, SEEK_SET)) { 
     
    121121        return true; 
    122122    } 
    123  
     123     
    124124    function is_resource() { 
    125125        return is_resource($this->_f); 
    126126    } 
    127  
     127     
    128128    function feof() { 
    129129        return feof($this->_f); 
    130130    } 
    131  
     131     
    132132    function close() { 
    133133        return fclose($this->_f); 
    134134    } 
    135  
     135     
    136136    function read_all() { 
    137137        $all = ''; 
     
    149149 */ 
    150150class POMO_StringReader extends POMO_Reader { 
    151  
     151     
    152152    var $_str = ''; 
    153  
     153     
    154154    function POMO_StringReader($str = '') { 
    155155        parent::POMO_Reader(); 
     
    179179        return $this->substr($this->_str, $this->_pos, $this->strlen($this->_str)); 
    180180    } 
    181  
     181     
    182182} 
    183183endif; 
  • trunk/wp-includes/pomo/translations.php

    r13830 r18528  
    33 * Class for a set of entries for translation and their associated headers 
    44 * 
    5  * @version $Id: translations.php 406 2010-02-07 11:10:24Z nbachiyski $ 
     5 * @version $Id: translations.php 590 2010-12-20 19:58:37Z nbachiyski $ 
    66 * @package pomo 
    77 * @subpackage translations 
     
    2828        if (false === $key) return false; 
    2929        $this->entries[$key] = &$entry; 
     30        return true; 
     31    } 
     32     
     33    function add_entry_or_merge($entry) { 
     34        if (is_array($entry)) { 
     35            $entry = new Translation_Entry($entry); 
     36        } 
     37        $key = $entry->key(); 
     38        if (false === $key) return false; 
     39        if (isset($this->entries[$key])) 
     40            $this->entries[$key]->merge_with($entry); 
     41        else 
     42            $this->entries[$key] = &$entry; 
    3043        return true; 
    3144    } 
     
    109122        } 
    110123    } 
     124     
     125    function merge_originals_with(&$other) { 
     126        foreach( $other->entries as $entry ) { 
     127            if ( !isset( $this->entries[$entry->key()] ) ) 
     128                $this->entries[$entry->key()] = $entry; 
     129            else 
     130                $this->entries[$entry->key()]->merge_with($entry); 
     131        } 
     132    } 
    111133} 
    112134 
     
    127149        return call_user_func($this->_gettext_select_plural_form, $count); 
    128150    } 
    129  
     151     
    130152    function nplurals_and_expression_from_header($header) { 
    131153        if (preg_match('/^\s*nplurals\s*=\s*(\d+)\s*;\s+plural\s*=\s*(.+)$/', $header, $matches)) { 
     
    153175     * Adds parantheses to the inner parts of ternary operators in 
    154176     * plural expressions, because PHP evaluates ternary oerators from left to right 
    155      * 
     177     *  
    156178     * @param string $expression the expression without parentheses 
    157179     * @return string the expression with parentheses added 
     
    181203        return rtrim($res, ';'); 
    182204    } 
    183  
     205     
    184206    function make_headers($translation) { 
    185207        $headers = array(); 
     
    194216        return $headers; 
    195217    } 
    196  
     218     
    197219    function set_header($header, $value) { 
    198220        parent::set_header($header, $value); 
     
    213235    var $entries = array(); 
    214236    var $headers = array(); 
    215  
     237     
    216238    function add_entry($entry) { 
    217239        return true; 
Note: See TracChangeset for help on using the changeset viewer.