Localisation is at Joomla's heart. Currently supporting over 75 world languages for Joomla 3, Joomla! speaks more languages than any other content management system. Joomla 4 is launching today with over 20 language packs available. Many more will follow quickly with the community's help.
L10N is the numeronym for localisation - there are ten letters between the L and the N. Another numeronym you may see used in Joomla is a11y, which is used when talking about accessibility. L10n-hearted describes Joomla well - localisation is one of the core features of Joomla that is done well, and makes deploying websites in your local language easier, as well as providing the ability to create multilingual websites without the need for additional specialised extensions.
Definitions for lion-hearted in English include bold, intrepid, brave and determined - all attributes I feel Joomla exudes with the release of Joomla 4 Stable. The convenience of lion in English being suitable for the analogy of course is somewhat lost in translation to other languages, but I hope you get the idea there: Joomla's strong localisation features are a key strength of Joomla.
For this article, we're going to talk less about making a multilingual site, and more about how you can contribute to translating Joomla in your local language so you can deploy a site for your local audience.
What needs to be translated
There's a variety of content that needs to be translated and localised for use with Joomla. Joomla's using Crowdin Enterprise for managing localisations across the project. A number of leading extension developers are also using Crowdin as their localisation tool, and you can see those extensions also listed under Joomla's Crowdin project page as related projects.
Joomla CMS is the project for the Joomla 4 core language packs. Assistance bringing the 85 languages up to completion so they can be deployed is needed, and we'll go into that more further in the article. The core language packs are where all the language strings for the Joomla CMS are translated from the en-GB base language into installable language packs. Site implementers can then install the finished packages in Joomla. They can then be set to be the default languages for a website, or become available as one of the installed languages used for creating a multilingual Joomla website.
Joomla! Official Extensions
Joomla has a few official extensions that are released by the project to do some specific tasks. This project allows translators to localise the strings for these extensions, which currently include:
- Joomla JEDChecker - A Joomla extension to check components, modules or plugins for possible problems for submission to the Joomla Extensions Directory (JED). Extension Developers use this component when building new extensions to allow them to check that there's minimal technical issues with their submission before they submit their extensions for review. Developers can download the JED Checker from GitHub.
- Patch Tester - This component is used by those helping to test Joomla's patches before they are merged into the main Joomla branch, and then included in the next release of Joomla. To help with patch testing you can download the Joomla Patch Tester from GitHub.
- Language Pack Component - This is the component that generates the Language Packs and provides information regarding the packs for the Joomla Language Packs page at https://downloads.joomla.org/language-packs. This is a good example where you can see the impact of languages not being at full localisation - if you change the language on the Joomla Downloads page, you can see where newer strings have not been translated yet. If you're looking at getting involved with translation management, you can find out more about creating your own language packs using the Language Pack Component on GitHub.
- Joomla Install From Web Extension - Inside Joomla, you have the ability to use the Install from Web extension as an installation option on your site. This extension connects users to the Joomla Extension Directory (JED), where they can choose extensions to install from the JED. You can download the Install from Web extension from Joomla's Extension page, though it is included in the Joomla release packages.
Joomla! Official Websites
This project translates parts of Joomla's main website pages into various languages. Of note, the text for the Joomla 4 Landing page forms part of this project. If you would like to promote Joomla 4 in your locale, you can help with translating this project.
Joomla! Official Website Template
Across Joomla's official websites, you can see a consistent template used across the brand. This project covers all the strings used to make the template multilingual, so visitors can easily switch languages and access the sites in their own language.
Joomla! Marketing Resources
This project is the translation of the Joomla 4 brochure, which you can find localised versions of at https://joom.la/J4brochure. To have a version created for your language, translate the strings for the brochure in the Joomla! Marketing Resources project and then reach out to the Marketing Department.
When you're in the Joomla Crowdin, you'll see various extensions listed as part of the project. These are all managed by their respective developers. You can begin to contribute translations to all of them like you can for the Joomla projects. Contact individual developers to find out more about their localisation projects.
How to contribute crowdsourced translations
Contributing translations using crowdin is quite easy:
- Sign up to joomla.crowdin.com
- Select a project
- Select a language
- Start translating!
Sign up to Crowdin
Registration to translate on Joomla's Crowdin Enterprise site is as easy as you'll find on any other website. Crowdin's OAuth API allows you to easily connect to existing logins. For example, if you're also contributing to Joomla! On GitHub, you can connect your Crowdin login to GitHub.
If you've previously used Crowdin to help with Joomla 3 translations, you will need to separately sign up to joomla.crowdin.com as the user
Select a Project
Once logged into joomla.crowdin.com you'll see the project dashboard, showing all of the projects that are available to translate. Click on a project to then see what the status of each localisation is for that project.
Select a Language
When you go into a project, you'll see all of the available languages ready for translation. To start translating, hover on the language and then click on the "Translate" button that appears.
The progress bars indicate two main aspects of the translation process:
- Blue lines indicate the percentage of strings for this project that have been translated for that language. Once translated, proofreaders then process the suggested translations and approve them - it's a double check in case something has been suggested by accident for that language. An example I've found as a proofreader has been that some translations have been suggested for the wrong language as the translator was not in the correct language when they started suggesting phrases.
- Green lines indicate that the proofreader has approved the suggested translations made by translators for that localisation. Once the proofreader approves the translations, the approved translations then move into the production phase, where the project's translation managers can then package up the translations for the project and create packages that can then be installed by users or implemented by Joomla's webmasters team on the various Joomla website properties.
The progress on translations varies between projects and languages. If you're fluent in a particular language (especially those showing blue lines) and can translate to your local language from English, even translating a few strings is a helpful contribution to the project.
When you click translate, you'll be taken to the Crowdsourcing language page, which needs a brief tour to know what you're doing.
- On the left is a list of all the strings from the language files for the project that need translating. You can filter the list for various parameters, but by default the list will show you all of the strings available, with the untranslated strings at the top of the list (indicated by the red icon before them. Once translated, the icon is green).
- Clicking on a string you will see it load in the Source String box. This is the full text that you need to translate. You will see at times various highlighted items, like the green highlighted %s in the screenshot below. When you see some of the source string highlighted, these parts of the string do not need to be translated as they perform a system function that will do a replacement in the code with a variable as an example.
- In this area, type your translation for the source string.
- You may sometimes see suggestions for some strings in this section. If one is suitable, you can click on it to select it as a suitable translation for the source string.
- If you find there's an issue with a previously suggested translation, or have questions about the source string's context that you want to clarify, leave a comment in the comments sidebar on the page. Translation managers will then be notified and will either provide clarification or resolve the issue with the source string if required.
- Once you are happy with your translation for the source string, click Save and the system will mark that string as Done and move on to the next untranslated string.
Once you've finished translating all the available strings (or as many as you have time for in the session) you can exit the editor and return to the project by going to the menu at the top right of the screen and select "Quit Editor".
This article only covers the basics you need to know to get started contributing crowdsourced translations using Crowdin. The best way to get familiar with the process is to jump in and contribute strings.
Over the past year, I did just that during Bugs & Fun @ Home weekends, and though translating en-GB to en-US and en-AU was more copy and save than true translating, participating in the process has led me to explain the process in this article to get more people involved.
Becoming a proofreader
Seeing only blue lines for the progress bar for your language?
A number of languages do not currently have active proofreaders assigned, so if you see your language has a high translation percentage but not much is approved, perhaps consider reaching out to join the Joomla Translation Program Team.
Proofreading involves checking the suggested translations are correct for your language, and if they are, approving them. If they're not, you've got the ability to make your own corrections, as well as discuss the corrections with the translator who suggested them.
Language packs only include proofreader approved translations, which is where the need for proofreaders is critical going forward to make completed translations available for use in various parts of Joomla.
In conjunction with the proofreader role, language managers take the approved translations once step further by maintaining the language packs for users to download.
Translating Joomla Documentation
Joomla's documentation also needs to be translated. Due to how the documentation is content created in Joomla's documentation wiki, it works more like multilingual content in Joomla, and needs to be translated in place as translated versions of each page.
That's obviously a whole area of fun that we'll leave for another article, but if you're interested in translating Joomla's documentation, get started here.
Joining the Translation Program Team
The team charged with managing Joomla's translations has been reconfigured in 2021. The new Joomla Translation Program Team now joins together the previous translation teams under the Programs Department and works across all of the departments to organise activities relating to translating Joomla.
Helping With Translation
- Setting up your Crowdin login
- Getting started on translating Joomla's Documentation
- How to Translate Joomla and JDocs (August 2018)
Creating Multilingual Joomla! Websites
By accepting you will be accessing a service provided by a third-party external to https://magazine.joomla.org/