On this page
CGettextPoFile
| Package | system.i18n.gettext |
|---|---|
| Inheritance | class CGettextPoFile » CGettextFile » CComponent |
| Since | 1.0 |
| Source Code | framework/i18n/gettext/CGettextPoFile.php |
CGettextPoFile represents a PO Gettext message file.
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __call() | Calls the named method which is not a class method. | CComponent |
| __get() | Returns a property value, an event handler list or a behavior based on its name. | CComponent |
| __isset() | Checks if a property value is null. | CComponent |
| __set() | Sets value of a component property. | CComponent |
| __unset() | Sets a component property to be null. | CComponent |
| asa() | Returns the named behavior object. | CComponent |
| attachBehavior() | Attaches a behavior to this component. | CComponent |
| attachBehaviors() | Attaches a list of behaviors to the component. | CComponent |
| attachEventHandler() | Attaches an event handler to an event. | CComponent |
| canGetProperty() | Determines whether a property can be read. | CComponent |
| canSetProperty() | Determines whether a property can be set. | CComponent |
| detachBehavior() | Detaches a behavior from the component. | CComponent |
| detachBehaviors() | Detaches all behaviors from the component. | CComponent |
| detachEventHandler() | Detaches an existing event handler. | CComponent |
| disableBehavior() | Disables an attached behavior. | CComponent |
| disableBehaviors() | Disables all behaviors attached to this component. | CComponent |
| enableBehavior() | Enables an attached behavior. | CComponent |
| enableBehaviors() | Enables all behaviors attached to this component. | CComponent |
| evaluateExpression() | Evaluates a PHP expression or callback under the context of this component. | CComponent |
| getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
| hasEvent() | Determines whether an event is defined. | CComponent |
| hasEventHandler() | Checks whether the named event has attached handlers. | CComponent |
| hasProperty() | Determines whether a property is defined. | CComponent |
| load() | Loads messages from a PO file. | CGettextPoFile |
| raiseEvent() | Raises an event. | CComponent |
| save() | Saves messages to a PO file. | CGettextPoFile |
Protected Methods
Method Details
decode() method
|
||
| $string | string | message to be decoded |
| {return} | string | the decoded message |
Source Code: framework/i18n/gettext/CGettextPoFile.php#89 (show)
protected function decode($string)
{
$string=preg_replace(
array('/"\s+"/','/\\\\n/','/\\\\r/','/\\\\t/','/\\\\"/'),
array('',"\n","\r","\t",'"'),
$string
);
return substr(rtrim($string),1,-1);
}
Decodes special characters in a message.
encode() method
|
||
| $string | string | message to be encoded |
| {return} | string | the encoded message |
Source Code: framework/i18n/gettext/CGettextPoFile.php#75 (show)
protected function encode($string)
{
return str_replace(
array('"',"\n","\t","\r"),
array('\\"',"\\n",'\\t','\\r'),
$string
);
}
Encodes special characters in a message.
load() method
|
||
| $file | string | file path |
| $context | string | message context |
| {return} | array | message translations (source message => translated message) |
Source Code: framework/i18n/gettext/CGettextPoFile.php#26 (show)
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;
}
Loads messages from a PO file.
save() method
|
||
| $file | string | file path |
| $messages | array | 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. |
Source Code: framework/i18n/gettext/CGettextPoFile.php#54 (show)
public function save($file,$messages)
{
$content='';
foreach($messages as $id=>$message)
{
if(($pos=strpos($id,chr(4)))!==false)
{
$content.='msgctxt "'.substr($id,0,$pos)."\"\n";
$id=substr($id,$pos+1);
}
$content.='msgid "'.$this->encode($id)."\"\n";
$content.='msgstr "'.$this->encode($message)."\"\n\n";
}
file_put_contents($file,$content);
}
Saves messages to a PO file.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CGettextPoFile