Multilanguage for Drupal 7: Internationalization module (i18n beta1)

It's been 5 years since the first version of the Internationalization module (4.7) was released. Though Drupal 6 included Content translation, and Drupal 7 provides some cool new features like Multilingual fields and really improved Language management, it stil needs some 'help' to be able to build a full featured multilingual site.

Which means yes, there will be a Drupal 7 version of Internationalization module. And here's the first Beta, which comes enhanced and plenty of new features. This is just a quick overview of the module (actually a package of 12+ modules) and some old and new features it includes. Read on or jump to the download link at the end.

Enhanced for Drupal 7

  • Language selection, filter page content by language with some more options, like paths for enabling/disabling it, or query tags to skip.
    Drupal - Internationalization - Language selection
  • Better, cleaner, easier, language options for blocks. Select for which languages the block will be displayed.
    Drupal - Internationalization - Multilingual blocks
  • Taxonomy translation, basically the same, but now using our Translation set API and some better UI.
    Drupal - Internationalization - Multilingual taxonomy
  • Multilingual variables have got a full featured UI to select which variables are translatable. This is possible because we are using now the new Variable module which provides some human readable information about variables.
    Drupal - Internationalization - Multilingual variables

New Translation sets

  • Translation sets is a powerful idea and some generic API to handle collections of objects that are translations of each other. This is used at the moment for terms, paths, or menu items.
    Drupal - Internationalization - Translation sets
  • Tags or taxonomy terms are just another example of translation sets. Here you can add existing tags to a translation or create new translations on the fly.
    Drupal - Internationalization - Tag translation
  • When there's no other option for defining what is a translation on what, you can use Path translation, this is, define which path is a translation of which other one.
    Drupal - Internationalization - Path translation
  • Menu translation has got some more powers. Create translation sets of menu items.
    Drupal - Internationalization - Menu translation

And some tips

  • When you have a translation set and want some options to be the same for all the elements, like having a collection of nodes promoted at the same time, you can use the synchronization feature. This will be way easier as almost everything are Fields now.
    Drupal - Internationalization - Synchronize translations
  • And finally, yes, this is what it looks like, a much requested feature. Some Search Engine Optimization for multilingual sites.
    Drupal - Internationalization - Translation redirect - SEO

Still, I have to insist this module is not a complete site solution, it is just an API module, or a collection of tools, that you can use together with other modules to build your site solution. There's not a single answer for how to build a multilingual site. Or if you think there is, feel free to post it on the comments below or to contribute your module.

So these are tools you can use (or not). You don't need to enable all the modules and figure out what to do with them, but just enable the ones that make sense for your user story. Also look into other options like Entity translation and decide which is the best one for each element of your site.

Module FAQ

  • So, can I use this beta version for production sites?
  • Sure, I just use Alpha, Beta, etc because I like the Greek alphabet.
  • Ok, ok, then when will a stable version be available?
  • Soon, which means possibly two or three weeks. If you can help testing and polishing this beta, it will be sooner. If you create duplicate or pointless issues on the tracker that will delay us, it will be later.
  • This xxx feature is cool but useless, what could I use it for?
  • When at home, open your toolbox and try to figure out how to use each of the tools. If you can, buy a bigger one.
  • As translation sets are entities themselves, can I create translation sets of translation sets?
  • ....

Here is the Internationalization module. Thanks for reading. And more thanks if you want to post your comments...



This sounds super-exciting and amazing, Jose!

Can't wait to give it a try and also have a look at the code :)
btw, let's make sure that we get something along the lines of Variable module into D8 core. I'm all for it - doesn't even sound hard to do.

Thank you!


Thank you so much!! Sounds like this will solve 90% of what I need. Will post feedback once used. DG user. Blessings

Bart Van Herreweghe

I like your work a lot. I'd like to express my thanks to your work.

We're building a lot of governmental websites with this module. I'm amazed by the power you put in this module!

I can do some testing if you want more feedback.
Need some?

Bart Van Herreweghe

Need a room for code spint on Drupal Gov Days? Consider it done. Plz let me know...


Hi Jose
Do you have any updated step by step guide fro Drupal7 to build a multilingual site? (I've followed some tutorials I found but without results)
Thanks !

Jose Reyero cannot do everything. We should redact the step by step tutorial, but, for that, we need to understand first how it works. A basic thing which the core seems not to provide is menu translations, and this is the reason why I'm here but… up to know I don't know what to do. If it worked like in Drupal 6, I could find and read that documentation, but it seems different. I think most people would like one of the 3 following options:
1) Menus in different languages have basically the same content. If a page exists in the chosen language, then only that page appears in the given language's menu, not its translations. When the page doesn't exist, nothing appears in the menu of that language.
2) Menus in different languages have basically the same content. If a page exists in the chosen language, then only that page appears in the given language's menu, not its translations. When the page doesn't exist, a second choice (that is a page in another language) appears in the menu. That second choice is determined by Home→Administration→Configuration→Regional and language→Languages→"User interface text language detection".
This 2nd solution has 2 variants: the "menu link title" is the one of the page content (so it is in the page language, not in the menu language), or it's a translation of it in the language of the menu.
3) Every language has a completely different menu. And these menus are not interdependent.

If Jose or someone else had a few minutes to explain us how to get these 3 options work, it'd be great. I've been said that, in Drupal 6, the 3rd solution consisted in creating one menu per language, and using blocks to make them appear or not according to the language.

Thank you very much for this extremely useful module. I nearly had a heart attack when I read, at the bottom of this page: "This Work, Multilanguage for Drupal 7: Internationalization module (i18n beta1), by Jose is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike license.". Fortunately, it seems that "this work" mean "this page", not "this module", so that the module can be used for commercial purposes. But I suggest you make it clearer.


I've added some CCK seleclist fields to my site.
They have the following allowed values:

How can I translate the textual values?
In drupal 6 you had the option to write PHP code for allowed values, so in that way translation was available (For more details see
But I don't see an equivalent field in drupal 7...

Does anybody have a clue?


Hi, congratulations for your work.
I have a problem. With RC1 and RC2 the option "When translation is missing, show content in default language" is missing.
It 'a bug or a deliberate choice?


Hi First of all, i don't what i am missing with it? in Administration » Configuration » Regional and language » Multilingual settings =>selection
i don't see the blocks (not implemented) or i am missing some modules?

Can you help me please?


Block visibility per language is managed with the block configuration.


That option was causing enough problems and never working well. So it has been dropped from the 7.x version.

People needing it, please consider creating a new module.


Did you found another solution? Another module?



Thank you for your excellent work. :)


Could you give me a hint about problem with translation mixing? I have fresh installed Drupal 7.12 bilingual site and produced two EN nodes, that translated into RU. But after refreshing content EN was replaced into RU content. Now I have RU content at EN pages. Does it bug or my error? Where should I look for?


I had create a taxonomy vocabulary in french and created some content with this vocab. After that, installed the module i18n and to be more "friendly" the source language, I changed the terms that I had created from french to english and choosed "Localized" for the vocabulary.
So, I went to "translate interface" and translated these terms to french. After, I tried with each term (using the URL for the taxonomy term) but in different language I saw all the nodes
and also the term in the node doesn't changed when change language, remained the same for both languages.
I don't know what to do, everything looks ok but the problem still here.....?


For l10n projects with Drupal, you can have a look at this online translation management platform

User login