Drupal modules may be installed on sites in different languages, or even multilingual sites. For that reason, if your module will be distributed to others, it is a good idea to build support for different languages into your module.
The basic steps for building in multilingual support are:
- Ensure the code-based strings in your module (i.e. literal text that is shown on your module's screens, blocks, etc.) are translatable. See the Localization API handbook section for information.
- Every time you make a tagged/numbered release of your module, the Drupal Localization Server will pick the translatable strings out of your code, and put them up on the server so that people can translate them to different languages.
- If your module stores user-entered information outside of nodes (settings, custom database tables, etc.), ensure that that information can be translated. See the Making your Custom Data Translatable page for more information.
Most of the resources on this topic can be found in the Multilingual handbook. This includes a whole Building multilingual sites with the Internationalization (i18n) module section, as well as tutorials and links on the subject.
The following resources on internationalization in Drupal 6 are also useful for reference. (Also, check out the sub-pages listed at the bottom of this page.)
- Tutorial - Building a multi-language site
- Translation process overview handbook page
- Comparing Multilingual Handling in Drupal 5 v. Drupal 6 (off-site)
- The Drupal i18n Saga Continues. Here's Drupal 6 i18n! (off site)
- New i18n and l10n features in Drupal 6 - half-hour long screencast (off site)
- Drupal 6 translation blog post (off site)
For Drupal 7, check out this is of Drupal 7 internationalization posts (off-site).
The Internationalization group at groups.drupal.org is a site for collaboration and support around internationalization.