Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 18 |
CRAP | |
0.00% |
0 / 85 |
| PoItem | |
0.00% |
0 / 1 |
|
0.00% |
0 / 18 |
930 | |
0.00% |
0 / 85 |
| getLangcode | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setLangcode | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getContext | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setContext | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getSource | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setSource | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getTranslation | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setTranslation | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setPlural | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| isPlural | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getComment | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setComment | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setFromArray | |
0.00% |
0 / 1 |
56 | |
0.00% |
0 / 19 |
|||
| __toString | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| formatItem | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 13 |
|||
| formatPlural | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 13 |
|||
| formatSingular | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 5 |
|||
| formatString | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 9 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Component\Gettext\PoItem. | |
| */ | |
| namespace Drupal\Component\Gettext; | |
| /** | |
| * PoItem handles one translation. | |
| * | |
| * @todo: This class contains some really old legacy code. | |
| * @see https://www.drupal.org/node/1637662 | |
| */ | |
| class PoItem { | |
| /** | |
| * The language code this translation is in. | |
| * | |
| * @car string | |
| */ | |
| private $_langcode; | |
| /** | |
| * The context this translation belongs to. | |
| * | |
| * @var string | |
| */ | |
| private $_context = ''; | |
| /** | |
| * The source string or array of strings if it has plurals. | |
| * | |
| * @var string or array | |
| * @see $_plural | |
| */ | |
| private $_source; | |
| /** | |
| * Flag indicating if this translation has plurals. | |
| * | |
| * @var bool | |
| */ | |
| private $_plural; | |
| /** | |
| * The comment of this translation. | |
| * | |
| * @var string | |
| */ | |
| private $_comment; | |
| /** | |
| * The translation string or array of strings if it has plurals. | |
| * | |
| * @var string or array | |
| * @see $_plural | |
| */ | |
| private $_translation; | |
| /** | |
| * Gets the language code of the currently used language. | |
| * | |
| * @return string with langcode | |
| */ | |
| function getLangcode() { | |
| return $this->_langcode; | |
| } | |
| /** | |
| * Set the language code of the current language. | |
| * | |
| * @param string $langcode | |
| */ | |
| function setLangcode($langcode) { | |
| $this->_langcode = $langcode; | |
| } | |
| /** | |
| * Gets the context this translation belongs to. | |
| * | |
| * @return string $context | |
| */ | |
| function getContext() { | |
| return $this->_context; | |
| } | |
| /** | |
| * Set the context this translation belongs to. | |
| * | |
| * @param string $context | |
| */ | |
| function setContext($context) { | |
| $this->_context = $context; | |
| } | |
| /** | |
| * Gets the source string or the array of strings if the translation has | |
| * plurals. | |
| * | |
| * @return string or array $translation | |
| */ | |
| function getSource() { | |
| return $this->_source; | |
| } | |
| /** | |
| * Set the source string or the array of strings if the translation has | |
| * plurals. | |
| * | |
| * @param string or array $source | |
| */ | |
| function setSource($source) { | |
| $this->_source = $source; | |
| } | |
| /** | |
| * Gets the translation string or the array of strings if the translation has | |
| * plurals. | |
| * | |
| * @return string or array $translation | |
| */ | |
| function getTranslation() { | |
| return $this->_translation; | |
| } | |
| /** | |
| * Set the translation string or the array of strings if the translation has | |
| * plurals. | |
| * | |
| * @param string or array $translation | |
| */ | |
| function setTranslation($translation) { | |
| $this->_translation = $translation; | |
| } | |
| /** | |
| * Set if the translation has plural values. | |
| * | |
| * @param bool $plural | |
| */ | |
| function setPlural($plural) { | |
| $this->_plural = $plural; | |
| } | |
| /** | |
| * Get if the translation has plural values. | |
| * | |
| * @return bool | |
| */ | |
| function isPlural() { | |
| return $this->_plural; | |
| } | |
| /** | |
| * Gets the comment of this translation. | |
| * | |
| * @return String $comment | |
| */ | |
| function getComment() { | |
| return $this->_comment; | |
| } | |
| /** | |
| * Set the comment of this translation. | |
| * | |
| * @param String $comment | |
| */ | |
| function setComment($comment) { | |
| $this->_comment = $comment; | |
| } | |
| /** | |
| * Create the PoItem from a structured array. | |
| * | |
| * @param array values | |
| */ | |
| public function setFromArray(array $values = array()) { | |
| if (isset($values['context'])) { | |
| $this->setContext($values['context']); | |
| } | |
| if (isset($values['source'])) { | |
| $this->setSource($values['source']); | |
| } | |
| if (isset($values['translation'])) { | |
| $this->setTranslation($values['translation']); | |
| } | |
| if (isset($values['comment'])){ | |
| $this->setComment($values['comment']); | |
| } | |
| if (isset($this->_source) && | |
| strpos($this->_source, LOCALE_PLURAL_DELIMITER) !== FALSE) { | |
| $this->setSource(explode(LOCALE_PLURAL_DELIMITER, $this->_source)); | |
| $this->setTranslation(explode(LOCALE_PLURAL_DELIMITER, $this->_translation)); | |
| $this->setPlural(count($this->_source) > 1); | |
| } | |
| } | |
| /** | |
| * Output the PoItem as a string. | |
| */ | |
| public function __toString() { | |
| return $this->formatItem(); | |
| } | |
| /** | |
| * Format the POItem as a string. | |
| */ | |
| private function formatItem() { | |
| $output = ''; | |
| // Format string context. | |
| if (!empty($this->_context)) { | |
| $output .= 'msgctxt ' . $this->formatString($this->_context); | |
| } | |
| // Format translation. | |
| if ($this->_plural) { | |
| $output .= $this->formatPlural(); | |
| } | |
| else { | |
| $output .= $this->formatSingular(); | |
| } | |
| // Add one empty line to separate the translations. | |
| $output .= "\n"; | |
| return $output; | |
| } | |
| /** | |
| * Formats a plural translation. | |
| */ | |
| private function formatPlural() { | |
| $output = ''; | |
| // Format source strings. | |
| $output .= 'msgid ' . $this->formatString($this->_source[0]); | |
| $output .= 'msgid_plural ' . $this->formatString($this->_source[1]); | |
| foreach ($this->_translation as $i => $trans) { | |
| if (isset($this->_translation[$i])) { | |
| $output .= 'msgstr[' . $i . '] ' . $this->formatString($trans); | |
| } | |
| else { | |
| $output .= 'msgstr[' . $i . '] ""' . "\n"; | |
| } | |
| } | |
| return $output; | |
| } | |
| /** | |
| * Formats a singular translation. | |
| */ | |
| private function formatSingular() { | |
| $output = ''; | |
| $output .= 'msgid ' . $this->formatString($this->_source); | |
| $output .= 'msgstr ' . (isset($this->_translation) ? $this->formatString($this->_translation) : '""'); | |
| return $output; | |
| } | |
| /** | |
| * Formats a string for output on multiple lines. | |
| */ | |
| private function formatString($string) { | |
| // Escape characters for processing. | |
| $string = addcslashes($string, "\0..\37\\\""); | |
| // Always include a line break after the explicit \n line breaks from | |
| // the source string. Otherwise wrap at 70 chars to accommodate the extra | |
| // format overhead too. | |
| $parts = explode("\n", wordwrap(str_replace('\n', "\\n\n", $string), 70, " \n")); | |
| // Multiline string should be exported starting with a "" and newline to | |
| // have all lines aligned on the same column. | |
| if (count($parts) > 1) { | |
| return "\"\"\n\"" . implode("\"\n\"", $parts) . "\"\n"; | |
| } | |
| // Single line strings are output on the same line. | |
| else { | |
| return "\"$parts[0]\"\n"; | |
| } | |
| } | |
| } |