/** * Builds a string from the entry for inclusion in PO file * * @static * @param object &$entry the entry to convert to po string * @return string|bool PO-style formatted string for the entry or * false if the entry is empty */ function export_entry(&$entry) { if (is_null($entry->singular)) { return false; } $po = array(); if (!empty($entry->translator_comments)) { $po[] = PO::comment_block($entry->translator_comments); } if (!empty($entry->extracted_comments)) { $po[] = PO::comment_block($entry->extracted_comments, '.'); } if (!empty($entry->references)) { $po[] = PO::comment_block(implode(' ', $entry->references), ':'); } if (!empty($entry->flags)) { $po[] = PO::comment_block(implode(", ", $entry->flags), ','); } if (!is_null($entry->context)) { $po[] = 'msgctxt ' . PO::poify($entry->context); } $po[] = 'msgid ' . PO::poify($entry->singular); if (!$entry->is_plural) { $translation = empty($entry->translations) ? '' : $entry->translations[0]; $po[] = 'msgstr ' . PO::poify($translation); } else { $po[] = 'msgid_plural ' . PO::poify($entry->plural); $translations = empty($entry->translations) ? array('', '') : $entry->translations; foreach ($translations as $i => $translation) { $po[] = "msgstr[{$i}] " . PO::poify($translation); } } return implode("\n", $po); }