I recently got the chance to implement Drupal's multilingual capabilities on a major client site. Drupal has some of the best functionality around for localizing & translating a site, but it does take quite a lot to understand & configure. We will host a series of articles on this, entitled 'language lessons', starting on ... how to get started!
Getting started with multilingual Drupal 7
The first places to visit when getting started with languages in Drupal are the Drupal.org handbook page and Gábor Hojtsy's blog. Among other things, Gábor heads up the multilingual initiative for Drupal 8, which will turn Drupal into a truely multilingual CMS, and he has literally written the book on internationalization in Drupal.
I worked my way through those two online guides, soaking up as much knowledge as possible, and then spent a few months in amongst the code to ensure our client's website would be as true to our strapline - 'perfect Drupal websites' - as possible. If you need to implement any kind of internationalization (otherwise known as 'i18n' for short) or localization (or 'l10n'), you will need to read through those guides too. But I wanted to share some lessons that I learnt along the way. Some of these will be from a perspective that must be considered before hitting the technical details, others subtle details hidden in the depths of the plethora of modules required to make internationalization possible in Drupal 7.
I will aim to cover the following in this series:
- Consider the workflow & requirements (see parts one and two)
- Language first development (parts one and two)
- Entity (field-level) translation, as opposed to node-level translation (part three)
- Workflows & tools (part four)
- Hooks for customising functionality in bespoke module code, including fallback languages (part four)
- Common pitfalls (part four)
What challenges have you faced when making multilingual or localised sites in Drupal? Let us know if you would like us to write about any areas in particular that are not well covered elsewhere.