Teamwork’s translation in German is almost ready, thanks to Koelnticket, in particular Andreas Nebinger (thank you Andreas!). Let’s see a bit in detail how we dealt in general with internationalization issues in Teamwork; actually this set of problems will have to be met by any sufficiently powerful web application.
There are many senses in which an application might be said to “support multi-languages”, or be “internationalized”:
Interface. Labels and messages of the web interface are available in several languages. Teamwork contains a label editor, where you can create a new language and also modify existing labels. Teamwork is used in 43 countries, almost all using it in English; actually some project managers like to have it English as teams are made from people from different countries, so it encourages communication.
But as usual 🙂 Teamwork does more: it lets you change labels on the fly in the web interface, saving them on the database so that you don’t lose customizations on application update.
Data. Data inserted in the application can be inserted in any language. We have been careful about the encoding (always a problem in web applications), so that the full spectrum of UTF-8 supported languages is included, which means also Greek, Cyrillic, Arabic, Japanese… . This also assumes that the database on which Teamwork is running supports Unicode or UTF-8 data. THen you have the further problem that labels and data you have on the interface may need to be channeled on a different mean, e.g. exported in an Excel file, or in a PDF, and there again you may be plagued by encoding problems.
Search. (This is often forgotten) Full-text search requires multi-language stemming of contents: this is from our technical contribution, which is in the context of Hibernate (an object/relational tool) and Lucene (an indexing engine):
You need to know the language in which a document is written, in order to correctly index it; once you know the language, you can instantiate say the Snowball analyzer with the correct language stemmer. To make a practical system, you will need to guess the documents language from its content. We have found a very simple and effective solution […].
In order to make a content “findable” also when searching from a language (say, German) a document in another language (say, English), we actually double indexed the content field, once with the nowball analyzer and once with the simple StopAnalyzer; so that if you are searching from German and you search “Telefunken”, which stemmed would be searched as “Telefunk”, will find also “Telefunken” in English documents ? .
See http://twproject.blogspot.com/2007/11/using-hibernate-search-with-complex.html and http://www.hibernate.org/432.html
So Teamwork’s full text search is language-aware. Actually search in Teamwork is much smarter than that, but this is a topic for another post.
Documentation. Documentation may be provided in several languages. In Teamwork’s case, as it is by now in 99% of the web applications, it is provided only in English. We also believe that it will be the “power user” of the application that will mostly need documentation, and we assume that she/he can read English.
So how can we evaluate Teamwork w.r.t. all these aspects?
Feature | How it is dealt with in Teamwork |
Interface | Available in English and Italian. German is almost ready, Spanish is planned. |
Data | Data in all languages is supported (UTF-8 supported). |
Search | Stemming is available for all Lucene analyzers: Teamwork provides out of the box English, Spanish, French, German, Portuguese, Italian, Swedish, Danish, Dutch, Norwegian, Russian, Finnish, but it is easy to include other Lucene extensions. |
Documentation | This is provided only in English. |
A F.A.Q. on Teamwork’s site talks about changing labels: http://www.twproject.com/configurationFaq.page#conf5
See 16.5.6 Translate in a new language of the user guide. When you’re done, just send us the Excel file.
Are you guys also still looking for a Dutch Translation for this application?
Yes.
And if you need any help on this, how do you normally start of something like that? Do you have a transcript of the application that needs to be translated and how do you normally initiate this?