Мультиязычность небольшая проблема с переключением

Добрый день, понадобилось на сайте сделать 2 языка, нашёл неплохое решение
http://modx.im/blog/triks/20.html
Вариант второй где используется один шаблон для разных версий. Всё работает нормально, но только для страниц с таким адресом
/ru/catalog.html
/en/catalog.html

переключается на нужную страницу. Но если адрес будет таким (раздел с вложенными документами) то переключает на главную страницу а не на сам раздел, псевдоним одинаковый
/ru/company/
/en/company/

такие адреса тоже нормально переключает (не переключает только если документ контейнер)
/ru/company/catalog.html
/en/company/catalog.html

Может кто подскажет,
Использую такой сниппет

$mainurl["ru"] = $modx->makeURL(1);
$mainurl["en"] = $modx->makeURL(2);
$baseurl=$modx->config["base_url"];
$langId["ru"] = 1;
$langId["en"] = 2;

if ($modx->documentObject['parent']=='0') {
  $lang=0;
} else {
  $lang=$modx->documentIdentifier;
  do {
    foreach ($modx->documentMap as $mapEntry) {
      $parentId= array_search($lang, $mapEntry);
      if ($parentId) break;
    }
    if ($parentId) $lang=$parentId;
  } while ($parentId);
}

function BaseReplace ($baseurl, $url) {
global $modx;
$url = str_replace(
    $modx->config['friendly_url_suffix'],
    "", $url);
if ($baseurl == "/") return substr ($url, 1);
else return str_replace ($baseurl, "", $url);
}

switch ($lang) {

case $langId["ru"]:
$output='<a href="';
$url = str_replace ("/ru/", "/en/", 
     $modx->makeURL($modx->documentIdentifier));
if (array_key_exists(BaseReplace ($baseurl,$url), 
     $modx->documentListing))
	$output.=$url;
else
	$output.=$mainurl["en"];
$output.='" title="English" class="AnamenuStil"><div class="DilAlan">ENG</div></a>';
break;

case $langId["en"]:
$output='<a href="';
$url = str_replace ("/en/", "/ru/", 
     $modx->makeURL($modx->documentIdentifier));
if (array_key_exists(BaseReplace ($baseurl,$url), 
     $modx->documentListing))
	$output.=$url;
else
	$output.=$mainurl["ru"];
$output.='" title="по-русски" class="AnamenuStil"><div class="DilAlan">RU</div></a>';
break; 
}
return $output;

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.