A couple of months back Stuart and I released a tool for automatically generating CSS sprites and corresponding CSS rules from component images - CSS Sprite Generator. At the time we thought it would be cool to build in support for localising the interface should users wish to provide us with translations. I don't think either of us had any idea as to how this would pan out and we certainly didn't expect the level of response we've received so far. Personally I've been bowled over by peoples willingness to translate someone else's tool. I'd like to extend a huge thank you to the following people who have kindly supplied translations:
- German - Christian Heilmann
- Italian - Alessandro La Rosa
- Spanish - Xavier Pimienta
- Swedish - Henrik Jönsson
- Chinese - Cloudream
- Afrikaans - Adriaan Nel
- French - Ludovic Bert
Next time you're building a web based application I'd strongly encourage you to consider providing localisation support up front. Building the necessary features to support localisation (internationalising your application) at a later stage is always more painful and you may be pleasantly surprised by the response from your users once they realise they can help bring your application to their native language.
In many situations localisation covers much more than translation but in the interest of keeping things simple here's some links to a few libraries and other resources which will get you started with providing support on the translations front:
- Managing Translation Strings - a simple PHP class I wrote which is used in CSS Sprite Generator and doesn't have any dependancies on libraries which aren't present in a default PHP install.
- GetText - a library which is used in a large number of projects including WordPress. The GetText library is also available from PHP.
- How to internationalize your PHP apps
- Localizing PHP web sites using gettext
- PHP Localization with TMX standard
I found one or two really interesting sites which allow people to post text they require to be translated. These entries sit in a queue and can be translated and ranked for accuracy by other sites users:
I think these last two only scratch the surface of what's possible but provide a new(ish) slant on user generated content.