Drupal related posts by Gábor Hojtsy.

Improve Drupal interface text step by step

Drupal 6 typoOur localization tools and approach help us a lot in making the Drupal interface better, but we did not make use of these great features so far. I hope to involve you in making Drupal 6 even better with two simple ideas, which only require very simple tools, so anyone can contribute.

A few days ago, a simple idea came to me, to export all the Drupal interface texts as one big text file and get people spell check and correct things in it, in the hopes that we can turn the fixes into patches. While there are tools for spell-checking Gettext files (the format we use for translations), admittedly, spell checking a simple text file can be easily done in most office suites, simple command line programs, and the fixes are easy to integrate into Drupal. Thankfully a few guys jumped on the idea, and the first batch of trivial typo fixes are now in Drupal 6, leaving space for debates on spelling and wording of some remaining parts.

The logical next step is to improve the wording of Drupal interface elements. Sometimes a shorter explanation would do better, because it would actually be more welcoming for readers, and at the same time in some places, the existing explanations leave some to be desired. We can much more easily spot these problem areas, when browsing around, so if we would have a tool to "touch up" interface text while browsing around, it would help our work. It turns out that what helps people localize sites, is also a time saver here. See how Localization client is useful for improving the English interface itself:

  • Install Drupal 6 normally, in English.
  • Enable locale module, add your custom English language. Go to Administer - Site configuration - Languages - Add language - Custom language. Add "en-my" with "My English" as native and English name. Provide "en-my" as path prefix. Back on the language listing page, choose this language as your default.
  • Download Localization client for Drupal 6 and enable as usual.
  • Now for every user with proper permission (including user 1), a tool will appear on the bottom of the page. This allows you to modify any text displayed on the page, effectively fixing the interface for yourself.

Of course the fun does not stop in making all these yourself. To save you time and effort when you update your site later and some string might get modified to serve users better, it is best to share results with the community. You can easily export "My English" on the Locale module export page: Administer - Site building - Translate interface - Export. From here, you get a Gettext PO file with all empty translations and the touch up you provided.

Now everything is left before submitting this in the Drupal issue queue, is to focus this file on the actual fixes. Using the command line msgattrib helper enables you to do just that: msgattrib "en-my.po" --translated > "Drupal-fixes.po". Unfortunately this part is not as easy as clicking around (for people without gettext tools on their machines), but let me ensure you if this is the only part stopping you from submitting considerable fixes for Drupal 6, let me know and I'll help you out or get someone to help you.

Of course because all the above is pretty much automatable and could even live on a central server, an enterprising folk could easily go and set up a temporary site for interface touch-up collaboration. At the end, the result of the group effort can be submitted. Although these suggestions will be made into patches at some point, this is again a good way to help out without knowing anything about writing Drupal patches.

Drupal presentations and security releases

Some time ago, Szilveszter Farkas approached me to be one of the presenters of the Free Software Nights meetings, of which the first event happened to be yesterday. I was talking about the Drupal history, the community and business environment. But it also turned out early this week that I am going to help out with the Drupal security releases, which also happened to be yesterday evening (my local time).

Comparison of your localization options in Drupal 5 and 6

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[2] 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?

Drupal Conference Hungary 2007 is over

Drupal Conference Hungary 2007 registration deskWe 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!

Localizing your Drupal site just got a whole lot easier

Whenever you spot an untranslated string on your Drupal site, you need to:

  1. Remember the string or at least some unique identifier from the text.
  2. In Drupal 6 go to Administration - Site building - Translate interface - Search tab; in Drupal 5 go to Administration - Site configuration - Localization - Manage strings tab.
  3. Enter what you remembered in step 1 and hit submit.
  4. 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.
  5. Hit Edit on the item in the result list if found.
  6. A form with all languages are displayed, fill in the translations you want to provide.
  7. 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.