Ŧwśīf TanoyAcquia Presentations at Do It With Drupal. Drupal ... Multilingual Drupal Sites. Personal Finance Articles6 months ago
Are you sure you want to
Your message goes here
lameeiVery comprehensive about internalization.1 year ago
Are you sure you want to
Your message goes here
Jack Race at Jack RaceGreat Job ! Nice Presentation !! Useful Slide information's !!! I like this Slides. Then Our related Blog is http://dinosaurs-video.blogspot.com/2 years ago
Are you sure you want to
Your message goes here
takparjust excellent. it was exactly what i wanted.3 years ago
Are you sure you want to
Your message goes here
Acquia at Acquiagreat overview of Drupal's i18n capabilities3 years ago
Multilingual Drupal presentation from "Do it With Drupal"Presentation Transcript
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/
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/
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
About you
Built non-Drupal
multilanguage site?
Built Drupal based site?
Built Drupal based
multilanguage site?
“Decision makers”?
“Users”?
“Developers”?
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 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
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
Drupal 6 language subsystem
The installer
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)
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 support (LTR or RTL)
De ned ordering (weights)
Path pre x or (sub)domain associated
Administer » Site con guration » Languages
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 enabled modules and
themes get translations imported
When you enable a module or theme, translations
imported in all languages
Administer »
Site building »
Translate interface
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
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
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
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
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 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
Language dependent path aliases
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
Language comes to
content
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
Associate language to content
Setting up the
Page content type
Creating new
Page content
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
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
translation for
Hebrew post.
Translation links
on each post.
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
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:
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 categories
Pro le eld titles and categories
Content type properties
Blocks
Node lists!
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 resource intensive then locale module
Override in any language on Drupal 6
Will only override the concrete strings speci ed
String overrides
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
Localization client
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)
Web service based
content translation
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
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:
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 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
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
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
Translation overview
http://drupal.org/project/translation_overview
Works with the core translation system
Modi es existing Translate tab on nodes
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 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”
What about content
views?
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
Views
Views
Translate more!
Internationalization (i18n) module
Supports multilingual variables
Language based listing with extended options for
core content listing
Settings (variables) translation setup
In your site’s
settings.php
Site settings (variables) translation
On your
site’s user
interface.
And submodules do a lot more
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
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 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
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
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
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
Questions?
Thanks
Gábor Hojtsy
gabor@acquia.com
Acquia Inc., http://acquia.com/
Let LinkedIn power your SlideShare experience
+
Let LinkedIn power your SlideShare experience
Customize SlideShare content based on your interests
We will import your LinkedIn profile and you will be visible on SlideShare.
Keep up to date when your LinkedIn contacts post on SlideShare
1–5 of 5 previous next Post a comment