Last updated May 13, 2016. Created on November 11, 2007.
Edited by chrowe, ashish_nirmohi, BiigNiick, wusel. Log in to edit this page.


  • There are two main methods to choose from to configure a multilingual Drupal website:
    1.   Entity Translation is the newer method
    2.   Content Translation is the older method
  • Entity Translation is now in Drupal 8 core. It is available for both Drupal 7 and 8. With an upgrade path from Drupal 7 to 8;
  • Content Translation is available for both Drupal 6 and 7;
  • Below is the documentation for Content Translation (the older method)


When the Content Translation module is enabled you can translate site content into different languages. Working with the Locale module (which manages the enabled languages and provides translation for the site interface), the Content Translation module is key to creating and maintaining translated site content.

Drupal 6 and 7

Configure content translation

  1. Navigate to the Permissions page (Administration > User permissions in Drupal 6, or Administration > People > Permissions in Drupal 7) and assign the “translate content” permission to the appropriate user roles.
  2. Navigate to the Languages page(Administration > Settings > Language in Drupal 6, or Administration > Configuration > Regional and language > Languages in Drupal 7) and add and enable desired languages.

Enable translation support for a content type

  1. Navigate to the Content types administration page (Administration > Content > Types in Drupal 6, or Administration > Structure > Content types in Drupal 7).
  2. Select a content type you want translated, and select "edit", then "Workflow settings" for Drupal 6 or "Publishing options" for Drupal 7.
  3. At the "Multilingual support" section, select "Enabled, with translation".
  4. Be sure to save each content type after enabling multilingual support.

For more useful materials on configuring a multilingual site in Drupal, see Resource Guide: Configuring a Multilingual Site.

Drupal 8

To enable content translation in Drupal 8, enable the core "Content Translation" module.

To configure: Configuration > Content language and translation ( admin/config/regional/content-language )

This module allows you to decide whether each type of content entity (node pages, comments, custom blocks, taxonomy terms, user accounts, etc.) should be translatable or not. Then, within each entity type, you can decide whether the sub-types (content types for node page content, terms in particular vocabularies for taxonomy, etc.) should be translated. And within each translatable entity sub-type, you can decide which fields should be translatable.

To Translate content:

Once you have designated certain fields of certain entity sub-types to be translatable, and you've installed at least two languages on your site, you can translate content items. Users with translate permissions will see links to "Translate" alongside where you'd normally see "Edit" links, and you'll be able to add translations for each configured language. Behind the scenes, you'll see that all the translations share the same ID (such as the node ID), and if you look at the Drupal database, you'll see that there is a table that stores information about each translation (such as the language and the node ID), and then each field stores its translated values in a separate table.

Looking for support? Visit the forums, or join #drupal-support in IRC.


mzuther’s picture

Please make sure that all languages have their path prefix set-up (Home › Administer › Site configuration › Languages > Edit > Path Prefix). This will prevent you from getting ugly "Page not found" error messages for translated pages that are accessed using path aliases.

develCuy’s picture

Thanks for the tip!

A drupalero latino,
Working at Dilygent and
Blogging at

jiakomo’s picture

This guide states "this (“Translation” ) tab allows translations to be added or edited using a specialized editing form that also displays the content being translated."

However in my case from the translation tab you create a new node with a different node ID and may have different settings (taxonomy, publishing options etc may be different from the original). There is no "specialized edit form".

Am I missing something? Or this part of the guide does not apply to drupal 6.x?

zaurav’s picture

If I want to translate a "story" node, then when I click on "translate" tab, and enter the translation and save it, now I have TWO stories showing up on my frontpage because both these are different nodes.

Do I have to remember to manually turn off "promoted to front page" each time I'm translating content?



atul_shin’s picture


If translation tab is not appearing when you the node, the problem is with settings. You have to enable this setting for each content type.
Go to content management > content types and then edit the content type for which you want the tab. Then in the "workflow settings" under "Multilingual support" check "Enabled, with translation" option and then check.

mikpouet’s picture

Thanks Shinh, you saved me from self hair removal.
Still, i got an issue about the theme used while translating, when i click the tab, it switches to my frontend theme (also my default),
which is quite annoying...

Any suggestion?

I did not set the admin theme for editing content
and had to style the forms correctly in my frontend theme.


dalegrebey’s picture

I have "Enabled, with translation" checked under Workflow Settings > Multilingual for the selected Content Type. I view a page of that content type and still do not see the Translate tab. ...any other ideas? Additionally, I am using the default Garland theme.

mr.j’s picture

I had this same problem just now. The issue was that my original node was set to "language neutral". You need to set it to a specific language before the translate tab will appear.

wallbay1’s picture

How can I translate the menu.?
this module only translate the content but it will be good if it can translate the menu too
example "About us" in english, then when you click for french it should show "A propos "
maybe it's me that doesn 't know how to do it :)

dalegrebey’s picture

For Primary links, Create the links for both languages and within that menu item, select the language for what you want it to display.


Primary Links >
- Home
- Company
- Services
- Casa
- Servicios
- Compañía

...English version will display for English, Spanish for Spanish.

MerjaS’s picture

Dear Dale,

this is excatly what I was looking for, too, but I just can't find the way to
"within that menu item, select the language for what you want it to display."

I have Drupal 6, and got everything else done fine, so could this be about site themes (a different theme for admin and another for users)?
Or am I missing something about editing a menu item, because at the Edit menu item form (admin/build/menu/item/itemnumber/edit) I have only fields for Path, Menu link title and Description, boxes for Enabled and Expanded, and dropdown lists for Parent item and Weight.

Kindly, help me, please.


MerjaS’s picture

This needed the "internationalization" module installed.
Now I have the primary links displayed as I wanted to.


zaurav’s picture

I was trying to use just locale and content translation and was scratching my head how to do this without having redundant menu items in different languages.


Guille’s picture

Hi I was wondering if there is a way to translate "User Accounts" to "Cuentas de usuario" (spanish)

for example if you go to

you will see:

Usser Acount

Create a new account | Log in | Request new password

Where can I translate that part of the code? I just dont know where this is coming from??

If someone knows the answer please help.

andreij’s picture

You can translate every label in admin/build/translate .

Just search the string in admin/build/translate/search or do a bulk translation with import/export.

zaurav’s picture

If you ever want to change any of the built-in words/sentences in Drupal default, for ex - the description of the node types in add/node/page, then you will have to use the 'translation interface'.

If you have a lot of words that need changing (it will actually show you how much percentage of the site is translated to your language), then I'd suggest exporting the .po file, filling it in with the proper translation and then importing it back and voila, you have your multi-lingual site.


Ingotian’s picture

I have just struggled through how to do multiple languages for menu translations and it cost me quite a bit of time to figure out.

I have put a blog entry at to explain how I got it to work in case it helps anyone else.

iansilber’s picture

For some reason after translating a piece of content the association with the original page is gone. Any ideas? Here's an example:

zaurav’s picture

... that you're actually creating a revision of the page?

I haven't worked with revisions so I'm not totally sure, but try to uncheck the revision box and see if it works.


MerjaS’s picture

Hello there!

All translations I have done so far, are working fine. This really is a great feature in Drupal, I can have a real multilingual site, with fairly little effort.

Translating the Menus and "normal" Block works like clock-work, too, after I read the instructions to create an own menu / block for each language, and then separate them with "Show only on listed pages" setting, using path prefix.

The problem is only with content types that require the setting Identification => Make a listing page for this content type, in order to work the way I want them to.
For this content type, (at the admin/content/node-type/) I have selected:
Workflow settings => Multilingual support: Enabled, with translation, and
Multilanguage options => Normal - All enabled languages will be allowed

Translating the content itself works fine, of course, but the listing page gets a new list item of every translated page of that type.
I want to separate the different languages to two different listings pages, one language per list.

I think there must be a way to fix this, but just can't seem to see how. Please, help!

Kindest regards,

riverrat’s picture

I think that I have followed all the advice above, but end up with the same articles appearing in both English and French Sites, i.e. the English article and the translated French one. Any ideas where I have gone wrong?

A supplementary question is on Menu translation. I have installed Openpublish and the primary menus partially change when the language is changed. A number of terms however remain in English. I have used menu translate and added the translations into the fr.po files. Again what I am doing wrong?

All help gratefully received to avoid damaging myself on these brick walls

jonaswouters’s picture

I think that I have followed all the advice above, but end up with the same articles appearing in both English and French Sites, i.e. the English article and the translated French one. Any ideas where I have gone wrong?

Thats by design. See my issue:

riverrat’s picture

I have found out that it is possible to resolve the problem. After reading the comments on I realised that some other control not associated with language setting should solve the problem, if it was solvable. The only one that I could think of was Views.

The solution is
Add an extra filter to Views for the content type.
The filter is node translated: equal to one of current language and no language.

Et voila tout est en ordre!

I hope that some one else will benefit from the pain that I have endured.

Unfortunately the menu translation problem is still unsolved

Thierry Andriamirado’s picture

Your tip works great for the frontpage, Riverrat! Merci

zaurav’s picture

Just double checking but when you goto admin/build/translate does it show your language (fr) as having 100% translation? If not, that may be the problem. You can easily change Drupal's built-in strings from there.


goofken’s picture

Did you manage to find a solution for the translation of the primary menu? Searching but facing the same brick walls here.

goofken’s picture

Hello Riverrat,

Working with Openpublish I have found it very difficult to build a topics OP menu in 2 languages. Even if I set the translation of a menu item it keeps displaying in the other language menu. I was wondering how you fixed this Riverrat?

Thank you

rondp’s picture

So far, so good - I've got it working in principle with a site running English as "first language" and German second, using the "de" path prefix. The problem I'm running into now is that the prefix is also automagically added to image references, leading to the images not being found.

E.g. if I have an image in the English page living at /sites/default/files/images/image.jpg and have a German translation of the page referencing the same image, it's not found because the generated path for it is /de/sites/default/images/image.jpg. I have tried working around that by creating a de directory and linking to ../sites from within it, or by creating a symbolic link "de" in the drupal directory, but both approaches created other problems. And it shouldn't be that way in the first place. What am I missing?

tscok’s picture

I got really annoyed by the content translation links at the end of nodes that have translations. I totally favor the 'language switch links' block and the possibilities it offers my site visitors.

My solution was to implement template_preprocess_node() in my template.php and then simply added

dalegrebey’s picture

...and your template.php code?

TruthJustice’s picture

You saved me!!!

astha_chauhan’s picture

Hello, by this I am able to translate nodes in any language but the problem I am facing is if I am displaying a node at my homepage ,it does not translate body of node because it creates a new node for each translation and hence it is not giving me uniform solution.It only changes language at that particular node only.Kindly help me to get out of this.

panditvarun20’s picture

I am facing a problem that my content not translated while all site translated in defined language.

Varun Kr Pandey

susmitasaha’s picture


I am sorry if I am asking something stupid. But what my confusion is :

I have installed Locale & Content Translation module. Set the appropriate permission. Added & enabled the Arabic Language. Then from Translate interface section I have imported the ar.po file. Then in Multilingual support section checked "Enabled, with Translation" for basic page.

Now when I am creating a basic page content I am getting the Translate Tab. But when I am clicking the Add Translation link it doesn't automatically translating the node title / body into Arabic language.

My question is to get the translated version of the page do I need to provide the translated content? Or there is any way to get the English content body translated automatically?


onewomanbiz’s picture

In answer to your question, you need to translate the content. The translation file you uploaded, only translates the Drupal structure texts, like "read more", etc.

prabirchoudhury’s picture

I have gone through all the available tutorials and instructions and issues but still my translation not working. everything working fine but not translation of the content.
System environmental information
1. Drupal 7.32
2. PHP 5.4.2
3. Apache 2.2.22
4. working on localhost

Installation and configuration od the modules


Issus: when I am translating a node it is creating separate node but it is saving in English as original language, when switching to other language like Japanese http://localhost:81/drupallang/ja/page3 it don’t translate into Japanese but display in English, even if I create a node on other Language it create English content.
Thanks in advanced


bhatmahesht’s picture

Thank you. I have a situation here where I want to display content in two languages at a time , like multilingual page. However while adding the content , the content must be added for one language and same content is translated to other language .
I have another another doubt. When site was searched for a keyword in one language and result is shown for one language. Can the translated versions of that result page can be shown in results too?

For example site is searched for 'xyz' and if 'xyz' exists in one of the nodes in English then it's shown in results. The translated version of node doesn't contain 'xyz' , but I want the translated versions of the node that contains 'xyz' also should be listed in result pages too. Can this be possible?

I am a PHP programmer. moving to become drupal programmer

vaidehi bapat’s picture

The internationalization module in Drupal 7 used to provide a class in body e.g. i18n-en for English language/ i18n-fr for French. However in Drupal 8, there is no such class provided to distinguish between different languages. How can I apply different styles for different languages in Drupal 8?

bettledupls’s picture

Crazy, stupid problem. Someone accidentally wrote over the wrong database and it was restored to an earlier date. There are many system default French words appearing on the English site. How can I reverse this? I have tried looking in the admin/config/regional/translate/translate area for the words but everything seems fine in there. It's like the page is not knowing if it's english or french. I am using URL detection which should enforce the correct language. (admin/config/regional/language/configure)
Is there a way to reset the base 'English' language without loosing all the French translations?

moqbel’s picture

I have been experiencing this problem lately when creating custom content entities and making them translatable ( by specifying translatable = TRUE ) in the annotation. The entity type splits into two types, and this can be seen in the process of creating a view. So when you choose what type of entity to use for the view, the name of the entity in my case 'Faculty' appears twice. 'Faculty', yet again 'Faculty'.

Both names when chose led to different outcomes of views. The first one lets you choose only the 'name' field to use for the view but not other fields that I added to the entity through the Manage entity fields UI. However, the other option has the other fields but not the name field that is available in the previous option.

Is this a bug or I'm I doing something wrong here!