home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress / wp-includes / pomo / entry.php next >
Encoding:
PHP Script  |  2015-11-19  |  2.8 KB  |  93 lines

  1. <?php
  2. /**
  3.  * Contains Translation_Entry class
  4.  *
  5.  * @version $Id: entry.php 1157 2015-11-20 04:30:11Z dd32 $
  6.  * @package pomo
  7.  * @subpackage entry
  8.  */
  9.  
  10. if ( ! class_exists( 'Translation_Entry', false ) ):
  11. /**
  12.  * Translation_Entry class encapsulates a translatable string
  13.  */
  14. class Translation_Entry {
  15.  
  16.     /**
  17.      * Whether the entry contains a string and its plural form, default is false
  18.      *
  19.      * @var boolean
  20.      */
  21.     var $is_plural = false;
  22.  
  23.     var $context = null;
  24.     var $singular = null;
  25.     var $plural = null;
  26.     var $translations = array();
  27.     var $translator_comments = '';
  28.     var $extracted_comments = '';
  29.     var $references = array();
  30.     var $flags = array();
  31.  
  32.     /**
  33.      * @param array $args associative array, support following keys:
  34.      *     - singular (string) -- the string to translate, if omitted and empty entry will be created
  35.      *     - plural (string) -- the plural form of the string, setting this will set {@link $is_plural} to true
  36.      *     - translations (array) -- translations of the string and possibly -- its plural forms
  37.      *     - context (string) -- a string differentiating two equal strings used in different contexts
  38.      *     - translator_comments (string) -- comments left by translators
  39.      *     - extracted_comments (string) -- comments left by developers
  40.      *     - references (array) -- places in the code this strings is used, in relative_to_root_path/file.php:linenum form
  41.      *     - flags (array) -- flags like php-format
  42.      */
  43.     function __construct( $args = array() ) {
  44.         // if no singular -- empty object
  45.         if (!isset($args['singular'])) {
  46.             return;
  47.         }
  48.         // get member variable values from args hash
  49.         foreach ($args as $varname => $value) {
  50.             $this->$varname = $value;
  51.         }
  52.         if (isset($args['plural']) && $args['plural']) $this->is_plural = true;
  53.         if (!is_array($this->translations)) $this->translations = array();
  54.         if (!is_array($this->references)) $this->references = array();
  55.         if (!is_array($this->flags)) $this->flags = array();
  56.     }
  57.  
  58.     /**
  59.      * PHP4 constructor.
  60.      */
  61.     public function Translation_Entry( $args = array() ) {
  62.         self::__construct( $args );
  63.     }
  64.  
  65.     /**
  66.      * Generates a unique key for this entry
  67.      *
  68.      * @return string|bool the key or false if the entry is empty
  69.      */
  70.     function key() {
  71.         if ( null === $this->singular || '' === $this->singular ) return false;
  72.  
  73.         // Prepend context and EOT, like in MO files
  74.         $key = !$this->context? $this->singular : $this->context.chr(4).$this->singular;
  75.         // Standardize on \n line endings
  76.         $key = str_replace( array( "\r\n", "\r" ), "\n", $key );
  77.  
  78.         return $key;
  79.     }
  80.  
  81.     /**
  82.      * @param object $other
  83.      */
  84.     function merge_with(&$other) {
  85.         $this->flags = array_unique( array_merge( $this->flags, $other->flags ) );
  86.         $this->references = array_unique( array_merge( $this->references, $other->references ) );
  87.         if ( $this->extracted_comments != $other->extracted_comments ) {
  88.             $this->extracted_comments .= $other->extracted_comments;
  89.         }
  90.  
  91.     }
  92. }
  93. endif;