snowbabel: Lokalisierung von TYPO3-Extensions durch Content Managers

Benutzeroberfläche von snowbabel zur Übersetzung von Labels in TYPO3-Extensions

Nicht oder schlecht lokalisierte Extensions können einen TYPO3 Content Manger zur Verzweiflung bringen: Denn erstens versteht er oft nicht, wo die Texte (die er ja nicht selbst geschrieben hat) her kommen, und zweitens kommt er normalerweise nicht an diese Texte heran, um sie selbst zu übersetzen.

snowbabel ist für solche Fälle ein sehr übersichtliches und effizientes Tool, das auch ein Content Manager ohne vertiefte TYPO3-Kenntnisse schnell beherrscht. Die Extension fügt dem TYPO3-Backend zwei Module hinzu, von denen eines für die Grundeinstellungen zuständig ist, während im anderen die eigentliche Übersetzung stattfindet. Die Benutzeroberfläche ist ausgesprochen übersichtlich und selbsterklärend: Links wählt man die zu übersetzende Extension, rechts die zu bearbeitenden Sprachen, und in der Mitte bearbeitet man die entsprechenden Labels. Dabei müssen die Datensätze nicht in einer Detailansicht geöffnet, einzeln bearbeitet und wieder gespeichert werden, sondern man arbeitet direkt in der Tabelle, was die Arbeit massiv beschleunigt. snowbabel beherrscht inzwischen auch XLIFF (das neue Format für Sprachdateien – vgl.  TYPO3 4.6: Was hat es mit den XLIFF-Sprachdateien auf sich?) und ist somit für die Zukunft gut gerüstet.

TYPO3 4.6: Was hat es mit den XLIFF-Sprachdateien auf sich?

Language File Editor (lfeditor)

Sprachdateien (engl. Language Packs oder Language Packages) für TYPO3 enthalten Übersetzungen für den TYPO3 Core oder für Extensions. Übersetzt wird damit nicht derjenige Content, den die Content Mangers einpflegen, sondern diejenigen Texte, welche das System im Frontend oder im Backend selbständig anzeigt (sog. Labels).

Seit der Version 4.6 nutzt TYPO3 XLIFF als Format für Sprachdateien. Dieses standardisierte Format löst das ll-XML-Format ab, welches zwar auf XML basiert, ansonsten aber eine TYPO3-spezifische Lösung darstellt, welche mit gängigen Übersetzungsprogrammen nicht kompatibel ist. XLIFF bietet noch einige weitere Vorteile: So können in den Dateien Pluralformen, Übersetzungsvorschläge und –alternativen sowie Hinweise an die Übersetzer gespeichert werden. Ausserdem nutzt auch FLOW3 (das Framework der zukünftigen TYPO3-Version 5) XLIFF.

Um Sprachdateien vom ll-XML-Format (oder vom noch älteren PHP-Format) in XLIFF zu konvertieren, steht Entwicklern die Extension extdeveval zur Verfügung. Die Rückwärtskompatibilität für TYPO3-Versionen vor 4.6 (welche ja noch kein XLIFF kennen) stellt die Extension xliff sicher: Sie konvertiert automatisch XLIFF-Dateien ins alte ll-XML-Format. Um Übersetzungen zu pflegen bietet der Language File Editor lfeditor geeignete Funktionalitäten.

Parallel zur Umstellung auf XLIFF hat das TYPO3 Translation Team übrigens auch den TYPO3 Translation Server (wo Übersetzungen für Core und Extensions zentral gepflegt werden) von einer selbst entwickelten Lösung auf Pootle umgestellt. Pootle wird auch von LibreOffice, Mozilla, KDE, Gnome und anderen grossen Open-Source-Projekten genutzt und ist ein leistungsfähiges und doch einfach zu bedienendes Übersetzungssystem (ähnlich wie Transifex).

Weiterführende Informationen:

Software lokalisieren mit Transifex

Will man eine Software in mehreren Sprachversionen anbieten, dann integriert man die Übersetzungen sinnvollerweise nicht direkt in den Programmcode, sondern bindet sie über Sprachpakete ein. Ein beliebtes Format für solche Sprachpakete sind PO-Dateien (Portable Object; vgl. GNU gettext). Die Erstellung solcher Sprachpakete kann im Prinzip mit jedem Texteditor erfolgen, denn es handelt  sich um Textdateien. Umfangreichere Programme zu übersetzen ist mit dieser Methode aber keine Freude und auch nicht sonderlich effizient.

Poedit Benutzeroberfläche (Mac-Version)

Häufig werden stattdessen spezialisierte Editoren wie beispielsweise Poedit eingesetzt. Solche Programme stellen Originalsprache und Zielsprache einander gegenüber und unterstützen den Übersetzungsprozess über ein sogenanntes Translation Memory (d.h. ein Verzeichnis mit bereits übersetzten Texten, welches für Vorschläge herangezogen werden kann). Da es sich um Desktop-Programme handelt, kann allerdings immer nur ein Übersetzer gleichzeitig an einer bestimmten Sprachversion arbeiten; und das Aus- und Einchecken der Sprachdateien aus einem Code Repository ist auch nicht jedermanns Sache.

Gerade bei Open-Source-Projekten, welche auf die Unterstützung einer Community angewiesen sind, haben sich deshalb web-basierte Lösungen etabliert. So kann man beispielsweise auf Launchpad nebst Ubuntu Linux auch diverse andere Programme wie beispielsweise Blender, Calibre, JOSM (Java OpenStreetMap Editor), Mahara, Miro oder Stellarium übersetzen helfen.

Transifex Benutzeroberfläche (Ausschnitt)

Eine andere, ausgesprochen schöne Lösung, ist Transifex, die unter www.transifex.net als Hosted Service genutzt oder als Open Source Software heruntergeladen werden kann. Der Hosted Service ist für andere Open-Source-Projekte kostenlos, und so dass man sowohl als Open-Source-Entwickler als auch als Übersetzer mit einem Free Account bestens versorgt ist.

Will man sich als Übersetzer an einem Projekt beteiligen, so sucht man sich das entsprechende Projekt und schliesst sich dem Übersetzer-Team der gewünschten Sprache an (bzw. legt als Sprachenkoordinator ein neues Team an). Danach kann man über eine sehr dezente, in den Details aber sehr funktionale Oberfläche die Strings (wie die einzelnen Textbausteine heissen) übersetzen. Auch hier steht ein Translation Memory zur Verfügung, und man kann die Strings durchsuchen oder nach verschiedenen Kriterien filtern. Das Aufsetzen eines eigenen Projekts ist denkbar einfach: Kennt man die URL der originalen Sprachdatei (POT = Portable Object Template) im Code Repository, dann holt sich Transifex die Originalsprache selbständig und erzeugt daraus ein Übersetzungsprojekt.

Auch mit Transifex bleibt das Übersetzen von Software anspruchsvolle Knochenarbeit. Aber zumindest wird dadurch die Arbeit so komfortabel und effizient wie nur irgend möglich.

Produktiver mit TYPO3 (1): Sprachversionen anlegen

TYPO3: Sprachversionen im Page-Modul anlegen (Make new translation of this page)

Wenn man mit TYPO3 eine mehrsprachige Website aufbaut, dann wird man in der Regel für jede einzelne Seite die entsprechenden Sprachversionen anlegen, indem man im Page-Modul den Befehl “Make new translation of this page” benutzt. Pro Seite und Sprache kostet das vier Schritte:

  • Seite im Seitenbaum selektieren
  • Zielsprache im Dropdown auswählen
  • Titel in der Zielsprache erfassen
  • Sprachversion speichern

TYPO3: Sprachversionen in der Localization Overview anlegen

Wenn man für eine grössere Website in mehreren Sprachen das Seitengerüst aufbauen muss, gibt es allerdings einen effizienteren Weg. Er führt über das Info-Modul und die Localization Overview. Dort sieht man nicht nur auf Anhieb, welche Seiten in welchen Sprachen existieren, sondern man kann dort auch in einem einzigen Arbeitsgang alle Seiten einer Sprache erzeugen, so dass von den obigen Arbeitsschritten nur noch das Eintippen der Seitentitel erforderlich ist. Wählen Sie hierzu einfach per Checkbox die zu übersetzenden Seiten aus und klicken Sie anschliessend auf das direkt darüber stehende Icon mit dem grünen Plus-Zeichen.

Mehrsprachige Websites mit TYPOlight – ein Überblick

Spracheinstellung im Browser (Firefox)

Als Bewohner eines offiziell viersprachigen Landes habe ich fast ausschliesslich mit mehrsprachigen Websites zu tun. Dieser Artikel bietet einen Überblick über die Mechanismen des CMS TYPOlight im Hinblick auf die Mehrsprachigkeit.

Backend

image

Wenn es um Mehrsprachigkeit geht, dann muss man immer unterscheiden, ob man vom Frontend oder vom Backend spricht. In der Regel denkt man nämlich nur ans Frontend (d.h. die Website, wie sie der Besucher sieht); für einen Content Manager ist jedoch die Frage, um er mit einem Backend in seiner Muttersprache arbeiten kann, oft genau so wichtig.

Das Backend von TYPOlight ist derzeit in gut 30 Sprachen übersetzt. Deutsch und Englisch werden standardmässig installiert, weitere Sprachpakete kann man einzeln herunterladen und per FTP installieren. Der einzelne Backend User kann seine bevorzugte Sprache entweder beim Login oder aber als Teil seiner Benutzereinstellungen individuell festlegen (unter “Benutzerfunktionen: Persönliche Daten”).

Da die Übersetzungen durch die Community erstellt werden, sind nicht alle Sprachpakete gleich aktuell. Auch werden Extensions unterschiedlich gut abgedeckt. TYPOlight bietet im Backend unter “System” die Funktion “Fehlende Labels” – dort sieht man auf einen Blick, wie vollständig ein Sprachpaket ist. Fehlende Übersetzungen kann man dort allerdings nicht ergänzen – dies geschieht zentral über ein Online-Tool, für das man sich separat registrieren muss. Das ist etwas umständlich, stellt aber sicher, dass Übersetzungen sämtlichen TYPOlight-Benutzern zu gute kommen.

Frontend

Auch im Frontend unterstützt TYPOlight Mehrsprachigkeit. Diesen Anspruch erheben allerdings fast alle CMS, und man muss deshalb genauer hinschauen und sich fragen, wie diese Mehrsprachigkeit im Detail umgesetzt ist. TYPOlight benutzt einen leicht verständlichen Ansatz, mit dem man aber auch an Grenzen stossen kann. Zudem sind gewisse Funktionen nur in Form von Extensions vorhanden.

Es gibt grundsätzlich zwei Prinzipien, wie man mit einem CMS mehrsprachige Websites aufbauen kann: Entweder basieren alle Sprachversionen auf der gleichen Website-Struktur, die Übersetzungen einer Seite sind dann direkt in der Originalseite hinterlegt und werden je nach Benutzersprache ein- oder ausgeblendet. Dieser Ansatz erlaubt den direkten Wechsel zwischen den Sprachversionen derselben Seite und ist oft die bessere Lösung, wenn man den Überblick behalten muss, welche Seiten schon übersetzt sind und welche nicht. Bei TYPO3 beispielsweise ist dieses Prinzip sehr schön realisiert.

image

Das zweite Prinzip arbeitet mit einer separaten Website-Struktur pro Sprache, d.h. der Seitenbaum wird für jede Frontend-Sprache individuell erstellt und gepflegt. Dadurch sind die Sprachversionen nicht miteinander verknüpft, was Vorteil wie Nachteil sein kann: Die Erfahrung zeigt, dass viele Websites ihren Anspruch, alle Inhalte zu übersetzen, in der Praxis doch nicht einlösen können – dann ist es einfacher, wenn die Sprachversionen wie individuelle Websites gehandhabt werden können. Auch im Hinblick auf suchmaschinenfreundliche URLs sind separate Seitenbäume sinnvoll, weil dann URL und Seiteninhalt immer in derselben Sprache verfasst sind. TYPOlight benutzt ausschliesslich diesen zweiten Ansatz.

Spracheinstellungen

Um mehrere Sprachversionen zu erstellen legt man in TYPOlight pro Sprache eine Seite vom Typ “Startpunkt einer neuen Website an”. In den Seiteneigenschaften wird dann die jeweilige Sprache eingetragen. Eine der Sprachversionen kann zudem als Fallback-Sprache definiert werden. Welche Sprachversion ein Website-Besucher zu sehen bekommt hängt von seinen Browser-Einstellungen ab. Existiert die bevorzugte Sprache nicht, dann wird die Fallback-Sprache angezeigt (oder, falls keine solche definiert wurde, die Fehlermeldung “Page not found” ausgegeben).

Sprachwahl

Dass TYPOlight aufgrund der Browser-Einstellung automatisch eine geeignete Sprachversion anzeigt, ist sehr angenehm. Trotzdem sollte man sich nicht ausschliesslich darauf verlassen, denn vielleicht sind die Browser-Einstellungen ja falsch, oder der Benutzer bevorzugt aus anderen Gründen eine andere Sprachversion als die von TYPOlight vorgeschlagene. Ein Sprachwechsler gehört deshalb zwingend zu einer mehrsprachigen Website.

Die einfache Variante besteht darin, dass man den Sprachwechsler hart codiert. Hierzu legt man ein Modul vom Typ “Eigener HTML-Code” an und fügt ein Code-Snippet der folgenden Art ein:

<a href=”{{env::path}}index.php/home.html” title=”Zur deutschen Startseite”>Deutsch</a> | <a href=”{{env::path}}index.php/home-en.html” title=”Go to English homepage”>English</a>

Anschliessend wird dieses Modul in allen Seitenlayouts an geeigneter Stelle integriert, und schon hat man einen Sprachwähler auf allen Seiten, der den Sprung auf die Homepages aller Sprachversionen erlaubt.

image

Komfortabler und flexibler ist der Einsatz der Extension changelanguage: Diese erstellt den Sprachwähler automatisch aufgrund aller existierenden Sprachversionen und bietet dabei einige Gestaltungsoptionen. Der Hauptvorteil der Extension liegt allerdings darin, dass man jeder Seite einer Zusatzsprache die entsprechende Seite in der Fallback-Sprache zuordnen kann. Dadurch kann man direkt zwischen den korrespondierenden Seiten der verschiedenen Sprachversionen wechseln – sofern sich der Content Manager die Mühe gemacht hat, jeder Seite die entsprechende Seite der Fallbacksprache manuell zuzuweisen. Die Extension changelanguage kompensiert also den wichtigsten Nachteil der getrennten Seitenbäume.

Obiges Prinzip funktioniert mit normalen Seiten, nicht aber für Nachrichten (News). Wenn man auch hier den Wechsel zwischen den verschiedenen Sprachversionen einer Newsmeldung ermöglichen will, muss man zusätzlich die Extension newslanguage installieren, welche auf changelanguage aufbaut.

Übersetzungsprozess

Eine mehrsprachige Website technisch zu implementieren ist eine Sache – den Übersetzungsprozess der Inhalte zu managen eine ganz andere. Von Haus aus bietet TYPOlight hier keine Unterstützung, weil es eben die Sprachversionen als separate Websites versteht. Hier empfiehlt sich die Extension translations, dank der man auf Ebene von Seiten, Artikeln und Inhaltselementen rasch zwischen den einzelnen Sprachversionen hin- und herwechseln kann. Diese Extension funktioniert nur, wenn man identisch strukturierte Sprachversionen hat – dann aber ist sie eine grosse Hilfe.

image

Übersetzung von Modulen

Beim Thema Mehrsprachigkeit darf man auch nicht vergessen, dass nicht ganz alle Texte, die im Frontend sichtbar sind, durch den Content Manager bearbeitet werden können. Nehmen wir als Beispiel das Suchformular: Die Beschriftung des Buttons “Suchen” kann man im Backend nicht ändern – diese ist im Quellcode als Variable $GLOBALS[‘TL_LANG’][‘MSC’][‘searchLabel’] hinterlegt und wird in der Datei /system/modules/frontend/languages/de/default.php ins Deutsche übersetzt. In welche Sprachen ein Modul übersetzt ist und wie vollständig diese Übersetzung ist, kann man mit der Extension translationhelper herausfinden.

Ein anderer Aspekt von Modulen ist der, dass man diese in der Regel nicht für jede Sprache separat definieren möchte. Für diesen Zweck gibt es seit TYPOlight 2.7 das Insert-Tag iflng, das eine Fallunterscheidung nach Sprache erlaubt. Ein Beispiel: Wenn Sie ein Modul vom Typ “Eigener HTML-Code” benutzen, um auf jeder Seite automatisch einen Footer mit den Copyright-Informationen auszugeben, dann können Sie dieses Modul wie folgt für die drei Sprachen Deutsch, Englisch und Französisch definieren:

© 2008-2009 Martin Sauter –
{{iflng::de}}Alle Rechte vorbehalten{{iflng}}
{{iflng::en}}All rights reserved{{iflng}}
{{iflng::fr}}Tous droits réservés{{iflng}}

Mit diesem Insert-Tag kann man beispielsweise auch die Feldbeschriftungen in Formularen sprachabhängig definieren und erspart sich so die Mühe, jedes Formular pro Sprache separat zu bauen.

Möchte man nicht nur reinen Text, sondern auch andere Insert-Tags in Abhängigkeit von der aktuellen Sprache nutzen, dann hilft die Extension fp_lngInsert weiter.

Extensions

Die pauschale Aussage “TYPOlight unterstützt Mehrsprachigkeit” ist insbesondere dort mit Vorsicht zu geniessen, wo Extensions zum Einsatz kommen. Hier muss man fallweise prüfen, ob und in welcher Weise Sprachversionen umgesetzt werden können. Ein gutes Beispiel ist der kürzlich veröffentlichte TYPOlight webShop: Dieser erlaubt zwar unterschiedliche Währungen, Liefergebiete und Steuerzonen, nicht aber unterschiedliche Sprachen. Dies hat zur Folge, dass man pro Sprache einen separaten Shop mit einem individuellen Produktkatalog erstellen muss. Bei einem grösseren Sortiment ist das sehr aufwändig, zudem schafft es Fehlerquellen (z.B. dass Produktdaten oder Preise in den Sprachversionen nicht übereinstimmen), und gewisse Funktionen wie die Lagerbestandsverwaltung sind bei separaten Shops schlicht nicht mehr sinnvoll nutzbar.

GoldenDict: Das Nachschlagewerk für Übersetzer und Studenten

image

GoldenDict ist ein Programm, um rasch Wörter nachzuschlagen – sei es, um sie zu übersetzen, sei es, um ihre Bedeutung zu verstehen. Dazu gibt es zwei Methoden: Entweder man öffnet das Programm, tippt bzw. kopiert den Begriff in das Suchfeld und lässt sich die Treffer anzeigen. Oder man arbeitet mit dem sogenannten Scan Popup – dann erkennt GoldenDict das Wort, das sich aktuell unter dem Mauszeiger befindet, schlägt dieses selbständig nach und zeigt das Resultat in einem Popup-Fenster an. Diese Methode funktioniert in Verbindung mit jedem beliebigen Programm, und man kann wahlweise einen Tastenbefehl definieren, der das Popup auslöst (denn normalerweise will man ja nicht jedes Wort nachschlagen).

image

Ein weiterer Vorteil von GoldenDict ist seine Fähigkeit, einen Begriff in den unterschiedlichsten Quellen nachzuschlagen und die Resultate zusammenzuführen. Diese Quellen können entweder aus lokalen Datenbanken (in den Formaten von Babylon, StarDict, Dictd, ABBYY Lingvo) oder aus Websites (z.B. Wikipedia, Wiktionary) bestehen und können nach den persönlichen Bedürfnissen konfiguriert werden.

GoldenDict gibt es für Windows und Linux. Es unterliegt der GNU General Public Licence v3.

l10nmgr: Übersetzungen in TYPO3 verwalten

Podcast der Extension ln10nmgr

Nachtrag zum Thema TYPO3-Extensions für die Lokalisierung und Übersetzung von Websites: Mit dem Localization Manager (l10nmgr) gibt es eine Extension, welche sowohl die Übersetzung direkt im TYPO3 Backend als auch den Export/Import von Sprachdateien unterstützt. Beim Export bzw. Import stehen nebst Excel und XML auch Dateiformate von Systemen zur computerunterstützten Übersetzung wie Across, DéjàVu, SDL Trados und SDL Passolo zur Verfügung.

Wie dem neusten Podcast von Kasper Skårhøj zu entnehmen ist, wurde die Extension in der jüngsten Vergangenheit intensiv weiterentwickelt – allerdings von mehreren Entwicklern gleichzeitig und unkoordiniert, so dass die Erweiterungen noch konsolidiert werden müssen. Der Podcast vermittelt aber auf jeden Fall einen Eindruck vom Potential dieser Extension.

TYPO3-Extensions für die Lokalisierung und Übersetzung von Websites

image

Nicht nur in mehrsprachigen Ländern wie der Schweiz ist es wichtig, Websites in verschiedenen Sprachen bereitzustellen. TYPO3 bietet hierzu von Haus aus eine gute Grundausstattung, aber erst mit den richtigen Extensions kann man das ganze Potential ausschöpfen. Dieser Artikel gibt einen knappen Überblick – ohne den Anspruch, diese komplexe Thematik erschöpfend zu behandeln.

Ein Hinweis vorab: Wer mehrsprachige Websites erstellt tut sich selbst einen grossen Gefallen, wenn die TYPO3-Installation so aufgesetzt ist, dass sie mit Unicode-Zeichensätzen umgehen kann (Stichwort: UTF8). Berücksichtigt man dies gleich bei der Installation, ist das nicht besonders schwierig – ein System nachträglich umzustellen ist dagegen kompliziert und aufwändig (wie ich aus eigener Erfahrung bestätigen kann). Mit UTF8 sind dagegen auch kyrillische, griechische, arabische, hebräische oder chinesische Schriftsysteme möglich.

Probleme machen mehrsprachige Websites dann, wenn Extensions nicht in die Zielsprache übersetzt sind. Dann werden nämlich Buttons, Formular-Labels, Hinweistexte und Fehlermeldungen dieser Extension in Englisch ausgegeben, was zu einem unbrauchbaren Sprachenmix führt. Abhilfe schafft der Extension Language Editor, mit dem man die in der Extension enthaltenen Texte selbst übersetzen kann. Auch der Language File Editor bietet entsprechende Funktionen, wobei dieser sowohl mit der früheren als auch mit der aktuellen Methode zu Speicherung von Übersetzungen umgehen kann (PHP-Dateien oder XML-Dateien). Eine dritte Extension, welche solche Übersetzungen unterstützt, ist das Locallang-XML Translation Tool.

Was den Content angeht, so bietet TYPO3 eine recht vernünftige Unterstützung von Übersetzungsprozessen. So kann man sich im Backend anzeigen lassen, welche Seiten und Content-Elemente übersetzt sind und welche nicht. Für den Übersetzer gibt es Masken, welche gleichzeitig Quell- und Zielsprache anzeigen und sogar nachträgliche Änderungen an der Quellsprache sichtbar machen. Wenn man allerdings die Übersetzer nicht aus dem Kreis seiner Content Managers (welche das TYPO3-Backend sowieso beherrschen) rekrutieren kann, bringt das alles nichts. Professionelle Übersetzer wollen sich nämlich nicht mit Content-Management-Systemen herumschlagen, sondern arbeiten mit Textdateien. Somit muss man den Content für die Übersetzung exportieren und das Ergebnis anschliessend wieder importieren. Dies kann man bei kleinen Websites notfalls händisch erledigen, bei grossen Websites ist dagegen ein Exportprozess unumgänglich. Die einfachere Variante ist die Extension Import/Export of Translation, welche den Content in eine XML-Datei exportiert. Nach demselben Prinzip funktioniert auch der LocManager, der im Detail allerdings wesentlich detailliertere Einstellmöglichkeiten bietet.

Freie Übersetzungsdienste

Fast jeder, der schon einmal einen deutschen Text ins Englische übersetzen musste (oder umgekehrt) kennt wahrscheinlich das LEO Wörterbuch: Das Urgestein der freien Online-Übersetzer ist nach wie vor sehr populär und bietet inzwischen auch Übersetzungen ins Französische und Spanische.

Vielleicht weniger bekannt ist dict.cc. Es beschränkt sich auf Deutsch/Englisch-Übersetzungen, bietet aber eine deutlich frischere Benutzeroberfläche. dict.cc basiert teilweise auf BeoLingus, der Deutsch, Englisch und Spanisch spricht und ebenfalls eine attraktive Optik bietet.

Auch Google hat Übersetzungsdienste zu bieten: Unter Google Translate kann man komplette Webseiten übersetzen lassen – wobei das Resultat oft eher erheiternd als wirklich brauchbar ist. Wesentlich nützlicher ist der Übersetzungsdienst für Einzelwörter oder Phrasen an derselben Stelle.

Als eine Art Metaportal zu freien Übersetzungsdiensten fungiert eine Seite von Langenberg. Auch wenn das Design etwas staubig aussieht, so findet man hier doch eine Reihe von wertvollen oder auch kuriosen Diensten. In die zweite Kategorie gehört etwa der Xerox Language Guesser, der einem zumindest sagt, in welcher Sprache ein Text geschrieben wurde.