Slide 1: Multilingual Drupal from 5 to 6
Gábor Hojtsy September 19., 2007.
Slide 2: About me
• Working with Open Source since 1999,
was head of PHP.net and the PHP documentation multiple contributed modules, Hungarian translations
• Developing with Drupal since 2003, • Drupal 6 core committer
Slide 3: About you
• Experienced Drupal site builders? • Who deals with multilingual issues? • Knowledge in both areas?
Slide 4: Concepts
Slide 5: Your target audience
• A multilingual web site is available
in multiple languages. It is not necessarily an international one.
• An international web site is intended
to be used internationally. It is not necessarily a multilingual one.
Slide 6: Two terms
Internationalization (i18n) is the design and development of a product, application or document content that enables easy localization for target groups that vary in culture, region or language (locale).
Slide 7: Two terms
Localization (L10n) is the adaptation of a product, application or document content to meet the language, cultural and other requirements of a specific target market (locale).
Slide 8: Confusions
i18n L10n
multilingual
international
Slide 9: Drupal
Slide 10: Drupal “by design”
• There is the built in interface, which
is always served from code
• You provide everything else (posts,
menu items, admin defined blocks, and so on)
Slide 11: Famous issues
๏ Default content type names
are not translated items are neither is not translated
๏ Built-in, but modified menu ๏ The “Forums” vocabulary title
Slide 12: Drupal 5
Slide 13: Built into Drupal 5
• Translatable installer • Basic interface language
list setup
• Runtime interface
translation with per user preferences
Slide 14: How does it work?
• GNU gettext backend and format used • Translation templates extracted from
source code
• CVS used to store/release translations • User imports translation files in
Drupal (which stores them in the DB)
Slide 15: Recognize the source
• t(‘Go to %page’, array(‘%page’ => $p)); • format_plural($count, ‘1 year’,
‘@count years’);
• Several special cases: permissions,
watchdog type names, and so on
Slide 16: Contributed modules
• Autolocale / localized profile • Internationalization module suite • Localizer module suite • XLIFF tools
Slide 17: Computer Aided Translation
Slide 18: Outside Drupal
• Content translation works in Drupal • But professionals use different tools • Translation memories • Automated translation • Professional content review
Slide 19: CAT workflow
Slide 20: Drupal implementation
Slide 21: Demo
Slide 22: Drupal 6
Slide 23: Drupal 6 goes forward!
• New language subsystem • Easy interface translation import • Performance optimizations • Content translation • Textgroups API
Slide 24: Drupal 6 architecture
This was not ready on time, so it is not included.
Slide 25: Languages!
• English and native language names • Writing direction (LTR or RTL) • Weights • Path prefix and subdomain setup and
recognition
Slide 26: Right to left themes
• All CSS file additions are
intercepted and RTL cascade files are searched for support, full support expected in final release
• Most core themes have RTL
Slide 27: Language detection
• Based on the IRI (domain, path) • User preferences • Browser settings • Falls back on site default
Slide 28: Automated import
• Friendlier translation package format • Batch API for tasks to run in multiple
HTTP requests translations
• Install time import of interface • Module/theme changes result in
translation imports
Slide 29: Translatable JavaScript
• Drupal.t() and Drupal.formatPlural()
to translate strings in JavaScript or preprocessing JavaScript
• Works with on the fly string collection • Also brings simple theming to
Slide 30: Text groups API
• Multiple text groups possible to
translate user defined content
• This remains a programming API for
Drupal 6, not used in the core system
Slide 31: On-page interface translation
• Ability to collect all strings used to
build the page Drupal 6!
• Try localization client module for • Also useful for by-site optimization
Slide 32: Content language
• Any post can have a language
associated, or can be neutral content type translation
• This is configurable per • Does not mean content
Slide 33: Content translation
• Posts can be associated with each
outdated translations block other, organized into translation sets
• Basic workflow supported to check for • Translation links, language switcher • Simple API for content/field types
Slide 34: Per-language aliases
• Path aliases can be language
dependent
• Still fall back to default alias, if no
specific alias defined
• Examples: ‘home’, ‘honlap’, ‘inicio’
Slide 35: Lower level changes
• Multilingual request
handling made possible language of the user targeted (API also changed a lot) English, localized on display
• Emails are sent in the
• Log messages are stored in
Slide 36: More for hard-core people
• Modify some site interface strings by
adding an array to settings.php used to customize English sites
• No need for locale module, could be
Slide 37: Still no way to translate
• Site settings • Categories • User defined menus • Aggregator categories • Profile field titles and category names • Content type properties
Slide 38: Contributed modules
• i18n and localizer is here to stay • Many more contributed modules
can/should use the enhancements
Slide 39: And still...
There is a lot more to love in Drupal 6
(You will hear about these a lot)
Slide 40: New kid on the block
Slide 41: Localization server
• Making interface translation for
language groups a lot easier
• We are moving from CVS and project
management to a web application new packaging format
• Translation sharing, support for the • My presentation: 14h, Sun room
Slide 42: Try Drupal 6!
• Drupal 6 beta 1:
http://drupal.org/drupal-6.0-beta1 http://drupal.org/node/97368
• Nightly development snapshot: • Report bugs at http://drupal.org/
node/add/project_issue/drupal/bug
Slide 43: Read the thesis
• http://hojtsy.hu/files/
GaborHojtsyThesis.pdf
• A summary of i18n related problems • How Drupal 5, Joomla 1.0, TYPO3 4.1
and Plone approach these problems
• Planning of the Drupal 6 solutions • Not everything ended up implemented
as documented there
Slide 44: Sponsored by
• Development Seed (infrastructure,
Jose A. Reyero)
• Google Summer of Code (localization
tools for Drupal 6)
Slide 45: Thanks!
All photos included made by myself in Hungary, Bonn and Sankt Augustin.