Translating FreePBX with Weblate
2024-06-12 - As part of the ongoing effort to centralize all FreePBX development on GitHub, the Weblate service being used to accept translations for FreePBX is moving hosts and will be reconfigured to use GitHub single sign on. Until this migration is complete, the project will not be able to receive translations.
Watch this space for updated instructions when the Weblate migration is complete.
Weblate is a tool that allows you to submit translations for FreePBX modules and for the Sangoma FreePBX team to manage them. This way, as modules are developed or updated, translations to different languages can quickly follow. Weblate also allows us to control who can submit translations, and to easily review contributions for accuracy. Currently Weblate supports over 150 languages and provides reports that allow us to quickly see the status of translations of the entire project, down to the module level.
The image below shows how much of FreePBX has been properly translated.
What You Need to Get Started
If you are interested in providing translations for FreePBX, you will need to first submit a Code Submission Agreement. This gives the FreePBX Project the rights to use your translations. Please follow the instructions on this page: Code License Agreement
You will also need a FreePBX account and username if you don't already have one. You can register for a FreePBX user account here: Register | FreePBX - Let Freedom Ring
When your agreement is approved, you will be able to log in with your http://freepbx.org username and password to Weblate and begin translating FreePBX modules into the language of your choice.
How to use Weblate to translate FreePBX
The modules in weblate track the current stable release of FreePBX. Typically, we have a stable release and one in development. When the release in development is finalized, the translations in here will be merged into the new release. As the project progresses we are trying to keep translations as stable as possible, so we try to not change the phrases and sentences that need translations in between FreePBX releases. If some sentences in the software code are modified or deleted in a module, your translations of those sentences are not lost. They instead go to the bottom of the *.po file as commented translations that can be used later if the sentence is brought back into the production code.
The steps for translating FreePBX are simple. You can either work by module or by language.
Selecting a Project
If you wish to work by module then you just need to navigate to https://weblate.sangoma.com. You are then presented with a list of projects and their translation statuses like the picture below:
From there you will select what part of FreePBX you wish to work with.
FreePBX - The core FreePBX modules (Highest Priority)
FreePBX Commercial - All Sangoma Commercial Modules (Second Highest Priority)
FreePBX Contributed - Modules that are hosted by FreePBX but do not have active development (Lowest Priority)
Selecting a module
Once you click on a project you are then presented with a list of modules like the picture below:
Selecting a language
Alternatively you can work by language by navigating to Languages
Once you are in a module you’ll have several translating options available to you. First off you’ll see the translation status for each language for this particular module.
Translating
Once you click on a language, you can begin adding and editing translations per sentence.
While you are translating, the system will put your language in a locked state. This will prevent others from editing it for around 10 minutes.
Final Thoughts
When you are finished submitting your translations, your part is done. The system runs updates every 3 hours. It will pull down any new translations that need to happen and send your translations off to our publishing system. You translations will then show up in the next release of the affected module(s).
Translations also show up under the module called "Localization Updates". This module is updated manually at the moment on a periodic basis (we try to do it each week).