Some SEO for multilingual Drupal sites

First of all, before any kind of SEO, what you need in the first place is high quality content in every language. The kind of content users want to see and people may link to because it is useful and it adds something valuable to the World. In the second place, your site must be optimized for the people that use it, not for search engines. Search engines like Google do a nice job of listing first the best content for users to read.

That said, there are some tips that may help your multilingual Drupal site, that is plenty of high quality content and optimized for users in the first place, work better with search engines and help people find it -provided it is what they're looking for-. Most of this is valid for Drupal, Wordpress or whatever CMS you use, but the tools I am talking about are Drupal specific, which are the ones I've been building for some years...

I am the author and main maintainer of Internationalization module which is the one powering almost every multilingual Drupal site out there.

Content, content, content... and translations.

Check the quality of your translations. Content may be well written in the main site language but very often translations are poor and sometimes, still worse, they use machine-translation (more about machine translations below).
The completion of your translations is also something to take into account. People often underestimate the work it will take to maintain the multilingual content up to date and as a result, translations of old content may get outdated or translations of new content may be missing.
You can use some helper module like Translation Overview to check the status and handle the workflow of your translations. A few custom built views may also do the job.
Also too often people invest a lot of time and work in using the right keywords and wording for content in the source language but then they think any quick translation of a carefully picked English word will do the job in other language. That's not exactly true, not to say it's completely stupid.

Check the status and quality of your translations.
And since this is the most important tip by far in this article, I'll say it again:
Check the status and quality of your translations.
Ok, once you've done that, here you are some other easier tips:

About machine translations

Machines are already better than humans at playing chess, yes, but really, not for translating human readable content (I hope we agree on that). Though some people may think that having machine-translated content is better than nothing, the problem is that doesn't really add value for anyone at all. You better link to the translation service's page providing a translation of your site. If users want a crappy machine translation they can get it by themselves and usually the browsers already offer that option.

If you don't believe me, please believe Google: "Use robots.txt to block search engines from crawling automatically translated pages on your site. Automated translations don’t always make sense and could be viewed as spam. More importantly, a poor or artificial-sounding translation can harm your site’s perception."

Do not provide machine-translated versions of your site.

Use consistent URLs for your multilingual content

As each content on the web must have a unique distinct URL to be discoverable and manageable by search engines, each language version must have a different URL too. Thus using session or browser language detection can harm both your search rankings and the user experience.
When users click a link from a search results page or shared through Facebook or Twitter, they expect to find the page and the content they searched for, or they were pointed at, not being redirected to a different page/content that may not contain exactly what they're looking for. Sure they are smart enough to click on the language icon if they wish to see that content translated.

Use only URL language detection method on your Drupal site.. The only exception may be using Browser language detection on the front page + redirection (not available by default on Drupal) but for that to work well with search engines and link sharing you must use then a language prefix for every language (Otherwise neither users nor search engines can link consistently to the same page)

Content translation vs Field translation

Though you may have some other reasons for using either content translation (Drupal core translation module) or field translation (Entity translation), the first one has a number of advantages when it comes to SEO:

  • It allows full workflow control on the status of each translation (and will work with all contributed workflow modules).
  • It will work seamlessly with most othr SEO modules that provide per node options, like Metatag, Page Title, etc...
  • It gives content editors full control on every node option for each language (paths, menus, etc...) which is obviously good if content editors can/want to make some SEO adjustments.

Use content translation (a different node for each language)

Images can be localized

Besides the fact that many images (containing texts, locale or cultural references) can be -therefore they should be- localized, using a different image for each translation will allow translating the file name, title, description, etc.. This is good for search at the expense, of course, of needing to upload some files twice. Nothing is really free, we are focusing on SEO here.
Syncronizing or reusing fields accross translations may be a convenience for content edition but too often it may be limiting for true multilingual search engine optimization. So I don't say you don't use it, just balance the pros and cons.

Use localized images when possible.

Enable hreflang attribute for pages

This attribute specifies the base language of the resource designated by href. Though the hreflang attribute is added as default by Drupal to all cross-language internal links on your site, it can also be used for "alternate page links" in he header. This will inform search engines where to find the translation version of the page and it will be lesss likely that they mark pages that are translations of each other but with very similar content as duplicates.
There's this tiny Internationalization SEO hreflang module that does exacly that and is hidden into this Internationalization contributions package. And then you'll get on the header section of your pages something like:

<link rel="alternate" href="http://example.com/" hreflang="en" />
<link rel="alternate" href="http://example.com/es" hreflang="es" />

Enable Internationalization SEO hreflang module.

Double check compatibility with other SEO modules

There are many other modules for SEO of Drupal sites, and what is good for single language sites is usually good for multilingual sites, only not all of them work well with multilingual content. So for each one of them you'll need to check whether they are doing their job well for every language and they don't do things like adding English keywords to translated versions of the page. About these just some quick tips:

  • Multilingual site maps: If using XML sitemap, enable the XML sitemap internationalization and create a different sitemap for every language.
  • Pathauto has a number of issues with multilingual sites and path alias may get the wrong language in some cases. It will need careful configuration and some tweaking.
  • (Again) When translating content (nodes), most other SEO modules have better compatibility with the content translation feature.

Check that other SEO modules work well with multilingual content, some of them need specific configuration.

Language redirection module

Having mixed interface and content language is a feature of Drupal multilingual modules in general. It is also very convenient for content editors or readers that see occassionally a page in a different language -maybe because they want to, maybe because it's not yet translated-. But on the other side it may create too many mixed language versions of your page that search engines may not like, so it makes sense to disable the feature for anonymous users.
This is exactly what Translation redirect module does. It is contained in the Internationalization package and you just need to enable it. Be warned it is not a usability module, it is a SEO module thus it will just work for anonymous users, which is exactly what search engines view of your site.

Enable Language redirect module.

Decide your default language

Which is your site's default language is an important decision that must be made at the very beginning. The default language of your site is also its primary language and it is the language for which your site will be slightly better optimized for search engines.

  • When using path prefixes, you can skip the path prefix for this language, that will produce URLs that are a bit shorter for that language. It will also render a bit faster, not needing to translate certain strings.
  • It is the language used as the "source translation" in most cases, so workflow tools will work better when your default language is also the most usual source language.

Changing it later is possible but that will cause a number of issues like needing to retranslate some custom strings that are assumed to be translated from the site's default language to other languages.
The idea is the default language for your site should match your primary or most important market. However note this is only for SEO, other considerations may be taken into account, like the preferred language of your content creators or site team in general.

Take your time to decide the default language of your site.

Multiple domains vs Language prefixes

Yes, domain names are used by search engines to determine search results. So you may get improvements in rankings for specific search terms and languages by using different -properly localized- domain names.
The good news is Drupal supports using a different domain for each language out-of-the-box, and all the language links are just resolved automatically. The bad news is that it may be not very good for your site branding and you will loose the ability for users to keep logged in accross domains.
However, if you want to use this option, consider also using the Domain module or even using completely different sites for each domain that may make more sense -or not- depending on your content workflow or whether you want content translations to be cross linked.

Using a localized domain name may have some advantages, but only in a few cases.

If you've read all this I hope you've got the right conclusion at the end. Just in case, it may be this one: If you want multilingual SEO, do not hire a SEO expert; hire good translators instead.

Thanks for reading anyway. I'd appreciate your comments. Gracias.