220 likes | 307 Views
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
E N D
Translating Drupal Websites • Sean Burlington • www.PracticalWeb.co.uk • Quick run through • Translation generally • Lessons learned • Drupal specifics • String translation • Page translation
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
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 :-)
(version 5) Drupal
Locale Module (core) • Enhances the t function • Make sure everyone readshttp://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 afterit 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
Localizernode • Works with custom node types • Just implement the usual hooks(_insert, _update, _delete) • Creates a “Translation set” of nodes from the original node
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