This tutorial will show you how to create a site in Drupal that allows the user to switch languages and see a different menu depending on the language they have selected.
Click to skip ahead:
Step 1: Enable all modules
Step 2: Add a language
Step 3: Detection and Selection
Step 4: Enable Multilingual Support for content types
Step 5: Create English Content
Step 6: Created the translated content
Step 7: Add support for multilingual menus
Final Results
Step 1: Enable all modules
Content Translation (core module)
Locale (core module)
Internationalization
Variable
optional:
Language Icons
Translation Overview
Step 2: Add a language
Go to Configuration > Regional and Language > Languages

The default language is English, and you can use the “Add Language” link to add either Predefined (see below) or custom languages.


Step 3: Detection and Selection
For this tutorial I’ve chosen to use the “URL Prefix” setting. This tells Drupal to use domain.com/es for Spanish and domain.com/de for German.


Step 4: Enable Multilingual Support for content types
Either create or edit an existing Content Type and click “Publishing Options”. Here you will see the option for enabling multilingual support. Select “Enabled, with translation”. This will allow you to translate a node into multiple languages.

Step 5: Create English Content
When you create your nodes, make sure you are using the correct language, not just “Language neutral”. This is important because when you create the URL alias and Menu link title it will know which menu to put the link in.



Once you’ve created your node you should see a “translate” tab. If you click this tab you’ll be able to add a translation to this node.

Note that if you have the “Translation Overview” module installed (I highly suggest it) you’ll get a nice little window that tells you which languages you’ve added, which require priority, etc.

Step 6: Created the translated content
When you create your translation give it a translated menu link title, but give it the same url alias as the original node. Because you have multilingual support installed, it won’t give you any errors for having the same URL alias (remember, it’s putting the Spanish nodes at domain.com/es and the German nodes at domain.com/de).


Step 7: Add support for multilingual menus
Go to Structure > Menus > Main Menu. Edit the menu and enable the “Translate and Localize” option. This will switch your menu items depending on what language the user has selected site-wide.

You’ll see you have both the English menu items and the Spanish items. You can order these like you wish, but know that only the Spanish links will show up when Spanish is selected as the main menu (you’ll know because the URL will say domain.com/es).

And your final product:
All menu items in English

And all menu items in Spanish
