Extending Drupal World Domination with better multilingual support

In 2003 I selected Drupal to replace an aging PostNuke system on a Hungarian web developer community site (weblabor.hu) that I helped ignite a few years before. Of course I needed it fully translated to Hungarian. If you were using Drupal back then, you may remember that adding a new language to your site meant running ALTER TABLE queries on your locale tables to add new columns, editing your settings file and handling database dumps of your translations (which was the only way to share them too).

Drupal has come a long way since then.

Drupalcamp Stockholm recap (with slides)

I just got back from Drupalcamp Stockholm 2011, which was an action-packed two days for me to say the least. Due to a busy schedule, I was only able to arrive last minute the night before and leave just right after my sessions on the second day. Once again I decided to do a multilingual session all over again starting from the drawing board. There are lots of new things happening plus I think I'm developing better models to explain the components involved, so I think it was a good idea to build a new presentation. I've also presented on Drupal Security on behalf of the security team, which I hope turned out to be a very informative introduction to some of the most important things to look for when securing sites.

Drupal 7's new multilingual systems (part 6) - Blocks and the introduction of textgroups

With the basics of node and site settings translation behind us, we are getting to the more complex parts, at least in terms of the user interfaces involved. While with node translation you get a tab on each node to translate it (regardless of setting up translation sets or using translatable fields), and with settings translation, you get quick jump links, the subsystems that work with textgroups will require a better understanding of how the Drupal systems relate.

Three ways to think about language support

When people want to have language support for their site, they typically think of one of three things:

  1. Being able to mark an object as in one language. With node translation this was achieved by language enabling nodes.
  2. Being able to mark an object as in one language and relate it to others as being a translation set. For nodes, this is supported by Drupal core's content translation module.
  3. Finally, being able to translate pieces of the object that need translation and leave the rest alone. Load the right language variant of the object dynamically as needed. In the case of nodes, this is achieved with the contributed entity_translation module (formerly translation.module).

The first case is great when you don't need to translate the object, the second is great when you need to use translations in different contexts (for nodes, you can maintain a separate comment set, put in different menus, etc). The last is great when you want to maintain the object the same way regardless of language. This might be great for an e-commerce site. Read part 4 of my blog post series for exact details for nodes.

Applying this to blocks, the i18n module provides functionality (1) and (3), but not (2) at this point. Translation set support is being implemented for various objects (menus, paths, etc. are already covered by i18n), but not blocks yet. (1) is very simple to use, but (3) will be a real pain if you don't read this blog post...

Drupal Internationalization Sprint in Berlin, May 11-15, 2011

While Drupal improves its multilingual features with every version and there were numerous improvements with Drupal 6 and 7 especially, there are still lots of things for which contributed modules are needed, and multilingual support is not consistent (neither in some cases usable) with these modules. There is sizable customization and glue-code building required.

Internationalization Sprint Berlin logoKarsten Frohwein thought to take these problems and organize a group of contributors to take a deep look at them, conceptualize on better solutions and do actual implementation in a concentrated environment. Thankfully, as with great ideas, he got lots of support from companies and individuals interested, so the Internationalization SprintCamp is a go between the 11th and 15th of May 2011 in Berlin. Key contributors are being confirmed one by one, so this event is promising to be a great and high energy one for improving multilingual features and fixing bugs. There is place for up to 20 people, so we are looking for developers who can join and help. Contact Karsten through the Impressum page or leave a comment here with your contact information (such as drupal.org username or user URL).

The sprint is sponsored by the German Drupal-Initiative e. V., Comm-press, undpaul Drupal Development, Acquia and others. We are planning to do couch-surfing to reduce costs and increase fun. If you'd like to help sponsor, contact Karsten.

Ps. we will hang around in the #drupal-i18n IRC channel throughout the sprint, and distribute information and guidance for anybody who'd like to join and help virtually. See http://drupal.org/irc for more information on Drupal's IRC channels.

#translatable, the new contender in the Drupal multilanguage space

I just noticed the new #translatable module popping up via a note in a Drupal issue. Historically there was i18n module, which provided the de-facto way to build multilanguage sites. Then through some smaller modules, competition and somewhat different thinking came in with localizer module.