Existuje nějaký ucelený způsob správy jazykových mutací?

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

Říkám si, zda neexistuje nějaký lepší systém na správu textů různých jazykových mutací (nikde jsem nic komplexního nenašel). Sám používám systém jedné třídy Resources přístupné přes services, jejíchž metody volají třídy konkrétních překladů. Zkusím to popsat hierarchií souborů tříd pro registrační formulář:

/app
--/models
--/--/Resources
--/--/--Resources.php (hlavní služba)
--/--/--/Registration
--/--/--/--/IRegistration.php (rozhraní pro registrační formulář a stránku s registrací)
--/--/--/--/En
--/--/--/--/--/Registration.php (konkrétní texty v anglickém jazyce)
--/--/--/--/Cz
--/--/--/--/--/Registration.php (konkrétní texty v českém jazykce)

metoda pak vyhledává stejnojmennou třídu podle parametrem specifikovaného jazyka (pokud neexistuje, nastaví se defaultní jazyk, pokud ani ten, vyhodím výjimku)

public function Registration($lang = "En") {
    return $this->getResource($lang, __FUNCTION__);
}

Samotný formulář pak

       $resource = $this->context->resources->Registration("En");

...

       $form->addText("name", $resource->name())
                ->addRule(Form::FILLED, $resource->filled())
                ->addRule(Form::MAX_LENGTH, $resource->max_lenght(25), 25)
                ->setAttribute("placeholder", "John")
                ->setAttribute("tooltip", $resource->info_name());
...

EDIT: ještě mě napadá, že bych mohl rozhraní dát do úplně jiného jmenného prostoru (složky) pod /Resources a přidávat konkrétní jednu jazykovou složku (Cz, En,…), která bude implementovat všechny překlady – pro vložení dalšího překladu pak bude stačit vložit jednu složku se všemi překlady a mělo by to fungovat bez zásahu do původního kódu…

/app
--/models
--/--/Resources
--/--/--Resources.php (hlavní služba)
--/--/--/Interfaces
--/--/--/--/IRegistration.php (rozhraní pro registrační formulář a stránku s registrací)
--/--/--/En
--/--/--/--/Registration.php (konkrétní texty v anglickém jazyce)
--/--/--/Cz
--/--/--/--/Registration.php (konkrétní texty v českém jazykce)

Editoval castamir (13. 5. 2012 13:23)

Elijen
Člen | 171
+
0
-

Nette již vlastní rozhraní na překlady integrované má. To co děláš, je tak trochu masochysmus :)

Popravndě jsem ale stále nenarazil na implementaci, která by fungovala na 100%. Zkus pohledat googlem, zatím jsem namátkou narazil na toto:

castamir
Člen | 629
+
0
-

Obě jsem našel na fóru (přibližně 2 roky starou diskuzi) a myslel jsem, že jsou to už moc zastaralé, ale evidentně nejsou. Vyzkouším je a uvidím, zda vyhovují mé představě o jednoduché správě přeladů. Díky.