OS X Software internationalisieren


Die Sprache der Computer und Programmentwicklung ist englisch. Das wirft dann die Frage auf wie bekomme ich mein anständig auf englisch entwickeltes Programm dazu deutsche Texte zu verwenden. Das sollte selbstverständlich mit geringem Aufwand zu bewerkstelligen sein. Das am besten mit den vorhandenen Bordmitteln.

Lösung

In der NS (NS steht für NextStep) Bibliothek wird ein Makro zur Verfügung gestellt. Mit der Hilfe dieses Makro’s können die bereitgestellten Texte durch die der nativen Sprache ersetzt werden. Da das Foundation Framework sehr umfangreich ist wird das Makro in verschiedenen Ausprägungen zur Verfügung gestellt. Die Standard Version ist NSLocalizedString. Mit dieser Version wird anstelle des normalen Textes ein Platzhalter angegeben. Über diesen Platzhalter wird dann der auszugebende Text geholt.

Das Makro „NSLocalizedString(@“Message“, @“Comment“) würde  den Text „Message“ ausgeben. Wenn allerdings eine Internationalisierungsdatei vorhanden wäre, würde der Text „Message“ durch die jeweilige Anpassung ersetzt. Wäre also eine Datei „de.lproj“ an der richtigen Stelle vorhanden könnte die Ausgabe „Nachricht“ lauten.
In der Datei „de.lproj“ muss dafür die Zeile Message=Nachricht stehen. Wogegen in der original englischen Datei „en.lproj“ die Zeile Tag=Message steht.

Xcode

Voraussetzung für die Lokalisierung eines Projekts ist die Erweiterung des Projekts in Xcode-Projekts. Es muss zu der immer vorhandenen englischen Sprachanpassung die neue Sprache hinzugefügt werden. Das wird in der Projektansicht von Xcode erledigt.

Nach dem der Plus-Knopf angeklickt wurde zeigt Xcode die möglichen Dateien die lokalisiert werden können an. Wenn zuviel oder unnötige Dateien angezeigt werden kann durch Deselektierung  in diesem Dialog die jeweilige Datei ausgespart werden.
Die zuvor angebotenen Dateien stehen ab sofort in dem Projekt zu Lokalisierung bereit. In dem linkem Fenster wir dies durch das kleine Dreieck angezeigt. Ein Klick darauf klappt die Dateien auf und zeigt die möglichen Übersetzungen. 
Bei den einfachen Textdateien ist nun die Übersetzung problemlos möglich. 

Sonderfall XIB

Die XIB-Dateien erfordern  eine großen Aufwand. So ist hier keine direkte Übersetzung möglich. Es besteht die Möglichkeit die Benutzeroberfläche komplett in der neuen Sprache zu erstellen. Doch dieser große Aufwand ist in der Regel nur bei kleinen bis sehr kleinen Projekten zu vertreten. In der Regel machen Programmieren genauso ungern Übersetzungen wie Dokumentationen. So ist davon auszugehen das dieser Weg im wirklichen Leben nie beschritten wird.
Von Apple wird ein Kommandozeilen Werkzeug zur Verfügung gestellt. Dieses Programm extrahiert die zu übersetzenden Zeichenkette aus der XIB Datei. Die so gewonnen Zwischendateien können gut Übersetzt werden. Auch hier ist etwas Aufwand nötig.
Advertisements

CMake und OS X


CMake ist ein sehr nützliches Werkzeug. Mit diesem Tool wird die Entwicklung von Programmen sehr erleichtert.
Dieses Werkzeug wird von Kitware als Opensource vertrieben und steht über diese Adresse  http://www.cmake.org/cmake/resources/software.html zum Download bereit. Ursprünglich kommt das Werkzeug aus der Linux-Ecke. Allerdings steht es auch für Windows und für den OS X zur Verfügung. Wobei Mac OS X der interessante Teil für mich ist.

Installation

Nach dem Download steht auf dem Mac ein DMG in dem Download Ordner bereit. Nach dem dieses Disk-Image durch einen Doppelklick geöffnet wurde kann man es einfach installieren. Bei der Installation wird angeboten einen symbolischen Link für die Kommando-Zeile zur Verfügung zu stellen. Das macht absolut Sinn. Außer man ist geneigt für jeden Kommandozeilen Aufruf richtig viel zu tippen. Die Eingabe würde ohne den symbolischen Link auch den kompletten Pfad, einschließlich den Pfad in der App erfordern.

Nutzung

Am leichtesten lässt sich CMake mit der Hilfe des mitgelieferten GUI-Tools nutzen. Damit ist schnell und einfach die notwendige Datei CListMake.txt zu erzeugen. Diese Datei ist notwendig um das Makefile zu generieren. So lassen sich mit ein paar einfachen leicht zu verstehenden Befehlen komplizierte Projekte erstellen. Das geht sogar so weit dass ein Zusatzmodul dabei ist mit dem sich die Paketskript erzeugen lassen. Also kann man aus der CListMake.txt Datei erzeugte Programme gleich in die folgenden Pakete zusammenpacken:
  • TGZ
  • STGZ
  • TBZ2
  • TZ
  • ZIP
  • NSIS
  • DragNDrop (OSX)
  • PackageMaker (OSX)
  • OSXX1 (OSX)
  • Bundle (OSX)
  • CygwinBinary und CygwinSource
  • DEB (Linux)
  • RPM (Linux) 
Ich gebe zu das ist sehr beeindruckend. Allerdings werde ich trotzdem nicht damit arbeiten. Warum ist im nächsten Abschnitt zu lesen.

Fazit

Nach dem die „großen“ Qt und Xcodehttps://developer.apple.com/xcode/ ein durchdachtes Konzept für die IDE’s zur Programm Kompilierung eingesetzt haben macht CMake nicht mehr richtig Sinn. In der Umgebung in der ich arbeite schon einmal gar nicht. CMake macht hier aus einem „freien“ Projekt ein Xcode Projekt. Da kann man sein Projekt doch gleich in der richtigen Umgebung starten. Ich glaube es würde niemand auf die Idee kommen sein Projekt frei aufzusetzen. Zumal die aktuellen Projekte, die mit GUI, sehr aufwändig sind.