PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.17.0
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.17.0
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 / Command / TranslationPullCommand.php
wp-user-avatar / third-party / vendor / symfony / translation / Command Last commit date
TranslationPullCommand.php 2 months ago TranslationPushCommand.php 2 months ago TranslationTrait.php 2 months ago XliffLintCommand.php 2 months ago
TranslationPullCommand.php
146 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\Component\Translation\Command;
12
13 use ProfilePressVendor\Symfony\Component\Console\Command\Command;
14 use ProfilePressVendor\Symfony\Component\Console\Completion\CompletionInput;
15 use ProfilePressVendor\Symfony\Component\Console\Completion\CompletionSuggestions;
16 use ProfilePressVendor\Symfony\Component\Console\Input\InputArgument;
17 use ProfilePressVendor\Symfony\Component\Console\Input\InputInterface;
18 use ProfilePressVendor\Symfony\Component\Console\Input\InputOption;
19 use ProfilePressVendor\Symfony\Component\Console\Output\OutputInterface;
20 use ProfilePressVendor\Symfony\Component\Console\Style\SymfonyStyle;
21 use ProfilePressVendor\Symfony\Component\Translation\Catalogue\TargetOperation;
22 use ProfilePressVendor\Symfony\Component\Translation\MessageCatalogue;
23 use ProfilePressVendor\Symfony\Component\Translation\Provider\TranslationProviderCollection;
24 use ProfilePressVendor\Symfony\Component\Translation\Reader\TranslationReaderInterface;
25 use ProfilePressVendor\Symfony\Component\Translation\Writer\TranslationWriterInterface;
26 /**
27 * @author Mathieu Santostefano <msantostefano@protonmail.com>
28 */
29 final class TranslationPullCommand extends Command
30 {
31 use TranslationTrait;
32 protected static $defaultName = 'translation:pull';
33 protected static $defaultDescription = 'Pull translations from a given provider.';
34 private $providerCollection;
35 private $writer;
36 private $reader;
37 private $defaultLocale;
38 private $transPaths;
39 private $enabledLocales;
40 public function __construct(TranslationProviderCollection $providerCollection, TranslationWriterInterface $writer, TranslationReaderInterface $reader, string $defaultLocale, array $transPaths = [], array $enabledLocales = [])
41 {
42 $this->providerCollection = $providerCollection;
43 $this->writer = $writer;
44 $this->reader = $reader;
45 $this->defaultLocale = $defaultLocale;
46 $this->transPaths = $transPaths;
47 $this->enabledLocales = $enabledLocales;
48 parent::__construct();
49 }
50 public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void
51 {
52 if ($input->mustSuggestArgumentValuesFor('provider')) {
53 $suggestions->suggestValues($this->providerCollection->keys());
54 return;
55 }
56 if ($input->mustSuggestOptionValuesFor('domains')) {
57 $provider = $this->providerCollection->get($input->getArgument('provider'));
58 if ($provider && method_exists($provider, 'getDomains')) {
59 $domains = $provider->getDomains();
60 $suggestions->suggestValues($domains);
61 }
62 return;
63 }
64 if ($input->mustSuggestOptionValuesFor('locales')) {
65 $suggestions->suggestValues($this->enabledLocales);
66 return;
67 }
68 if ($input->mustSuggestOptionValuesFor('format')) {
69 $suggestions->suggestValues(['php', 'xlf', 'xlf12', 'xlf20', 'po', 'mo', 'yml', 'yaml', 'ts', 'csv', 'json', 'ini', 'res']);
70 }
71 }
72 /**
73 * {@inheritdoc}
74 */
75 protected function configure()
76 {
77 $keys = $this->providerCollection->keys();
78 $defaultProvider = 1 === \count($keys) ? $keys[0] : null;
79 $this->setDefinition([new InputArgument('provider', null !== $defaultProvider ? InputArgument::OPTIONAL : InputArgument::REQUIRED, 'The provider to pull translations from.', $defaultProvider), new InputOption('force', null, InputOption::VALUE_NONE, 'Override existing translations with provider ones (it will delete not synchronized messages).'), new InputOption('intl-icu', null, InputOption::VALUE_NONE, 'Associated to --force option, it will write messages in "%domain%+intl-icu.%locale%.xlf" files.'), new InputOption('domains', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Specify the domains to pull.'), new InputOption('locales', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Specify the locales to pull.'), new InputOption('format', null, InputOption::VALUE_OPTIONAL, 'Override the default output format.', 'xlf12')])->setHelp(<<<'EOF'
80 The <info>%command.name%</> command pulls translations from the given provider. Only
81 new translations are pulled, existing ones are not overwritten.
82
83 You can overwrite existing translations (and remove the missing ones on local side) by using the <comment>--force</> flag:
84
85 <info>php %command.full_name% --force provider</>
86
87 Full example:
88
89 <info>php %command.full_name% provider --force --domains=messages --domains=validators --locales=en</>
90
91 This command pulls all translations associated with the <comment>messages</> and <comment>validators</> domains for the <comment>en</> locale.
92 Local translations for the specified domains and locale are deleted if they're not present on the provider and overwritten if it's the case.
93 Local translations for others domains and locales are ignored.
94 EOF
95 );
96 }
97 /**
98 * {@inheritdoc}
99 */
100 protected function execute(InputInterface $input, OutputInterface $output): int
101 {
102 $io = new SymfonyStyle($input, $output);
103 $provider = $this->providerCollection->get($input->getArgument('provider'));
104 $force = $input->getOption('force');
105 $intlIcu = $input->getOption('intl-icu');
106 $locales = $input->getOption('locales') ?: $this->enabledLocales;
107 $domains = $input->getOption('domains');
108 $format = $input->getOption('format');
109 $xliffVersion = '1.2';
110 if ($intlIcu && !$force) {
111 $io->note('--intl-icu option only has an effect when used with --force. Here, it will be ignored.');
112 }
113 switch ($format) {
114 case 'xlf20':
115 $xliffVersion = '2.0';
116 // no break
117 case 'xlf12':
118 $format = 'xlf';
119 }
120 $writeOptions = ['path' => end($this->transPaths), 'xliff_version' => $xliffVersion, 'default_locale' => $this->defaultLocale];
121 if (!$domains) {
122 $domains = $provider->getDomains();
123 }
124 $providerTranslations = $provider->read($domains, $locales);
125 if ($force) {
126 foreach ($providerTranslations->getCatalogues() as $catalogue) {
127 $operation = new TargetOperation(new MessageCatalogue($catalogue->getLocale()), $catalogue);
128 if ($intlIcu) {
129 $operation->moveMessagesToIntlDomainsIfPossible();
130 }
131 $this->writer->write($operation->getResult(), $format, $writeOptions);
132 }
133 $io->success(sprintf('Local translations has been updated from "%s" (for "%s" locale(s), and "%s" domain(s)).', parse_url($provider, \PHP_URL_SCHEME), implode(', ', $locales), implode(', ', $domains)));
134 return 0;
135 }
136 $localTranslations = $this->readLocalTranslations($locales, $domains, $this->transPaths);
137 // Append pulled translations to local ones.
138 $localTranslations->addBag($providerTranslations->diff($localTranslations));
139 foreach ($localTranslations->getCatalogues() as $catalogue) {
140 $this->writer->write($catalogue, $format, $writeOptions);
141 }
142 $io->success(sprintf('New translations from "%s" has been written locally (for "%s" locale(s), and "%s" domain(s)).', parse_url($provider, \PHP_URL_SCHEME), implode(', ', $locales), implode(', ', $domains)));
143 return 0;
144 }
145 }
146