Skip to content

Joomla Multilingual Sites — Language Associations, Switcher and Content

DodaTech Updated 2026-06-27 11 min read

In this tutorial, you'll learn how to build a multilingual site with Joomla — setting up content language associations for articles, categories, and menu items, adding a language switcher module, creating language-specific menus, and managing translations across your entire site.

What You'll Learn

  • Creating content language associations between articles in different languages
  • Associating categories across languages so the navigation structure matches
  • Associating menu items so the site structure is mirrored per language
  • Adding the Language Switcher module for visitors to choose their language
  • Creating language-specific modules that show only for one language
  • Configuring the Language Filter plugin for automatic language detection
  • SEO for multilingual sites with hreflang tags

Why It Matters

The web is global. If your site serves visitors in multiple countries or regions, they expect content in their language. {{< ilink "Joomla" }} is the only major CMS with fully built-in multilingual support — no plugins required. Every other CMS requires third-party extensions (WordPress needs WPML or Polylang; Drupal needs contributed modules). Joomla's multilingual system creates associations between translated content, so when a Visitor switches languages, they land on the correct translated page. This is essential for user experience, SEO (hreflang), and managing translations efficiently.

Real-World Use

A global software company based in Germany runs a Joomla site in German, English, French, and Spanish. The German editor creates a new product page. The English editor translates it and associates it using the Associations tab. The French and Spanish editors do the same. A visitor from France lands on the French homepage. When they switch to English, they see the English version of the same product page — not the English homepage. The hreflang tags tell Google which version to show in each country's search results. The entire multilingual setup uses core Joomla features, saving thousands of euros in plugin licenses.

Learning Path

flowchart LR
  A["Media Manager"] --> B["Multilingual Sites"]
  B --> C["Joomla 4 vs 5"]
  C --> D["Backups"]
  D --> E["User Groups"]

  classDef current fill:#38bdf8,color:#0f172a,stroke-width:2px
  class B current

Prerequisites

Before setting up multilingual content, you must:

  1. Install language packs for each language you want to support
  2. Enable the System - Language Filter plugin
  3. Create content in each language

Installing Language Packs

  1. Go to Extensions > Manage > Install
  2. Click the Languages tab
  3. Find the languages you need (e.g., English, French, German)
  4. Click Install for each language

The language pack installs both the site interface translations and the content language.

Enabling the Language Filter Plugin

  1. Go to Extensions > Plugins
  2. Search for "Language Filter"
  3. Enable System - Language Filter
  4. Configure:
Setting Value
Automatic Language Change Yes
Language Selection for New Users Yes
Remove Default URL Yes
Add Language Code to SEF URL Yes
Cookie Settings Default

Content Language Associations

Content Language Associations connect translated versions of the same content. When an article has an association, the language switcher can send visitors to the correct translation.

Associating Articles

  1. Edit an article
  2. Click the Associations tab
  3. For each language you have installed, click Select:
Field Action
English (en-GB) Current article (this is the English version)
French (fr-FR) Click Select > choose the French version
German (de-DE) Click Select > choose the German version
  1. Save the article

The articles are now associated. If a visitor is viewing the English article and switches to French, Joomla shows the associated French article.

Association Groups

Each group of associated articles shares an Association Group ID. This is stored in the #__associations table:

-- Example: the association records in the database
SELECT * FROM #__associations WHERE item_type = 'com_content.item';

The group ID links all translations of the same content. When you create the first article in a language, it gets a new group ID. When you associate other translations, they join the same group.

Associating Categories

Categories also need associations. Without category associations, an article in the "Blog" category in English might belong to a different structure than in French.

  1. Go to Content > Categories
  2. Edit a category
  3. Click the Associations tab
  4. Select the corresponding category in each language

For example:

English category: /en/blog/
French category: /fr/blog/
German category: /de/blog/

Each is a separate category record in MySQL with its own language assignment. The Associations tab links them.

Associating Menu Items

Menu items must also be associated. Without this, the Language Switcher cannot navigate visitors to the correct menu structure.

  1. Go to Menus > Main Menu (en)
  2. Edit a menu item (e.g., "Home")
  3. Click the Associations tab
  4. Select the corresponding menu item in each language menu

Create a separate menu for each language:

Main Menu (en)      → English menu items
Menu Principal (fr) → French menu items
Hauptmenü (de)      → German menu items

Each menu contains items assigned to its language. The menu items are associated via the Associations tab.

Language Switcher Module

The Language Switcher (mod_languages) displays language options on the frontend.

Setting Up the Language Switcher

  1. Go to Extensions > Modules > New
  2. Select Language Switcher (mod_languages)
  3. Configure:
Setting Value
Title Languages
Position sidebar-right or user-defined position
Show Active Language Yes
Use Image Flags Yes (or No, depending on preference)
Show Language Code Yes
Full Language Name Yes
  1. Assign the module to all pages
  2. Save

The module displays flag icons (if enabled) for each language. When clicked, it switches to the associated content in that language.

To show the Language Switcher as a dropdown:

  1. In the module's Advanced tab
  2. Set Module Layout to Dropdown
  3. Save

Language-Specific Modules

Modules can be set to display only for specific languages. This is essential when you have language-specific content like a "Latest News" module that should only show news in the visitor's language.

  1. Edit any module
  2. Find the Advanced tab
  3. Look for the Language field
  4. Select a specific language (e.g., English (en-GB))

The module will only display when the site is being viewed in that language. Set it to All to show in every language.

Language-Specific Menu Items

Each menu item has a language assignment. When you create a menu item, the Language field in the menu item edit screen determines which language the item belongs to.

If you have a French menu item and an English menu item, and a French visitor is on the site, only the French menu item appears in the menu module (provided the menu module is also language-filtered).

Content Filtering per Language

The Language Filter plugin automatically filters content. When the site is viewed in French, only French articles appear in category blog views and article lists.

This works because each article in MySQL has a language column. The Language Filter plugin adds a WHERE clause to all content queries.

Language Filter Plugin Configuration

  1. Go to Extensions > Plugins > System - Language Filter
  2. Automatic Language Change: When enabled, Joomla detects the browser's language preference and redirects to the matching language version.
  3. Language Selection for New Users: Prompts first-time visitors to choose their language.
  4. Remove Default URL: When enabled, the default language URL does not include the language code prefix. Example: / instead of /en/.
  5. Add Language Code to SEF URL: Adds the language code to URLs, e.g., /fr/article-title.

SEO for Multilingual Sites

Hreflang Tags

Joomla automatically generates hreflang tags when the Language Filter plugin is enabled. Check your page source:

<link rel="alternate" hreflang="en" href="https://yoursite.com/en/article" />
<link rel="alternate" hreflang="fr" href="https://yoursite.com/fr/article" />
<link rel="alternate" hreflang="de" href="https://yoursite.com/de/article" />
<link rel="alternate" hreflang="x-default" href="https://yoursite.com/" />

These tags tell Google which version of the page to show in each language's search results.

Language-Specific Sitemaps

If you use a sitemap extension, it should generate separate entries for each language version of each page. OSMap supports this automatically.

Switching Between Site Editing

When you are logged into the administrator interface, you can switch between language editing contexts:

  1. In the top toolbar, look for the Language Switcher dropdown
  2. Select the language you want to edit
  3. The interface switches to show content for that language

You can also use the Multilingual toolbar icon to move between associated items quickly.

Managing Multilingual Content Workflow

For a team of translators, follow this workflow:

  1. Create the original content in the primary language
  2. Assign editors for each target language
  3. Each editor creates the translated version
  4. The editor associates the translation with the original using the Associations tab
  5. The editor sets the article language to the target language
  6. The editor publishes the translated article

This workflow keeps content organized and ensures associations are maintained.

Common Mistakes

  1. Not associating categories: Articles need their categories to be associated too. Without category associations, the language switcher may not find the correct translated page structure.

  2. Skipping menu item associations: Menu item associations are required for the Language Switcher to navigate correctly. If menu items are not associated, clicking a language flag may send visitors to the homepage instead of the translated version of the current page.

  3. Creating content without assigning a language: If an article has "All" as its language, it appears in every language version of the site. Always assign the correct language to each article, category, and menu item.

  4. Forgetting the Language Filter plugin: Without the System - Language Filter plugin enabled, Joomla does not filter content by language. Visitors see all content regardless of language. The Language Switcher module also requires this plugin.

  5. Using the same menu for all languages: Each language needs its own menu structure. Trying to use a single menu with mixed language items creates confusion and breaks associations.

Practice Questions

  1. What three types of content must be associated for a fully functional multilingual Joomla site? Answer: Articles, categories, and menu items must all have language associations. Articles need to link to their translations. Categories need to link to corresponding categories. Menu items need to link to the same page in other languages.

  2. How does the Language Switcher module know which page to show when a visitor switches languages? Answer: It uses the Associations tab data. If the current article has an associated article in the target language, the Language Switcher links directly to that article. If no association exists, it falls back to the language's home page.

  3. What does the Add Language Code to SEF URL setting do, and why is it important for SEO? Answer: It adds the language code to the URL, e.g., /fr/article-title. This helps search engines understand which language the page is in and enables hreflang tags to work correctly. It also helps visitors recognize the language of a page from the URL.

  4. Challenge: Set up a full trilingual Joomla site. Install language packs for English, French, and German. Create 5 articles in each language. Associate all articles, categories, and menu items. Add the Language Switcher module with flags. Create language-specific modules. Configure the Language Filter plugin. Test switching between languages and verify that each switch shows the correct translated page. Verify hreflang tags are present in the page source.

FAQ

Does Joomla support multilingual sites out of the box?

Yes. Joomla has fully built-in multilingual support. You install language packs, enable the Language Filter plugin, and create associated content. No third-party extensions are needed.

How do I associate articles across languages in Joomla?

Edit an article and click the Associations tab. For each language, click Select and choose the corresponding translated article. Save the article. Repeat the process for categories and menu items.

How do I add a language switcher to my Joomla site?

Go to Extensions > Modules > New, select Language Switcher (mod_languages). Configure the display options (flags, dropdown, language names), assign it to a module position, and publish.

Can I show different modules per language?

Yes. Edit any module and find the Language field in the module settings. Set it to a specific language and the module only appears when the site is viewed in that language.

Does Joomla generate hreflang tags for multilingual sites?

Yes. When the System - Language Filter plugin is enabled, Joomla automatically generates hreflang tags in the page head section for each language version of the page.

Mini Project

Your task is to build a trilingual Joomla site from scratch.

  1. Install a fresh Joomla 5 site with sample data
  2. Install English, French, and German language packs
  3. Enable the System - Language Filter plugin
  4. Create three menus: Main Menu (EN), Menu Principal (FR), Hauptmenü (DE)
  5. Create three categories in each language (Blog, Products, About) and associate them
  6. Create two articles in each category per language (18 articles total) and associate them
  7. Create menu items for each language menu and associate them
  8. Add the Language Switcher module
  9. Create one language-specific module per language
  10. Test switching between all three languages

Document your Process with notes on associations and any issues you encountered.

What's Next

Now that you understand multilingual Joomla, learn about version differences:

Continue to Lesson 34: Joomla 4 vs Joomla 5 — Key differences and Migration guide.

Related lessons:

  • {{< ilink "Joomla" "Joomla SEO" }} — Multilingual SEO
  • {{< ilink "Joomla" "Joomla Backups" }} — Backup before migration

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro