Mám vytvořeny moduly a přes Extension implements ITranslationProvider dávám translátoru vědět o tom, kde má hledat zdroje (*.neon) pro překlady. Tedy v adresáři toho modulu. To vše mi funguje.

Nicméně vytvořil jsem si také formulář, který umožňuje uživatelům překládat do jiného jazyka. Chci tyto překlady po odeslání uložit vedle těch zdrojových (ve výchozím jazyku). Když ty překlady přidám do katalogu a poté je přes writter chci uložit, tak to chce jen path, kde ale uloží všechny domain překlady do jedné složky (tedy nikoliv do složky modulů).

Zatím jsem to ohakoval tak, že vůbec nepoužiji neon dumper a writter, ale vytvořím .neon (dle domain a jazyka), přidám do resources a pak si ho najdu a uložím překlady nějak takto:

foreach($targetCatalogue->all() as $domain ⇒ $translations) {
$fileName = $domain . “.” . $targetCatalogue->getLocale() . “.neon”;
if($resources = preg_grep(“|$fileName$|i”, $targetCatalogue->getResources())) {
$res = array_shift($resources);
file_put_contents($res, Neon::encode($translations, Neon::BLOCK));
}
}

Není na to nějaké lepší řešení?

Tak jsem to ještě upravil tak, že vytvářím pro každý domain nový katalog a ten pak můžu uložit přes TranslationWritter, protože mu dodávám svou vlastní path. Akorát jsem teda ještě nepřišel na to, jestli lze nějak vytáhnout seznam resources s klíčema v podobě domain. Protože takto musím cestu stále hledat tím regulárem.


You must first log in to participate in this discussion