lithium\g11n\catalog\adapter\Gettext::_compilePo PHP Метод

_compilePo() защищенный Метод

To improve portability accross libraries the header is generated according to the format of the output of xgettext. This means using the same names for placeholders as well as including an empty entry. The empty entry at the beginning aids in parsing the file as it _attracts_ the preceding comments and following metadata when parsed which could otherwise be mistaken as a continued translation. The only difference in the header format is the initial header which just features one line of text.
protected _compilePo ( resource $stream, array $data ) : boolean
$stream resource
$data array
Результат boolean
    protected function _compilePo($stream, array $data)
    {
        $output[] = '# This file is distributed under the same license as the PACKAGE package.';
        $output[] = '#';
        $output[] = 'msgctxt ""';
        $output[] = 'msgid ""';
        $output[] = 'msgstr ""';
        $output[] = '"Project-Id-Version: PACKAGE VERSION\\n"';
        $output[] = '"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\\n"';
        $output[] = '"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n"';
        $output[] = '"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"';
        $output[] = '"Language-Team: LANGUAGE <EMAIL@ADDRESS>\\n"';
        $output[] = '"MIME-Version: 1.0\\n"';
        $output[] = '"Content-Type: text/plain; charset=UTF-8\\n"';
        $output[] = '"Content-Transfer-Encoding: 8bit\\n"';
        $output[] = '"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\\n"';
        $output[] = '';
        $output = implode("\n", $output) . "\n";
        fwrite($stream, $output);
        foreach ($data as $key => $item) {
            $output = array();
            $item = $this->_prepareForWrite($item);
            foreach ($item['occurrences'] as $occurrence) {
                $output[] = "#: {$occurrence['file']}:{$occurrence['line']}";
            }
            foreach ($item['comments'] as $comment) {
                $output[] = "#. {$comment}";
            }
            foreach ($item['flags'] as $flag => $value) {
                $output[] = "#, {$flag}";
            }
            if (isset($item['context'])) {
                $output[] = "msgctxt \"{$item['context']}\"";
            }
            $output[] = "msgid \"{$item['ids']['singular']}\"";
            if (isset($item['ids']['plural'])) {
                $output[] = "msgid_plural \"{$item['ids']['plural']}\"";
                foreach ((array) $item['translated'] ?: array(null, null) as $key => $value) {
                    $output[] = "msgstr[{$key}] \"{$value}\"";
                }
            } else {
                if (is_array($item['translated'])) {
                    $item['translated'] = array_pop($item['translated']);
                }
                $output[] = "msgstr \"{$item['translated']}\"";
            }
            $output[] = '';
            $output = implode("\n", $output) . "\n";
            fwrite($stream, $output);
        }
        return true;
    }