Home / UX improvements in Drupal 6: Internationalization

UX improvements in Drupal 6: Internationalization

This is the first blog post of a series of posts that will examine the Drupal core contributors user experience (UX) improvements in Drupal 6. My intent is to help shed some light on the kind of user experience improvements the core contributors are good at and the kind they need help with. I will identify the number of contributors and the number of patches, and I will also help the community understand how we can best make further user experience improvements in Drupal 7. There are currently thousands of designers and other user experience professionals who are capable of helping improve the core but who need to be connected with the core contributors who already make these UX improvements. This blog series is a first step towards connecting UX contributors with the existing core contributors.

The most important user experience changes in Drupal 6 were in internationalization and localization, particularly in improved support for Right to Left languages. The diagram above right shows the growth of the Internet in non-English speaking languages and why it was critical that Drupal support internationlization in the core. Dries blogged about internationalization being a killer feature back in August.

Many of Drupal's core developers are not native English speakers, and this has helped tremendously in our adoption of internationalization in the Drupal core. Here's a list of some of the key contributors which spans thirteen countries: Gábor Hojtsy from Hungary, Konstantin Käfer from Germany, Steven Wittens from Belgium and Canada, Heine Deelstra from Netherlands, Jose Reyero from Spain, Dries Buytaert from Belgium, Jakub Suchy "Meba" from Czech Republic, Antony Simmonds "Asimmods" from New Zealand, Riccardo from Italy, Webernet from Canada, Yuval Hager from Israel, Yves Chedemois "Yched" from France, Mooffie from Israel, Nick Berendsen "Desbeers" from the Netherlands, Jiří Bernášek "JirkaRybka" from Czech Republic, Alexander Hass from Germany, Keith Smith from the USA, Zohar Stolar from Israel, Kentbye from the USA, Amnon Levav "Levavie" from Israel, Amr Mostafa "Alienbrain" from Egypt, Addison Berry "add1sun" from the USA, Angela Byron "Webchick" from the USA and Canada, and Simon Potter "Hazexp" from New Zealand.

Here is a list of 47 patches that lead to the addition of internationalization to Drupal 6. If I've mis-categorized some of these patches, or missed other Internationalization patches all together please let me know. I've categorized a list of over 1300 patch commit logs in a effort to develop these statistics. What we can conclude, is that we have a strong community of Drupal core contributors who understand internalization issues and have the skills to continue making improvements.

  1. #135533 by asimmonds: updated themes to work properly with new language options.
  2. - Patch #117826 by kkaefer: move the localization menu to site building.
  3. - Patch #128866 by Gabor, Steven, chx, Jose et al: new language subsystem.
  4. - Patch #128866 by Gabor et al: new language subsystem fixes.
  5. - Patch #72564 by Gabor: locale bugfix: undefined variable.
  6. - Patch #128866 by Gabor and erdemkose: make it impossible to delete the default language or the English language.
  7. - Patch #76588 by Gabor: made log messages translatable. Yay.
  8. #76588 patch by alienbrain: some localization-unfriendly watchdog() calls
  9. - Patch #137376 by Gabor: add language support to nodes.
  10. - Patch #128082 by Goba et al: Allow localization of built-in menu items.
  11. - Patch #139970 by Gabor: locale cleanup.
  12. #141482 by Heine: collapse custom language addition form by default, because it is an advanced form, not required most of the time, so can make people confused
  13. - Patch #142869 by Gabor: import interface translation files at install time.
  14. #143249 by Jose A Reyero: add language parameter to t() to make it possible to retrieve translations of strings for different languages, to send emails to users in their own language for example
  15. #144496 by myself: import translations for newly installed modules and enabled themes; as a side effect, improve usability of the module screen by performing module changes all at once
  16. #145748 by meba, after coding style fixes: disable the checkbox on the default language, so it cannot be disabled (the submit handler already disallows disabling it)
  17. #139970 follow up fix by riccardoR: LTR is the default behavior
  18. #147640 by Jose A Reyero with further cleanup by myself: add language code to localization functions
    This makes it possible to call these functions with a given language code when sending emails to multiple users with different languages in a request for example.
  19. - Patch #150344 by webernet: language fixup.
  20. #145737 follow up patch by yhager: include right to left styles for print.css
  21. #150554 suggested by kkaefer, patch by me: rename 'po' folders to the more user friendly 'translations' name
  22. #142280 by Jose A Reyero, yched and myself: Content translation support built on the existing node language feature
  23. #151410 by myself: allow modules to watch for the exact strings used on a page
  24. #141996 by Jose A Reyero and myself: translation block to switch interface languages by default, and even content languages, when a translation module provides the alternate links
  25. #164209 by mooffie: native language names were not shown in the predefined language dropdown for RTL languages
  26. #162324 by mooffie: keep previously default language enabled and only increment enabled language count, if we are in fact adding an enabled language
  27. #173227 by Desbeers: make language listing work early in the bootstrap, when modules are not yet loaded (fix a regression from a previous patch)
  28. #172262 by JirkaRybka: better globals handling in install system, so the choosen profile and language are remembered
  29. #173858 by myself: skip UTF-8 BOM when importing locale files
  30. #194595 report by hass, patch by myself: native language name is required, so we need to fill it in the updates - also omit it in user listing if the same as the translated language name
  31. #175876 by hazexp, webernet, keith.smith: unify module/theme/translation download links and include more pointers to these locations
  32. rollback of #112512: option labels should be wrapped, translations bugos with the default CSS can ship with other tricky solutions
  33. #205334 by hass: if more then 5 languages are available, use a dropdown not a radio button list (usability)
  34. - Patch #135533 by asimmonds: updated themes to work properly with new language options.
  35. - Patch #145671 by Gabor: import translation files when adding a new language.
  36. #82499 by Jose A Reyero and a little bit from myself: send emails localized in the language needed in specific situations, and centralize mail composing operations with hook_mail()
  37. #173227 by Desbeers: make language listing work early in the bootstrap, when modules are not yet loaded (fix a regression from a previous patch)
  38. #190283 by JirkaRybka and myself: fix installer localization and form handling
    - use a two pass localization process so localization is ready for the configure form and profile tasks
    - fix awkward form API workarounds which were introduced before we used a full bootstrap anyway
    - allow for more usable localized profiles by letting them skip language selection
    - lots of documentation improvements to profiles and the installer functions
  39. #154517 follow up by Desbeers: fix saving and updating language aware path aliases
  40. #145737 by yhager, documentation cleaned up by myself: add support for RTL CSS overrides and default RTL CSS override files for modules
    Note: properties, which are different in the RTL display are marked with /* LTR */ in default CSS files now,
    so maintainers remember that changing them should also have an effect on RTL CSS files.
  41. #147265 by z.stolar: RTL styles for Bluemarine
  42. #148943 by yhager: Right-to-left CSS files for Marvin and Chameleon themes, background image fixed by myself
  43. #145737 by yhager, documentation cleaned up by myself: add support for RTL CSS overrides and default RTL CSS override files for modules
    Note: properties, which are different in the RTL display are marked with /* LTR */ in default CSS files now,
    so maintainers remember that changing them should also have an effect on RTL CSS files.
  44. Patch #153364 by webernet: notices and RTL issue with book.module.
  45. #164451 by several people: Right to left (RTL) CSS styles for Garland, so Drupal can even be installed in RTL form from the start
  46. #174440 by kkaefer: properly translatable filter dropdown elements on user admin page
  47. #148084 by levavie, yhager and z.stolar: RTL styles for pushbutton, which completes RTL theme support in Drupal 6 core