PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.5
Independent Analytics – WordPress Analytics Plugin v2.15.5
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / symfony / translation / Loader / IcuResFileLoader.php
independent-analytics / vendor / symfony / translation / Loader Last commit date
ArrayLoader.php 1 month ago CsvFileLoader.php 1 month ago FileLoader.php 1 month ago IcuDatFileLoader.php 1 month ago IcuResFileLoader.php 1 month ago IniFileLoader.php 1 month ago JsonFileLoader.php 1 month ago LoaderInterface.php 1 month ago MoFileLoader.php 1 month ago PhpFileLoader.php 1 month ago PoFileLoader.php 1 month ago QtFileLoader.php 1 month ago XliffFileLoader.php 1 month ago YamlFileLoader.php 1 month ago
IcuResFileLoader.php
81 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 IAWPSCOPED\Symfony\Component\Translation\Loader;
12
13 use IAWPSCOPED\Symfony\Component\Config\Resource\DirectoryResource;
14 use IAWPSCOPED\Symfony\Component\Translation\Exception\InvalidResourceException;
15 use IAWPSCOPED\Symfony\Component\Translation\Exception\NotFoundResourceException;
16 use IAWPSCOPED\Symfony\Component\Translation\MessageCatalogue;
17 /**
18 * IcuResFileLoader loads translations from a resource bundle.
19 *
20 * @author stealth35
21 * @internal
22 */
23 class IcuResFileLoader implements LoaderInterface
24 {
25 /**
26 * {@inheritdoc}
27 */
28 public function load(mixed $resource, string $locale, string $domain = 'messages') : MessageCatalogue
29 {
30 if (!\stream_is_local($resource)) {
31 throw new InvalidResourceException(\sprintf('This is not a local file "%s".', $resource));
32 }
33 if (!\is_dir($resource)) {
34 throw new NotFoundResourceException(\sprintf('File "%s" not found.', $resource));
35 }
36 try {
37 $rb = new \ResourceBundle($locale, $resource);
38 } catch (\Exception $e) {
39 $rb = null;
40 }
41 if (!$rb) {
42 throw new InvalidResourceException(\sprintf('Cannot load resource "%s".', $resource));
43 } elseif (\intl_is_failure($rb->getErrorCode())) {
44 throw new InvalidResourceException($rb->getErrorMessage(), $rb->getErrorCode());
45 }
46 $messages = $this->flatten($rb);
47 $catalogue = new MessageCatalogue($locale);
48 $catalogue->add($messages, $domain);
49 if (\class_exists(DirectoryResource::class)) {
50 $catalogue->addResource(new DirectoryResource($resource));
51 }
52 return $catalogue;
53 }
54 /**
55 * Flattens an ResourceBundle.
56 *
57 * The scheme used is:
58 * key { key2 { key3 { "value" } } }
59 * Becomes:
60 * 'key.key2.key3' => 'value'
61 *
62 * This function takes an array by reference and will modify it
63 *
64 * @param \ResourceBundle $rb The ResourceBundle that will be flattened
65 * @param array $messages Used internally for recursive calls
66 * @param string $path Current path being parsed, used internally for recursive calls
67 */
68 protected function flatten(\ResourceBundle $rb, array &$messages = [], string $path = null) : array
69 {
70 foreach ($rb as $key => $value) {
71 $nodePath = $path ? $path . '.' . $key : $key;
72 if ($value instanceof \ResourceBundle) {
73 $this->flatten($value, $messages, $nodePath);
74 } else {
75 $messages[$nodePath] = $value;
76 }
77 }
78 return $messages;
79 }
80 }
81