comparison vendor/symfony/translation/Loader/PoFileLoader.php @ 14:1fec387a4317

Update Drupal core to 8.5.2 via Composer
author Chris Cannam
date Mon, 23 Apr 2018 09:46:53 +0100
parents 4c8ae668cc8c
children 129ea1e6d783
comparison
equal deleted inserted replaced
13:5fb285c0d0e3 14:1fec387a4317
74 $flags = array(); 74 $flags = array();
75 75
76 while ($line = fgets($stream)) { 76 while ($line = fgets($stream)) {
77 $line = trim($line); 77 $line = trim($line);
78 78
79 if ($line === '') { 79 if ('' === $line) {
80 // Whitespace indicated current item is done 80 // Whitespace indicated current item is done
81 if (!in_array('fuzzy', $flags)) { 81 if (!in_array('fuzzy', $flags)) {
82 $this->addMessage($messages, $item); 82 $this->addMessage($messages, $item);
83 } 83 }
84 $item = $defaults; 84 $item = $defaults;
85 $flags = array(); 85 $flags = array();
86 } elseif (substr($line, 0, 2) === '#,') { 86 } elseif ('#,' === substr($line, 0, 2)) {
87 $flags = array_map('trim', explode(',', substr($line, 2))); 87 $flags = array_map('trim', explode(',', substr($line, 2)));
88 } elseif (substr($line, 0, 7) === 'msgid "') { 88 } elseif ('msgid "' === substr($line, 0, 7)) {
89 // We start a new msg so save previous 89 // We start a new msg so save previous
90 // TODO: this fails when comments or contexts are added 90 // TODO: this fails when comments or contexts are added
91 $this->addMessage($messages, $item); 91 $this->addMessage($messages, $item);
92 $item = $defaults; 92 $item = $defaults;
93 $item['ids']['singular'] = substr($line, 7, -1); 93 $item['ids']['singular'] = substr($line, 7, -1);
94 } elseif (substr($line, 0, 8) === 'msgstr "') { 94 } elseif ('msgstr "' === substr($line, 0, 8)) {
95 $item['translated'] = substr($line, 8, -1); 95 $item['translated'] = substr($line, 8, -1);
96 } elseif ($line[0] === '"') { 96 } elseif ('"' === $line[0]) {
97 $continues = isset($item['translated']) ? 'translated' : 'ids'; 97 $continues = isset($item['translated']) ? 'translated' : 'ids';
98 98
99 if (is_array($item[$continues])) { 99 if (is_array($item[$continues])) {
100 end($item[$continues]); 100 end($item[$continues]);
101 $item[$continues][key($item[$continues])] .= substr($line, 1, -1); 101 $item[$continues][key($item[$continues])] .= substr($line, 1, -1);
102 } else { 102 } else {
103 $item[$continues] .= substr($line, 1, -1); 103 $item[$continues] .= substr($line, 1, -1);
104 } 104 }
105 } elseif (substr($line, 0, 14) === 'msgid_plural "') { 105 } elseif ('msgid_plural "' === substr($line, 0, 14)) {
106 $item['ids']['plural'] = substr($line, 14, -1); 106 $item['ids']['plural'] = substr($line, 14, -1);
107 } elseif (substr($line, 0, 7) === 'msgstr[') { 107 } elseif ('msgstr[' === substr($line, 0, 7)) {
108 $size = strpos($line, ']'); 108 $size = strpos($line, ']');
109 $item['translated'][(int) substr($line, 7, 1)] = substr($line, $size + 3, -1); 109 $item['translated'][(int) substr($line, 7, 1)] = substr($line, $size + 3, -1);
110 } 110 }
111 } 111 }
112 // save last item 112 // save last item
121 /** 121 /**
122 * Save a translation item to the messages. 122 * Save a translation item to the messages.
123 * 123 *
124 * A .po file could contain by error missing plural indexes. We need to 124 * A .po file could contain by error missing plural indexes. We need to
125 * fix these before saving them. 125 * fix these before saving them.
126 *
127 * @param array $messages
128 * @param array $item
129 */ 126 */
130 private function addMessage(array &$messages, array $item) 127 private function addMessage(array &$messages, array $item)
131 { 128 {
132 if (is_array($item['translated'])) { 129 if (is_array($item['translated'])) {
133 $messages[stripcslashes($item['ids']['singular'])] = stripcslashes($item['translated'][0]); 130 $messages[stripcslashes($item['ids']['singular'])] = stripcslashes($item['translated'][0]);