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 [url=http://freepbx.org/trac/changeset/6725]6725[/url]. 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 [url=http://freepbx.org/trac/roadmap/]roadmap[/url] the following text says it all: [b]Looks like we have a winner! I18n.[/b]
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 [url=http://freepbx.org/trac/wiki/I18n]I18n[/url].
And now the announcement (or should I say Plea?)
[b]We need more translators![/b]
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.