А можно поподробнее что за сниппет, который определяет где находится посетитель, и кнопки с сохранением позиции на сайте..
в каждом шаблоне где есть кнопки рус и укр визываю чанк {{lng}}, код чанка:
<a href="[(site_url)]ua/[b][[lng_link]][/b]"><img src="assets/images/ua.gif" height="20px" width="26px" border=0></a>
<a href="[(site_url)]ru/[b][[lng_link]][/b]"><img src="assets/images/ru.gif" height="20px" width="26px" border=0></a>
с чанка визиваю снипет [[lng_link]] который возвращает часть урл, код снипета:
<?php
$p=$modx->documentObject['id'];
$r=$modx->documentObject['alias'];
while($p>0)
{
$parent=$modx->getParent($p,1);
if($parent['alias']=='ua' || $parent['alias']=='ru') break;
$p=$parent['id'];
$r=$parent['alias'].'/'.$r;
}
return $r;
?>
ЗЫ: писал спешно, но суть: получить ту часть урл, которая после ru/ или ua/
Далее в чанках есть статичные елементи - это елементы меню, кое какие ключевые слова, для этого был написан снипет lng_lib для вставки нужного слова на нужном языке, вот код:
<?php
$leng=array();
$leng['ru']=array();
$leng['ua']=array();
$leng['ru']['null']['pagetitle']='not fond in ru library';
$leng['ru']['about']['pagetitle']='О компании';
$leng['ru']['about']['id']=687;
$leng['ru']['service']['pagetitle']='Услуги';
$leng['ru']['service']['id']=689;
$leng['ua']['null']['pagetitle']='not fond in ua library';
$leng['ua']['about']['pagetitle']='Про компанію';
$leng['ua']['about']['id']=49;
$leng['ua']['service']['pagetitle']='Послуги';
$leng['ua']['service']['id']=51;
$leng_mui['ua']['address']='Адреса';
$leng_mui['ru']['address']='Адрес';
$leng_mui['ua']['tel']='Телефони';
$leng_mui['ru']['tel']='Телефоны';
$p=$modx->documentObject['id'];
while($p>0)
{
$l=$parent['alias'];
if($l=='ua' || $l=='ru') break;
$parent=$modx->getParent($p,1);
$p=$parent['id'];
}
$l=isset($l)?$l:'ua';
if(isset($word))
{
$word=isset($word)?$word:'null';
return $leng[$l][$word]['pagetitle'];
}
if(isset($link))
{
if(!isset($leng[$l][$link]['id']))return 'Not Fond '.$leng[$l][$link];
$p=$leng[$l][$link]['id'];
$result=$modx->db->select("alias","bioclimat_modx_site_content","id=$p");
$row = mysql_fetch_assoc($result);
$r=$row["alias"];
while($p>0)
{
$parent=$modx->getParent($p,1);
$p=$parent['id'];
$r=$parent['alias'].'/'.$r;
}
return $r;
}
if(isset($mui))
{
$mui=isset($mui)?$mui:'null';
return $leng_mui[$l][$mui];
}
?>
масив $leng содержит перевод названия документов, а масив $leng_mui - перевод всех других слов.
при визове снипета с параметром [[lng_lib? &mui=`oxolodj`]] в зависимости где мы находимся, в ветке рус или укр получаем слово на нужном языке.
ЗЫ: спешу, извините код не чистил и не коментировал.