Translating Drupal Websites Sean Burlington Quick run through www.PracticalWeb.co.uk
Download
Report
Transcript Translating Drupal Websites Sean Burlington Quick run through www.PracticalWeb.co.uk
Translating Drupal Websites
Sean Burlington
www.PracticalWeb.co.uk
Quick run through
Translation generally
Lessons learned
Drupal specifics
String translation
Page translation
A long Time ago ...
Nictotinell.com
Project developed in custom PHP
Design first
Then functionality
Lastly translation
What I learned then
Norwegian words are really long..
Text gifs, layout tables, and translations !@#!*
Don't take shortcuts
Good Practice pays off
Balance the tags in every template
Don't let translation be an afterthought
Still before Drupal
How it worked
Custom “CMS”
2 languages English/Welsh
script.aculo.us
In place editing
Suprising how may 'odd' pages crop up
www.useyourpaths.info
Complex Pages
Long forms
Lots of little bits of text
The in-place editing really helped for long forms
No support calls :-)
Drupal
(version 5)
Manage Strings
Locale Module (core)
Enhances the t function
Make sure everyone reads
http://api.drupal.org/api/function/t/5
Choose a standard
Does it include trailing spaces?
What about punctuation?
Avoid t($text) – use t('literal text')
format_plural()
1 item – 2 items
format_plural($feed->items,
'1 item', '@count items')
Calls t() internally
Problems with Manage Strings
Strings originally in code – but translated from
database
String only available for translation after it has
been displayed
Hard to find strings
What about error messages
How do you know when you're finished
How to test a translation
Solution
Potx – extracts strings from t functions
Allows you to select by module
http://translate.sourceforge.net/wiki/toolkit/csv2po
But this gives admin and public text together
We wrote an upload languages module
(I'm trying to GPL this)
This takes a CSV of all languages – and returns
a merged CSV including any new translations
Useful for deployment
Localizer Module
Lots of options
Localizernode
Works with custom node types
Just implement the usual hooks
(_insert, _update, _delete)
Creates a “Translation set” of nodes from the
original node
Translations tab
What it does
Creates new nodes that are translations of
existing ones
Maintains a lookup table
Automatically displays the users preferred
translation
It works nicely
But – we had nodes that referred to other nodes
on another site via a CCK field and SOAP ...
Make sure everyone knows about the lookup
table at an early stage !
In General
Plan
Check your design
Introduce standards early
Test dummy translations early
Translate late