Today I started to rehearse for my role in our Hair musical performance, which is planned for around May 2008. Although I just had some singing preparation today with our professional music teacher, I am excited already. Being an amateur actor and then an amateur musical singer by hobby for around 20 years now was one of the best things that happened to me in life. Being on stage is so rewarding, and because I am of the easygoing performer type, I get fun roles to play.
As a maintainer of Drupal's locale module I try to find creative ways to help people localize their sites. Our focus in Drupal 6 was on more features for content translation and interface translation imports, while the built-in locale interface was nearly untouched. We even complicated it a bit with the textgroups feature which might or might not get used by contributed modules at the end.
In a previous post, I announced the new localization client module which strives to solve some of the problems with the built-in locale module translation interface by bringing an AJAX powered widget close to the site translator. While this module is a very good looking way to solve the translation problem, it has two weaknesses:
- You can only translate what you see on the site pages you browse by. Some text is only shown in emergency, when form values are not filled properly, when some backend data is not accessible, etc. Some text is even restricted to different user groups. So you can only translate the most visible parts of your site.
- Closely connected, but slightly different issue is that you cannot translate strings with plural versions at once. If your page shows 3 years ago, you can translate @count years ago but not 1 year ago (the singular form) or @count years ago and friends, which are used when the language in use has more then two plural forms. The Drupal database gives no clue in relating these for translation, so we cannot help users intending to translate all these at once.
Although locale module provides a more complete solution, allowing you to have a translation percentage overview as well as filter untranslated strings and work on them, you are still restricted to the same old, hard to use interface. If you'd like to improve on the interface issue, you can switch to use potx module to extract Gettext translation templates from your modules, then use some desktop Gettext editor which suits your taste and then import the translation back to your site. For most people though, the "favorite Gettext PO editor" question is like asking about the best time to go to the dentist. If we can do better, then why not?
Jamie Winchester and Róbert Hrutka formed their band six years ago, but they become well known in Hungary (as far as I know) after one of their songs was used in a local mobile carrier's commercial. Although that was quite some time ago, they release thrilling songs ever since, and the quality of their work is constantly amazing for my ears. Here is one one of their fine songs, titled "Take me home".
We organized Drupal Conference Hungary 2007 for this past weekend. After last fall's first local conference, this was our second big event in Hungary. The conference had more then 150 registrants, so we needed to close the registration in advance to let people have seats in the session room. Unfortunately this year we were not so close to the 90% show up percentage we had last year, so the room was not fully packed. However, this was the only negative point I was able to spot.
Those who have been there, enjoyed sessions about the Drupal 6 improvements (presented by myself), debugging Drupal code with Károly Négyesi (the infamous chx), setting up a news site with core modules and improving the experience with Views, Panels and friends (with István Palócz). Kristof van Tomme presented our single English session about a small business (brochure) site use case and he promoted the Szeged user group as well as plans to organize an international DrupalCon in 2008 in Hungary. Áron Novák presented his FeedAPI project developed under Google Summer of Code sponsorship, while Gergő Lippai and ninja shared performance tips for Drupal sites, from the perspective of criticalmass.hu, the biking event website, which needs to work under extreme high loads around the events. János Fehér presented the theme improvements in Drupal 6, and our last slot was reserved for lightning talks. Márk Tolmács stepped up to present about running Drupal above a JBoss Java application server and the Caucho Quercus engine. This was a pleasant surprise for all of us, as he showed up with his suggestion an hour before the slot started. István and I also shared some module tips with the attendees, before the closing remarks.
I promised to share my slides (which are in Hungarian), so feel free to download the PDF: Drupal6.pdf.
All-in all it was a very good event, and I hope we balanced breaks with sessions properly, giving time to discuss Drupal issues and to connect with people (see some more photos by clicking on the photo above). I know I answered lots of questions in between sessions and made some people smile with the tools I presented in my sessions.
We as organizers are most grateful for our sponsors, who made it possible to organize this event. The Drupal Association was our gold sponsor, and some local companies and communities, as well as a few individual sponsors helped the event happen. Thank you all for making this conference possible!
Whenever you spot an untranslated string on your Drupal site, you need to:
- Remember the string or at least some unique identifier from the text.
- In Drupal 6 go to Administration - Site building - Translate interface - Search tab; in Drupal 5 go to Administration - Site configuration - Localization - Manage strings tab.
- Enter what you remembered in step 1 and hit submit.
- Identify the string in the result list or if it is not found, go back to step 1 and find an actually unique part of the string to search for.
- Hit Edit on the item in the result list if found.
- A form with all languages are displayed, fill in the translations you want to provide.
- Go back and check whether the translation was used properly.
This is quite time consuming and error prone. Of course a lot of people suggested that we should have a solution which gets closer to the user, but it was not implemented before. So here I am to tell you that there is a solution for you which just works and eliminates nearly all of the steps above.