Multilingual SEO in Joomla
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 blog post 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 shown on your site, though in separate languages, would not be considered duplicate content by Google. Luckily Google states that this is not the case, so no need to worry 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 for this:
- 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 text is translated on the fly. Though the functionality can be very useful 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 (including the option for this in Joomla) 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, URLs) 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 Search Console to confirm your geographical target
Some of these points 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 obviously enough, subfolders are generally thought to be much better from an SEO perspective than subdomains (see this post on Moz). Happily, this is the way Joomla generates multi-language content.
- Finally, you can also specify the language in URL parameters 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.
Setup 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 menus per language, assign languages, publish language switcher, etc.). Since this blog post focuses on the SEO aspects, I advise you to check online for tutorials.
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.
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 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.
- 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 its own output.
- Sitemap extensions. A multilingual site needs a multilingual sitemap. Luckily most sitemap extensions are capable of generating these for you, at least popular ones like JSitemap and OSmap.
You see, there is a lot to consider when it comes to multilingual sites. Use this blog post as a guideline, but also check other sources, as there may sometimes be opposing opinions, and I certainly do not claim to own the absolute truth here. I checked quite a few online resources while creating this blog post, so feel free to check those and others as well: