An introduction and an announcement

Hi, my name is Mikael Carlsson and this is my first blog entry here on FreePBX.

I decided in December 2007 that I would translate FreePBX to Swedish as we were using it at our company and wanted some of the modules in Swedish. After reading up on the matter I filed a Feature Request #2571 that proposed a change in how translation should work for FreePBX as I was not that happy with the solution that existed. I also posted this in the wiki: NewLanguageSystem. There was some interesting discussion about the matter but it kind of dried out. I then decided to skip the proposal and go on with the translation as instructed on the wiki: OldPageI18n (note that this page is now obsolete).

Oh boy, that was a task, there were a lot of text strings that did not translate and there were a lot of spelling errors. I started to post the spelling errors as tickets and got back a plea from one of the developers that I should post the spelling errors as a diff file. I started to do that, and quite frankly, there were many spelling errors, so I posted about 15 tickets and as a result of that I got an e-mail from Philippe that asked me if I was willing to check in the changes to svn by myself. A couple of emails later I got access to svn so that I could commit my own changes. My status on the forum went from tadpole to Contributor. And I started to send in my fixed spelling errors.

I then discovered that there were a lot of places in the FreePBX code that did not enclosed text string with the proper _() enclosures. I asked Philippe if it was OK to fix that and I got a go for it. My status went from Contributor to Developer. So, over the next couple of months I fixed spelling errors, proposed changes in the code and provided some bug fixing as well. One of the weakest parts of the localization was that for us to fix a spelling error in a module we had to publish a new version of that module.
Philippe then created the module fw_langpacks. It is a cleaver module that pack together all languages files for FreePBX and distribute those as one module. No more worries about publishing new versions for modules after spelling errors anymore. Next problem that we discovered was that there were many places where FreePBX could not translate properly because of its modular nature and the way that one module can hook into other modules.
After relentless testing and collaboration with other FreePBX developers on this issue, we finally have the ability for a module to provide all its required translations from navigation menus used by the FreePBX framework to hooks inserted in other modules. For those translators who may have struggled with the incomplete solutions of FreePBX in the past, I encourage you to have another look now.

After over 6 months of translation, bug fixes, spell checking, text string enclosures and endless questioning in the freepbx-dev IRC-channel I finally did it, I submitted the change in FreePBX language selector so that Svenska was a language choice 6725. It was a great moment for me.

We were finally there. We had fixed (the FreePBX crew and I) so that FreePBX can be translated in full to an another language. In the roadmap the following text says it all: Looks like we have a winner! I18n.

I then decided to clean up the procedures so that other translators could benefit from our work. I submitted a feature request #3175 and started to work on that. It is in version 2.5, if you look at your modules/i18n directories you will find a template file for translations. I then updated the wiki to reflect this change I18n.

And now the announcement (or should I say Plea?)

We need more translators!

The remaining languages currently defined in FreePBX need an overhaul: French, German, Italian, Spanish, Portuguese, Hebrew, and Hungarian.

If you feel like helping out, please do so. All help is appreciated.

Russian translations are made by Alexander Kozyrev and he has done a wonderful job with that. We have also one person, lucas, submitting Spanish translations. But we need more people to help us with the languages. Or if you like to do a language not listed, please feel free to do that. Read on the wiki I18n for the guidelines.

Please do not hesitate to contact me if you have any questions on how to do the work. I am here for you.

Mikael Carlsson

Hi Mikael, thank you for your great work. I have translated almost all 2.4 modules in italian, i hope to release in one week the .po file updated for 2.5. I have also translated the CDR and FOP in Italian but changing directly the .php or .cfg files. Would be great also for these modules to benefit of gettext.

Hi Mikael

I would like to colaborate with the Spanish translation, let me know how may I help you. My native language is spanish
email: [email protected]


Rene Guerra
Miami, Fl 33166

First I’d like to say THANKS for all the work that Mikael has done. Not only did he relentlessly go through the code to help get every translatable string get properly formatted, and weed out dozens of spelling errors in the process, but he examined every dark corner of the code which led to big improvements in the ability to translated every bit of the GUI and to do such easily. I spent a good deal of time working out some of the areas that are a bit harder to address, but the investment will be well worth it in the end.

One example to help you translators better understand what this means is the feature code panel. Feature codes are supplied by many different modules but they all end up in the feature code panel. In the past, if you translated a featurecode in the paging module, for example, it would not show up translated when viewing in the feature code panel. You would have to add the translation to the feature code module (if that even worked). Another example are the Menu Names on the left navigation menu. In the past, you could only translate those if they were in the main amp.po file, which means a new module could not be introduced with its own translation.

We have addressed all these cases while trying to also maintain backward compatibility for old translations that did have their translations working by putting them in the amp.po file, although this is no longer needed going forward. It has been a lot of effort to get FreePBX to this point, we hope that the effort is rewarded by more of you translators getting on board and helping to provide the needed translations or updates to existing translations.


to answer your question, thanks for the offer. You should try to PM lucas to get in touch with him and help with the Spanish translations. If you don’t get a response, PM me and let me know and I will try to email him on his registered address. For privacy reasons, I can’t just provide that…

I can do the translation to spanish, let me know were can i start
[email protected]


I work on the French translation of the last FreePBX version 2.5. It already exists of French amp.po file. Using poEDIT I have translated the remaining text. The file is created. But it does not seem to work. Some sentences are translated and appear on the FrePBX interface, others not? Where is the problem? Is there another way to make the translation working.



What is the current state of the German translation? Anybody working on it? Otherwise i would be happy to contribute to the project and deliver a high quality German translation. Any advice from contributors who have done this in other languages?