If you saw my previous blog post then you will know that I recently created a tri-lingual site using Drupal 7. That post covered the configuration of Drupal core to allow both the user interface and the site’s content to be multilingual.
However, in the interests of completeness, I must tell part 2 of the story…
Although I had successfully configured core and I could switch between the supported languages, the site remained resolutely monoglot in various crucial places. This highlights the relative complexity of multilingual site-making with Drupal development, which requires an assemblage of modules to complete the process.
Core functionality is extended by the Internationalization project, which provides its own functionality as well as giving us an API that can be used for custom functionality. This is exactly what has been done by the authors of various add-on modules which further complete the multilingual capabilities of your Drupal site.
Internationalization module Overview
The module provides the following functions via submodules. You should enable individual submodules as you need them, rather than suffering the overhead of invoking unnecessary code!
This allows you to add a language parameter to a block so that the block is only displayed when the site is in the relevant language-mode.
This enables you to translate the contact forms that are generated by the Contact module.
This allows for translation of text associated with a field's settings including the help text, default value, and list options.
This allows translation of menu items by adding a language field. You can choose to translate and localise a menu, which enables you to create a single menu with translated terms, or fixed language, which enables the creation of different menus per language. Use the former method if the menu structure is the same across each language and the latter if not.
This extends the control that you can exercise over the language settings for your nodes. It’s possible to set a default language for a particular content type so that it is the current language: make it a requirement to set a specific language rather than have the node default to neutral, and lock the language of the node.
If you want your forums to be multilingual both in terms of their UI and content then this module provides that.
This module adds a language selection to Drupal’s core pages. This applies to the default homepage as well as lists of content assembled via taxonomy, so long as the taxonomy translation module has also been enabled.
There is a conflict with taxonomy terms that have been translated with entity translation.
If there is no natural way to link translations (for example via content translation for nodes) then this module allows pages to be associated together as translations.
This module provides the means for string translations by other modules. With it enabled modules can call the translation interface with the default string and receive a translation.
Where translation is facilitated via separate language-specific nodes that coexist via a relationship, this module allows synchronisation of changes that are made to fields that contain identical values across each translation.
This module allows you to translate vocabularies and their terms. You can choose to localize or translate (see menu translation).
Improves search engine optimization (SEO) for multilingual websites. By default, multilingual pages can be accessed via different paths by changing the path prefix or domain. Search engines tend to penalize displaying the same content at more than one URL, so it's important to redirect to a single instance of the page.
Allows you to translate text and settings that are stored in Drupal as variables. These variables include text such as 'site name' and 'site slogan', as well as settings like 'Default front page' and 'Default 404 page'.
Finally, I found the i18nviews module necessary for translating the labels and other components of my views.