SEO in itself can already get quite complicated, but with multiple languages in a single Joomla site this can become even more complicated. There are simply more issues to consider, adding up to the complexity of the matter. This blogpost is all about this. First I will discuss the general issues that you should consider and then I will discuss how to implement these into Joomla. Finally I will shortly discuss some multi-language extensions.
General SEO considerations for multilingual sites
One thing that you may worry about is whether the same content being shown in your site, though in separate languages, would not be considered as duplicate content by Google. Luckily Google states that this is not the case, so no need to worrie here. You simply have to make sure Google and humans understand your translations and the multilingual set-up of the site. The following guidelines are crucial fort his:
- Avoid auto-translations: There are quite a few extensions that allow for on the fly translations where users can request a translation powered by Google or Bing and the tekst is translated on the fly (an example is this one). Though the functionality can be very usefull and easy, the translated languages will certainly not add up to the SEO value of the site. Ideally, Google advises you to block the auto-translated content in robots.txt.
- Avoid automatic redirection based on the user’s perceived language. These redirections could prevent users (and search engines) from viewing all the versions of your site.
- Make sure the site-structure (domain, folders, URL’s) reflects the language Make sure you know the correct language and / or country you are targeting.
- Use the rel=”alternate” attribute to specify the alternative translations available
- Use Google Webmaster Tools to confirm your geographical target
Some of these point need further explanation, let’s start:
Targeting languages or countries
Make sure you know whether you are targeting countries or languages. This is an extremely important choice to make. If you make the wrong choice, you may end up with a site that is set-up completely incorrect. As an example: if you target French readers and you do this on a domain with a .fr domain, like www.example.fr, you may miss out on French readers in Canada… Mistakes like this are very hard to solve once the site is live!
Make the multi-language structure obvious
You should make sure users can see from the URL which language the page is for. The URL is made up of domain, folders/subfolders and URL parameters:
- Domain: First you need to choose your domain: If your site only targets one country with one language, this is the easiest case: make sure you use a country-specific TLD, like .nl for the Netherlands. However, if I would want to target all Dutch-speaking users, I would also want to make sure users from Belgium can find my site. In this case, a generic TLD will probably be preferable, like .com.
You could even opt for completely separate sites for each country. Ideally though, you would still need to connect these sites with the rel=”alternate” tag that we will discuss later.
- Subfolders versus Subdomains: You can specify the targeted language with either subfolders or subdomains. The structure for a Dutch translation of a domain called example.com would then either be:
While both options specify the targeted language obvious enough, subfolders are generally thought to be much better from an SEO perspective then subdomains (see this post on Moz). Happily this is the way Joomla generates multi-language conntent.
- Finally you can also specify the language in URL paramaters like this:
This is a less-advised solution
The rel=”alternate” attribute
The rel=”alternate” tag is probably the most important configuration item in multilingual SEO: to keep Google happy, you should make sure that you specify which page is a translation of which other page and vice-versa. This means that if you have a translation of a page, it should specify the source-page this page is a translation of, while also the source page specifies the page it is translated into. Even more, this should also count for all other languages the page is translated into. Finally, Google also requires you to self-reference the page. All this is done through the rel="alternate" hreflang="xx-XX" tags, with the languages specified. This sounds complicated, but basically all copies of a translation should reference each other. Let’s explain this with an example:
Say we have a site called www.example.com with four translations: English, French, German and Dutch. EVERY translation should include the following code in the <head> section:
<link rel="alternate" href="http://example.com/en" hreflang="en-GB" />
<link rel="alternate" href="http://example.com/de" hreflang="de-DE" />
<link rel="alternate" href="http://example.com/fr" hreflang="fr-FR" />
<link rel="alternate" href="http://example.com/nl" hreflang="nl-NL" />
You could even have the same situation for variations of a language, like English, which has American, British, Australian, etc. variations. Also, you can also use this technique if your content is on different websites! By the way, if you have a page that is not translated, or only in one or two languages of the four, simply exclude the not-translated URL.
Finally, note that you can also use alternative options for this: instead of in the <head> section, you can also specify these variations in your sitemap. Especially if you have completely separate domains this can be easier to implement sometimes.
Google Webmaster Tools
Once your site has been set-up correctly you should also set-up Google Webmaster Tools to reflect the multilingual situation. As a start, Google advises you to to register all 4 variations as separate sites! So make sure to perform the registration separately for www.example.com/en and www.example.com/nl, etcetera (including www and non-www versions). This will allow you to submit separate sitemaps for each translation and optionally also specify Geographical Targets if you have country-specific distinctions (do not set Geographical Targets if you have language-specific distinctions otherwise you may restrict your French site to France only).
Set-up Joomla for multi-lingual SEO
Basically we now know what we should aim for, and luckily, in Joomla, this is not that hard. First of all, simply follow the basic guidelines for a multilingual site (install languages, set-up an all-languages default menu and separate menu’s per language, assign languages, publish language switcher, etc.). Since this blogpost focusses on the SEO aspects, I advise you to check online for tutorials, like this one here).
The good news is: once you have done so, largely your site set-up should be pretty good already. I will simply discuss the items that have SEO consequences. One thing I need to mention at this stage: Joomla currently generates the rel=”alternate” tags for the translations of the current page. However, the current page does not include a self-referencing rel=”alternate” tag as is required. I reported this as an issue (https://github.com/joomla/joomla-cms/issues/6923) and this will probably be fixed in the near future (Update: fixed in Joomla 3.4.2).
Now let’s walk through the relevant parameters in Joomla:
System-language Filter plugin
First we have the System-language Filter plugin. This plugin controls how the site behaves and has several parameters. The default settings are actually fine and perfect for SEO, though sometimes they are changed:
- Administrators often prefer to show the site in the default language for the user. This can be done based on the browser settings and it makes the the site switch language automatically. This can be very convenient for users, but Google actually advises against automated language switching and would rather have you show a relevant banner or message to the user informing them of the possibility to switch.
- Item associations: Always leave to Yes
- Remove URL Language code. You can choose to leave the default language without a language string in the URL. This can be perfectly fine. Here on Joomlaseo.com I did this, as 90% of my users read the site in English, so it is not a problem to not show them the site as joomlaseo.com/en. For better targeting of the site in Webmaster Tools it could be preferable to show the en string though.
- Add Alternate Meta Tags: Definitely leave this to Yes.
System – Language Code
Next to the Language Filter plugin we also have the System - Language Code plugin:
It is sometimes used to add localized versions of the language strings to the <head> section of the page. This is explained here. The output is applied as follows:
- Before: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb" dir="ltr" >
- After: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-ei" lang="en-ei" dir="ltr" >
Finally we also have the Language Switcher module, but you can simply set it as you want, there are no real SEO issues with that module.
There are quite a few extensions for multilingual Joomla websites. There are many small ones and a few more popular ones:
- Falang is the successor of JoomFish. It is a very popular extension. It has no SEO restrictions, and it works perfectly well. All necessary rel=”alternate” tags are nicely generated, including a self-referring one, so feel free to use it. Falang does not use the Joomla core output, it generates it’s own output.
- Many other extensions, like Josetta and KMFasTrans simply assist in creating content in multiple languages, but they only support the translation process, they don’t change the article’s output, so the end-result is simply Joomla core output. No restrictions in using these if you like them.
- Extensions for automated translations. Sometimes you simply do not have the time to create all your translations manually, and you prefer an automated solution using the translation functionality of Bing and Google. Be aware that these translations do not add up to your SEO value. You can use them, but Google advises you to block the generated output in your robots.txt file. It depends on the extension if this is doable, and this may be tricky to achieve.
- A new extension is Neno Translate. It could be interesting, but unfortunately I have not tried it out yet.
- An interesting extension is the Language Domains plugin by Yireo. It allows you to make the translations of 1 Joomla website available on separate domains. The only pre-requisite is that these domains should be hosted on the same account.
- Sitemap extions. A multilingual site needs a multilingual sitemap. Luckily most sitemap extensions are capable of generating these for you, at least popluar ones like JSitemap and OSmap.
You see, there is a lot to consider when it comes to multilingual sites. Use this blogpost as a guideline, but also check other sources, as there may sometimes be opposed opinions, and I certainly do not claim to own the absolute truth here. I checked quite a few online resources while creating this blogpost, so feel free to check those and others as well:
- Google Webmaster guideline for multillingual sites (MUST READ!!!!)
- Moz on subfolders versus subdomains
- Semrush on the rel="alternate" tag
- Tutorial on setting up multiple languages in Joomla
Finally, If you are located in the Netherlands, Perfect Web Team organizes an expert session on multilingual sites on June 26th 2015, register here.