Has anyone managed to make a multi-language site with Drupal 7?

I have the following modules installed:

Language assignment, Language icons, Locale updater apart from Locale & Content translation.

With Drupal 6, I have made some sites which give you the option of choosing the via a language selector the language the site should be displayed in, leading to translated content appearing with the corresponding translated interface.

There seems to be something missing in Drupal 7, inspite of following detailed instructions, for example at http://drupal.org/node/133977, which are more complete for up to Drupal 6. I noted some settings in D7 are different or those referred to for older versions missing.

I have repeatedly looked at the settings pages of the different modules, but have not seen how to achieve the mentioned effect.

If you translate content & assign it a translated menu link, you have both menu items of the translated & the original pages in the main menu, for example both "About us" & translated page link "Über uns". So what i have done, is not to create a link item for the translated content page. The content can currently only be accessed via a language button on each page where content has been translated.

The language switcher appears in the block settings section, but does not appear on the page at all.

So my question is: is there a necessary D7 module missing to help achieve this & if so, which one?
As said, in the current settings of ALL the involved modules, there is NOTHING I see that I have not tried out.
If not, exactly which settings for the D7 modules have I overlooked or probably not set correctly?

Thanks in advance


MasterEmit’s picture


At the moment this seems not to work, what is really annoying and somehow I have the feeling, a contributed module is needed. If you check http://drupal.org/node/362922 and http://drupal.org/node/132293 you can see, that multilingual menus are not in core in Drupal 7.

Someone an idea, what could be done? I started to build a complete new website, which needs multilingual menus.

henkfrans’s picture

I agree: I also cannot get my 3 language site work in Drupal 7. It was working fine in Drupal 6. I've read the handbooks and other nodes but .... Thanks for your workaround about not creating a link for the translated content page. This works for main menu items, but if I click the translation link in the page content to see the translation, the secondary links disappear... Maybe a combination from setting URL aliases like pt-br/samba and nl/samba and the right detection and selection settings for user interface text language detection in "admin/config/regional/language/configure" will work. I'm going to check if this works for main and secondary menu.

jkoprax’s picture

At the moment I'm planing to build a site with Drupal 7. But as if there is no working translation feature I guess I have to build it with V6 or should I wait...

Neon03’s picture

I'm also planning to build a multi language site with two languages. Hope there will be a module in the next month which is offering multi language support. But you can check out the internationalization module, right now there is just an alpha version but lets see (http://drupal.org/project/i18n).

Exoool’s picture

After install the 'Internationalization' module and enabled it, on the Regional and language part of page 'admin/configuration', you will see a menu added there named Multilingual settings.

Click it will take you to http://your.domain/admin/config/regional/i18n. Then on that page, among the options below the Content selection mode label, choose Current language and language neutral. met my requirement.
I think it will solve your issue also, lionheart8 :)

Though this module is still in beta stage, but I'd like to guess / bet it will come stable soon - let's say within one month? Please post your guess also for me to adjust my expectation on it :)

Thanks to Neon03 !

arnevt’s picture

This does not work... I stil get all languages in my menu's

also when enable'ing the language menu option i got

Notice: Undefined index: attributes in i18n_menu_i18n_string_list() (line 60 of /service/data/drupal-7.0/sites/all/modules/i18n/i18n_menu/i18n_menu.module).

Exoool’s picture

Sorry I should have mentioned the error/notice messages in my previous post.

Since the module is still in alpha stage, the functions are incomplete and a number of issue are there to be fixed.

I just tried the language menu option, and also can not separate the menus by language clearly. When it's in English environment, not all but many menus in other language shows up also.

So I think if we have to use this module, we will have to wait for its first stable release.

mmj’s picture

in node http://drupal.org/node/934560 there is this nice PHP snippet (to be put in menu block visibility) that solves the problem of multilingual menu without adding any module (very clean solution):

global $language;
$lang_name = $language->language;
if ( $lang_name == "en" ) { return TRUE; } else { return FALSE; }

but it does NOT work in drupal 7. Does anyone know how to change it to make it work with d7 ?

salapataras’s picture

This Work but first you must go there: admin/config/regional/language/configure and check to enable Session

70111m’s picture

I also need a solution for multilingual menus in Drupal 7. Is this the right place to check if there are any news about this issue or is there any other place to monitor for a solution? Somehow I still can't believe no one's thought about such an issue before the release -- I mean, shouldn't this be an out of the box feature?

bisscomm’s picture

Finally found a solution and it seems flawless for now.
All you have to do:
1. navigate to "/config/regional/language/configure"
2. Activate "URL"

Translated menu shows depending on language.
Language switcher block also becomes available.


lionheart8’s picture

Sure, I have also done that, but the problem is with the translated "content pages" + their menus. The Drupal menu itself appears translated as expected, but if say you have a new page like "about us" translated, & assign it a menu item, you will have both the "about us" menu item in the menu + simultaneosly the translated page menu item as well. If everything was OK, you would have English items alone & when you go to the alternative language only the menu items in that language, i.e. the translate Drupal interface + additional translated content links if available.

If you do not have this, then there must somethng else you have done, that we have not.

arnevt’s picture

I finally made it work

I enabled multilingual variables, in settings.php i put

$conf['i18n_variables'] = array(

(most important are the menu entries)

I also enabled URL detection for language.

you can now go to menu settings and choose your primary & secondary menu's per language... If you are in admin of the "NL" language, just replace the NL with EN for example, and edit the menus again, pointing to another menu block. Then it's just a matter of giving the right nodes the right menu entry in the right menublock

your theme has to be compatible for this... for example, if I use the marinelli theme with default menu settings, it works, if I use the mega dropdown option, it doesn't

kaido24’s picture

Is your drupal 7 frontpage multilingual variable? I tried this but couldnt get this to work :S. I did like that right now. In page.tpl.php

global $language;
if (($language->language == "en") && ($node->nid == 1)) {
 header( 'Location: ?q=en/node/2' ) ;
kaido24’s picture

I found one good module what shoud work as we all need... Variable http://drupal.org/project/variable

bisscomm’s picture

What I did was:
1. Create the page + add menu entry and URL
2. Translate page content + add menu entry and URL
3. Go to Structure/Menu and make sure your menu item is set to "all language" and not a specific one.

That's about it.

momper’s picture


nco71’s picture

I m using Drupal and haven't seen your multilingual option in structure menu. I suppose you enabled the i18n_menu module

lionheart8’s picture

I had assumed the i18n module which I have successfully used in D6 is not available or not necessary for Drupal 7.

I tried this on yet another site, though it is still an alpha version for D7, but it at least has familiar additional settings with which I was able to make the different language pages with their respective menus & so on function as expected.

I did not have to do anything to settings.php


You get a number of error messages at times associated with this module, but I think being in the alpha stage, not surprising. The key thing is it solves the problem I had before & none of the errors appears at the front end.

cshuangtw’s picture

How can I make Drupal 7 multi language with Tradional (Simple) CHinese?
I tested drupal 6 by IE 8/ Firefox/ Chrome/ Opera/ Safari, get HTTP_ACCEPT_LANGUAGE, the return value = zh zh-tw zh-TW zh-cn zh-CN, but in Drupal, it accept language return value is zh-hant zh-hans.
So, I changed $WEB_HOME/includes/language.inc
if (preg_match("!([a-z-]+)(;q=([0-9\\.]+))?!", trim(strtolower($browser_accept[$i])), $found)) {

if (preg_match("!([a-z-]+[a-z,A-Z]+)(;q=([0-9\\.]+))?!", trim(strtolower($browser_accept[$i])), $found)) {
if ($found[1] == 'zh-tw') { $found[1] = 'zh-hant';}
if ($found[1] == 'zh-cn'||$found[1] == "zh") { $found[1] = 'zh-hans';}

It's work fine in Drupal 6, but in Drupal 7 I do not know where I could change.

yugongtian’s picture


WormFood’s picture

I'm rather surprised that nobody has adapted this patch for Drupal 7 yet. I got fed up with zh-cn language code not working in Drupal 7, so I did something about it.

You can find my adaptation of this patch, for Drupal 7 at http://drupal.org/node/365615#comment-6290208

I'm posting this in the hopes that it will make finding a working patch easier to find, for people who need it.

BlueDragon’s picture


sylvain_a’s picture


Luka Srbija’s picture

I made solution with .swf - only 1 line AS getURL(“http://www.mywebsite.com”, “_blank”); that point to page you want. Of course first have to change index.php in .htaccess. Everything is soluble. Srbija :)

So the loading is 1 sec. longer..

AdamGS’s picture


Mark_L6n’s picture


awm’s picture


Mathias Foehr’s picture


nco71’s picture

The solution surprised me but that was quite simple.

Enable i18n menu_translation module.

If you have previously created menu links with nodes , delete them or disable it in the node options ( not sure which is best options ).
The reason is that your previously created menu item are by default undefined , no language.

After you activate menu translation , you need to activate the localization in your menu configuration.
Then whenever you create a node , a corresponding menu item will be created with the right language options. Therefore this menu will only appear on the right localized page.

Took me a while and lot of trial to find about that. But it's logic.

cmoirness’s picture

So, here we are, for Drupal 7 :

  • Make sure you have the modules Variable and Variable Translations switched on.
  • Goto admin/admin/config/regional/i18n/variable
  • Select ‘Default front page’ from the list, save settings.
  • Goto admin/config/system/site-information, you’ll notice a block of text there saying something about some of your settings being multilingual variables and a list of links for the languages you are running which allow you to set the settings for each language.
mvpfi’s picture

To avoid hard-coding navigation links that work for multi-language setup, you'll need Variable and i18n modules. By default, a menu has no language-awareness. First I thought I could just write four blocks for four different languages and restrict their visibility with Core Block system. That won't work, as Block can't do restriction based on language (which, I think, is strange. Locale is part of Core, anyway?). Installing i18n gets this feature.

Caveat is this. I18n has Menu translation module - but that translates only menu item titles, not the links? What is the point of that, really, or is it just user error that I can't use the module. So instead of messing around with Menu translation one might just fall back to my first solution, which goes like this:

  • Enable Block translation (in i18n module)
  • Enable Menu translation (to get language dependent menus)
  • Create menu for each language, like Navigation/English and Navigation/Finnish
  • Activate just created menus in Block page and set them visible only in corresponding language
  • Go through all pages of your site, adding them in correct menus

I can't believe this is the only way to get multilingual menus, it's quite a job to do for an existing site. It shouldn't be impossible to create just one menu and to have language-awareness in there, like Core Translations page is working.

netgenius.co.uk’s picture

I've used both Menu Translation and multi-language variables (one menu per language) in D6 sites. Menu Translation is less work but a menu per language is more flexible. Reading above, it seems the same remains broadly true for D7 - has anybody tried both methods?

For the front-page, I use one or more of a multi-language variable (front-page setting), Language Sections and MultiLink. A lot depends on what content needs to be shown, whether it's static or Views (etc) based and so on. I guess that these hardly anybody uses the default /node path for the front-page content.

mvpfi’s picture

I found another way to work multi-language menus out. Basic problem is that menus, except the system defined Main menu, will never work properly. This is because of #942782: Custom menus never receive an active trail. It won't really matter if all you need are one-level menus, there custom menus will work just fine. When it goes to second level or deeper, you have stick with Main menu.

The above mentioned issue won't be fixed until Drupal 8, so that is how it will be for now.

A menu can be 10 levels deep and with Menu Block module you can cut it in pieces as needed. It will work fine with Menu Translation. Just put everything under the default Main menu.

karolus’s picture

I have some projects coming up that will be multilingual, and so have been running dev sites trying different options. This, by far, seems to be the best option I have seen thus far.

My main issue with multilingual support in Drupal, thus far, has been the piecemeal documentation and directions. Once the logic is apparent, things can be pretty easy to deal with.

The big kicker, though, will be how easy it will be to update a D7 to a D8 site and get all the multilingual options to work...

generalredneck’s picture

There is official documentation on how to get Translation going on a site for both drupal 6 and 7. Maybe I'm missing something but I believe this is what you are looking for: