function export_as_po() { if (!isset($this->project) || !$this->project) { $this->project = GP::$project->get($this->project_id); } // TODO: rename locale column to locale_slug and use freely $this->locale as the locale object $locale = GP_Locales::by_slug($this->locale); $po = new PO(); // TODO: add more meta data in the project: language team, report URL // TODO: last updated for a translation set $po->set_header('PO-Revision-Date', gmdate('Y-m-d H:i:s+0000')); $po->set_header('MIME-Version', '1.0'); $po->set_header('Content-Type', 'text/plain; charset=UTF-8'); $po->set_header('Content-Transfer-Encoding', '8bit'); $po->set_header('Plural-Forms', "nplurals={$locale->nplurals}; plural={$locale->plural_expression};"); $po->set_header('X-Generator', 'GlotPress/' . gp_get_option('version')); $entries = GP::$translation->for_translation($this->project, $this, 'no-limit', array('status' => 'current')); foreach ($entries as $entry) { $po->add_entry($entry); } $po->set_header('Project-Id-Version', $this->project->name); return $po->export(); }
function test_export_to_file() { $po = new PO(); $entry = new Translation_Entry(array('singular' => 'baba')); $entry2 = new Translation_Entry(array('singular' => 'dyado')); $po->set_header('Project-Id-Version', 'WordPress 2.6-bleeding'); $po->set_header('POT-Creation-Date', '2008-04-08 18:00+0000'); $po->add_entry($entry); $po->add_entry($entry2); $temp_fn = $this->temp_filename(); $po->export_to_file($temp_fn, false); $this->assertEquals($po->export(false), file_get_contents($temp_fn)); $temp_fn2 = $this->temp_filename(); $po->export_to_file($temp_fn2); $this->assertEquals($po->export(), file_get_contents($temp_fn2)); }
/** * Update with the provided data. * * @since 1.0.0 * * @param array $data The data to update with. * @param bool $replace Optional Replace all headers/entries/metadata with those provided? */ public function update($data, $replace = false) { // Update headers if present if (isset($data['headers'])) { if ($replace) { // empty all headers $this->po->headers = array(); } $this->po->set_headers($data['headers']); } // Update entries if present if (isset($data['entries'])) { if ($replace) { // empty all entries $this->po->entries = array(); } foreach ($data['entries'] as $entry) { $this->po->add_entry($entry); } } // Update metadata if present if (isset($data['metadata'])) { if ($replace) { // Delete all properties other than headers or entries foreach (get_object_vars($this->po) as $prop => $value) { if ($prop !== 'headers' && $prop !== 'entries') { unset($this->po->{$prop}); } } } foreach ($data['metadata'] as $prop => $value) { $this->po->{$prop} = $value; } } }