Lokalizace placeholderu? (Translator)
- Tomáš Votruba
- Moderator | 1114
Tak jsem zjistil, že translator se na placeholder nevztahuje.
<?php
$form->...
->setAttribute("placeholder","Login");
$form->setTranslator($this->context->translator);
?>
Což je docela blbé, nevíte jak na to?
EDIT: tak jsem našel cestu. Věřím ale, že existuje snazší:
<!-- v šabloně -->
{var $placeHolder = $template->translate("Placeholder k překladu")}
<!-- tímto dostaneme tento text do panelu, kde jej pak přeložíme;
případně lze místo toho použít externí editor na soubor překlady;
po překladu odstraníme -->
{_"Placeholder k překladu"}
{form}
<!-- zde pak dostaneme přeložený text -->
{input username, placeholder => $placeHolder}
{/form}
Editoval Schmutzka (9. 12. 2011 3:52)
- Felix
- Nette Core | 1196
Tohle neni idealni. Co kdyz chci pouzit
$this->addPassword('password', 'Password:')
->setRequired('Please enter your password.')
->setAttribute('placeholder', 'Password');
Musime asi pockat, az Davidek udela formy pro HTML5, kde bude lepsi podpora a placeholdery se budou prekladat automaticky.
- Matúš Matula
- Člen | 257
ja to riesim podedenim Nette\Application\UI\Form a nasledovnym kodom
<?php
protected function attached($presenter)
{
parent::attached($presenter);
if ($presenter instanceof Nette\Application\UI\Presenter) {
if ($presenter->getTranslator() !== NULL) {
$this->setTranslator($presenter->getTranslator());
// fix: translate placeholders as well till Nette has native support
foreach ($this->getControls() as $control) {
if ($control->controlPrototype->placeholder !== NULL) {
$control->controlPrototype->placeholder = $this->translator->translate($control->controlPrototype->placeholder);
}
}
}
}
}
?>
- Tomáš Votruba
- Moderator | 1114
@Majkl578: Pravda. Existuje nějaké pěkné řešení, tj. nedědit form ani jej nepřekládat umělě?
- Matúš Matula
- Člen | 257
Do Nette to urcite nepatri, suhlasim s @Majkl578.
@Schmutzka: podedit si form nepovazujem za nepekne
riesenie, kedze mat nejaky BaseForm pre (takmer) vsetky formulare sa moze
vyplatit aj pri inych situaciach, kt. casom vyvstanu (je to potom jednoduchy a
rychly zasah na 1 mieste)
Ak niekto ma ale krajsie riesenie, sem s nim :-)
- David Matějka
- Moderator | 6445
ja na tohle vlakno divne koukam a rikam si, wtf? vzdyt mi to funguje.. aha! on za to muze bootstrap renderer od hosiplana. takze se to necha vyresit i v rendereru, viz https://github.com/…Renderer.php#L166 (a to bude asi cistci nez primo ve formu)