You could have pasted your complete tag as an example :), however I guess you're doing sometihng like this (from the docs) :
{exp:transcribe:language_links}
{languages}
<a href="{link}"{if current} class="active"{/if}>{name}</a>
{/languages}
{/exp:transcribe:language_links}
Right? I'm not sure if this is the desired beghaviour (I dobn't have transcribe installed) but couldn't you modify it to be somethnig like this (also from the docs):
<form action="{exp:transcribe:action_url}" method="post">
<input type="hidden" name="XID" value="{XID_HASH}">
<input type="hidden" name="RET" value="{current_path}">
{exp:transcribe:language_links}
<select name="lang">
{languages}
<option value="{abbreviation}"{if current} selected="selected"{/if}>{name}</option>
{/languages}
</select>
{/exp:transcribe:language_links}
<input type="submit" name="submit" value="Submit" />
Here we are making a form that posts tothe language changing ACTion, but additionally I have added a hidden RET (return) parameter. If this form is handled like any other EE form this should dictate where to return the user after the ACTion.
As a bonus, you could also use transcribe to check if there is a translated entry for the current page, if there is set the RET value, if there isn't don't set it so they get sent ot the homepage...
Regarding the "it used to work", can you check that your channel entries have their linked language content still set? this should jsut be an entry relationship so no URL's stored, however it does seem like transcribe has 'lost track' of its Associated Entries. You didn't import any data did you?
Also, take a gander at the answers to this question : Transcribe - After AJAX request, when i switch language it directs me to the AJAX endpoint , while it's not directly related the solution describes how tracker is used to determin the last URL visited, perhaps the tracker is out of kilter??