This description of how to set up a site to run with multi-lingual capabilities under a single domain is based on my forum post (So if anything is unclear or needs clarification reply to that thread and I'll add the required detail to this wiki page.)
The set up described is being run successfully on http://www.barclay.ie and is based on multiple directories rather than a 1:1 site.
The first thing you need to do is set up the site structure so you have a node for each language you will be supporting i.e.
UK sub pages...
German sub pages...
French sub pages...
The language nodes are set to be the 2 letter country codes as this is the most neutral way of setting up the site structure. List of country codes.
Note you will need to decide in what language to name the sub pages for your language. This will depend on the language the editors will be most comfortable with. i.e. If you have predominantly English speaking editors who will be pasting in translated content, then naming the nodes in English will probably be most appropriate. However if you name the nodes in English you will need to set up an additional property on your documents which will be used in the menus and content of the pages. This opens up some SEO questions so is a matter of opinion.
For each country/language you will need to assign a hostname and language in the hostnames dialog (which you get by right clicking on the node). For the hostname use a fake sub-domain and associate it with the desired langauge. i.e. en.yoursite.com or fr.yoursite.com. These will never be used, they are just used to associate the correct language with the node.
Important: For the global homepage, DO NOT assign the main domain of the site, otherwise this will override the language settings for all the sub nodes and the site will only display in whatever is set as the default language.
Now the structure is set up you can create dictionary items and language specific macros etc without any problems and the correct language will be used for each node in the site.
To set up a language selector you just need to create an XSLT macro which lists out the children of the global homepage (see the Barclay site for an example)