Your theme must support custom navigation menus for the following to work (for programmers, it means that the theme must call ‘register_nav_menu’) and must use a theme location in the function ‘wp_nav_menu’, i.e.
wp_nav_menu(array('theme_location' => 'primary')); is OK
wp_nav_menu(array('menu' => 'nav menu')); is not OK
One menu per language
In Appearance->menus, you have to create one menu per language. Let’s say ‘menu_en’ and ‘menu_fr’, if you have a site in English and French.
In ‘menu_en’, you add English pages other menu items. In ‘menu_fr’, you add French pages and other menu items.
Then, once menus are both saved, you click on ‘manage locations’ tab and you assign ‘menu_en’ to ‘Primary menu English’ and ‘menu_ru’ to ‘Primary menu Français’.
The language switcher in the menu
You have the possibility to add a language switcher anywhere in a menu. Just click on the “Languages switcher” checkbox and then “Add to menu”. If you don’t see the language switcher metabox, check that it is not disabled in the screen options (on top right of the screen). You can then choose the options for the language switcher menu item:
- If you uncheck both “Displays language names” and “Displays flags”, the language switcher will display language names.
- If you check “Forces link to front page”, the language switcher will always send the visitor to the front page in the right language, otherwise it will try to find the translated page (and link to the front page if none was found).
- If you check “Hides the current language”, the language switcher will never display the current language.
Don’t forget to click on the ‘save menu’ button.