function test_export_entry() { $po = new PO(); $entry = new Translation_Entry(array('singular' => 'baba')); $this->assertEquals("msgid \"baba\"\nmsgstr \"\"", $po->export_entry($entry)); // plural $entry = new Translation_Entry(array('singular' => 'baba', 'plural' => 'babas')); $this->assertEquals('msgid "baba" msgid_plural "babas" msgstr[0] "" msgstr[1] ""', $po->export_entry($entry)); $entry = new Translation_Entry(array('singular' => 'baba', 'translator_comments' => "baba\ndyado")); $this->assertEquals('# baba # dyado msgid "baba" msgstr ""', $po->export_entry($entry)); $entry = new Translation_Entry(array('singular' => 'baba', 'extracted_comments' => "baba")); $this->assertEquals('#. baba msgid "baba" msgstr ""', $po->export_entry($entry)); $entry = new Translation_Entry(array('singular' => 'baba', 'extracted_comments' => "baba", 'references' => range(1, 29))); $this->assertEquals('#. baba #: 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 #: 29 msgid "baba" msgstr ""', $po->export_entry($entry)); $entry = new Translation_Entry(array('singular' => 'baba', 'translations' => array())); $this->assertEquals("msgid \"baba\"\nmsgstr \"\"", $po->export_entry($entry)); $entry = new Translation_Entry(array('singular' => 'baba', 'translations' => array('куку', 'буку'))); $this->assertEquals("msgid \"baba\"\nmsgstr \"куку\"", $po->export_entry($entry)); $entry = new Translation_Entry(array('singular' => 'baba', 'plural' => 'babas', 'translations' => array('кукубуку'))); $this->assertEquals('msgid "baba" msgid_plural "babas" msgstr[0] "кукубуку"', $po->export_entry($entry)); $entry = new Translation_Entry(array('singular' => 'baba', 'plural' => 'babas', 'translations' => array('кукубуку', 'кукуруку', 'бабаяга'))); $this->assertEquals('msgid "baba" msgid_plural "babas" msgstr[0] "кукубуку" msgstr[1] "кукуруку" msgstr[2] "бабаяга"', $po->export_entry($entry)); // context $entry = new Translation_Entry(array('context' => 'ctxt', 'singular' => 'baba', 'plural' => 'babas', 'translations' => array('кукубуку', 'кукуруку', 'бабаяга'), 'flags' => array('fuzzy', 'php-format'))); $this->assertEquals('#, fuzzy, php-format msgctxt "ctxt" msgid "baba" msgid_plural "babas" msgstr[0] "кукубуку" msgstr[1] "кукуруку" msgstr[2] "бабаяга"', $po->export_entry($entry)); }
function load_from_file($ext_filename) { $source = MakePOT::get_first_lines($ext_filename); $pot = ''; foreach ($this->headers as $header) { $string = MakePOT::get_addon_header($header, $source); if (!$string) { continue; } $args = array('singular' => $string, 'extracted_comments' => $header . ' of the plugin/theme'); $entry = new Translation_Entry($args); $pot .= "\n" . PO::export_entry($entry) . "\n"; } return $pot; }
function command_extract() { $args = func_get_args(); $pot_filename = $args[0]; if (isset($args[1]) && is_array($args[1])) { $filenames = $args[1]; } else { $filenames = array_slice($args, 1); } $global_name = '__entries_' . mt_rand(1, 1000); $GLOBALS[$global_name] = array(); foreach ($filenames as $filename) { $tokens = token_get_all(file_get_contents($filename)); $aggregator = $this->make_string_aggregator($global_name, $filename); $this->walk_tokens($tokens, array($this, 'ignore_token'), array($this, 'ignore_token'), $aggregator); } $potf = '-' == $pot_filename ? STDOUT : @fopen($pot_filename, 'a'); if (false === $potf) { $this->cli_die("Couldn't open pot file: {$pot_filename}"); } foreach ($GLOBALS[$global_name] as $item) { @(list($string, $comment_id, $filename, $line_number) = $item); $filename = isset($filename) ? preg_replace('|^\\./|', '', $filename) : ''; $ref_line_number = isset($line_number) ? ":{$line_number}" : ''; $args = array('singular' => $string, 'extracted_comments' => "Not gettexted string {$comment_id}", 'references' => array("{$filename}{$ref_line_number}")); $entry = new Translation_Entry($args); fwrite($potf, "\n" . PO::export_entry($entry) . "\n"); } if ('-' != $pot_filename) { fclose($potf); } return true; }