Drupal's multilingual problem - why t() is the wrong answer

Drupal is a great system to run foreign language websites on. The core itself is written in English and modules and themes are expected to follow suit. For developers, very simple wrapper functions are available to mark your translatable strings and let Drupal translate them to whatever language needed. These are the famous t(), the less famous format_plural() and a whole family of other functions. See my cheat sheet (PDF) and the drupal.org documentation for more on this.

Then there is "the other side", whatever does not come from code. Drupal works pretty well and very consistent if you want all of those to be in a foreign language (i.e. not English), but not in multiple languages (any of which can be English at that point). Drupal only has direct multilingual support in nodes (+ fields of entitites) and for path aliases. But life with Drupal means you work with all kinds of other objects like blocks, views, rules, content types, etc which are not "language-aware".

Unfortunately for building multilingual Drupal sites, this is the biggest problem that needs to be worked around. The contributed Internationalization module attempts to fill in the gaps, provide language associations and different workflows for translating these language-unaware objects. This works to some degree, but is really not easy without much help from the modules implementing these objects.

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.

Let's build the Drupal 7 multilingual support matrix together!

While writing the Drupal 7 multilingual features posts and planning for the upcoming items in the series, I always wanted to figure out a framework for thinking of these items and to match core features and modules with contributed module functionality. Drupal 7 clearly is a multilingual system with additional contributed modules only. Also, there are so many modules involved that a summary of which Drupal objects they work with and what functionality they serve would be clearly beneficial to summarize in an overview.

Activity stream, graphing and new API building ideas for Google Summer of Code

Google is at it again! The legendary Google Summer of Code (GSoc) is organized again for 2011, and it should be lots of fun for students, mentors and organizations alike. GSoc is a summer-long activity for students where they can work on interesting and real problems with open source projects and earn money in the process to pay for college or whatever they wish.