I am again happy to announce that more translations were completed for getgnulinux.org: Dutch and French.
Many thanks to Anthony Verez, Bruno Bord, Bruno Ethvignot, Fabián Rodríguez, Joseph Maillardert, KIAaze, Laurent Richard, Loïs Di Qual, mauron, nh2amine, Olivier Cleynen, Stéphane Aulery, and Thiébaut Hillenweck for realizing the French translation! The French translation had been stuck at 77% for a few months, but mauron gave it a final push about a month ago.
Also many thanks to AstroFloyd, Johan Vervloet, and Tim Speetjens for helping with the Dutch translation! The Dutch translation was completed by AstroFloyd yesterday, who also spotted a few typos in the original English text which have been fixed as of today. I don’t know who have been responsible for 32% of the Dutch translation, as there were no credits for Dutch on the Credits page before AstroFloyd joined. I did manage to extract a few names from the old PO files. Forgive me if your name is missing, but do send me a message so that I can correct it.
The getgnulinux project had come to a halt for about 6 months due to my 5 months internship to which my focus was drawn. But the internship has come to a successful end in December 2012 and I have some spare time on my hands once again. So there is some catching up to do because the translators didn’t stop contributing to the project, for which I’m grateful. I’m pleased to announce that two more translations were completed:
- Many thanks to Bruno Bacelar, Ezequiel Santos, Higor, Julio Mario Jr., Nadia Stabile, Rafael Ferreira, and Tiago for they have helped realize the completion of the translation into Brazilian Portuguese back in July 2012.
- Also many thanks to Bastián Núñez, Emilio Sepúlveda, Gustavo Narea, Jonathan H. Fernández, Martín Carr, and Miguel L. García for helping translate the website into Spanish. The Spanish translation had been stuck at 66% for a long time, so I was very pleased when I got an email from Bastián Núñez on February 5th telling me that he was working to complete the Spanish translation. Sure enough, exactly 5 days later I got an email from Bastián saying that he completed the translation.
Other translations have undergone updates as well. These include Arabic (56%), German (53%), Finnish (13%), French (77%), Interlingua (30%), Italian (74%), and Russian (85%). And a new language was added: Lithuanian (28%). I can’t help but wonder which will finish next.
It’s unbelievable, but true. Yet another translation for GetGNULinux.org was completed today! GetGNULinux.org is now available in Chinese (中文), more specifically Modern Standard Chinese, also known as Mandarin. Who knows how many more people we can reach now?
Many thanks to Sayson Peng, leonfeng, Jason Lau and others who worked on the Chinese translation! We couldn’t thank you enough!
Jason pointed out that the Chinese translation requires more improvement (grammar, spelling, fluidity, etc.) and that he will continue to make improvements where he can. But this kind of work shouldn’t be done by just one person. So if you are fluid in Mandarin and happen to have some spare time on your hands, please consider helping out with improving the Chinese translation. Head over to our translation section to get started.
The completion of the translation for Standard Chinese also opens the doors for other variants of Chinese. Transifex has a clone feature which makes it possible to copy all translations from one language to a new language for a project. Cantonese anyone?
Two posts back I was writing about my plans to implement language negotiation for getgnulinux.org. I’m happy to announce that its implementation was completed today.
“Language negotiation is a function of the HTTP protocol which lets a server choose among several language versions of a page, based on the URL and on preference information sent by the browser (specifically in the
Accept-Language header).” – http://www.w3.org/International/questions/qa-when-lang-neg
Before language negotiation was implemented, http://getgnulinux.org/ would always bring the visitor to the website in its default language (i.e. English). Now, when the language preferences are properly set in the visitor’s web browser and the website is available in one of the preferred languages, the website will automatically display the page in the visitor’s preferred language. It will only do this for languages for which the translation is complete (at the time of writing this, these are Hebrew and Asturian). This was a conscious design decision – it wouldn’t be very nice to display a page which is only partly translated.
Other changes came along with the implementation of language negotiation. The language menu on the top of each page now only shows the languages for which the translation is complete. Incomplete translations are still accessible from the “More languages” item in the language menu. This link brings the user to the new language selection page which gives an overview of all translations and their status.
The implementation of language negotiation was actually very simple. Language negotiation is a common feature for websites which means that there is a good chance that someone has already written freely available code for it. And indeed, someone has. There is HTTP::negotiateLanguage from PEAR, PHP’s own structured library of code. However, I used a modified version of that function which I got from Matthew Somerville’s website. The reason I chose Somerville’s version is because apparently PEAR’s version fails on one criterion (see Somerville’s page for details). This also allowed me to adapt some code to GGL’s code which made implementation even easier.
With just two months passed since the completion of the Hebrew translation, another language can be added to the list of completed translations for GetGNULinux.org. I’m very happy to announce that the Asturian translation is now online! Many thanks to the Softastur translators team, and especially to their member Iñigo Varela who took the translation to Asturian upon himself. At first I was skeptic when he told me via email that he could do the translation in one or two days. Imagine how surprised I was when I got an email from him the very next day, with the words: “All translations done!”
In fact, Iñigo did the translation of getgnulinux.org in collaboration with Marcos Costales (from Softastur) back in 2009. But the getgnulinux.org project was stalled and Iñigo and Marcos decided not to wait longer. Marcos downloaded the structure of getgnulinux.org, Iñigo translated the .html files, and they hosted it at faiteconlinux.softastur.org in collaboration with Mikel González (also from Softastur).
Last week I noticed visitors coming from that website which brought me to their Asturian version of GetGNULinux. I was very surprised to find a fully translated GetGNULinux in a language I, at that point, never even heard of. What’s even stranger, is that there were no traces of translation files for Asturian to be found in the original GGL repository (but that makes sense now, knowing that the .html files were translated manually). So I contacted the Softastur translators team who responded very quickly. Iñigo offered to translate it again using Transifex, Mikel provided an icon of the Asturian flag, and the next day there was http://getgnulinux.org/ast/.
This is yet another big step forward in encouraging more people to try Linux. More translations coming soon (I hope)!
I am happy to announce that the very first translation of GetGNULinux.org was completed today! Many thanks to Yaron Shahrabani, a Hebrew translator from Israel, who started the translation for Hebrew exactly one month ago. That he was able to finish the translation by himself in just one month truly amazes me. And that for a language that is so very different from English. Like Arabic, Hebrew is written from right to left. Yaron had a helping hand in improving the display for right-to-left languages as well. Some images needed to be updated for right-to-left languages.
It turns out that Transifex, the new translation platform for GetGNULinux.org, is working pretty good (at least, I have not received any complaints). Some kind individuals have joined a translation team to help out with the translations. Since the switch to the new translation platform, translations for a few new languages have been started. These include Bulgarian, Esperanto, Hebrew and Interlingua. I’m looking forward to the completion of more translations so we can reach an even larger audience.
There used to be a trimmed edition of GetGNULinux.org which contains less pages. For the trimmed edition, some translations had been completed already. Translations for the trimmed edition are now simply being used for the full edition. I have not had the time to implement a trimmed edition yet. Mainly because I haven’t figured out the best way to implement this yet. Until then, the full edition will be used to publish any translations.
It’s been a while since my last update. These last weeks have been a busy period for me with other projects I’m working on and school just having started. Last night I felt like working on GGL.org again and I spent about 4 hours on merging the rest of the translations (amongst other improvements to the site). It turns out I initially merged only half of the original translation files (doh!). Hence a lot of the translations were missing on the website. I’m pretty sure I merged everything this time, so head over to getgnulinux.org and see if all your translations are there. Note that some translations might be marked as fuzzy which won’t be displayed on the website.
I’ve also spent some time testing this new translation system called Transifex (thanks Vyacheslav for the tip!). I must say it’s a great translation system which, unlike Launchpad Translations, has good support for fuzzy translations. It even has an auto translate feature. The only downside is that I’m missing a few basic functionalities, but that won’t be a deal breaker (unlike the lack of support for fuzzy translations).
Another translation system I tested is Pootle. Pootle seems like a great system as well, but it was too much trouble for me to set up. I had it running on the web server eventually, but then there were problems with dependencies that could not be satisfied. Not to mention that it would have to run on our server which would mean even more system load and maintenance.
So I’ve decided to give Transifex the green light. All translation files have been transfered to Transifex; the project page can be found here. At this moment only authorized users are able to submit translations. I’m still figuring out how to allow anyone to submit translations like it is possible with Launchpad Translations. For now, translators can create an account on Transifex and join a translation team which gives you permission to make translations.
I’d be glad to hear from you translators whether the new system works for you.
Launchpad Translations isn’t the right translation system for getgnulinux.org after all. At this moment, Launchpad does not support “fuzzy” entries. This is bad news, because this means that translations will disappear from Launchpad Translations each time the English texts are changed.
So what are those “fuzzy” translations? The project’s original English texts are stored in a PO template (POT) file. Whenever some English text in the POT file is changed, the corresponding translations (stored in separate PO files) are marked as “fuzzy” by gettext – the software used for creating and updating PO files. Fuzzy translations need to be revised by the translator because the original English text has changed.
The PO files for the project are automatically loaded into Launchpad Translations. Ideally, fuzzy entries that are loaded into Launchpad should be marked as “Needs review” so that the translator can update her translation. Sadly, this is not the case. Launchpad currently has no support for fuzzy translations, and as a result fuzzy entries appear as untranslated. This means that translated entries will be removed from Launchpad each time the corresponding English text is changed. As described in bug #493084, this is a conscious design decision.
Launchpad Translations is a great tool, but the lack of support for fuzzy translations is a real problem. I will start looking at alternatives that do have support for fuzzy translations.
The language files from the GLM svn repository have finally been imported into Launchpad Translations. You can see the progress of each language with the Translation overview on Launchpad (click on “View all languages”).
The translation files had been in the GGL bzr repository for some time now, but they weren’t being imported by Launchpad. In order for the translation files to be automatically imported, one must follow the Import policy. This policy describes the following rules when uploading translation files:
- The file must be in GNU gettext .po format.
- Translation files should be in the same directory as the template to which they relate.
- The translation files should be named for the appropriate language code: e.g. pt_BR.po for Portugese as spoken in Brazil or fr.po for French as spoken in France. Launchpad only accepts languages that have an ISO 639 code.
The second rule was a problem. PHP looks in the folder `locale/xx_XX/LC_MESSAGES/` for language files and this can’t be changed. Here `locale` is the directory for storing language files, `xx_XX` is the appropriate language code, and `x.mo` is the compiled .po file. At first I put the .po and .mo file of a language in the directory `locale/xx_XX/LC_MESSAGES/`. As a result, Launchpad could find the language files, but could not import them.
After some asking around on the #launchpad IRC channel I finally found the solution. As PHP only requires the compiled language files (*.mo) to be in the `locale/xx_XX/LC_MESSAGES/` directory, I moved the template file (getgnulinux.pot) and all language files (*.po) to a directory `locale/getgnulinux/`. I also changed the PHP code so that the language files are named for the appropriate ISO 639 language code. After these changes, translations would still work (PHP still has access to the .mo files) and Launchpad could now import the translation files because all three rules are met.
The new translation system has been successfully implemented. Anyone can now
start using Launchpad Translations to help translate the “get GNU/Linux!” website.
I’ve requested the language files in .po gettext format from Olivier Cleynen. Until he sends me the these files the website will only be available in English.
I’m also working on improving the layout of the website (preview). I’m applying some new styles with the use of CSS3. These include web fonts, rounded corners, transition effects and drop shadows. I’ve started working on the headers and on the navigation bar. And because I’m deeply in love with the navigation bar of the new gnome.org website, I’ll probably use that design for the new navigation bar. One major improvement in the headers is that the title text “get GNU/Linux!” – originally part of the blue header image – is now actual text so that the title can be translated as well.