Блин...
перед этим всем я вставил:
echo $this->getLink($menu);
и ужаснулся. вывел он вот что:
http://mysite.ru/en/http://mysite.ru/en/12-testcat1http://mysite.ru/en/content/6-testmt1contact-usblog.htmlhttp://mysite.ru/en/http://mysite.ru/en/12-testcat1http://mysite.ru/en/content/6-testmt1contact-usblog.html
прямо вот так вот одной строкой. Да ещё и дважды почему-то.
Зато видно, что ссылки, которые не являюся cms page - действительно не полные. Где это настраивать - хз, пока сделал такой хардкод, работает.
if (strpos($this->getLink($menu), 'contact-us') !== false) {
$mylink = str_replace("contact-us","http://mysite.ru/en/contact-us",$this->getLink($menu));
$output .= '<li class="'.$menu['menu_class'].'" '.$this->renderAttrs($menu).'>
<a href="'.$mylink.'" target="'.$menu['target'].'" class="has-category">';
}else{
$output .= '<li class="'.$menu['menu_class'].'" '.$this->renderAttrs($menu).'>
<a href="'.$this->getLink($menu).'" target="'.$menu['target'].'" class="has-category">';
}