Multilingual Drupal presentation from "Do it With Drupal"

Uploaded on

Introduction to the Drupal 6 multilanguage features starting off from core features to contributed modules. …

Introduction to the Drupal 6 multilanguage features starting off from core features to contributed modules.

Presented at Do It With Drupal

More in: Business , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Acquia Presentations at Do It With Drupal. Drupal ... Multilingual Drupal Sites.
    Personal Finance Articles
    Are you sure you want to
    Your message goes here
  • Very comprehensive about internalization.
    Are you sure you want to
    Your message goes here
  • Great Job ! Nice Presentation !! Useful Slide information's !!! I like this Slides. Then Our related Blog is
    Are you sure you want to
    Your message goes here
  • just excellent. it was exactly what i wanted.
    Are you sure you want to
    Your message goes here
  • great overview of Drupal's i18n capabilities
    Are you sure you want to
    Your message goes here
No Downloads


Total Views
On Slideshare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. Drupal world domination Translating interface and content in Drupal Gábor Hojtsy, Acquia Inc. December 12 2008, Do It With Drupal, New Orleans •
  • 2. About the presenter Web developer since 1999, building open communities and contributing to open source projects ever since Works with and contributes to Drupal since 2003 Drupal 6 branch maintainer Code gardener at Acquia
  • 3. Will demo with Acquia Drupal Curated distribution of Drupal 6 Connects to the Acquia Network Not a fork in any way of the included software, all GPL You can do everything shown with Drupal 6 and the modules mentioned in the session
  • 4. About you Built non-Drupal multilanguage site? Built Drupal based site? Built Drupal based multilanguage site? “Decision makers”? “Users”? “Developers”?
  • 5. Drupal 6 language subsystem
  • 6. Two worlds, one family Text from inside module and theme code is translated for you –These can be pre-translated by international teams –Distributed and shared freely on All custom content you generate is your job to translate –Content on the website, taxonomy, menus –Text in views, content type elds, and so on... Generally different ways to approach the two
  • 7. And there is a lot more to do Relating translations (complete copies, subsites) Different permissions, lifecycles Setting up work ows Integrating with external tools Just selecting the language to use is complex
  • 8. Drupal 6 language subsystem
  • 9. The installer
  • 10. Install in your language After pro le is selected, Drupal looks for available translations Offers translations to use Language packages can be downloaded and extracted into Drupal root for use Files in /pro les/pro lename/ translations/ are considered Files are imported in a batch (progress bar)
  • 11. Start screen of the default pro le
  • 12. Some languages extracted to Drupal In the le system. On the installer interface.
  • 13. Translated (almost)!
  • 14. Translated (almost)!
  • 15. Translated (almost)!
  • 16. Translated (almost)!
  • 17. Translated (almost)!
  • 18. Imports translations automatically
  • 19. The runtime knows about languages
  • 20. Properties of languages known The default language for the website English and native language names Writing direction support (LTR or RTL) De ned ordering (weights) Path pre x or (sub)domain associated Administer » Site con guration » Languages
  • 21. Adding new languages Extract interface translations to Drupal root Add language from prede ned list if possible
  • 22. Automated translation import Modules and themes also have ./translations subdirectories When you add a language, all enabled modules and themes get translations imported When you enable a module or theme, translations imported in all languages Administer » Site building » Translate interface
  • 23. The language to use to display the page Can be set to be always the site default Or pick the rst identi ed from this list: –IRI (domain name, path pre x) –User preferences –Browser language preference settings –Fallback on site default Which of these is used exactly is con gurable at Administer » Site con guration » Languages » Con gure
  • 24. Example language setups Using path pre xes –German language set up with /deutsch path pre x –Hungarian language set up with /magyar path pre x Using subdomains –German language on –Hungarian on Or even use high level domains –German on –Hungarian on pé
  • 25. Server setup for multiple domains Make sure that all domains point to the same virtual host in your webserver con guration Drupal should automatically pick up the domain from the request If using subdomains, make sure that cookies are set on *, not per subdomain If using standalone domains, you will not be signed on on multiple domains at once just by logging in at one of them
  • 26. Language is known, now what? Drupal selects the language, but it is up to the rest of the modules used to act accordingly The interface is displayed in that language Website settings, views, etc. might need more tweaking to behave as you wish Getting “custom content” such as custom menu items, taxonomy terms and site settings to translate requires contributed modules
  • 27. Right-to-left (sub)theme support Remember admin/settings/language to revert.
  • 28. Right-to-left (sub)theme support Drupal itself includes RTL support for all its functionality All CSS le additions are intercepted and RTL cascade les are searched for (eg. style-rtl.css for style.css les) All core themes have RTL support Easy to write RTL supporting themes, even with color module
  • 29. Language dependent path aliases
  • 30. Language dependent e-mails Users have their preferred language set up Those registering on a translated page get that as preferred language by default This language is used to send e-mails, such as welcome or new password request e-mail Drupal 6 can send e-mails in multiple languages in one request
  • 31. Language comes to content
  • 32. Associate language to content As soon as locale module is enabled, content types can be language enabled Shows a language selection dropdown for posts when editing Allows for Language neutral posts. Applicable when content is not attached to any language Does not mean content translation in itself Use case: blogs, where author posts in different languages, but these are distinct posts on one site
  • 33. Associate language to content Setting up the Page content type Creating new Page content
  • 34. Consequences Post will have URL with language speci c part included (domain, path pre x), if set up The associated language can be used to create views, export in feeds, etc. Even if you only have a single language site, if translation ever becomes a requirement, better to have posts in the system already marked
  • 35. Translate content
  • 36. The content translation module Once the Content translation (core) module is enabled, a new language option is available
  • 37. Translation functionality is exposed
  • 38. Title and body pre lled for translation Add Hungarian translation for Hebrew post. Translation links on each post.
  • 39. Each translation is a different node Great, so that you can have different work ows for these nodes (eg. publish only if all translations are done) These can have different authors, updated times, permissions, comments in the given language, can show up in different feeds, and so on Sets of nodes belonging to the same set are called a translation set Voting, agging, etc. is supported on the set level as well in contributed modules
  • 40. Basic work ow support in core The source node of the translation set can be set to be changed signi cantly, marking translations outdated The translations can then be updated to re ect the change On the source post:
  • 41. Basic work ow support in core On a translation. Uncheck if not true anymore.
  • 42. So far so long for Drupal 6 core itself
  • 43. Review of the runtime architecture
  • 44. Drupal 6 cannot translate Site settings Taxonomy (vocabularies, terms) User de ned menus (menus, items) Aggregator categories Pro le eld titles and categories Content type properties Blocks Node lists!
  • 45. So look for contributed modules to add on
  • 46. Interface translation tweaks
  • 47. String overrides Replace text available for interface translation Less resource intensive then locale module Override in any language on Drupal 6 Will only override the concrete strings speci ed
  • 48. String overrides
  • 49. Localization client Drupal 6 allows collecting strings used on the page Tool built on top of that to translate strings while you walk around pages Can share translations to a central Localization server while you submit them Works on non-English pages, if people have permission to do it
  • 50. Localization client
  • 51. Localization server Making interface translation for language groups a lot easier The intent is to move from CVS and project management to a web application Translation sharing, support for packaging Can receive translations from Localization client Uses (Translation template extractor)
  • 52. Web service based content translation
  • 53. Google translate Google operates an online translation service This module just passes text through that service via their normal web interface The output is wrapped, so users don’t see it going through Google Some caveats –Not legal, mentioned to highlight the concept –Does not work for logged-in users –Not well supported, no Drupal 6 version
  • 54. Translatable comments Uses Google AJAX Translation API (legal) Completely JavaScript based Uses a xed set of languages Original comment: Translated to French:
  • 55. Machine translation is hard (and funny)
  • 56. Machine translation is hard (and funny)
  • 57. Extended content translation work ow support
  • 58. Support computer aided humans Computer Aided Translation (CAT) tools take HTML, Word, etc. documents and allow translation of those They work with a translation memory which pre- translates the text Humans x the translations, and feed back the new knowledge to the memory (automatically) The translation gets to the originator in HTML, Word document, etc. format
  • 59. XLIFF Tools module example XML Localisation Interchange File Format is a format maintained by OASIS Separates content and formatting in a standard way
  • 60. AWTW module AWTW is Automated Web Translation Work ow Works very similar to XLIFF Tools, but easier to use Exports to a custom XML format, which includes source node identi er Allows you to import translations easily, since it can nd the original node based on the identi er Not yet ported to Drupal 6
  • 61. Translation overview Works with the core translation system Modi es existing Translate tab on nodes
  • 62. Translation overview screen
  • 63. Team work ow with permissions ow Actions and work ow modules allow you to set up work ows for translation with states and transitions Work ow access supports node level access control For example: –Only allow editing of a post until it is “sent for translation” –Send out email to translators then –Only allow translators to edit until set “for review” –Automatically publish when “reviewed”
  • 64. What about content views?
  • 65. Views Views supports languages, translation sets and translation status values Easily lter on language or translation set for nodes Sort views by language Set up relations based on translation sets Language is only available if translation module enabled - see #343178 for more information
  • 68. Translate more!
  • 69. Internationalization (i18n) module Supports multilingual variables Language based listing with extended options for core content listing
  • 70. Settings (variables) translation setup In your site’s settings.php
  • 71. Site settings (variables) translation On your site’s user interface.
  • 72. And submodules do a lot more
  • 73. i18nstrings module Base (API) module for most custom translation tools Implements strings translation API via the Drupal 6 core provided textgroups system Object based translation system which almost made it to Drupal 6 Other modules like i18nblocks, i18nmenu and i18ntaxonomy use it
  • 74. i18nblocks.module example
  • 75. i18nblocks.module example
  • 76. Share/sync data between translations
  • 77. i18nsync, i18npoll modules Helps you sync values between content translations Taxonomy terms, CCK elds are not shared among nodes in the same translation set i18nsync can sync taxonomy terms and CCK eld values between set members i18npoll module will help you aggregate poll results for translations
  • 78. Other contributed modules The direction is to be able to attach behaviors to both individual nodes and translation sets Flag module for example supports agging by translation set or by individual node Coordinated work going on at the i18n group
  • 79. Look at your own requirements
  • 80. Look at your own requirements People meet lots of different requirements You need to build your own solution according to that and adapt what is there to evolving needs There are a lot more multilingual options beyond what I could cover in this session, so keep exploring
  • 81. Questions?
  • 82. Thanks Gábor Hojtsy Acquia Inc.,