Jak přepsat výchozí validační zprávy?

Martin Vágovszký
Člen | 14
+
0
-

V Nette\Forms\Validator je toto:

	/** @var array */
	public static $messages = [
		Controls\CsrfProtection::PROTECTION => 'Your session has expired. Please return to the home page and try again.',
		Form::EQUAL => 'Please enter %s.',
		Form::NOT_EQUAL => 'This value should not be %s.',
		Form::FILLED => 'This field is required.',
		Form::BLANK => 'This field should be blank.',
		Form::MIN_LENGTH => 'Please enter at least %d characters.',
		Form::MAX_LENGTH => 'Please enter no more than %d characters.',
		Form::LENGTH => 'Please enter a value between %d and %d characters long.',
		Form::EMAIL => 'Please enter a valid email address.',
		Form::URL => 'Please enter a valid URL.',
		Form::INTEGER => 'Please enter a valid integer.',
		Form::FLOAT => 'Please enter a valid number.',
		Form::MIN => 'Please enter a value greater than or equal to %d.',
		Form::MAX => 'Please enter a value less than or equal to %d.',
		Form::RANGE => 'Please enter a value between %d and %d.',
		Form::MAX_FILE_SIZE => 'The size of the uploaded file can be up to %d bytes.',
		Form::MAX_POST_SIZE => 'The uploaded data exceeds the limit of %d bytes.',
		Form::MIME_TYPE => 'The uploaded file is not in the expected format.',
		Form::IMAGE => 'The uploaded file must be image in format JPEG, GIF, PNG or WebP.',
		Controls\SelectBox::VALID => 'Please select a valid option.',
		Controls\UploadControl::VALID => 'An error occurred during file upload.',
	];

Chtěl bych z toho udělat něco jako:

/** @var array */
	public static $messages = [
		...
		Form::NOT_EQUAL => 'messages.forms.not_equal %s.',
		Form::FILLED => 'messages.forms.filled',
		Form::BLANK => 'messages.form.blank',
		...
	];

Poradí někdo jak by se to dalo udělat? Je to kvůli překládání. Používám contributte/translation a nevím si moc rady, jak jednoduše překládat zprávy typu Form::NOT_EQUAL kde je fixní + dynamická část zprávy. Díky za radu.

Mistrfilda
Člen | 76
+
+2
-

Ahoj,

možností je více. Vždy je nutné ale mít nastavený translator pro daný formulář $form->setTranslator($translator); (https://doc.nette.org/…on/templates#…)

Defaultni hlášky jsem vždy dával přes neon – https://doc.nette.org/cs/configuring#…

forms:
	messages:
		BLANK: 'messages.form.blank'

Pokud je nutné u validačního pravidla dodat i parametr (např. počet znaků) tak mě nenapadá jak by se to defaultně dalo řešit, když je nutné stejně dodat 2 parametr (např. maximalní počet znaků) – mělo by stačit něco takového

$form->addPassword('password', 'Heslo:')
	->addCondition(Form::MIN_LENGTH, 'messages.form.min_lenght', 8);

Parametr 8 se do translate metody předá automaticky.

Martin Vágovszký
Člen | 14
+
0
-

Super, funguje! Díky moc za radu.