PageRenderTime 243ms CodeModel.GetById 100ms app.highlight 3ms RepoModel.GetById 138ms app.codeStats 0ms

/wp-includes/pomo/entry.php

https://bitbucket.org/Wallynm/iptb
PHP | 78 lines | 37 code | 7 blank | 34 comment | 9 complexity | 4ce3d1f20ac04637342f333aeb8dd891 MD5 | raw file
 1<?php
 2/**
 3 * Contains Translation_Entry class
 4 *
 5 * @version $Id: entry.php 621 2011-06-13 12:21:50Z nbachiyski $
 6 * @package pomo
 7 * @subpackage entry
 8 */
 9
10if ( !class_exists( 'Translation_Entry' ) ):
11/**
12 * Translation_Entry class encapsulates a translatable string
13 */
14class 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 Translation_Entry($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'])) $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	 * Generates a unique key for this entry
60	 *
61	 * @return string|bool the key or false if the entry is empty
62	 */
63	function key() {
64		if (is_null($this->singular)) return false;
65		// prepend context and EOT, like in MO files
66		return is_null($this->context)? $this->singular : $this->context.chr(4).$this->singular;
67	}
68	
69	function merge_with(&$other) {
70		$this->flags = array_unique( array_merge( $this->flags, $other->flags ) );
71		$this->references = array_unique( array_merge( $this->references, $other->references ) );
72		if ( $this->extracted_comments != $other->extracted_comments ) {
73			$this->extracted_comments .= $other->extracted_comments;
74		}
75		
76	}
77}
78endif;