Rozwiązanie wykorzystałem na niewielkiej stronie (docelowo szacuję około 20-30 pozycji w menu) z braku gotowca i z niechęci do walk z mambelfiszem który podobno nie działa z Joomlą.
Na początku templatki piszemy
Kod PHP:
session_start();
//kody języków
$languages = array("pl","de","en");
//zmienna lang jest ustawiona i odpowiada jednemu z kodów
if(!empty($_GET['lang']) && in_array($_GET['lang'],$languages))
{
$_SESSION['lang'] = $_GET['lang'];
}
//ustawienie domyślne za pierwszym razem
elseif(empty($_SESSION['lang']))
{
$_SESSION['lang']="pl";
}
Do pozycji modułów dodajemy odpowiedni kod języka, czyli dla left wychodzi left_pl,left_en,left_de (3 języki zgodnie z powyższym przykładem)
Moduły ładujemy tak:
Kod PHP:
mosLoadModules('left_'.$_SESSION['lang']);
Dla każdego języka tworzymy wg uznania sekcje, kategorie, artykuły, menu.
Po stworzeniu menu sprawdzamy jaki jest link w serwisie to "strony głównej" wybranego języka i umieszczamy odpowiedni kod w templatce.
Tak to wyglądało w moim przypadku:
Kod PHP:
<img src="<?php echo $mosConfig_live_site; ?>/templates/mcg/images/lang-<?php echo $_SESSION['lang'];?>.gif"
align="right" usemap="#lang" border="0" />
<map name="lang">
<?php
switch($_SESSION['lang'])
{
case "pl" :
echo '<area shape="rect" coords="2,4,22,18" href="'.$mosConfig_live_site.'/index.php?option=com_content&task=blogcategory&id=27&lang=de" target="_self">';
echo '<area shape="rect" coords="23,4,44,18" href="'.$mosConfig_live_site.'/index.php?option=com_content&task=blogcategory&id=28&lang=en" target="_self">';
break;
case "de" :
echo '<area shape="rect" coords="2,4,22,18" href="'.$mosConfig_live_site.'/index.php?lang=pl" target="_self">';
echo '<area shape="rect" coords="23,4,44,18" href="'.$mosConfig_live_site.'/index.php?option=com_content&task=blogcategory&id=28&lang=en" target="_self">';
break;
case "en" :
echo '<area shape="rect" coords="2,4,22,18" href="'.$mosConfig_live_site.'/index.php?option=com_content&task=blogcategory&id=27&lang=de" target="_self">';
echo '<area shape="rect" coords="23,4,44,18" href="'.$mosConfig_live_site.'/index.php?lang=pl" target="_self">';
break;
}
?>
</map>
Jak widać zależnie od ustawienia zm.sesyjnej lang ładuje się odpowiedni obrazek do którego podpięta jest mapa z likami do pozostałych języków. Język polski jest domyślny więc linkuje do index.php, natomiast angielski i niemiecki do konkretnych podstron.
Język da się zmienić tylko poprzez przekazanie w linku zmiennej lang.
Aha:wady
Konieczność powielania komponentów - np.mam dla każdego języka inny komponent LxMenu.
Za zaletę uważam możliwość zrobienia całkowicie innego pod względem zawartości serwisu dla różnych języków.