Homonyme richtig übersetzen
Homonyme (auch Teekesselchen genannt) stellen eine besondere Herausforderung bei der Internationalisierung (kurz i18n) von Software dar. So kann zum Beispiel das Wort „game“ im Englischen mit „Spiel“ oder auch mit „Wild“ übersetzt werden. Eigentlich kein Problem, es sei denn in einer Anwendung kommen beide Begriffe vor. So geschehen, in dem genannten Fall, beim Freeciv Projekt.
Die gefundene Lösung ist einfach und bringt lediglich den Nachteil mit, dass die betroffenen msgids im Falle des Scheiterns der Übersetzung nicht mehr ganz so hübsch aussehen. Für die Disambiguierung werden der msgid sogenannte Qualifier vorangestellt, z. B.: msgid „?animal:game“. Diese Qualifier haben nebenbei den Vorteil, dass sie auch für Übersetzer, die nicht Programmierer sind, leicht zu verstehen sind.
Um das Ganze robuster zu machen, bietet es sich an, eine Wrapperfunktion zu schreiben, die den Rückgabewert der gettext-Funktion parst und eventuell noch vorhandene Qualifier (z. B. bei nicht übersetzte Strings) verwirft.
Schlagwörter: de, gettext, Homonym, i18n, Teekesselchen