Summary :
Solution for multilingual MODx websites with minimal TV manual edition,
allowing different document names and aliases for the miscellaneous translations.
1) Create a T.V. in the template that stores and the same "document id" to all translation of the same document.
Let’s call this T.V. "doc_id".
2) Set "doc_id" to the same value as "id" for all documents (before original docs are duplicated).
I think that this could be done with some batch SQL request.
3) Duplicate the root node from the original language (i.e. add a translation).
The values of "doc_id" of the translated docs would remain the same as those from the original document.
4) Use some code that allows to link documents with the same "doc_id".
Well, I’ve started implementing step 4.
First, available languages are printed using a Wayfinder call with this config :
<?php
$startId='0';
$level='1';
$outerTpl='@CODE:<div class="langbar" align="right">[+wf.wrapper+]</div>';
$rowTpl='@CODE:<a href="Snippet_Output_Here.html" title="[+wf.linktext+]" >[+wf.linktext+]</a>';
$cssTpl = '@CODE:<link rel="stylesheet" media="all" type="text/css" href="assets/snippets/wayfinder/css/LangBar.css" />';
?>
The snippet that should be called from within Wayfinder’s configuration for the "languages bar" :
<?php
function ReturnTranslationId ($match_id, $destLang_id) {
// match_id : value of the match_id TV linking the current document and the translation
// destLand_id : id of the root document of the destination language
// match_id_TV : id of the match_id TV
// 1) Find the id of the match_id TV
$req = "SELECT id FROM alti_site_tmplvar WHERE name=='match_id';
$res = mysql_query($req); // return only 1 record
$match_id_TV = mysql_fetch_row($res); // read the record
// 2) Find all documents with the same match_id value, i.e. known translations.
$req="SELECT contentid FROM alti_site_tmplvar_contentvalues WHERE (tmplvarid==$match_id_TV AND value==$match_id)";
$res = mysql_query($req); // return the document identifiers of all known translations.
// 3) Select the document that is in the language the user expects, i.e. the translation.
while ($id = mysql_fetch_row($result) ) {
// Here we must test if the destination document with id $id
// is a child of the destination language root specified by $destLang_id.
// In this case, the translation was found, return $id as target $id. (This quits the loop.)
// Else loop.
}
// 4) If no translation was found for the current document$,
// return the id of the homepage for the translation.
// This could be improved by checking that $destLang_id is at the first
// level of the hierarchy in the document tree.
return $destLang_id;
}
?>
As I never used the MODx API until now, I’m not much aware about how I could use it for point 3.

Maybe I should look at etal’s snippet more carefully, especially the getParents function:
http://modxcms.com/forums/index.php/topic,25827.0.html
Of course, any help in coding point 3 above would be much appreciated.
To know the language of each document, I plan to use either regular expression applied to search-engine-friendly URLs, or store it in a "language" T.V.
Setting the "language" T.V. can be done at a glance for each language root by using the DocManager module.
I renounced to these ideas.
There is like a bug in DocManager which makes impossible to set a TV for a branch and all its subnodes.
(See
http://modxcms.com/forums/index.php/topic,31954.0.html for details.)