PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.36.0
MailPoet – Newsletters, Email Marketing, and Automation v5.36.0
5.36.0 5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / vendor-prefixed / symfony / translation / MessageCatalogue.php
mailpoet / vendor-prefixed / symfony / translation Last commit date
Exception 1 year ago Provider 1 year ago Test 1 year ago Util 1 year ago DataCollectorTranslator.php 1 year ago IdentityTranslator.php 1 year ago LoggingTranslator.php 1 year ago MessageCatalogue.php 1 year ago MessageCatalogueInterface.php 1 year ago MetadataAwareInterface.php 1 year ago PseudoLocalizationTranslator.php 1 year ago TranslatableMessage.php 1 year ago Translator.php 1 year ago TranslatorBag.php 1 year ago TranslatorBagInterface.php 1 year ago index.php 3 years ago
MessageCatalogue.php
195 lines
1 <?php
2 namespace MailPoetVendor\Symfony\Component\Translation;
3 if (!defined('ABSPATH')) exit;
4 use MailPoetVendor\Symfony\Component\Config\Resource\ResourceInterface;
5 use MailPoetVendor\Symfony\Component\Translation\Exception\LogicException;
6 class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterface
7 {
8 private $messages = [];
9 private $metadata = [];
10 private $resources = [];
11 private $locale;
12 private $fallbackCatalogue;
13 private $parent;
14 public function __construct(string $locale, array $messages = [])
15 {
16 $this->locale = $locale;
17 $this->messages = $messages;
18 }
19 public function getLocale()
20 {
21 return $this->locale;
22 }
23 public function getDomains()
24 {
25 $domains = [];
26 foreach ($this->messages as $domain => $messages) {
27 if (\str_ends_with($domain, self::INTL_DOMAIN_SUFFIX)) {
28 $domain = \substr($domain, 0, -\strlen(self::INTL_DOMAIN_SUFFIX));
29 }
30 $domains[$domain] = $domain;
31 }
32 return \array_values($domains);
33 }
34 public function all(?string $domain = null)
35 {
36 if (null !== $domain) {
37 // skip messages merge if intl-icu requested explicitly
38 if (\str_ends_with($domain, self::INTL_DOMAIN_SUFFIX)) {
39 return $this->messages[$domain] ?? [];
40 }
41 return ($this->messages[$domain . self::INTL_DOMAIN_SUFFIX] ?? []) + ($this->messages[$domain] ?? []);
42 }
43 $allMessages = [];
44 foreach ($this->messages as $domain => $messages) {
45 if (\str_ends_with($domain, self::INTL_DOMAIN_SUFFIX)) {
46 $domain = \substr($domain, 0, -\strlen(self::INTL_DOMAIN_SUFFIX));
47 $allMessages[$domain] = $messages + ($allMessages[$domain] ?? []);
48 } else {
49 $allMessages[$domain] = ($allMessages[$domain] ?? []) + $messages;
50 }
51 }
52 return $allMessages;
53 }
54 public function set(string $id, string $translation, string $domain = 'messages')
55 {
56 $this->add([$id => $translation], $domain);
57 }
58 public function has(string $id, string $domain = 'messages')
59 {
60 if (isset($this->messages[$domain][$id]) || isset($this->messages[$domain . self::INTL_DOMAIN_SUFFIX][$id])) {
61 return \true;
62 }
63 if (null !== $this->fallbackCatalogue) {
64 return $this->fallbackCatalogue->has($id, $domain);
65 }
66 return \false;
67 }
68 public function defines(string $id, string $domain = 'messages')
69 {
70 return isset($this->messages[$domain][$id]) || isset($this->messages[$domain . self::INTL_DOMAIN_SUFFIX][$id]);
71 }
72 public function get(string $id, string $domain = 'messages')
73 {
74 if (isset($this->messages[$domain . self::INTL_DOMAIN_SUFFIX][$id])) {
75 return $this->messages[$domain . self::INTL_DOMAIN_SUFFIX][$id];
76 }
77 if (isset($this->messages[$domain][$id])) {
78 return $this->messages[$domain][$id];
79 }
80 if (null !== $this->fallbackCatalogue) {
81 return $this->fallbackCatalogue->get($id, $domain);
82 }
83 return $id;
84 }
85 public function replace(array $messages, string $domain = 'messages')
86 {
87 unset($this->messages[$domain], $this->messages[$domain . self::INTL_DOMAIN_SUFFIX]);
88 $this->add($messages, $domain);
89 }
90 public function add(array $messages, string $domain = 'messages')
91 {
92 $altDomain = \str_ends_with($domain, self::INTL_DOMAIN_SUFFIX) ? \substr($domain, 0, -\strlen(self::INTL_DOMAIN_SUFFIX)) : $domain . self::INTL_DOMAIN_SUFFIX;
93 foreach ($messages as $id => $message) {
94 unset($this->messages[$altDomain][$id]);
95 $this->messages[$domain][$id] = $message;
96 }
97 if ([] === ($this->messages[$altDomain] ?? null)) {
98 unset($this->messages[$altDomain]);
99 }
100 }
101 public function addCatalogue(MessageCatalogueInterface $catalogue)
102 {
103 if ($catalogue->getLocale() !== $this->locale) {
104 throw new LogicException(\sprintf('Cannot add a catalogue for locale "%s" as the current locale for this catalogue is "%s".', $catalogue->getLocale(), $this->locale));
105 }
106 foreach ($catalogue->all() as $domain => $messages) {
107 if ($intlMessages = $catalogue->all($domain . self::INTL_DOMAIN_SUFFIX)) {
108 $this->add($intlMessages, $domain . self::INTL_DOMAIN_SUFFIX);
109 $messages = \array_diff_key($messages, $intlMessages);
110 }
111 $this->add($messages, $domain);
112 }
113 foreach ($catalogue->getResources() as $resource) {
114 $this->addResource($resource);
115 }
116 if ($catalogue instanceof MetadataAwareInterface) {
117 $metadata = $catalogue->getMetadata('', '');
118 $this->addMetadata($metadata);
119 }
120 }
121 public function addFallbackCatalogue(MessageCatalogueInterface $catalogue)
122 {
123 // detect circular references
124 $c = $catalogue;
125 while ($c = $c->getFallbackCatalogue()) {
126 if ($c->getLocale() === $this->getLocale()) {
127 throw new LogicException(\sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale()));
128 }
129 }
130 $c = $this;
131 do {
132 if ($c->getLocale() === $catalogue->getLocale()) {
133 throw new LogicException(\sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale()));
134 }
135 foreach ($catalogue->getResources() as $resource) {
136 $c->addResource($resource);
137 }
138 } while ($c = $c->parent);
139 $catalogue->parent = $this;
140 $this->fallbackCatalogue = $catalogue;
141 foreach ($catalogue->getResources() as $resource) {
142 $this->addResource($resource);
143 }
144 }
145 public function getFallbackCatalogue()
146 {
147 return $this->fallbackCatalogue;
148 }
149 public function getResources()
150 {
151 return \array_values($this->resources);
152 }
153 public function addResource(ResourceInterface $resource)
154 {
155 $this->resources[$resource->__toString()] = $resource;
156 }
157 public function getMetadata(string $key = '', string $domain = 'messages')
158 {
159 if ('' == $domain) {
160 return $this->metadata;
161 }
162 if (isset($this->metadata[$domain])) {
163 if ('' == $key) {
164 return $this->metadata[$domain];
165 }
166 if (isset($this->metadata[$domain][$key])) {
167 return $this->metadata[$domain][$key];
168 }
169 }
170 return null;
171 }
172 public function setMetadata(string $key, $value, string $domain = 'messages')
173 {
174 $this->metadata[$domain][$key] = $value;
175 }
176 public function deleteMetadata(string $key = '', string $domain = 'messages')
177 {
178 if ('' == $domain) {
179 $this->metadata = [];
180 } elseif ('' == $key) {
181 unset($this->metadata[$domain]);
182 } else {
183 unset($this->metadata[$domain][$key]);
184 }
185 }
186 private function addMetadata(array $values)
187 {
188 foreach ($values as $domain => $keys) {
189 foreach ($keys as $key => $value) {
190 $this->setMetadata($key, $value, $domain);
191 }
192 }
193 }
194 }
195