Translating Drupal Websites Sean Burlington 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
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 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', 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 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