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