PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.17.2 4.17.1 4.17.0 4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / third-party / vendor / symfony / translation-contracts / TranslatorTrait.php
wp-user-avatar / third-party / vendor / symfony / translation-contracts Last commit date
Test 2 months ago LocaleAwareInterface.php 2 months ago TranslatableInterface.php 2 months ago TranslatorInterface.php 2 months ago TranslatorTrait.php 2 months ago
TranslatorTrait.php
227 lines
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 namespace ProfilePressVendor\Symfony\Contracts\Translation;
12
13 use ProfilePressVendor\Symfony\Component\Translation\Exception\InvalidArgumentException;
14 /**
15 * A trait to help implement TranslatorInterface and LocaleAwareInterface.
16 *
17 * @author Fabien Potencier <fabien@symfony.com>
18 */
19 trait TranslatorTrait
20 {
21 private $locale;
22 /**
23 * {@inheritdoc}
24 */
25 public function setLocale(string $locale)
26 {
27 $this->locale = $locale;
28 }
29 /**
30 * {@inheritdoc}
31 *
32 * @return string
33 */
34 public function getLocale()
35 {
36 return $this->locale ?: (class_exists(\Locale::class) ? \Locale::getDefault() : 'en');
37 }
38 /**
39 * {@inheritdoc}
40 */
41 public function trans(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string
42 {
43 if (null === $id || '' === $id) {
44 return '';
45 }
46 if (!isset($parameters['%count%']) || !is_numeric($parameters['%count%'])) {
47 return strtr($id, $parameters);
48 }
49 $number = (float) $parameters['%count%'];
50 $locale = $locale ?: $this->getLocale();
51 $parts = [];
52 if (preg_match('/^\|++$/', $id)) {
53 $parts = explode('|', $id);
54 } elseif (preg_match_all('/(?:\|\||[^\|])++/', $id, $matches)) {
55 $parts = $matches[0];
56 }
57 $intervalRegexp = <<<'EOF'
58 /^(?P<interval>
59 ({\s*
60 (\-?\d+(\.\d+)?[\s*,\s*\-?\d+(\.\d+)?]*)
61 \s*})
62
63 |
64
65 (?P<left_delimiter>[\[\]])
66 \s*
67 (?P<left>-Inf|\-?\d+(\.\d+)?)
68 \s*,\s*
69 (?P<right>\+?Inf|\-?\d+(\.\d+)?)
70 \s*
71 (?P<right_delimiter>[\[\]])
72 )\s*(?P<message>.*?)$/xs
73 EOF;
74 $standardRules = [];
75 foreach ($parts as $part) {
76 $part = trim(str_replace('||', '|', $part));
77 // try to match an explicit rule, then fallback to the standard ones
78 if (preg_match($intervalRegexp, $part, $matches)) {
79 if ($matches[2]) {
80 foreach (explode(',', $matches[3]) as $n) {
81 if ($number == $n) {
82 return strtr($matches['message'], $parameters);
83 }
84 }
85 } else {
86 $leftNumber = '-Inf' === $matches['left'] ? -\INF : (float) $matches['left'];
87 $rightNumber = is_numeric($matches['right']) ? (float) $matches['right'] : \INF;
88 if (('[' === $matches['left_delimiter'] ? $number >= $leftNumber : $number > $leftNumber) && (']' === $matches['right_delimiter'] ? $number <= $rightNumber : $number < $rightNumber)) {
89 return strtr($matches['message'], $parameters);
90 }
91 }
92 } elseif (preg_match('/^\w+\:\s*(.*?)$/', $part, $matches)) {
93 $standardRules[] = $matches[1];
94 } else {
95 $standardRules[] = $part;
96 }
97 }
98 $position = $this->getPluralizationRule($number, $locale);
99 if (!isset($standardRules[$position])) {
100 // when there's exactly one rule given, and that rule is a standard
101 // rule, use this rule
102 if (1 === \count($parts) && isset($standardRules[0])) {
103 return strtr($standardRules[0], $parameters);
104 }
105 $message = sprintf('Unable to choose a translation for "%s" with locale "%s" for value "%d". Double check that this translation has the correct plural options (e.g. "There is one apple|There are %%count%% apples").', $id, $locale, $number);
106 if (class_exists(InvalidArgumentException::class)) {
107 throw new InvalidArgumentException($message);
108 }
109 throw new \InvalidArgumentException($message);
110 }
111 return strtr($standardRules[$position], $parameters);
112 }
113 /**
114 * Returns the plural position to use for the given locale and number.
115 *
116 * The plural rules are derived from code of the Zend Framework (2010-09-25),
117 * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).
118 * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
119 */
120 private function getPluralizationRule(float $number, string $locale): int
121 {
122 $number = abs($number);
123 switch ('pt_BR' !== $locale && 'en_US_POSIX' !== $locale && \strlen($locale) > 3 ? substr($locale, 0, strrpos($locale, '_')) : $locale) {
124 case 'af':
125 case 'bn':
126 case 'bg':
127 case 'ca':
128 case 'da':
129 case 'de':
130 case 'el':
131 case 'en':
132 case 'en_US_POSIX':
133 case 'eo':
134 case 'es':
135 case 'et':
136 case 'eu':
137 case 'fa':
138 case 'fi':
139 case 'fo':
140 case 'fur':
141 case 'fy':
142 case 'gl':
143 case 'gu':
144 case 'ha':
145 case 'he':
146 case 'hu':
147 case 'is':
148 case 'it':
149 case 'ku':
150 case 'lb':
151 case 'ml':
152 case 'mn':
153 case 'mr':
154 case 'nah':
155 case 'nb':
156 case 'ne':
157 case 'nl':
158 case 'nn':
159 case 'no':
160 case 'oc':
161 case 'om':
162 case 'or':
163 case 'pa':
164 case 'pap':
165 case 'ps':
166 case 'pt':
167 case 'so':
168 case 'sq':
169 case 'sv':
170 case 'sw':
171 case 'ta':
172 case 'te':
173 case 'tk':
174 case 'ur':
175 case 'zu':
176 return 1 == $number ? 0 : 1;
177 case 'am':
178 case 'bh':
179 case 'fil':
180 case 'fr':
181 case 'gun':
182 case 'hi':
183 case 'hy':
184 case 'ln':
185 case 'mg':
186 case 'nso':
187 case 'pt_BR':
188 case 'ti':
189 case 'wa':
190 return $number < 2 ? 0 : 1;
191 case 'be':
192 case 'bs':
193 case 'hr':
194 case 'ru':
195 case 'sh':
196 case 'sr':
197 case 'uk':
198 return 1 == $number % 10 && 11 != $number % 100 ? 0 : ($number % 10 >= 2 && $number % 10 <= 4 && ($number % 100 < 10 || $number % 100 >= 20) ? 1 : 2);
199 case 'cs':
200 case 'sk':
201 return 1 == $number ? 0 : ($number >= 2 && $number <= 4 ? 1 : 2);
202 case 'ga':
203 return 1 == $number ? 0 : (2 == $number ? 1 : 2);
204 case 'lt':
205 return 1 == $number % 10 && 11 != $number % 100 ? 0 : ($number % 10 >= 2 && ($number % 100 < 10 || $number % 100 >= 20) ? 1 : 2);
206 case 'sl':
207 return 1 == $number % 100 ? 0 : (2 == $number % 100 ? 1 : (3 == $number % 100 || 4 == $number % 100 ? 2 : 3));
208 case 'mk':
209 return 1 == $number % 10 ? 0 : 1;
210 case 'mt':
211 return 1 == $number ? 0 : (0 == $number || $number % 100 > 1 && $number % 100 < 11 ? 1 : ($number % 100 > 10 && $number % 100 < 20 ? 2 : 3));
212 case 'lv':
213 return 0 == $number ? 0 : (1 == $number % 10 && 11 != $number % 100 ? 1 : 2);
214 case 'pl':
215 return 1 == $number ? 0 : ($number % 10 >= 2 && $number % 10 <= 4 && ($number % 100 < 12 || $number % 100 > 14) ? 1 : 2);
216 case 'cy':
217 return 1 == $number ? 0 : (2 == $number ? 1 : (8 == $number || 11 == $number ? 2 : 3));
218 case 'ro':
219 return 1 == $number ? 0 : (0 == $number || $number % 100 > 0 && $number % 100 < 20 ? 1 : 2);
220 case 'ar':
221 return 0 == $number ? 0 : (1 == $number ? 1 : (2 == $number ? 2 : ($number % 100 >= 3 && $number % 100 <= 10 ? 3 : ($number % 100 >= 11 && $number % 100 <= 99 ? 4 : 5))));
222 default:
223 return 0;
224 }
225 }
226 }
227