yiiapi/framework/i18n/gettext/CGettextPoFile.php
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
/**
* CGettextPoFile class file.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.yiiframework.com/
* @copyright 2008-2013 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
/**
* CGettextPoFile represents a PO Gettext message file.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @package system.i18n.gettext
* @since 1.0
*/
class CGettextPoFile extends CGettextFile
{
/**
* Loads messages from a PO file.
* @param string $file file path
* @param string $context message context
* @return array message translations (source message => translated message)
*/
public function load($file,$context)
{
$pattern='/(msgctxt\s+"(.*?(?<!\\\\))")?\s+'
.'msgid\s+((?:".*(?<!\\\\)"\s*)+)\s+'
.'msgstr\s+((?:".*(?<!\\\\)"\s*)+)/';
$matches=array();
$n=preg_match_all($pattern,file_get_contents($file),$matches);
$messages=array();
for($i=0; $i<$n; $i++)
{
if($matches[2][$i]===$context)
{
$id=$this->decode($matches[3][$i]);
$message=$this->decode($matches[4][$i]);
$messages[$id]=$message;
}
}
return $messages;
}
/**
* Saves messages to a PO file.
* @param string $file file path
* @param array $messages message translations (message id => translated message).
* Note if the message has a context, the message id must be prefixed with
* the context with chr(4) as the separator.
*/
public function save($file,$messages)
{
$content='';
foreach($messages as $id=>$message)
{
if(($pos=strpos($id,chr(4)))!==false)
{
后面还有 38 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
