Post on 16-Jan-2016
transcript
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 functionsAllows 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