Skip to content

Commit

Permalink
Add the Attribute placeholder
Browse files Browse the repository at this point in the history
  • Loading branch information
dood- committed Jan 10, 2024
1 parent 3202fa9 commit aca368e
Show file tree
Hide file tree
Showing 74 changed files with 463 additions and 384 deletions.
66 changes: 33 additions & 33 deletions messages/ru/yii-validator.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,19 @@
'{min, plural, one{должен} few{должны} many{должны} other{должны}} быть ' .
'заполнены: {attributes}.',
/** @see BooleanValue */
'{attribute} must be either "{true}" or "{false}".' => '{attribute} должно быть «{true}» или «{false}».',
'{Attribute} must be either "{true}" or "{false}".' => '{Attribute} должно быть «{true}» или «{false}».',
/** @see Count */
'{attribute} must be an array or implement \Countable interface.' => '{attribute} должно быть массивом или объектом, реализующим интерфейс \Countable.',
'{attribute} must contain at least {min, number} {min, plural, one{item} other{items}}.' => '{attribute} должно содержать как минимум {min, number} {min, plural, one{элемент} few{элемента} many{элементов} other{элементов}}.',
'{attribute} must contain at most {max, number} {max, plural, one{item} other{items}}.' => '{attribute} должно содержать не более {max, number} {max, plural, one{элемента} few{элементов} many{элементов} other{элементов}}.',
'{attribute} must contain exactly {exactly, number} {exactly, plural, one{item} other{items}}.' => '{attribute} должно содержать ровно {exactly, number} {exactly, plural, one{элемент} few{элемента} many{элементов} other{элементов}}.',
'{Attribute} must be an array or implement \Countable interface.' => '{Attribute} должно быть массивом или объектом, реализующим интерфейс \Countable.',
'{Attribute} must contain at least {min, number} {min, plural, one{item} other{items}}.' => '{Attribute} должно содержать как минимум {min, number} {min, plural, one{элемент} few{элемента} many{элементов} other{элементов}}.',
'{Attribute} must contain at most {max, number} {max, plural, one{item} other{items}}.' => '{Attribute} должно содержать не более {max, number} {max, plural, one{элемента} few{элементов} many{элементов} other{элементов}}.',
'{Attribute} must contain exactly {exactly, number} {exactly, plural, one{item} other{items}}.' => '{Attribute} должно содержать ровно {exactly, number} {exactly, plural, one{элемент} few{элемента} many{элементов} other{элементов}}.',
/** @see Each */
'{attribute} must be array or iterable.' => '{attribute} должно быть массивом или иметь псевдотип iterable.',
'{Attribute} must be array or iterable.' => '{Attribute} должно быть массивом или иметь псевдотип iterable.',
'Every iterable key must have an integer or a string type.' => 'Ключ должен иметь тип integer или string.',
/** @see Email */
'{attribute} is not a valid email address.' => '{attribute} не является правильным адресом электронной почты.',
'{Attribute} is not a valid email address.' => '{Attribute} не является правильным адресом электронной почты.',
/** @see In */
'{attribute} is not in the list of acceptable values.' => '{attribute} не в списке допустимых значений.',
'{Attribute} is not in the list of acceptable values.' => '{Attribute} не в списке допустимых значений.',
/** @see Ip */
'Must be a valid IP address.' => 'Должно быть правильным IP-адресом.',
'Must not be an IPv4 address.' => 'Не должно быть IPv4-адресом.',
Expand All @@ -60,33 +60,33 @@
'Must not be a subnet.' => 'Не должно быть подсетью.',
'Is not in the allowed range.' => 'Не входит в список разрешенных диапазонов адресов.',
/** @see Integer */
'{attribute} must be an integer.' => '{attribute} должно быть целым числом.',
'{Attribute} must be an integer.' => '{Attribute} должно быть целым числом.',
/** @see Json */
'{attribute} is not JSON.' => '{attribute} не является строкой JSON.',
'{Attribute} is not JSON.' => '{Attribute} не является строкой JSON.',
/** @see Length */
'{attribute} must contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} должно содержать как минимум {min, number} {min, plural, one{символ} few{символа} many{символов} other{символов}}.',
'{attribute} must contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} должно содержать не более {max, number} {max, plural, one{символа} few{символов} many{символов} other{символов}}.',
'{attribute} must contain exactly {exactly, number} {exactly, plural, one{character} other{characters}}.' => '{attribute} должно содержать ровно {exactly, number} {exactly, plural, one{символ} few{символа} many{символов} other{символов}}.',
'{Attribute} must contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{Attribute} должно содержать как минимум {min, number} {min, plural, one{символ} few{символа} many{символов} other{символов}}.',
'{Attribute} must contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{Attribute} должно содержать не более {max, number} {max, plural, one{символа} few{символов} many{символов} other{символов}}.',
'{Attribute} must contain exactly {exactly, number} {exactly, plural, one{character} other{characters}}.' => '{Attribute} должно содержать ровно {exactly, number} {exactly, plural, one{символ} few{символа} many{символов} other{символов}}.',
/** @see Nested */
'Nested rule without rules can be used for objects only.' => 'Правило Nested без указания правил может использоваться только для объектов.',
'An object data set data can only have an array type.' => 'Данные в объекте должны быть массивом.',
'Property "{path}" is not found.' => 'Свойство «{path}» не найдено.',
/** @see Number */
'{attribute} must be a number.' => '{attribute} должно быть числом.',
'{Attribute} must be a number.' => '{Attribute} должно быть числом.',
/** @see OneOf */
'Exactly 1 attribute from this list must be filled: {attributes}.' => 'Ровно 1 атрибут из этого списка должен быть заполнен: {attributes}.',
/** @see Regex */
'{attribute} is invalid.' => 'Значение неверно.',
'{Attribute} is invalid.' => 'Значение неверно.',
/** @see Required */
'{attribute} cannot be blank.' => '{attribute} не может быть пустым.',
'{attribute} not passed.' => '{attribute} не передано.',
'{Attribute} cannot be blank.' => '{Attribute} не может быть пустым.',
'{Attribute} not passed.' => '{Attribute} не передано.',
/** @see Subset */
'{attribute} must be iterable.' => '{attribute} должно быть итерируемым.',
'{attribute} is not a subset of acceptable values.' => '{attribute} не является подмножеством допустимых значений.',
'{Attribute} must be iterable.' => '{Attribute} должно быть итерируемым.',
'{Attribute} is not a subset of acceptable values.' => '{Attribute} не является подмножеством допустимых значений.',
/** @see TrueValue */
'{attribute} must be "{true}".' => '{attribute} должно быть «{true}».',
'{Attribute} must be "{true}".' => '{Attribute} должно быть «{true}».',
/** @see Url */
'{attribute} is not a valid URL.' => '{attribute} не является правильным URL.',
'{Attribute} is not a valid URL.' => '{Attribute} не является правильным URL.',

// Used in multiple rules

Expand All @@ -95,7 +95,7 @@
* @see Nested
* @see OneOf
*/
'{attribute} must be an array or an object.' => '{attribute} должно быть массивом или объектом.',
'{Attribute} must be an array or an object.' => '{Attribute} должно быть массивом или объектом.',
/**
* @see BooleanValue
* @see TrueValue
Expand All @@ -112,14 +112,14 @@
*/
'The allowed types are integer, float, string, boolean, null and object implementing \Stringable or \DateTimeInterface.' => 'Разрешённые типы: integer, float, string, boolean, null и объект, реализующий интерфейс \Stringable или \DateTimeInterface.',
'The attribute value returned from a custom data set must have one of the following types: integer, float, string, boolean, null or an object implementing \Stringable interface or \DateTimeInterface.' => 'Значение, получаемое из пользовательского набора данных, должно иметь один из следующих типов: integer, float, string, bool, null или объект, реализующий интерфейс \Stringable или \DateTimeInterface.',
'{attribute} must be equal to "{targetValueOrAttribute}".' => '{attribute} должно быть равно «{targetValueOrAttribute}».',
'{attribute} must be strictly equal to "{targetValueOrAttribute}".' => '{attribute} должно быть строго равно «{targetValueOrAttribute}».',
'{attribute} must not be equal to "{targetValueOrAttribute}".' => '{attribute} не должно быть равно «{targetValueOrAttribute}».',
'{attribute} must not be strictly equal to "{targetValueOrAttribute}".' => '{attribute} не должно быть строго равно «{targetValueOrAttribute}».',
'{attribute} must be greater than "{targetValueOrAttribute}".' => '{attribute} должно быть больше, чем «{targetValueOrAttribute}».',
'{attribute} must be greater than or equal to "{targetValueOrAttribute}".' => '{attribute} должно быть больше или равно «{targetValueOrAttribute}».',
'{attribute} must be less than "{targetValueOrAttribute}".' => '{attribute} должно быть меньше, чем «{targetValueOrAttribute}».',
'{attribute} must be less than or equal to "{targetValueOrAttribute}".' => '{attribute} должно быть меньше или равно «{targetValueOrAttribute}».',
'{Attribute} must be equal to "{targetValueOrAttribute}".' => '{Attribute} должно быть равно «{targetValueOrAttribute}».',
'{Attribute} must be strictly equal to "{targetValueOrAttribute}".' => '{Attribute} должно быть строго равно «{targetValueOrAttribute}».',
'{Attribute} must not be equal to "{targetValueOrAttribute}".' => '{Attribute} не должно быть равно «{targetValueOrAttribute}».',
'{Attribute} must not be strictly equal to "{targetValueOrAttribute}".' => '{Attribute} не должно быть строго равно «{targetValueOrAttribute}».',
'{Attribute} must be greater than "{targetValueOrAttribute}".' => '{Attribute} должно быть больше, чем «{targetValueOrAttribute}».',
'{Attribute} must be greater than or equal to "{targetValueOrAttribute}".' => '{Attribute} должно быть больше или равно «{targetValueOrAttribute}».',
'{Attribute} must be less than "{targetValueOrAttribute}".' => '{Attribute} должно быть меньше, чем «{targetValueOrAttribute}».',
'{Attribute} must be less than or equal to "{targetValueOrAttribute}".' => '{Attribute} должно быть меньше или равно «{targetValueOrAttribute}».',
/**
* @see Email
* @see Ip
Expand All @@ -128,12 +128,12 @@
* @see Regex
* @see Url
*/
'{attribute} must be a string.' => '{attribute} должно быть строкой.',
'{Attribute} must be a string.' => '{Attribute} должно быть строкой.',
/**
* @see Number
* @see Integer
*/
'The allowed types are integer, float and string.' => 'Разрешённые типы: integer, float и string.',
'{attribute} must be no less than {min}.' => '{attribute} должно быть не меньше {min}.',
'{attribute} must be no greater than {max}.' => '{attribute} должно быть не больше {max}.',
'{Attribute} must be no less than {min}.' => '{Attribute} должно быть не меньше {min}.',
'{Attribute} must be no greater than {max}.' => '{Attribute} должно быть не больше {max}.',
];
16 changes: 8 additions & 8 deletions src/Rule/AbstractCompare.php
Original file line number Diff line number Diff line change
Expand Up @@ -260,14 +260,14 @@ public function getIncorrectDataSetTypeMessage(): string
public function getMessage(): string
{
return $this->message ?? match ($this->operator) {
'==', => '{attribute} must be equal to "{targetValueOrAttribute}".',
'===' => '{attribute} must be strictly equal to "{targetValueOrAttribute}".',
'!=' => '{attribute} must not be equal to "{targetValueOrAttribute}".',
'!==' => '{attribute} must not be strictly equal to "{targetValueOrAttribute}".',
'>' => '{attribute} must be greater than "{targetValueOrAttribute}".',
'>=' => '{attribute} must be greater than or equal to "{targetValueOrAttribute}".',
'<' => '{attribute} must be less than "{targetValueOrAttribute}".',
'<=' => '{attribute} must be less than or equal to "{targetValueOrAttribute}".',
'==', => '{Attribute} must be equal to "{targetValueOrAttribute}".',
'===' => '{Attribute} must be strictly equal to "{targetValueOrAttribute}".',
'!=' => '{Attribute} must not be equal to "{targetValueOrAttribute}".',
'!==' => '{Attribute} must not be strictly equal to "{targetValueOrAttribute}".',
'>' => '{Attribute} must be greater than "{targetValueOrAttribute}".',
'>=' => '{Attribute} must be greater than or equal to "{targetValueOrAttribute}".',
'<' => '{Attribute} must be less than "{targetValueOrAttribute}".',
'<=' => '{Attribute} must be less than or equal to "{targetValueOrAttribute}".',
};
}

Expand Down
4 changes: 2 additions & 2 deletions src/Rule/AbstractNumber.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ abstract class AbstractNumber implements
/**
* A default for {@see $lessThanMinMessage}.
*/
protected const DEFAULT_LESS_THAN_MIN_MESSAGE = '{attribute} must be no less than {min}.';
protected const DEFAULT_LESS_THAN_MIN_MESSAGE = '{Attribute} must be no less than {min}.';
/**
* A default for {@see $greaterThanMaxMessage}.
*/
protected const DEFAULT_GREATER_THAN_MAX_MESSAGE = '{attribute} must be no greater than {max}.';
protected const DEFAULT_GREATER_THAN_MAX_MESSAGE = '{Attribute} must be no greater than {max}.';

/**
* @var string The regular expression for matching numbers.
Expand Down
2 changes: 1 addition & 1 deletion src/Rule/AtLeast.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ final class AtLeast implements DumpedRuleInterface, SkipOnErrorInterface, WhenIn
public function __construct(
private array $attributes,
private int $min = 1,
private string $incorrectInputMessage = '{attribute} must be an array or an object.',
private string $incorrectInputMessage = '{Attribute} must be an array or an object.',
private string $message = 'At least {min, number} {min, plural, one{attribute} other{attributes}} from this ' .
'list must be filled: {attributes}.',
private mixed $skipOnEmpty = null,
Expand Down
1 change: 1 addition & 0 deletions src/Rule/AtLeastHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public function validate(mixed $value, object $rule, ValidationContext $context)
if (!is_array($value) && !is_object($value)) {
return $result->addError($rule->getIncorrectInputMessage(), [
'attribute' => $context->getTranslatedAttribute(),
'Attribute' => ucfirst($context->getTranslatedAttribute()),

Check failure on line 41 in src/Rule/AtLeastHandler.php

View workflow job for this annotation

GitHub Actions / psalm / PHP 8.0-ubuntu-latest

PossiblyNullArgument

src/Rule/AtLeastHandler.php:41:40: PossiblyNullArgument: Argument 1 of ucfirst cannot be null, possibly null value provided (see https://psalm.dev/078)

Check failure on line 41 in src/Rule/AtLeastHandler.php

View workflow job for this annotation

GitHub Actions / psalm / PHP 8.1-ubuntu-latest

PossiblyNullArgument

src/Rule/AtLeastHandler.php:41:40: PossiblyNullArgument: Argument 1 of ucfirst cannot be null, possibly null value provided (see https://psalm.dev/078)

Check failure on line 41 in src/Rule/AtLeastHandler.php

View workflow job for this annotation

GitHub Actions / psalm / PHP 8.2-ubuntu-latest

PossiblyNullArgument

src/Rule/AtLeastHandler.php:41:40: PossiblyNullArgument: Argument 1 of ucfirst cannot be null, possibly null value provided (see https://psalm.dev/078)
'type' => get_debug_type($value),
]);
}
Expand Down
2 changes: 1 addition & 1 deletion src/Rule/BooleanValue.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public function __construct(
private int|float|string|bool $falseValue = '0',
private bool $strict = false,
private string $incorrectInputMessage = 'The allowed types are integer, float, string, boolean. {type} given.',
private string $message = '{attribute} must be either "{true}" or "{false}".',
private string $message = '{Attribute} must be either "{true}" or "{false}".',
private mixed $skipOnEmpty = null,
private bool $skipOnError = false,
private Closure|null $when = null,
Expand Down
1 change: 1 addition & 0 deletions src/Rule/BooleanValueHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ private function getCommonResultParameters(BooleanValue $rule, ValidationContext
{
return [
'attribute' => $context->getTranslatedAttribute(),
'Attribute' => ucfirst($context->getTranslatedAttribute()),

Check failure on line 58 in src/Rule/BooleanValueHandler.php

View workflow job for this annotation

GitHub Actions / psalm / PHP 8.0-ubuntu-latest

PossiblyNullArgument

src/Rule/BooleanValueHandler.php:58:36: PossiblyNullArgument: Argument 1 of ucfirst cannot be null, possibly null value provided (see https://psalm.dev/078)

Check failure on line 58 in src/Rule/BooleanValueHandler.php

View workflow job for this annotation

GitHub Actions / psalm / PHP 8.1-ubuntu-latest

PossiblyNullArgument

src/Rule/BooleanValueHandler.php:58:36: PossiblyNullArgument: Argument 1 of ucfirst cannot be null, possibly null value provided (see https://psalm.dev/078)

Check failure on line 58 in src/Rule/BooleanValueHandler.php

View workflow job for this annotation

GitHub Actions / psalm / PHP 8.2-ubuntu-latest

PossiblyNullArgument

src/Rule/BooleanValueHandler.php:58:36: PossiblyNullArgument: Argument 1 of ucfirst cannot be null, possibly null value provided (see https://psalm.dev/078)
'true' => $rule->getTrueValue() === true ? 'true' : $rule->getTrueValue(),
'false' => $rule->getFalseValue() === false ? 'false' : $rule->getFalseValue(),
];
Expand Down
2 changes: 2 additions & 0 deletions src/Rule/CompareHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ public function validate(mixed $value, object $rule, ValidationContext $context)
if (!$this->isInputCorrect($rule->getType(), $value)) {
return $result->addError($rule->getIncorrectInputMessage(), [
'attribute' => $context->getTranslatedAttribute(),
'Attribute' => ucfirst($context->getTranslatedAttribute()),

Check failure on line 40 in src/Rule/CompareHandler.php

View workflow job for this annotation

GitHub Actions / psalm / PHP 8.0-ubuntu-latest

PossiblyNullArgument

src/Rule/CompareHandler.php:40:40: PossiblyNullArgument: Argument 1 of ucfirst cannot be null, possibly null value provided (see https://psalm.dev/078)

Check failure on line 40 in src/Rule/CompareHandler.php

View workflow job for this annotation

GitHub Actions / psalm / PHP 8.1-ubuntu-latest

PossiblyNullArgument

src/Rule/CompareHandler.php:40:40: PossiblyNullArgument: Argument 1 of ucfirst cannot be null, possibly null value provided (see https://psalm.dev/078)

Check failure on line 40 in src/Rule/CompareHandler.php

View workflow job for this annotation

GitHub Actions / psalm / PHP 8.2-ubuntu-latest

PossiblyNullArgument

src/Rule/CompareHandler.php:40:40: PossiblyNullArgument: Argument 1 of ucfirst cannot be null, possibly null value provided (see https://psalm.dev/078)
'type' => get_debug_type($value),
]);
}
Expand All @@ -61,6 +62,7 @@ public function validate(mixed $value, object $rule, ValidationContext $context)

return (new Result())->addError($rule->getMessage(), [
'attribute' => $context->getTranslatedAttribute(),
'Attribute' => ucfirst($context->getTranslatedAttribute()),

Check failure on line 65 in src/Rule/CompareHandler.php

View workflow job for this annotation

GitHub Actions / psalm / PHP 8.0-ubuntu-latest

PossiblyNullArgument

src/Rule/CompareHandler.php:65:36: PossiblyNullArgument: Argument 1 of ucfirst cannot be null, possibly null value provided (see https://psalm.dev/078)

Check failure on line 65 in src/Rule/CompareHandler.php

View workflow job for this annotation

GitHub Actions / psalm / PHP 8.1-ubuntu-latest

PossiblyNullArgument

src/Rule/CompareHandler.php:65:36: PossiblyNullArgument: Argument 1 of ucfirst cannot be null, possibly null value provided (see https://psalm.dev/078)

Check failure on line 65 in src/Rule/CompareHandler.php

View workflow job for this annotation

GitHub Actions / psalm / PHP 8.2-ubuntu-latest

PossiblyNullArgument

src/Rule/CompareHandler.php:65:36: PossiblyNullArgument: Argument 1 of ucfirst cannot be null, possibly null value provided (see https://psalm.dev/078)
'targetValue' => $this->getFormattedValue($rule->getTargetValue()),
'targetAttribute' => $targetAttribute,
'targetAttributeValue' => $targetAttribute !== null ? $this->getFormattedValue($targetValue) : null,
Expand Down
8 changes: 4 additions & 4 deletions src/Rule/Count.php
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,12 @@ public function __construct(
int|null $exactly = null,
int|null $min = null,
int|null $max = null,
private string $incorrectInputMessage = '{attribute} must be an array or implement \Countable interface.',
string $lessThanMinMessage = '{attribute} must contain at least {min, number} {min, plural, one{item} ' .
private string $incorrectInputMessage = '{Attribute} must be an array or implement \Countable interface.',
string $lessThanMinMessage = '{Attribute} must contain at least {min, number} {min, plural, one{item} ' .

Check warning on line 90 in src/Rule/Count.php

View check run for this annotation

Codecov / codecov/patch

src/Rule/Count.php#L90

Added line #L90 was not covered by tests
'other{items}}.',
string $greaterThanMaxMessage = '{attribute} must contain at most {max, number} {max, plural, one{item} ' .
string $greaterThanMaxMessage = '{Attribute} must contain at most {max, number} {max, plural, one{item} ' .

Check warning on line 92 in src/Rule/Count.php

View check run for this annotation

Codecov / codecov/patch

src/Rule/Count.php#L92

Added line #L92 was not covered by tests
'other{items}}.',
string $notExactlyMessage = '{attribute} must contain exactly {exactly, number} {exactly, plural, one{item} ' .
string $notExactlyMessage = '{Attribute} must contain exactly {exactly, number} {exactly, plural, one{item} ' .

Check warning on line 94 in src/Rule/Count.php

View check run for this annotation

Codecov / codecov/patch

src/Rule/Count.php#L94

Added line #L94 was not covered by tests
'other{items}}.',
private mixed $skipOnEmpty = null,
private bool $skipOnError = false,
Expand Down
Loading

0 comments on commit aca368e

Please sign in to comment.