Kdyby/translation a po/mo

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Barvoj
Člen | 60
+
0
-

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
+
0
-

David Matějka napsal(a):

viz https://forum.nette.org/…-bez-prefixu

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
+
0
-

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
+
+1
-

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)