< návrat zpět

Diskuse


Téma: Vlastní moduly administrace - title rss

Zaslal/a 9.9.2017 10:54

golfinZdravím,

lze upravit položku title v config.php tak, aby měnila název administrační stránky podle language databáze? Jak se snažím, tak mi to moc nejde. Mám konfigurační soubor nadefinovaný takto:
return array(

// mapa dostupnych lokalizaci
'lang_map' => array(
'default' => 'cs',
'english' => 'en',
'slovak' => 'sk',
),
'title' => 'title', // ZDE Potřebuji upravit, aby to tahal z lang souborů, nebo podmínkou přímo ze souboru. Ale nedaří se mi to.
'access' => _loginright_level > 999, // pristup k modulu
'in-other' => false, // zobrazit v ostatnich funkci namisto hlavniho menu 1/0
'hidden' => false, // skryty modul (nezobrazuje se v menu)
'autotitle' => True, // automaticky vytvorit titulek pomoci <h1>

);


Zkouším např. toto: $title = 'lang_map'
if ( $title['lang_map'] => 'default') {
$title = 'Slovník';
}
elseif ($title['lang_map'] == 'english') {
$title = 'Dictionary';
}
elseif ($title['lang_map'] == 'slovak') {
$title = 'Slovník';
}

Kdy $title vložím do: 'title' => $title

Ale to moc nefunguje.

PS: Přepínání jazyků mi jinak funguje, vlastní script s tím počítá a jazyky přepíná. Jen Title mi nejde.
PS: Když použiji základní language soubor, tak tam to funguje, ale když použiji svůj vlastní lang soubor, na který je odkazováno ze souboru script.php, tak to nefunguje.
Za případnou radu děkuji.

Zaslat odpověď >

#020832
Jirka Daněk
A co takhle? Netestováno.

// mapa dostupnych lokalizaci
$lang_map = array(
'default' => 'Slovník',
'english' => 'Dictionary',
'slovak' => 'Slovník',
);

return array(

'title' => $lang_map[(isset($lang_map[_language]) ? _language : 'default')],
'access' => _loginright_level > 999, // pristup k modulu
'in-other' => false, // zobrazit v ostatnich funkci namisto hlavniho menu 1/0
'hidden' => false, // skryty modul (nezobrazuje se v menu)
'autotitle' => True, // automaticky vytvorit titulek pomoci <h1>

);
#020833
golfin
Celý config.php jsem upravil takto a funguje to.

<?php

// mapa dostupnych lokalizaci pro title
$lang_map_title= array(
'default' => 'Slovník',
'english' => 'Dictionary',
'slovak' => 'Slovník sk',
);

return array(

// mapa dostupnych lokalizaci
'lang_map' => array(
'default' => 'cs',
'english' => 'en',
'slovak' => 'sk',
),
'title' => (isset($lang_map_title[_language]) ? $lang_map_title[_language] : $lang_map_title['default']),
'access' => _loginright_level > 999, // pristup k modulu
'in-other' => false, // zobrazit v ostatnich funkci namisto hlavniho menu 1/0
'hidden' => false, // skryty modul (nezobrazuje se v menu)
'autotitle' => True, // automaticky vytvorit titulek pomoci <h1>

);


První definuje lang mapu jen pro titlte a druhý lang map definuje pro celý modul.

Jirko, díky. 1
#020834
Jirka Daněk
Proč tak složitě? případně piš do vzkazů mám i FB
#020835
golfin
Jirko pošlu Ti celý slovník, jen teď nejsem doma. Balím se a jedu zpět domů z moravy. Toto jsem jen zkoušel, zda to vůbec půjde a veřejně jsem to vlastně chtěl, aby to bylo vidět jako řešení. Pro ostatní uživatele sunlightu. Protože jsem to na foru nikde nenašel, zda lze použít u modulů vícejazyčnost i do administračního menu atd. Jak přijedu domů, zítra, tak se ozvu. Jinak Facebook nemám. No a jestli je to složité, to já nevím. Prostě jsem se do toho pustil a tvořím to tak, dokud se to nepovede a nefunguje to. *usmál se*. Asi až ten script uvidíš, zhrozíš se 1 . Ale funguje a zatím dělá přesně to co chci. Zítra pošlu. Díky.

PS: A nespěchej, až se na to budeš chtít podívat, jak Ti vyjde čas. Žádnej stres a honičky.
#020836
Jirka Daněk
Přijde mi zbytečné uvádět langmap do configu, když stejně musíš na ten soubor sáhnout. Když už, tak bych udělal podmínku na file_exists a případně načetl default, což ti umožní přidat lokalizaci i bez zásahu do configu. A samozřejmě jde to i jinak, nejen jako admin modul ale i jako extend a ten je k tomu překládání svolnější.

Edit: Napadá mě, že by to šlo i takhle
* PHP 5.3+
<?php

/**
* @param string $lng Nazev klice jazyka
* @param int $index Ziskani hodnoty dle indexu (0 - zkratka, 1 - titulek)
* @return string,
*/
$localize = function($lng, $index = 0) {
$map = array(
'default' => array('cs', 'Slovník'),
'english' => array('en', 'Dictionary'),
'slovak' => array('sk', 'Slovník sk'),
);
return $map[isset($map[$lng]) ? $lng : 'default'][$index];
};

return array(

'title' => $localize(_language, 1),
'access' => _loginright_level > 999, // pristup k modulu
'in-other' => false, // zobrazit v ostatnich funkci namisto hlavniho menu 1/0
'hidden' => false, // skryty modul (nezobrazuje se v menu)
'autotitle' => True, // automaticky vytvorit titulek pomoci <h1>

);


A v případě že chceš jen zkratky tak vynecháš index 10 $localize(_language) a dostaneš cs/en/sk a ano šlo by použít místo anonymní funkce klasickou...
#020840
Jirka Daněk
Jinak pro jazykovou podporu extendu lze použít systémovou funkci _registerLangPack($key, $dir, array $list=null)
#020844
golfin
mrknu na ni, funkce jsou velice pěkně popsány v samotném souboru function.php. Díky