po.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 147 行

SVN-BASE
147
字号
<?php/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: *//** * File::Gettext *  * PHP versions 4 and 5 * * @category   FileFormats * @package    File_Gettext * @author     Michael Wallner <mike@php.net> * @copyright  2004-2005 Michael Wallner * @license    BSD, revised * @version    CVS: $Id$ * @link       http://pear.php.net/package/File_Gettext *//** * Requires File_Gettext */require_once 'File/Gettext.php';/**  * File_Gettext_PO * * GNU PO file reader and writer. *  * @author      Michael Wallner <mike@php.net> * @version     $Revision$ * @access      public */class File_Gettext_PO extends File_Gettext{    /**     * Constructor     *     * @access  public     * @return  object      File_Gettext_PO     * @param   string      path to GNU PO file     */    function File_Gettext_PO($file = '')    {        $this->file = $file;    }    /**     * Load PO file     *     * @access  public     * @return  mixed   Returns true on success or PEAR_Error on failure.     * @param   string  $file     */    function load($file = null)    {        if (!isset($file)) {            $file = $this->file;        }                // load file        if (!$contents = @file($file)) {            return parent::raiseError($php_errormsg . ' ' . $file);        }        $msgid = null;        $aMatches = array();        foreach ($contents as $line) {            if (preg_match('#^msgid "(.*)"$#', $line, $aMatches)) {                if ($msgid) {                    $this->strings[parent::prepare($msgid)] = parent::prepare($msgstr);                }                $msgid = $aMatches[1];                $msgstr = "";                $msgstr_started = false;            }            if (preg_match('#^msgstr "(.*)"$#', $line, $aMatches)) {                $msgstr = $aMatches[1];                $msgstr_started = true;            }            if (preg_match('#^"(.*)"$#', $line, $aMatches)) {                if ($msgstr_started) {                    $msgstr .= $aMatches[1];                } else {                    $msgid .= $aMatches[1];                }            }        }        if ($msgid) {            $this->strings[parent::prepare($msgid)] = parent::prepare($msgstr);        }        // check for meta info        if (isset($this->strings[''])) {            $this->meta = parent::meta2array($this->strings['']);            unset($this->strings['']);        }                return true;    }        /**     * Save PO file     *     * @access  public     * @return  mixed   Returns true on success or PEAR_Error on failure.     * @param   string  $file     */    function save($file = null)    {        if (!isset($file)) {            $file = $this->file;        }                // open PO file        if (!is_resource($fh = @fopen($file, 'w'))) {            return parent::raiseError($php_errormsg . ' ' . $file);        }        // lock PO file exclusively        if (!@flock($fh, LOCK_EX)) {            @fclose($fh);            return parent::raiseError($php_errmsg . ' ' . $file);        }                // write meta info        if (count($this->meta)) {            $meta = 'msgid ""' . "\nmsgstr " . '""' . "\n";            foreach ($this->meta as $k => $v) {                $meta .= '"' . $k . ': ' . $v . '\n"' . "\n";            }            fwrite($fh, $meta . "\n");        }        // write strings        foreach ($this->strings as $o => $t) {            fwrite($fh,                'msgid "'  . parent::prepare($o, true) . '"' . "\n" .                'msgstr "' . parent::prepare($t, true) . '"' . "\n\n"            );        }                //done        @flock($fh, LOCK_UN);        @fclose($fh);        return true;    }}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?