Kdyby/translation a po/mo
- Barvoj
- Člen | 60
Ahoj,
různě na webu (např.: http://www.slideshare.net/…ytranslation) jsem si všiml, že by Kdyby/translation měl umět pracovat i se soubory .po/.mo
Když jsem si to ale zkoušel, tak mi to fungovalo, jen pokud jsem
překládal konstanty.
Př.:
{_messages.hi}
a k tomu lang/messages.cs_CZ.po
msgid "hi"
msgstr "Ahoj"
Je možné Kdyby/translation nastavit tak, abych mohl překládat normální text? Třeba věty:
{_"Welcome on this page."}
lang/cs_CZ.po
msgid "Welcome on this page."
msgstr "Vítejte na našem webu."
Editoval Barvoj (15. 1. 2016 15:49)
- Barvoj
- Člen | 60
David Matějka napsal(a):
Koukal jsem na to, ale podle mě to nefunguje tak, jak bych chtěl.
Zkoušel jsem si v továrničce na formulář vytvořit ten PrefixedTranslator:
use Nette\Localization\ITranslator;
class FormFactory extends \Nette\Object
{
/** @var ITranslator */
private $translator;
public function __construct(ITranslator $translator)
{
$this->translator = new PrefixedTranslator('messages', $translator);
}
public function create()
{
$form = new Form;
$form->setTranslator($this->translator);
$form->addText('max_value', 'Max value');
return $form;
}
}
Nicméně v šabloně se zobrazilo:
<label for="...">messages.Max value</label>
Labels (jiných inputů), které měly pouze jednoslovný text, se ale přeložily. Předpokládám tedy, že kdyby\translation si neporadí s texty, které obsahují mezery.
Dá se tedy vůbec kdyby\translation použít pro překládání textů?
Editoval Barvoj (10. 2. 2016 10:25)
- David Matějka
- Moderator | 6445
Koukam, ze je problem pri extrakci domeny z prekladaneho retezce, tam nemuze byt mezera: https://github.com/…anslator.php#L427 (cc @FilipProcházka ?)
Ale zkousel jsem a kdyz mas vsechny zpravy v messages.cs.po, tak se ta domena nemusi uvadet a pouzije se prave „messages“
- Barvoj
- Člen | 60
V tom případě je můj příklad nepřesný, za což se omlouvám.
Původně jsem v kódu místo messages měl front, ale pro účely příkladu tady na foru mi připadalo messages jasnější, tak jsem to přepsal.
Vyzkoušel jsem to tedy i u sebe s messages a opravdu – celý formulář byl najednou přeložený.
Z toho tedy vyplývá, že jediný způsob, jak použít .po na překládání textu je pojmenovat soubor s překlady messages.cs_CZ.po (pro češtinu)?
Editoval Barvoj (10. 2. 2016 16:43)