This module provides a language switching block that is very similar to that provided by the core locale module, however its behavior differs from the locale block in several ways:
1. The visibility of language links in the block is consistent and independent from the existence of translations for the page that you are viewing. The logic here is that the user should be able to change the language of the interface at all times. This is important because often there are menus and blocks that are language specific and the user should always be able to find the link back to their language.
*** For those who would like to have it so that languages which are not translated also do not have language links you should use the Language Icons module in conjunction with the core Locale module. ***
2. Pages that branch from node pages such as node/2/render are translated in interface only (rather than switching to a different node) which means you can switch to es/node/2/render to see the rendered page with all other text in that language rather than being sent to es/node/3/render which was the actual translated version of the page. Again this comes back to the concept that the user should be able to view any page with the interface in their native language. In the case of es/node/2/render if you want to see the translation go to the node view of the page and switch languages from there.
3. The block is designed to be easily themed. Each language adds a class to its "li" tag its "a" tag and its "img" tag. All classes are assigned independent of the Drupal core assigned attributes at this time as a workaround for a bug in core which causes active tags to be assigned to every language on the locale module version.
To change the configuration settings of the module such as flag and text orientation go to the admin page at: 'admin/settings/language-interface'.
Language negotiation has to be set to "Prefix" or "Prefix with language fall-back" in order for this module to work. This setting can be changed at: 'admin/settings/language/configure'
This module will not be released for Drupal 5 as the old i18n module provides a block that works fine for 5.