Joomla Languages — Multilingual Site Setup and Language Management
In this tutorial, you'll learn how Joomla language management works — installing site and administrator languages, creating content language associations, adding a language switcher, and building a complete multilingual site using Joomla's built-in system.
What You'll Learn
- How Joomla handles languages for site and administrator interfaces
- How to install additional languages (Extensions > Language(s) > Install Languages)
- How to set the default language for site and admin
- How to create content languages (Languages > Content Languages)
- How content language associations work for articles, categories, and menu items
- How to use the Language Switcher module (mod_languages)
- The complete multilingual workflow
- How SEF URLs work in multilingual sites
- The System — Language Filter plugin
Why It Matters
Multilingual capability is one of Joomla's strongest features. Unlike WordPress, which needs expensive plugins like WPML or Polylang for multilingual content, Joomla handles everything natively. No extra cost, no compatibility issues, no performance overhead from third-party translation plugins. For any site serving multiple languages, this built-in feature saves time, money, and complexity.
Real-World Use
A tourism board launches a Joomla site serving four languages: English, French, German, and Spanish. They install the language packs, create content languages for each, write articles in each language with associations linking them together, and add a language switcher module in the header. Visitors click a flag to switch languages, and Joomla shows the correct version of each page. The entire multilingual setup uses core Joomla features — no extensions required.
Learning Path
flowchart LR A["Plugins"] --> B["Languages
You are here"]:::current B --> C["Essential Extensions"] C --> D["User ACL"] classDef current fill:#38bdf8,color:#0f172a,stroke-width:2px
Language Types
Joomla distinguishes between two types of languages:
| Type | Description | Example |
|---|---|---|
| Site Language | The language displayed to visitors on the frontend | Visitors see text in French |
| Administrator Language | The language used in the admin interface | You manage the site in German |
| Content Language | A language assigned to content items (articles, categories, menus) | French articles, English articles |
Installing Languages
Installing Site and Administrator Languages
- Go to System > Manage > Language(s) > Installed — Site or Installed — Administrator
- Click the Install Languages button in the toolbar
- A window opens with available languages
- Find your language (search by name or language code)
- Check the box and click Install
# Steps to install a language pack
# System > Manage > Language(s) > Installed - Site
# Click "Install Languages" button
# Search for "French" or "fr-FR"
# Check the French language pack
# Click "Install"
# Joomla downloads and installs the translation
Alternatively, you can download language packs from the Joomla Extensions Directory and install them via Extensions > Manage > Upload Package File.
Setting Default Language
After installing languages, set which one is the default:
# Set default site language
# System > Manage > Language(s) > Installed - Site
# Find the language you want as default
# Click the star icon to make it the default
The default language is the one visitors see when no language preference is set.
Content Languages
Content languages define the languages available for your content. They are different from installed site languages.
# Create content languages
# System > Manage > Language(s) > Content Languages
# Click "New"
Content Language Fields
| Field | Description | Example |
|---|---|---|
| Title | Language display name | English (United Kingdom) |
| Title in Native Language | Name in the language itself | English (United Kingdom) |
| Language Tag | Language code used internally | en-GB |
| Language Image | Flag image (stored in /media/mod_languages/images/) | gb.png |
| SEF Prefix | URL prefix for this language | en |
| Access | Access level for this language | Public |
| Description | Optional description |
SEF Prefix
The SEF prefix is the URL segment for this language. For example:
# English page
/en/about-us
# French page
/fr/a-propos
# German page
/de/uber-uns
The SEF prefix is only visible when the System — Language Filter plugin is enabled.
Content Language Associations
Associations link corresponding content across languages. When a Visitor switches from English to French, Joomla uses associations to find the French version of the same page.
Associating Articles
When editing an article, the Associations tab shows all content languages. For each language, you select the associated article:
# Steps to associate articles
# 1. Create the English article and save it
# 2. Create the French article and save it
# 3. Open the English article, go to Associations tab
# 4. For the French language, click Select and choose the French article
# 5. Save the English article
# 6. Repeat for the French article (associate back to English)
The association is bidirectional — linking English to French also links French to English.
Associating Categories
Categories must be associated per language too:
# Steps to associate categories
# 1. Create an English category (e.g., "News")
# 2. Create a French category (e.g., "Actualites")
# 3. Open the English category, go to Associations tab
# 4. Select the French category
# 5. Save
Associating Menu Items
Menu items also need associations. This is essential for the language switcher to work correctly.
# Steps to associate menu items
# 1. Create an English menu item for "About Us"
# 2. Create a French menu item for "A Propos"
# 3. Open the English menu item, Associations tab
# 4. Select the French menu item
# 5. Save
Language Switcher Module
The Language Switcher (mod_languages) lets visitors change the site language.
# Add Language Switcher module
# Extensions > Modules > New > Site Modules > Language Switcher
# Set title (typically "Language Switcher" or leave blank)
# Select position (header, sidebar, or topbar)
# Configure options:
# - Show active language: Yes
# - Show language name: Yes or No (flags only)
# - Display as dropdown: Yes or No
# - Use image flags: Yes
# Assign to all pages or specific menu items
# Save
The Language Switcher works by passing the lang parameter in URLs. When a visitor clicks a language, Joomla loads the associated content for that language.
Multilingual Workflow
Here is the complete workflow for building a multilingual Joomla site:
Step 1: Install Languages
Install the site language packs you need (e.g., en-GB, fr-FR, de-DE).
Step 2: Enable the Language Filter Plugin
# Enable System - Language Filter
# Extensions > Plugins > System - Language Filter
# Enable: Yes
# Method: After Language Switcher (recommended)
# SEF Mode: Yes (for /en/ URLs)
# Save
Step 3: Create Content Languages
Create content languages for each language you want to support.
Step 4: Create Categories and Associations
Create categories for each language and associate them.
Step 5: Create Articles and Associations
Create articles in each language and associate them.
Step 6: Create Menus and Associations
Create a menu for each language (or use a single menu with language filtering). Associate menu items across languages.
Step 7: Add Language Switcher Module
Add mod_languages to a visible position.
Step 8: Test
Visit the site in each language and verify:
- URLs show the correct SEF prefix (/en/, /fr/)
- Content displays in the correct language
- Language switcher works correctly
- Associated content loads when switching languages
flowchart TD A["Install Language Packs"] --> B["Enable Language Filter Plugin"] B --> C["Create Content Languages"] C --> D["Create Categories per Language"] D --> E["Create Articles with Associations"] E --> F["Create Menu Items with Associations"] F --> G["Add Language Switcher Module"] G --> H["Test All Languages"]
SEF URLs for Multilingual
With the Language Filter plugin enabled and SEF mode turned on, URLs follow this pattern:
# Without language filter
example.com/about-us
# With language filter (SEF mode)
en/about-us
fr/a-propos
de/uber-uns
The SEF prefix comes from the Content Language's SEF Prefix field.
Menu Per Language vs Single Menu
You have two approaches for multilingual menus:
Approach 1: One Menu Per Language
Create separate menus (e.g., "English Main Menu", "French Main Menu"). Each menu contains only items for that language. Assign each menu to the correct language in the menu module.
Pros: Clean separation, easier management per language. Cons: More menu modules to manage.
Approach 2: Single Menu with Language Filtering
Create one menu with all items. In the System — Language Filter plugin, enable "Language Selection for Menu Items". Joomla shows only menu items matching the current language.
Pros: Single menu module, simpler setup. Cons: Menu items from all languages appear in the list, which can be confusing.
Translation Workflow
Content translation requires you (or a translator) to create each language version manually. Joomla does not provide automatic translation — it manages the associations, not the translation itself.
# Realistic translation workflow
# 1. Create English article "About Us" in English category
# 2. Copy the article text to a document
# 3. Translate to French
# 4. Create French article "A Propos" in French category
# 5. Associate English and French articles
# 6. Verify links and display
Third-party extensions like Joom!Fish or Falang can help manage translation workflows, but core Joomla handles the display and switching natively.
Common Mistakes
Not enabling the Language Filter plugin: You install languages and create content languages, but the site always shows the default language. The System — Language Filter plugin must be enabled for multilingual URLs and language switching.
Forgetting to associate content: You create articles in English and French but the language switcher does not work. Articles must be associated via the Associations tab. Without associations, Joomla cannot find the corresponding article in another language.
Not creating separate categories per language: You create one "News" category and put both English and French articles in it. Now the category blog shows articles from both languages mixed together. Create separate categories for each language.
Incorrect SEF prefix configuration: You set the SEF prefix to "english" instead of "en". URLs become example.com/english/about-us instead of /en/about-us. Keep prefixes short using standard language codes.
Not associating menu items: The language switcher highlights correct languages but clicking a language loads the default page instead of the correct translation. Each menu item must have corresponding menu item associations.
Practice Questions
What is the difference between an installed language and a content language? Answer: An installed language is a translation pack for the Joomla interface (frontend and backend text). A content language defines a language for your content (articles, categories, menus). You need both — installed languages for the UI and content languages to organize multilingual content.
How does Joomla find the correct article when a visitor switches languages? Answer: When languages are associated, Joomla stores the relationship in the database. When a visitor switches via the Language Switcher, Joomla finds the associated article in the target language and loads it. If no association exists, the site loads the default page.
What role does the System — Language Filter plugin play in multilingual sites? Answer: The Language Filter plugin routes URLs with language prefixes (/en/, /fr/), filters menu items to show only the current language, and handles content association lookups when switching languages. Without this plugin, multilingual features do not work.
Challenge: Build a complete bilingual Joomla site in English and French. Install both language packs. Create content languages for en-GB and fr-FR. Create two categories per language (News/Actualites and Blog/Bloc). Write at least two articles per category in each language. Associate all articles, categories, and menu items. Create a menu structure with Home, News, and Blog items in each language. Add a language switcher module. Enable the Language Filter plugin with SEF mode. Test navigation between languages.
FAQ
Mini Project
Your task: Build a three-language site for an international hotel chain.
- Install language packs for English, French, and German.
- Create content languages for en-GB, fr-FR, and de-DE with SEF prefixes en, fr, de.
- Enable the System — Language Filter plugin.
- Create three sets of categories (one per language): Rooms/Chambres/Zimmer, Dining/Restauration/Speisen, Contact/Contact/Kontakt.
- Write at least one article per category per language (9 articles total).
- Associate all articles across languages.
- Create three menus (one per language) with associated menu items.
- Add the Language Switcher module in the header.
- Test full navigation: start in English, switch to French, verify URLs and content change correctly.
This project simulates a real-world multilingual site — the hotel chain example is a common Joomla use case.
What's Next
Now that you can build multilingual sites, you are ready to learn about the most essential Joomla extensions:
Continue to Lesson 24: Essential Extensions — Learn about Akeeba Backup, JCE, K2, RSForm, and other must-have extensions.
Related lessons:
- Joomla Plugins — Understand the Language Filter plugin
- Joomla Modules and Positions — Position the language switcher module
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro