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 / Dumper / IcuResFileDumper.php
independent-analytics / vendor / symfony / translation / Dumper Last commit date
CsvFileDumper.php 1 month ago DumperInterface.php 2 years ago FileDumper.php 1 month ago IcuResFileDumper.php 1 month ago IniFileDumper.php 1 month ago JsonFileDumper.php 1 month ago MoFileDumper.php 1 month ago PhpFileDumper.php 1 month ago PoFileDumper.php 1 month ago QtFileDumper.php 1 month ago XliffFileDumper.php 1 month ago YamlFileDumper.php 1 month ago
IcuResFileDumper.php
107 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\Dumper;
12
13 use IAWPSCOPED\Symfony\Component\Translation\MessageCatalogue;
14 /**
15 * IcuResDumper generates an ICU ResourceBundle formatted string representation of a message catalogue.
16 *
17 * @author Stealth35
18 * @internal
19 */
20 class IcuResFileDumper extends FileDumper
21 {
22 /**
23 * {@inheritdoc}
24 */
25 protected $relativePathTemplate = '%domain%/%locale%.%extension%';
26 /**
27 * {@inheritdoc}
28 */
29 public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []) : string
30 {
31 $data = $indexes = $resources = '';
32 foreach ($messages->all($domain) as $source => $target) {
33 $indexes .= \pack('v', \strlen($data) + 28);
34 $data .= $source . "\x00";
35 }
36 $data .= $this->writePadding($data);
37 $keyTop = $this->getPosition($data);
38 foreach ($messages->all($domain) as $source => $target) {
39 $resources .= \pack('V', $this->getPosition($data));
40 $data .= \pack('V', \strlen($target)) . \mb_convert_encoding($target . "\x00", 'UTF-16LE', 'UTF-8') . $this->writePadding($data);
41 }
42 $resOffset = $this->getPosition($data);
43 $data .= \pack('v', \count($messages->all($domain))) . $indexes . $this->writePadding($data) . $resources;
44 $bundleTop = $this->getPosition($data);
45 $root = \pack(
46 'V7',
47 $resOffset + (2 << 28),
48 // Resource Offset + Resource Type
49 6,
50 // Index length
51 $keyTop,
52 // Index keys top
53 $bundleTop,
54 // Index resources top
55 $bundleTop,
56 // Index bundle top
57 \count($messages->all($domain)),
58 // Index max table length
59 0
60 );
61 $header = \pack(
62 'vC2v4C12@32',
63 32,
64 // Header size
65 0xda,
66 0x27,
67 // Magic number 1 and 2
68 20,
69 0,
70 0,
71 2,
72 // Rest of the header, ..., Size of a char
73 0x52,
74 0x65,
75 0x73,
76 0x42,
77 // Data format identifier
78 1,
79 2,
80 0,
81 0,
82 // Data version
83 1,
84 4,
85 0,
86 0
87 );
88 return $header . $root . $data;
89 }
90 private function writePadding(string $data) : ?string
91 {
92 $padding = \strlen($data) % 4;
93 return $padding ? \str_repeat("\xaa", 4 - $padding) : null;
94 }
95 private function getPosition(string $data)
96 {
97 return (\strlen($data) + 28) / 4;
98 }
99 /**
100 * {@inheritdoc}
101 */
102 protected function getExtension() : string
103 {
104 return 'res';
105 }
106 }
107