🔧
This commit is contained in:
@@ -41,7 +41,7 @@ class XliffLintCommand extends Command
|
||||
private ?\Closure $isReadableProvider;
|
||||
private bool $requireStrictFileNames;
|
||||
|
||||
public function __construct(string $name = null, callable $directoryIteratorProvider = null, callable $isReadableProvider = null, bool $requireStrictFileNames = true)
|
||||
public function __construct(?string $name = null, ?callable $directoryIteratorProvider = null, ?callable $isReadableProvider = null, bool $requireStrictFileNames = true)
|
||||
{
|
||||
parent::__construct($name);
|
||||
|
||||
@@ -109,7 +109,7 @@ EOF
|
||||
return $this->display($io, $filesInfo);
|
||||
}
|
||||
|
||||
private function validate(string $content, string $file = null): array
|
||||
private function validate(string $content, ?string $file = null): array
|
||||
{
|
||||
$errors = [];
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ class TranslationDataCollector extends DataCollector implements LateDataCollecto
|
||||
$this->data = $this->cloneVar($this->data);
|
||||
}
|
||||
|
||||
public function collect(Request $request, Response $response, \Throwable $exception = null): void
|
||||
public function collect(Request $request, Response $response, ?\Throwable $exception = null): void
|
||||
{
|
||||
$this->data['locale'] = $this->translator->getLocale();
|
||||
$this->data['fallback_locales'] = $this->translator->getFallbackLocales();
|
||||
|
||||
@@ -40,7 +40,7 @@ class DataCollectorTranslator implements TranslatorInterface, TranslatorBagInter
|
||||
$this->translator = $translator;
|
||||
}
|
||||
|
||||
public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null): string
|
||||
public function trans(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string
|
||||
{
|
||||
$trans = $this->translator->trans($id = (string) $id, $parameters, $domain, $locale);
|
||||
$this->collectMessage($locale, $domain, $id, $trans, $parameters);
|
||||
@@ -61,7 +61,7 @@ class DataCollectorTranslator implements TranslatorInterface, TranslatorBagInter
|
||||
return $this->translator->getLocale();
|
||||
}
|
||||
|
||||
public function getCatalogue(string $locale = null): MessageCatalogueInterface
|
||||
public function getCatalogue(?string $locale = null): MessageCatalogueInterface
|
||||
{
|
||||
return $this->translator->getCatalogue($locale);
|
||||
}
|
||||
@@ -71,7 +71,7 @@ class DataCollectorTranslator implements TranslatorInterface, TranslatorBagInter
|
||||
return $this->translator->getCatalogues();
|
||||
}
|
||||
|
||||
public function warmUp(string $cacheDir, string $buildDir = null): array
|
||||
public function warmUp(string $cacheDir, ?string $buildDir = null): array
|
||||
{
|
||||
if ($this->translator instanceof WarmableInterface) {
|
||||
return (array) $this->translator->warmUp($cacheDir, $buildDir);
|
||||
|
||||
@@ -28,7 +28,7 @@ class CsvFileDumper extends FileDumper
|
||||
$handle = fopen('php://memory', 'r+');
|
||||
|
||||
foreach ($messages->all($domain) as $source => $target) {
|
||||
fputcsv($handle, [$source, $target], $this->delimiter, $this->enclosure);
|
||||
fputcsv($handle, [$source, $target], $this->delimiter, $this->enclosure, '\\');
|
||||
}
|
||||
|
||||
rewind($handle);
|
||||
|
||||
@@ -176,7 +176,7 @@ class XliffFileDumper extends FileDumper
|
||||
$metadata = $messages->getMetadata($source, $domain);
|
||||
|
||||
// Add notes section
|
||||
if ($this->hasMetadataArrayInfo('notes', $metadata)) {
|
||||
if ($this->hasMetadataArrayInfo('notes', $metadata) && $metadata['notes']) {
|
||||
$notesElement = $dom->createElement('notes');
|
||||
foreach ($metadata['notes'] as $note) {
|
||||
$n = $dom->createElement('note');
|
||||
@@ -214,7 +214,7 @@ class XliffFileDumper extends FileDumper
|
||||
return $dom->saveXML();
|
||||
}
|
||||
|
||||
private function hasMetadataArrayInfo(string $key, array $metadata = null): bool
|
||||
private function hasMetadataArrayInfo(string $key, ?array $metadata = null): bool
|
||||
{
|
||||
return is_iterable($metadata[$key] ?? null);
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Symfony\Component\Translation\Exception;
|
||||
|
||||
class IncompleteDsnException extends InvalidArgumentException
|
||||
{
|
||||
public function __construct(string $message, string $dsn = null, \Throwable $previous = null)
|
||||
public function __construct(string $message, ?string $dsn = null, ?\Throwable $previous = null)
|
||||
{
|
||||
if ($dsn) {
|
||||
$message = sprintf('Invalid "%s" provider DSN: ', $dsn).$message;
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Symfony\Component\Translation\Exception;
|
||||
*/
|
||||
class MissingRequiredOptionException extends IncompleteDsnException
|
||||
{
|
||||
public function __construct(string $option, string $dsn = null, \Throwable $previous = null)
|
||||
public function __construct(string $option, ?string $dsn = null, ?\Throwable $previous = null)
|
||||
{
|
||||
$message = sprintf('The option "%s" is required but missing.', $option);
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ class ProviderException extends RuntimeException implements ProviderExceptionInt
|
||||
private ResponseInterface $response;
|
||||
private string $debug;
|
||||
|
||||
public function __construct(string $message, ResponseInterface $response, int $code = 0, \Exception $previous = null)
|
||||
public function __construct(string $message, ResponseInterface $response, int $code = 0, ?\Exception $previous = null)
|
||||
{
|
||||
$this->response = $response;
|
||||
$this->debug = $response->getInfo('debug') ?? '';
|
||||
|
||||
@@ -35,7 +35,7 @@ class UnsupportedSchemeException extends LogicException
|
||||
],
|
||||
];
|
||||
|
||||
public function __construct(Dsn $dsn, string $name = null, array $supported = [])
|
||||
public function __construct(Dsn $dsn, ?string $name = null, array $supported = [])
|
||||
{
|
||||
$provider = $dsn->getScheme();
|
||||
if (false !== $pos = strpos($provider, '+')) {
|
||||
|
||||
@@ -39,13 +39,18 @@ final class PhpAstExtractor extends AbstractFileExtractor implements ExtractorIn
|
||||
throw new \LogicException(sprintf('You cannot use "%s" as the "nikic/php-parser" package is not installed. Try running "composer require nikic/php-parser".', static::class));
|
||||
}
|
||||
|
||||
$this->parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7);
|
||||
$this->parser = (new ParserFactory())->createForHostVersion();
|
||||
}
|
||||
|
||||
public function extract(iterable|string $resource, MessageCatalogue $catalogue): void
|
||||
{
|
||||
foreach ($this->extractFiles($resource) as $file) {
|
||||
$traverser = new NodeTraverser();
|
||||
|
||||
// This is needed to resolve namespaces in class methods/constants.
|
||||
$nameResolver = new NodeVisitor\NameResolver();
|
||||
$traverser->addVisitor($nameResolver);
|
||||
|
||||
/** @var AbstractVisitor&NodeVisitor $visitor */
|
||||
foreach ($this->visitors as $visitor) {
|
||||
$visitor->initialize($catalogue, $file, $this->prefix);
|
||||
|
||||
@@ -94,7 +94,7 @@ class PhpStringTokenParser
|
||||
* @param string $str String without quotes
|
||||
* @param string|null $quote Quote type
|
||||
*/
|
||||
public static function parseEscapeSequences(string $str, string $quote = null): string
|
||||
public static function parseEscapeSequences(string $str, ?string $quote = null): string
|
||||
{
|
||||
if (null !== $quote) {
|
||||
$str = str_replace('\\'.$quote, $quote, $str);
|
||||
|
||||
@@ -81,7 +81,7 @@ abstract class AbstractVisitor
|
||||
return \PHP_INT_MAX;
|
||||
}
|
||||
|
||||
private function getStringNamedArguments(Node\Expr\CallLike|Node\Attribute $node, string $argumentName = null, bool $isArgumentNamePattern = false): array
|
||||
private function getStringNamedArguments(Node\Expr\CallLike|Node\Attribute $node, ?string $argumentName = null, bool $isArgumentNamePattern = false): array
|
||||
{
|
||||
$args = $node instanceof Node\Expr\CallLike ? $node->getArgs() : $node->args;
|
||||
$argumentValues = [];
|
||||
@@ -119,6 +119,17 @@ abstract class AbstractVisitor
|
||||
return $node->expr->value;
|
||||
}
|
||||
|
||||
if ($node instanceof Node\Expr\ClassConstFetch) {
|
||||
try {
|
||||
$reflection = new \ReflectionClass($node->class->toString());
|
||||
$constant = $reflection->getReflectionConstant($node->name->toString());
|
||||
if (false !== $constant && \is_string($constant->getValue())) {
|
||||
return $constant->getValue();
|
||||
}
|
||||
} catch (\ReflectionException) {
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,11 @@ final class ConstraintVisitor extends AbstractVisitor implements NodeVisitor
|
||||
}
|
||||
|
||||
public function enterNode(Node $node): ?Node
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function leaveNode(Node $node): ?Node
|
||||
{
|
||||
if (!$node instanceof Node\Expr\New_ && !$node instanceof Node\Attribute) {
|
||||
return null;
|
||||
@@ -42,7 +47,7 @@ final class ConstraintVisitor extends AbstractVisitor implements NodeVisitor
|
||||
return null;
|
||||
}
|
||||
|
||||
$parts = $className->parts;
|
||||
$parts = $className->getParts();
|
||||
$isConstraintClass = false;
|
||||
|
||||
foreach ($parts as $part) {
|
||||
@@ -100,11 +105,6 @@ final class ConstraintVisitor extends AbstractVisitor implements NodeVisitor
|
||||
return null;
|
||||
}
|
||||
|
||||
public function leaveNode(Node $node): ?Node
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function afterTraverse(array $nodes): ?Node
|
||||
{
|
||||
return null;
|
||||
|
||||
@@ -25,6 +25,11 @@ final class TransMethodVisitor extends AbstractVisitor implements NodeVisitor
|
||||
}
|
||||
|
||||
public function enterNode(Node $node): ?Node
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function leaveNode(Node $node): ?Node
|
||||
{
|
||||
if (!$node instanceof Node\Expr\MethodCall && !$node instanceof Node\Expr\FuncCall) {
|
||||
return null;
|
||||
@@ -34,12 +39,12 @@ final class TransMethodVisitor extends AbstractVisitor implements NodeVisitor
|
||||
return null;
|
||||
}
|
||||
|
||||
$name = (string) $node->name;
|
||||
$name = $node->name instanceof Node\Name ? $node->name->getLast() : (string) $node->name;
|
||||
|
||||
if ('trans' === $name || 't' === $name) {
|
||||
$firstNamedArgumentIndex = $this->nodeFirstNamedArgumentIndex($node);
|
||||
|
||||
if (!$messages = $this->getStringArguments($node, 0 < $firstNamedArgumentIndex ? 0 : 'message')) {
|
||||
if (!$messages = $this->getStringArguments($node, 0 < $firstNamedArgumentIndex ? 0 : 'id')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -53,11 +58,6 @@ final class TransMethodVisitor extends AbstractVisitor implements NodeVisitor
|
||||
return null;
|
||||
}
|
||||
|
||||
public function leaveNode(Node $node): ?Node
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function afterTraverse(array $nodes): ?Node
|
||||
{
|
||||
return null;
|
||||
|
||||
@@ -25,6 +25,11 @@ final class TranslatableMessageVisitor extends AbstractVisitor implements NodeVi
|
||||
}
|
||||
|
||||
public function enterNode(Node $node): ?Node
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function leaveNode(Node $node): ?Node
|
||||
{
|
||||
if (!$node instanceof Node\Expr\New_) {
|
||||
return null;
|
||||
@@ -34,7 +39,7 @@ final class TranslatableMessageVisitor extends AbstractVisitor implements NodeVi
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!\in_array('TranslatableMessage', $className->parts, true)) {
|
||||
if (!\in_array('TranslatableMessage', $className->getParts(), true)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -53,11 +58,6 @@ final class TranslatableMessageVisitor extends AbstractVisitor implements NodeVi
|
||||
return null;
|
||||
}
|
||||
|
||||
public function leaveNode(Node $node): ?Node
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function afterTraverse(array $nodes): ?Node
|
||||
{
|
||||
return null;
|
||||
|
||||
@@ -28,7 +28,7 @@ class MessageFormatter implements MessageFormatterInterface, IntlFormatterInterf
|
||||
/**
|
||||
* @param TranslatorInterface|null $translator An identity translator to use as selector for pluralization
|
||||
*/
|
||||
public function __construct(TranslatorInterface $translator = null, IntlFormatterInterface $intlFormatter = null)
|
||||
public function __construct(?TranslatorInterface $translator = null, ?IntlFormatterInterface $intlFormatter = null)
|
||||
{
|
||||
$this->translator = $translator ?? new IdentityTranslator();
|
||||
$this->intlFormatter = $intlFormatter ?? new IntlFormatter();
|
||||
|
||||
@@ -22,7 +22,7 @@ class CsvFileLoader extends FileLoader
|
||||
{
|
||||
private string $delimiter = ';';
|
||||
private string $enclosure = '"';
|
||||
private string $escape = '\\';
|
||||
private string $escape = '';
|
||||
|
||||
protected function loadResource(string $resource): array
|
||||
{
|
||||
@@ -55,7 +55,7 @@ class CsvFileLoader extends FileLoader
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setCsvControl(string $delimiter = ';', string $enclosure = '"', string $escape = '\\')
|
||||
public function setCsvControl(string $delimiter = ';', string $enclosure = '"', string $escape = '')
|
||||
{
|
||||
$this->delimiter = $delimiter;
|
||||
$this->enclosure = $enclosure;
|
||||
|
||||
@@ -70,7 +70,7 @@ class IcuResFileLoader implements LoaderInterface
|
||||
* @param array $messages Used internally for recursive calls
|
||||
* @param string|null $path Current path being parsed, used internally for recursive calls
|
||||
*/
|
||||
protected function flatten(\ResourceBundle $rb, array &$messages = [], string $path = null): array
|
||||
protected function flatten(\ResourceBundle $rb, array &$messages = [], ?string $path = null): array
|
||||
{
|
||||
foreach ($rb as $key => $value) {
|
||||
$nodePath = $path ? $path.'.'.$key : $key;
|
||||
|
||||
@@ -112,12 +112,20 @@ class XliffFileLoader implements LoaderInterface
|
||||
continue;
|
||||
}
|
||||
|
||||
$source = isset($attributes['resname']) && $attributes['resname'] ? $attributes['resname'] : $translation->source;
|
||||
$source = (string) (isset($attributes['resname']) && $attributes['resname'] ? $attributes['resname'] : $translation->source);
|
||||
|
||||
if (isset($translation->target)
|
||||
&& 'needs-translation' === (string) $translation->target->attributes()['state']
|
||||
&& \in_array((string) $translation->target, [$source, (string) $translation->source], true)
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// If the xlf file has another encoding specified, try to convert it because
|
||||
// simple_xml will always return utf-8 encoded values
|
||||
$target = $this->utf8ToCharset((string) ($translation->target ?? $translation->source), $encoding);
|
||||
|
||||
$catalogue->set((string) $source, $target, $domain);
|
||||
$catalogue->set($source, $target, $domain);
|
||||
|
||||
$metadata = [
|
||||
'source' => (string) $translation->source,
|
||||
@@ -140,7 +148,7 @@ class XliffFileLoader implements LoaderInterface
|
||||
$metadata['id'] = (string) $attributes['id'];
|
||||
}
|
||||
|
||||
$catalogue->setMetadata((string) $source, $metadata, $domain);
|
||||
$catalogue->setMetadata($source, $metadata, $domain);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -191,7 +199,7 @@ class XliffFileLoader implements LoaderInterface
|
||||
/**
|
||||
* Convert a UTF8 string to the specified encoding.
|
||||
*/
|
||||
private function utf8ToCharset(string $content, string $encoding = null): string
|
||||
private function utf8ToCharset(string $content, ?string $encoding = null): string
|
||||
{
|
||||
if ('UTF-8' !== $encoding && !empty($encoding)) {
|
||||
return mb_convert_encoding($content, $encoding, 'UTF-8');
|
||||
@@ -200,7 +208,7 @@ class XliffFileLoader implements LoaderInterface
|
||||
return $content;
|
||||
}
|
||||
|
||||
private function parseNotesMetadata(\SimpleXMLElement $noteElement = null, string $encoding = null): array
|
||||
private function parseNotesMetadata(?\SimpleXMLElement $noteElement = null, ?string $encoding = null): array
|
||||
{
|
||||
$notes = [];
|
||||
|
||||
|
||||
@@ -34,9 +34,14 @@ class LocaleSwitcher implements LocaleAwareInterface
|
||||
|
||||
public function setLocale(string $locale): void
|
||||
{
|
||||
if (class_exists(\Locale::class)) {
|
||||
\Locale::setDefault($locale);
|
||||
// Silently ignore if the intl extension is not loaded
|
||||
try {
|
||||
if (class_exists(\Locale::class, false)) {
|
||||
\Locale::setDefault($locale);
|
||||
}
|
||||
} catch (\Exception) {
|
||||
}
|
||||
|
||||
$this->locale = $locale;
|
||||
$this->requestContext?->setParameter('_locale', $locale);
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ class LoggingTranslator implements TranslatorInterface, TranslatorBagInterface,
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null): string
|
||||
public function trans(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string
|
||||
{
|
||||
$trans = $this->translator->trans($id = (string) $id, $parameters, $domain, $locale);
|
||||
$this->log($id, $domain, $locale);
|
||||
@@ -64,7 +64,7 @@ class LoggingTranslator implements TranslatorInterface, TranslatorBagInterface,
|
||||
return $this->translator->getLocale();
|
||||
}
|
||||
|
||||
public function getCatalogue(string $locale = null): MessageCatalogueInterface
|
||||
public function getCatalogue(?string $locale = null): MessageCatalogueInterface
|
||||
{
|
||||
return $this->translator->getCatalogue($locale);
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf
|
||||
return array_values($domains);
|
||||
}
|
||||
|
||||
public function all(string $domain = null): array
|
||||
public function all(?string $domain = null): array
|
||||
{
|
||||
if (null !== $domain) {
|
||||
// skip messages merge if intl-icu requested explicitly
|
||||
|
||||
@@ -37,7 +37,7 @@ interface MessageCatalogueInterface
|
||||
*
|
||||
* If $domain is null, it returns all messages.
|
||||
*/
|
||||
public function all(string $domain = null): array;
|
||||
public function all(?string $domain = null): array;
|
||||
|
||||
/**
|
||||
* Sets a message translation.
|
||||
|
||||
22
vendor/symfony/translation/Provider/Dsn.php
vendored
22
vendor/symfony/translation/Provider/Dsn.php
vendored
@@ -33,25 +33,25 @@ final class Dsn
|
||||
{
|
||||
$this->originalDsn = $dsn;
|
||||
|
||||
if (false === $parsedDsn = parse_url($dsn)) {
|
||||
if (false === $params = parse_url($dsn)) {
|
||||
throw new InvalidArgumentException('The translation provider DSN is invalid.');
|
||||
}
|
||||
|
||||
if (!isset($parsedDsn['scheme'])) {
|
||||
if (!isset($params['scheme'])) {
|
||||
throw new InvalidArgumentException('The translation provider DSN must contain a scheme.');
|
||||
}
|
||||
$this->scheme = $parsedDsn['scheme'];
|
||||
$this->scheme = $params['scheme'];
|
||||
|
||||
if (!isset($parsedDsn['host'])) {
|
||||
if (!isset($params['host'])) {
|
||||
throw new InvalidArgumentException('The translation provider DSN must contain a host (use "default" by default).');
|
||||
}
|
||||
$this->host = $parsedDsn['host'];
|
||||
$this->host = $params['host'];
|
||||
|
||||
$this->user = '' !== ($parsedDsn['user'] ?? '') ? urldecode($parsedDsn['user']) : null;
|
||||
$this->password = '' !== ($parsedDsn['pass'] ?? '') ? urldecode($parsedDsn['pass']) : null;
|
||||
$this->port = $parsedDsn['port'] ?? null;
|
||||
$this->path = $parsedDsn['path'] ?? null;
|
||||
parse_str($parsedDsn['query'] ?? '', $this->options);
|
||||
$this->user = '' !== ($params['user'] ?? '') ? rawurldecode($params['user']) : null;
|
||||
$this->password = '' !== ($params['pass'] ?? '') ? rawurldecode($params['pass']) : null;
|
||||
$this->port = $params['port'] ?? null;
|
||||
$this->path = $params['path'] ?? null;
|
||||
parse_str($params['query'] ?? '', $this->options);
|
||||
}
|
||||
|
||||
public function getScheme(): string
|
||||
@@ -74,7 +74,7 @@ final class Dsn
|
||||
return $this->password;
|
||||
}
|
||||
|
||||
public function getPort(int $default = null): ?int
|
||||
public function getPort(?int $default = null): ?int
|
||||
{
|
||||
return $this->port ?? $default;
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ final class PseudoLocalizationTranslator implements TranslatorInterface
|
||||
$this->localizableHTMLAttributes = $options['localizable_html_attributes'] ?? [];
|
||||
}
|
||||
|
||||
public function trans(string $id, array $parameters = [], string $domain = null, string $locale = null): string
|
||||
public function trans(string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string
|
||||
{
|
||||
$trans = '';
|
||||
$visibleText = '';
|
||||
@@ -120,7 +120,7 @@ final class PseudoLocalizationTranslator implements TranslatorInterface
|
||||
return [[true, true, $originalTrans]];
|
||||
}
|
||||
|
||||
$html = mb_encode_numericentity($originalTrans, [0x80, 0xFFFF, 0, 0xFFFF], mb_detect_encoding($originalTrans, null, true) ?: 'UTF-8');
|
||||
$html = mb_encode_numericentity($originalTrans, [0x80, 0x10FFFF, 0, 0x1FFFFF], mb_detect_encoding($originalTrans, null, true) ?: 'UTF-8');
|
||||
|
||||
$useInternalErrors = libxml_use_internal_errors(true);
|
||||
|
||||
|
||||
@@ -162,11 +162,11 @@ function extractLocaleFromFilePath($filePath)
|
||||
function extractTranslationKeys($filePath): array
|
||||
{
|
||||
$translationKeys = [];
|
||||
$contents = new \SimpleXMLElement(file_get_contents($filePath));
|
||||
$contents = new SimpleXMLElement(file_get_contents($filePath));
|
||||
|
||||
foreach ($contents->file->body->{'trans-unit'} as $translationKey) {
|
||||
$translationId = (string) $translationKey['id'];
|
||||
$translationKey = (string) $translationKey->source;
|
||||
$translationKey = (string) ($translationKey['resname'] ?? $translationKey->source);
|
||||
|
||||
$translationKeys[$translationId] = $translationKey;
|
||||
}
|
||||
|
||||
@@ -18,29 +18,35 @@
|
||||
"en_CM": "en_001",
|
||||
"en_CX": "en_001",
|
||||
"en_CY": "en_001",
|
||||
"en_CZ": "en_150",
|
||||
"en_DE": "en_150",
|
||||
"en_DG": "en_001",
|
||||
"en_DK": "en_150",
|
||||
"en_DM": "en_001",
|
||||
"en_ER": "en_001",
|
||||
"en_ES": "en_150",
|
||||
"en_FI": "en_150",
|
||||
"en_FJ": "en_001",
|
||||
"en_FK": "en_001",
|
||||
"en_FM": "en_001",
|
||||
"en_FR": "en_150",
|
||||
"en_GB": "en_001",
|
||||
"en_GD": "en_001",
|
||||
"en_GG": "en_001",
|
||||
"en_GH": "en_001",
|
||||
"en_GI": "en_001",
|
||||
"en_GM": "en_001",
|
||||
"en_GS": "en_001",
|
||||
"en_GY": "en_001",
|
||||
"en_HK": "en_001",
|
||||
"en_HU": "en_150",
|
||||
"en_ID": "en_001",
|
||||
"en_IE": "en_001",
|
||||
"en_IL": "en_001",
|
||||
"en_IM": "en_001",
|
||||
"en_IN": "en_001",
|
||||
"en_IO": "en_001",
|
||||
"en_IT": "en_150",
|
||||
"en_JE": "en_001",
|
||||
"en_JM": "en_001",
|
||||
"en_KE": "en_001",
|
||||
@@ -62,13 +68,17 @@
|
||||
"en_NF": "en_001",
|
||||
"en_NG": "en_001",
|
||||
"en_NL": "en_150",
|
||||
"en_NO": "en_150",
|
||||
"en_NR": "en_001",
|
||||
"en_NU": "en_001",
|
||||
"en_NZ": "en_001",
|
||||
"en_PG": "en_001",
|
||||
"en_PK": "en_001",
|
||||
"en_PL": "en_150",
|
||||
"en_PN": "en_001",
|
||||
"en_PT": "en_150",
|
||||
"en_PW": "en_001",
|
||||
"en_RO": "en_150",
|
||||
"en_RW": "en_001",
|
||||
"en_SB": "en_001",
|
||||
"en_SC": "en_001",
|
||||
@@ -77,6 +87,7 @@
|
||||
"en_SG": "en_001",
|
||||
"en_SH": "en_001",
|
||||
"en_SI": "en_150",
|
||||
"en_SK": "en_150",
|
||||
"en_SL": "en_001",
|
||||
"en_SS": "en_001",
|
||||
"en_SX": "en_001",
|
||||
|
||||
@@ -15,7 +15,7 @@ if (!\function_exists(t::class)) {
|
||||
/**
|
||||
* @author Nate Wiebe <nate@northern.co>
|
||||
*/
|
||||
function t(string $message, array $parameters = [], string $domain = null): TranslatableMessage
|
||||
function t(string $message, array $parameters = [], ?string $domain = null): TranslatableMessage
|
||||
{
|
||||
return new TranslatableMessage($message, $parameters, $domain);
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ abstract class ProviderFactoryTestCase extends TestCase
|
||||
/**
|
||||
* @dataProvider unsupportedSchemeProvider
|
||||
*/
|
||||
public function testUnsupportedSchemeException(string $dsn, string $message = null)
|
||||
public function testUnsupportedSchemeException(string $dsn, ?string $message = null)
|
||||
{
|
||||
$factory = $this->createFactory();
|
||||
|
||||
@@ -107,7 +107,7 @@ abstract class ProviderFactoryTestCase extends TestCase
|
||||
/**
|
||||
* @dataProvider incompleteDsnProvider
|
||||
*/
|
||||
public function testIncompleteDsnException(string $dsn, string $message = null)
|
||||
public function testIncompleteDsnException(string $dsn, ?string $message = null)
|
||||
{
|
||||
$factory = $this->createFactory();
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ class TranslatableMessage implements TranslatableInterface
|
||||
private array $parameters;
|
||||
private ?string $domain;
|
||||
|
||||
public function __construct(string $message, array $parameters = [], string $domain = null)
|
||||
public function __construct(string $message, array $parameters = [], ?string $domain = null)
|
||||
{
|
||||
$this->message = $message;
|
||||
$this->parameters = $parameters;
|
||||
@@ -50,7 +50,7 @@ class TranslatableMessage implements TranslatableInterface
|
||||
return $this->domain;
|
||||
}
|
||||
|
||||
public function trans(TranslatorInterface $translator, string $locale = null): string
|
||||
public function trans(TranslatorInterface $translator, ?string $locale = null): string
|
||||
{
|
||||
return $translator->trans($this->getMessage(), array_map(
|
||||
static fn ($parameter) => $parameter instanceof TranslatableInterface ? $parameter->trans($translator, $locale) : $parameter,
|
||||
|
||||
8
vendor/symfony/translation/Translator.php
vendored
8
vendor/symfony/translation/Translator.php
vendored
@@ -69,7 +69,7 @@ class Translator implements TranslatorInterface, TranslatorBagInterface, LocaleA
|
||||
/**
|
||||
* @throws InvalidArgumentException If a locale contains invalid characters
|
||||
*/
|
||||
public function __construct(string $locale, MessageFormatterInterface $formatter = null, string $cacheDir = null, bool $debug = false, array $cacheVary = [])
|
||||
public function __construct(string $locale, ?MessageFormatterInterface $formatter = null, ?string $cacheDir = null, bool $debug = false, array $cacheVary = [])
|
||||
{
|
||||
$this->setLocale($locale);
|
||||
|
||||
@@ -110,7 +110,7 @@ class Translator implements TranslatorInterface, TranslatorBagInterface, LocaleA
|
||||
*
|
||||
* @throws InvalidArgumentException If the locale contains invalid characters
|
||||
*/
|
||||
public function addResource(string $format, mixed $resource, string $locale, string $domain = null)
|
||||
public function addResource(string $format, mixed $resource, string $locale, ?string $domain = null)
|
||||
{
|
||||
$domain ??= 'messages';
|
||||
|
||||
@@ -171,7 +171,7 @@ class Translator implements TranslatorInterface, TranslatorBagInterface, LocaleA
|
||||
return $this->fallbackLocales;
|
||||
}
|
||||
|
||||
public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null): string
|
||||
public function trans(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string
|
||||
{
|
||||
if (null === $id || '' === $id) {
|
||||
return '';
|
||||
@@ -203,7 +203,7 @@ class Translator implements TranslatorInterface, TranslatorBagInterface, LocaleA
|
||||
return $this->formatter->format($catalogue->get($id, $domain), $locale, $parameters);
|
||||
}
|
||||
|
||||
public function getCatalogue(string $locale = null): MessageCatalogueInterface
|
||||
public function getCatalogue(?string $locale = null): MessageCatalogueInterface
|
||||
{
|
||||
if (!$locale) {
|
||||
$locale = $this->getLocale();
|
||||
|
||||
2
vendor/symfony/translation/TranslatorBag.php
vendored
2
vendor/symfony/translation/TranslatorBag.php
vendored
@@ -35,7 +35,7 @@ final class TranslatorBag implements TranslatorBagInterface
|
||||
}
|
||||
}
|
||||
|
||||
public function getCatalogue(string $locale = null): MessageCatalogueInterface
|
||||
public function getCatalogue(?string $locale = null): MessageCatalogueInterface
|
||||
{
|
||||
if (null === $locale || !isset($this->catalogues[$locale])) {
|
||||
$this->catalogues[$locale] = new MessageCatalogue($locale);
|
||||
|
||||
@@ -25,7 +25,7 @@ interface TranslatorBagInterface
|
||||
*
|
||||
* @throws InvalidArgumentException If the locale contains invalid characters
|
||||
*/
|
||||
public function getCatalogue(string $locale = null): MessageCatalogueInterface;
|
||||
public function getCatalogue(?string $locale = null): MessageCatalogueInterface;
|
||||
|
||||
/**
|
||||
* Returns all catalogues of the instance.
|
||||
|
||||
2
vendor/symfony/translation/composer.json
vendored
2
vendor/symfony/translation/composer.json
vendored
@@ -22,7 +22,7 @@
|
||||
"symfony/translation-contracts": "^2.5|^3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"nikic/php-parser": "^4.13",
|
||||
"nikic/php-parser": "^4.18|^5.0",
|
||||
"symfony/config": "^5.4|^6.0|^7.0",
|
||||
"symfony/console": "^5.4|^6.0|^7.0",
|
||||
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
|
||||
|
||||
Reference in New Issue
Block a user