Setting The Front Page Per Language
To follow this tutorial, you need to enable the Path module.
The Path module allows setting the URL of pages. It comes together with Drupal, so you don't need to download and extract it.
Go to Administer > Site Building > Modules
Setting The Same Home Path for All Languages
When a user comes to your site via yourdomain.com you want to direct them to the front page. When they come to your site via yourdomain.com/es you want to direct them to the Spanish front page.
In order to do this, you need to set the path to the home page node. That path must be the same for all language versions of the home page.
Then, go to the Site information admin page and set that path as the Default front page. Here is how to do this, step by step.
1) Setting the path for the default language home
Edit the node for your home page and set the path url - example: try setting it to "home".
Note: if you're using the Path-Auto module, make sure that it's disabled for the home page, so that it doesn't override the path you enter.
2) Duplicating the path for all translations of the home page
Do the same on the Spanish node that you want to be your home page and set the path url to the same value, "home" in this example.
Of course, Spanish is only an example here. You should repeat this for all translations of the home page.
3) Setting the same path in Site Information
Go to your Site information page /admin/settings/site-information and set the front page to the same as the URL path - "home" in this example.
Save the configuration and test your urls. Use the language switcher to switch between languages. You should see the path in the browser showing only your domain name and the language code (without the path you've selected).
You can see it in action on this site:
Troubleshooting Home Page Path
You may get the following warning:
user warning: Duplicate entry 'home-es' for key 2 query: UPDATE url_alias SET src = 'node/126', dst = 'home', language = 'es' WHERE dst = 'home' in /home/bruce/drupal/drupal-6.13/modules/path/path.module on line 108.
This appears to occur if you have already used the alias before but on a language neutral page.
You can try editing the url aliases directly at /admin/build/path. Search for your alias name and delete the alias if the languages is showing "All".