Make WordPress Core

Ticket #25631: pomo.diff

File pomo.diff, 10.4 KB (added by markoheijnen, 12 years ago)
  • trunk/tests/phpunit/tests/pomo/po.php

     
    3737    }
    3838
    3939        function test_prepend_each_line() {
    40                 $this->assertEquals('baba_', @PO::prepend_each_line('', 'baba_'));
    41                 $this->assertEquals('baba_dyado', @PO::prepend_each_line('dyado', 'baba_'));
    42                 $this->assertEquals("# baba\n# dyado\n# \n", @PO::prepend_each_line("baba\ndyado\n\n", '# '));
     40                $this->assertEquals('baba_', PO::prepend_each_line('', 'baba_'));
     41                $this->assertEquals('baba_dyado', PO::prepend_each_line('dyado', 'baba_'));
     42                $this->assertEquals("# baba\n# dyado\n# \n", PO::prepend_each_line("baba\ndyado\n\n", '# '));
    4343        }
    4444
    4545        function test_poify() {
    4646                //simple
    47                 $this->assertEquals('"baba"', @PO::poify('baba'));
     47                $this->assertEquals('"baba"', PO::poify('baba'));
    4848                //long word
    49                 $this->assertEquals($this->po_a90, @PO::poify($this->a90));
     49                $this->assertEquals($this->po_a90, PO::poify($this->a90));
    5050                // tab
    51                 $this->assertEquals('"ba\tba"', @PO::poify("ba\tba"));
     51                $this->assertEquals('"ba\tba"', PO::poify("ba\tba"));
    5252                // do not add leading empty string of one-line string ending on a newline
    53                 $this->assertEquals('"\\\\a\\\\n\\n"', @PO::poify("\a\\n\n"));
     53                $this->assertEquals('"\\\\a\\\\n\\n"', PO::poify("\a\\n\n"));
    5454                // backslash
    55                 $this->assertEquals('"ba\\\\ba"', @PO::poify('ba\\ba'));
     55                $this->assertEquals('"ba\\\\ba"', PO::poify('ba\\ba'));
    5656                // random wordpress.pot string
    5757                $src = 'Categories can be selectively converted to tags using the <a href="%s">category to tag converter</a>.';
    58                 $this->assertEquals("\"Categories can be selectively converted to tags using the <a href=\\\"%s\\\">category to tag converter</a>.\"", @PO::poify($src));
     58                $this->assertEquals("\"Categories can be selectively converted to tags using the <a href=\\\"%s\\\">category to tag converter</a>.\"", PO::poify($src));
    5959
    60                 $this->assertEquals($this->po_mail, @PO::poify($this->mail));
     60                $this->assertEquals($this->po_mail, PO::poify($this->mail));
    6161        }
    6262
    6363        function test_unpoify() {
    64                 $this->assertEquals('baba', @PO::unpoify('"baba"'));
    65                 $this->assertEquals("baba\ngugu", @PO::unpoify('"baba\n"'."\t\t\t\n".'"gugu"'));
    66                 $this->assertEquals($this->a90, @PO::unpoify($this->po_a90));
    67                 $this->assertEquals('\\t\\n', @PO::unpoify('"\\\\t\\\\n"'));
     64                $this->assertEquals('baba', PO::unpoify('"baba"'));
     65                $this->assertEquals("baba\ngugu", PO::unpoify('"baba\n"'."\t\t\t\n".'"gugu"'));
     66                $this->assertEquals($this->a90, PO::unpoify($this->po_a90));
     67                $this->assertEquals('\\t\\n', PO::unpoify('"\\\\t\\\\n"'));
    6868                // wordwrapped
    69                 $this->assertEquals('babadyado', @PO::unpoify("\"\"\n\"baba\"\n\"dyado\""));
    70                 $this->assertEquals($this->mail, @PO::unpoify($this->po_mail));
     69                $this->assertEquals('babadyado', PO::unpoify("\"\"\n\"baba\"\n\"dyado\""));
     70                $this->assertEquals($this->mail, PO::unpoify($this->po_mail));
    7171        }
    7272
    7373        function test_export_entry() {
    7474                $entry = new Translation_Entry(array('singular' => 'baba'));
    75                 $this->assertEquals("msgid \"baba\"\nmsgstr \"\"", @PO::export_entry($entry));
     75                $this->assertEquals("msgid \"baba\"\nmsgstr \"\"", PO::export_entry($entry));
    7676                // plural
    7777                $entry = new Translation_Entry(array('singular' => 'baba', 'plural' => 'babas'));
    7878                $this->assertEquals('msgid "baba"
    7979msgid_plural "babas"
    8080msgstr[0] ""
    81 msgstr[1] ""', @PO::export_entry($entry));
     81msgstr[1] ""', PO::export_entry($entry));
    8282                $entry = new Translation_Entry(array('singular' => 'baba', 'translator_comments' => "baba\ndyado"));
    8383                $this->assertEquals('#  baba
    8484#  dyado
    8585msgid "baba"
    86 msgstr ""', @PO::export_entry($entry));
     86msgstr ""', PO::export_entry($entry));
    8787                $entry = new Translation_Entry(array('singular' => 'baba', 'extracted_comments' => "baba"));
    8888                $this->assertEquals('#. baba
    8989msgid "baba"
    90 msgstr ""', @PO::export_entry($entry));
     90msgstr ""', PO::export_entry($entry));
    9191                $entry = new Translation_Entry(array(
    9292                        'singular' => 'baba',
    9393                        'extracted_comments' => "baba",
     
    9696#: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
    9797#: 29
    9898msgid "baba"
    99 msgstr ""', @PO::export_entry($entry));
     99msgstr ""', PO::export_entry($entry));
    100100                $entry = new Translation_Entry(array('singular' => 'baba', 'translations' => array()));
    101                 $this->assertEquals("msgid \"baba\"\nmsgstr \"\"", @PO::export_entry($entry));
     101                $this->assertEquals("msgid \"baba\"\nmsgstr \"\"", PO::export_entry($entry));
    102102
    103103                $entry = new Translation_Entry(array('singular' => 'baba', 'translations' => array('куку', 'буку')));
    104                 $this->assertEquals("msgid \"baba\"\nmsgstr \"куку\"", @PO::export_entry($entry));
     104                $this->assertEquals("msgid \"baba\"\nmsgstr \"куку\"", PO::export_entry($entry));
    105105
    106106                $entry = new Translation_Entry(array('singular' => 'baba', 'plural' => 'babas', 'translations' => array('кукубуку')));
    107107                $this->assertEquals('msgid "baba"
    108108msgid_plural "babas"
    109 msgstr[0] "кукубуку"', @PO::export_entry($entry));
     109msgstr[0] "кукубуку"', PO::export_entry($entry));
    110110
    111111                $entry = new Translation_Entry(array('singular' => 'baba', 'plural' => 'babas', 'translations' => array('кукубуку', 'кукуруку', 'бабаяга')));
    112112                $this->assertEquals('msgid "baba"
    113113msgid_plural "babas"
    114114msgstr[0] "кукубуку"
    115115msgstr[1] "кукуруку"
    116 msgstr[2] "бабаяга"', @PO::export_entry($entry));
     116msgstr[2] "бабаяга"', PO::export_entry($entry));
    117117                // context
    118118                $entry = new Translation_Entry(array('context' => 'ctxt', 'singular' => 'baba', 'plural' => 'babas', 'translations' => array('кукубуку', 'кукуруку', 'бабаяга'), 'flags' => array('fuzzy', 'php-format')));
    119119                $this->assertEquals('#, fuzzy, php-format
     
    122122msgid_plural "babas"
    123123msgstr[0] "кукубуку"
    124124msgstr[1] "кукуруку"
    125 msgstr[2] "бабаяга"', @PO::export_entry($entry));
     125msgstr[2] "бабаяга"', PO::export_entry($entry));
    126126    }
    127127
    128128        function test_export_entries() {
  • trunk/src/wp-includes/pomo/mo.php

     
    22/**
    33 * Class for working with MO files
    44 *
    5  * @version $Id: mo.php 718 2012-10-31 00:32:02Z nbachiyski $
     5 * @version $Id: mo.php 780 2013-06-19 12:12:28Z markoheijnen $
    66 * @package pomo
    77 * @subpackage mo
    88 */
     
    207207                        $translation = $reader->substr( $strings, $t['pos'], $t['length'] );
    208208
    209209                        if ('' === $original) {
    210                                 $this->set_headers($this->make_headers($translation));
     210                                $headers = $this->make_headers($translation);
     211                                $this->set_headers($headers);
    211212                        } else {
    212213                                $entry = &$this->make_entry($original, $translation);
    213214                                $this->entries[$entry->key()] = &$entry;
  • trunk/src/wp-includes/pomo/po.php

     
    22/**
    33 * Class for working with PO files
    44 *
    5  * @version $Id: po.php 718 2012-10-31 00:32:02Z nbachiyski $
     5 * @version $Id: po.php 812 2013-10-18 17:34:16Z markoheijnen $
    66 * @package pomo
    77 * @subpackage po
    88 */
     
    9797         * @param string $string the string to format
    9898         * @return string the poified string
    9999         */
    100         function poify($string) {
     100        public static function poify($string) {
    101101                $quote = '"';
    102102                $slash = '\\';
    103103                $newline = "\n";
     
    128128         * @param string $string PO-formatted string
    129129         * @return string enascaped string
    130130         */
    131         function unpoify($string) {
     131        public static function unpoify($string) {
    132132                $escapes = array('t' => "\t", 'n' => "\n", '\\' => '\\');
    133133                $lines = array_map('trim', explode("\n", $string));
    134134                $lines = array_map(array('PO', 'trim_quotes'), $lines);
     
    160160         * @param string $string prepend lines in this string
    161161         * @param string $with prepend lines with this string
    162162         */
    163         function prepend_each_line($string, $with) {
     163        public static function prepend_each_line($string, $with) {
    164164                $php_with = var_export($with, true);
    165165                $lines = explode("\n", $string);
    166166                // do not prepend the string on the last empty line, artefact by explode
     
    180180         * @param string $char character to denote a special PO comment,
    181181         *      like :, default is a space
    182182         */
    183         function comment_block($text, $char=' ') {
     183        public static function comment_block($text, $char=' ') {
    184184                $text = wordwrap($text, PO_MAX_LINE_LEN - 3);
    185185                return PO::prepend_each_line($text, "#$char ");
    186186        }
     
    193193         * @return string|bool PO-style formatted string for the entry or
    194194         *      false if the entry is empty
    195195         */
    196         function export_entry(&$entry) {
     196        public static function export_entry(&$entry) {
    197197                if (is_null($entry->singular)) return false;
    198198                $po = array();
    199199                if (!empty($entry->translator_comments)) $po[] = PO::comment_block($entry->translator_comments);
     
    223223                        $res = $this->read_entry($f, $lineno);
    224224                        if (!$res) break;
    225225                        if ($res['entry']->singular == '') {
    226                                 $this->set_headers($this->make_headers($res['entry']->translations[0]));
     226                                $headers = $this->make_headers($res['entry']->translations[0]);
     227                                $this->set_headers($headers);
    227228                        } else {
    228229                                $this->add_entry($res['entry']);
    229230                        }
     
    274275                                        return false;
    275276                                }
    276277                                // add comment
    277                                 $this->add_comment_to_entry($entry, $line);;
     278                                $this->add_comment_to_entry($entry, $line);
    278279                        } elseif (preg_match('/^msgctxt\s+(".*")/', $line, $m)) {
    279280                                if ($is_final($context)) {
    280281                                        PO::read_line($f, 'put-back');
     
    375376                }
    376377        }
    377378
    378         function trim_quotes($s) {
     379        public static function trim_quotes($s) {
    379380                if ( substr($s, 0, 1) == '"') $s = substr($s, 1);
    380381                if ( substr($s, -1, 1) == '"') $s = substr($s, 0, -1);
    381382                return $s;
    382383        }
    383384}
    384 endif;
     385endif;
     386 No newline at end of file
  • trunk/src/wp-includes/pomo/translations.php

     
    22/**
    33 * Class for a set of entries for translation and their associated headers
    44 *
    5  * @version $Id: translations.php 718 2012-10-31 00:32:02Z nbachiyski $
     5 * @version $Id: translations.php 811 2013-10-18 17:26:21Z markoheijnen $
    66 * @package pomo
    77 * @subpackage translations
    88 */