Form, createPrefixedTranslator a možnost některé texty brát odjinud

H0w4rd
Člen | 94
+
0
-

Ve $form mám Nette\Application\UI\Form.

Nastavím

$form->setTranslator($this->translator->createPrefixedTranslator('admin.articlePresenter'));

Jedná se o Contributte translation.

Funguje skvěle pro texty, které mám v jazykových souborech v sekci ‚articlePresenter‘:

->addText(ArticleRepository::COLUMN_TITLE, ArticleRepository::COLUMN_TITLE)
->setRequired(true)

Validační hlášky mám globálně a nechci je 50× rozkopírovávat do jednotlivých sekcí. Tohle tím pádem nefunguje tak, jak bych chtěl:

->addRule(FormAlias::REQUIRED, $this->translator->translate("admin.labelIsRequiredMasculine"))
->addRule(FormAlias::MAX_LENGTH, $this->translator->translate("admin.labelCanBeOnlyLongMasculine", ["maxLength" => 100]), 100);

Validační hláška:

articlePresenter.Nadpis článku je povinný.

Tohle samozřejmě nepomůže:

->addRule(FormAlias::REQUIRED, "admin.labelIsRequiredMasculine")

Validační hláška:

articlePresenter.admin.labelIsRequiredMasculine

Prostě nutně potřebuju většinu textů brát ze sekce ‚articlePresenter‘ a některé z jiné sekce.
Kéž by tam byla nějaká magická značka něco jako u cest ve filesystému když se potřebuju dostat o úroveň výš, že bych napsal „../“, ale nic takového jsem nenašel.

Nepomáhá ani Contributte\Translation\Wrappers\NotTranslate ani Contributte\Translation\Wrappers\Message.

Dá se to nějak řešit?

Editoval H0w4rd (4. 4. 2023 14:06)

Pepino
Člen | 249
+
0
-

@H0w4rd $this->translator->removePrefix() nepomůže?

Gappa
Nette Blogger | 199
+
+1
-

H0w4rd napsal(a):
Kéž by tam byla nějaká magická značka něco jako u cest ve filesystému když se potřebuju dostat o úroveň výš, že bych napsal „../“, ale nic takového jsem nenašel.

Něco takového? :)

V dokumentaci jsem to ale nenašel – fíčura je v Kdyby/Translation, tak tam byla na žádost naportována:

emololftw
Člen | 81
+
0
-

Gappa napsal(a):

H0w4rd napsal(a):
Kéž by tam byla nějaká magická značka něco jako u cest ve filesystému když se potřebuju dostat o úroveň výš, že bych napsal „../“, ale nic takového jsem nenašel.

Něco takového? :)

V dokumentaci jsem to ale nenašel – fíčura je v Kdyby/Translation, tak tam byla na žádost naportována:

funguje perfektně s https://doc.nette.org/…onfiguration
stačí nastavit

forms:
	messages:
		MIN_LENGTH: '//messages.form.minLenght'

pak stačí jen používat

$form->addText('username', 'username')
		->addRule($form::MIN_LENGTH, null, 100);