I created a multilanguage site, and used text files that were named after the "home" folder's ID for each language (i.e. 1.php for English, 2.php for German, etc), and stored the language selected both in the SESSION variable and in the URL query string.
The layout of the document tree has the "home" pages as folders for each language (in its language) in the root, and each language folder contains the documents in its language.
I created a couple of snippets to set/capture the lang variable based on the ID of the "home" page for the language menu the user selects. Apparently every snippet (such as the contact snippet) that will use it needs to include the language file; I tried just including it in the header of the template with a snippet, as well as in the main class file, but that didn't work. I had to modify most of the snippets and other code that generated or specified links to include the lang variable in the URL query string.
I was also writing the variable to the SESSION array, and hacked the login/logout scripts to carry it through login errors and logout, but it turned out that I didn't need that for this site.
http://www.bmptrans.ch
I used a simple ListMenu renamed TopMenu for the language menu, and another one renamed SideMenu for the main menus.
And, I paid for the use of Etomite on that site without the links and copyright messages.