Drupal world domination
   Translating interface and content in Drupal



       Gábor Hojtsy, Acquia Inc.
       December...
About the presenter
 Web developer since 1999,
 building open communities and
 contributing to open source
 projects ever ...
Will demo with Acquia Drupal
 Curated distribution of Drupal 6
 Connects to the Acquia Network
 Not a fork in any way of t...
About you
 Built non-Drupal
 multilanguage site?
 Built Drupal based site?
 Built Drupal based
 multilanguage site?

 “Dec...
Drupal 6 language
   subsystem
Two worlds, one family
 Text from inside module and theme code is
 translated for you
 –These can be pre-translated by int...
And there is a lot more to do
 Relating translations (complete copies, subsites)
 Different permissions, lifecycles
 Settin...
Drupal 6 language subsystem
The installer
Install in your language
 After pro le is selected, Drupal
 looks for available translations
 Offers translations to use
 L...
Start screen of the default pro le
Some languages extracted to Drupal




                                In the le system.
On the installer interface.
Translated (almost)!
Translated (almost)!
Translated (almost)!
Translated (almost)!
Translated (almost)!
Imports translations automatically
The runtime knows
 about languages
Properties of languages known
 The default language for the website
 English and native language names
 Writing direction ...
Adding new languages
 Extract interface translations to Drupal root
 Add language from prede ned list if possible
Automated translation import
 Modules and themes also have ./translations
 subdirectories
 When you add a language, all en...
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 lis...
Example language setups
 Using path pre xes
 –German language set up with /deutsch path pre x
 –Hungarian language set up ...
Server setup for multiple domains
 Make sure that all domains point to the same
 virtual host in your webserver con gurati...
Language is known, now what?
 Drupal selects the language, but it is up to the rest
 of the modules used to act accordingl...
Right-to-left (sub)theme support




           Remember admin/settings/language to revert.
Right-to-left (sub)theme support
 Drupal itself includes RTL support for all its
 functionality
 All CSS le additions are ...
Language dependent path aliases
Language dependent e-mails
 Users have their preferred language set up
 Those registering on a translated page get that as...
Language comes to
     content
Associate language to content
 As soon as locale module is enabled, content types
 can be language enabled
 Shows a langua...
Associate language to content
                        Setting up the
                        Page content type




       ...
Consequences
 Post will have URL with language speci c part
 included (domain, path pre x), if set up
 The associated lang...
Translate content
The content translation module
 Once the Content translation (core) module is
 enabled, a new language option is available
Translation functionality is exposed
Title and body pre lled for translation
                               Add Hungarian
                               transl...
Each translation is a different node
 Great, so that you can have different work ows for
 these nodes (eg. publish only if a...
Basic work ow support in core
 The source node of the translation set can be set to
 be changed signi cantly, marking tran...
Basic work ow support in core




            On a translation. Uncheck if not true anymore.
So far so long for
Drupal 6 core itself
Review of the runtime architecture
Drupal 6 cannot translate
 Site settings
 Taxonomy (vocabularies, terms)
 User de ned menus (menus, items)
 Aggregator cat...
So look for contributed
  modules to add on
Interface translation
       tweaks
String overrides
 http://drupal.org/project/stringoverrides
 Replace text available for interface translation
 Less resour...
String overrides
Localization client
 http://drupal.org/project/l10n_client
 Drupal 6 allows collecting strings used on the page
 Tool buil...
Localization client
Localization server
 http://drupal.org/project/l10n_server
 Making interface translation for language groups a
 lot easier...
Web service based
content translation
Google translate
 http://drupal.org/project/gtrans
 Google operates an online translation service
 This module just passes...
Translatable comments
 http://drupal.org/project/translatablecomments
 Uses Google AJAX Translation API (legal)
 Completel...
Machine translation is hard (and funny)
Machine translation is hard (and funny)
Extended content
translation work ow
       support
Support computer aided humans
 Computer Aided Translation (CAT) tools take HTML,
 Word, etc. documents and allow translati...
XLIFF Tools module example
 http://drupal.org/project/xliff
 XML Localisation Interchange File Format is a
 format maintain...
AWTW module
http://drupal.org/project/awtw
AWTW is Automated Web Translation Work ow
Works very similar to XLIFF Tools, bu...
Translation overview
 http://drupal.org/project/translation_overview
 Works with the core translation system
 Modi es exis...
Translation overview screen
Team work ow with permissions
 http://drupal.org/project/work ow
 Actions and work ow modules allow you to set up
 work ow...
What about content
      views?
Views
 http://drupal.org/project/views
 Views supports languages, translation sets and
 translation status values
 Easily ...
Views
Views
Translate more!
Internationalization (i18n) module
 Supports multilingual variables
 Language based listing with extended options for
 cor...
Settings (variables) translation setup
                                         In your site’s
                           ...
Site settings (variables) translation
                                        On your
                                    ...
And submodules do a lot more
i18nstrings module
 Base (API) module for most custom translation tools
 Implements strings translation API via the Drupal...
i18nblocks.module example
i18nblocks.module example
Share/sync data
between translations
i18nsync, i18npoll modules
 Helps you sync values between content translations
 Taxonomy terms, CCK elds are not shared am...
Other contributed modules
 The direction is to be able to attach behaviors to
 both individual nodes and translation sets
...
Look at your own
  requirements
Look at your own requirements
 People meet lots of different requirements
 You need to build your own solution according to...
Questions?
Thanks
         Gábor Hojtsy
     gabor@acquia.com
Acquia Inc., http://acquia.com/
Upcoming SlideShare
Loading in …5
×

Multilingual Drupal presentation from "Do it With Drupal"

29,236 views

Published on

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

Presented at Do It With Drupal http://doitwithdrupal.com/

Published in: Business, Technology
6 Comments
21 Likes
Statistics
Notes
No Downloads
Views
Total views
29,236
On SlideShare
0
From Embeds
0
Number of Embeds
5,305
Actions
Shares
0
Downloads
547
Comments
6
Likes
21
Embeds 0
No embeds

No notes for slide

Multilingual Drupal presentation from "Do it With Drupal"

  1. 1. Drupal world domination Translating interface and content in Drupal Gábor Hojtsy, Acquia Inc. December 12 2008, Do It With Drupal, New Orleans http://acquia.com/ • http://doitwithdrupal.com/
  2. 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 http://acquia.com/
  3. 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. 4. About you Built non-Drupal multilanguage site? Built Drupal based site? Built Drupal based multilanguage site? “Decision makers”? “Users”? “Developers”?
  5. 5. Drupal 6 language subsystem
  6. 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 drupal.org 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. 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. 8. Drupal 6 language subsystem
  9. 9. The installer
  10. 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. 11. Start screen of the default pro le
  12. 12. Some languages extracted to Drupal In the le system. On the installer interface.
  13. 13. Translated (almost)!
  14. 14. Translated (almost)!
  15. 15. Translated (almost)!
  16. 16. Translated (almost)!
  17. 17. Translated (almost)!
  18. 18. Imports translations automatically
  19. 19. The runtime knows about languages
  20. 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. 21. Adding new languages Extract interface translations to Drupal root Add language from prede ned list if possible
  22. 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. 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. 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 de.example.com –Hungarian on hu.example.com Or even use high level domains –German on beispiel.de –Hungarian on példa.hu
  25. 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 *.example.com, 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. 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. 27. Right-to-left (sub)theme support Remember admin/settings/language to revert.
  28. 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. 29. Language dependent path aliases
  30. 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. 31. Language comes to content
  32. 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. 33. Associate language to content Setting up the Page content type Creating new Page content
  34. 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. 35. Translate content
  36. 36. The content translation module Once the Content translation (core) module is enabled, a new language option is available
  37. 37. Translation functionality is exposed
  38. 38. Title and body pre lled for translation Add Hungarian translation for Hebrew post. Translation links on each post.
  39. 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. 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. 41. Basic work ow support in core On a translation. Uncheck if not true anymore.
  42. 42. So far so long for Drupal 6 core itself
  43. 43. Review of the runtime architecture
  44. 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. 45. So look for contributed modules to add on
  46. 46. Interface translation tweaks
  47. 47. String overrides http://drupal.org/project/stringoverrides 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. 48. String overrides
  49. 49. Localization client http://drupal.org/project/l10n_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. 50. Localization client
  51. 51. Localization server http://drupal.org/project/l10n_server Making interface translation for language groups a lot easier The intent is to move from CVS and drupal.org project management to a web application Translation sharing, support for packaging Can receive translations from Localization client Uses http://drupal.org/project/potx (Translation template extractor)
  52. 52. Web service based content translation
  53. 53. Google translate http://drupal.org/project/gtrans 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. 54. Translatable comments http://drupal.org/project/translatablecomments Uses Google AJAX Translation API (legal) Completely JavaScript based Uses a xed set of languages Original comment: Translated to French:
  55. 55. Machine translation is hard (and funny)
  56. 56. Machine translation is hard (and funny)
  57. 57. Extended content translation work ow support
  58. 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. 59. XLIFF Tools module example http://drupal.org/project/xliff XML Localisation Interchange File Format is a format maintained by OASIS Separates content and formatting in a standard way
  60. 60. AWTW module http://drupal.org/project/awtw 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. 61. Translation overview http://drupal.org/project/translation_overview Works with the core translation system Modi es existing Translate tab on nodes
  62. 62. Translation overview screen
  63. 63. Team work ow with permissions http://drupal.org/project/work 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. 64. What about content views?
  65. 65. Views http://drupal.org/project/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
  66. 66. Views
  67. 67. Views
  68. 68. Translate more!
  69. 69. Internationalization (i18n) module Supports multilingual variables Language based listing with extended options for core content listing
  70. 70. Settings (variables) translation setup In your site’s settings.php
  71. 71. Site settings (variables) translation On your site’s user interface.
  72. 72. And submodules do a lot more
  73. 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. 74. i18nblocks.module example
  75. 75. i18nblocks.module example
  76. 76. Share/sync data between translations
  77. 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. 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 http://groups.drupal.org/node/15064
  79. 79. Look at your own requirements
  80. 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 http://drupal.org/project/Modules/category/97
  81. 81. Questions?
  82. 82. Thanks Gábor Hojtsy gabor@acquia.com Acquia Inc., http://acquia.com/

×