Software für die Sternwarte Teil 15: kstars kompilieren (deutsche Version)

Wie funktionieren Sprachen in KDE?

Kstars ist ein KDE-Programm. Und KDE-Programme werden entwicklungstechnisch gesehen in einer Umgebung verwaltet, die sich Phabricator nennt. Ist nicht so ganz einfach, sich im Phabricator zurecht zu finden.

Nun, der Pabricator juckt uns nicht weiter, denn wir bekommen kstars aus dem github. Dort befindet sich ein Clone der aktuellen Version. Das Problem ist nur, daß uns kstars im github nur in englischer Sprache angeboten wird.

KDE und andere Sprachen, das ist ein Kapitel für sich!

Sprachunterstützung für KDE-Programme werden von KDE-Übersetzerteams möglich gemacht. So wird zum Beispiel für kstars folgendes angeboten:

https://edu.kde.org/kstars/i18n.php

Klicken wir hier bei den GUI-Strings bei German auf „get“, so wird uns die Datei „kstars.po“ zum Download angeboten. Und das ist schon gar nicht einmal so schlecht, denn diese po-Datei enthält die komplette deutsche Übersetzung von kstars. Klicken wir auf „Speichern“, so haben wir nach kurzer Zeit diese Datei in unserem Download-Ordner.

Nun müssen wir diese po-Datei nur noch an die richtige Stelle auf unserer Festplatte schieben und gut isses.

Sollte man meinen…

Etwas Gemeckere zwischendurch

Lasst es erstmal bleiben mit dem Download der po-Datei. Denn das, was uns auf dieser offiziellen Seite für die I18n-Sprachunterstützung von kstars angeboten wird, ist schlichweg unbrauchbar, da uralt. Ich hab mal nachgesehen, die po-Datei ist vor 7 Jahren entstanden. Das muß, computertechnisch gesehen, kurz nach der Sintflut gewesen sein. kstars sieht lustig aus, wenn ich es mit dieser Sprachdatei kompiliere. Ich hab´s ausprobiert.

Wo gibt es eine aktuelle kstars.po?

Also brauchen wir eine aktuelle Version der Sprachdatei!

Ich hab etwas gesucht und bin doch tatsächlich fündig geworden. Die Übersetzungsdatei in einer aktuellen Version befindet sich im trunk-branch in einem Zweig mit dem Namen extragear-edu. Bevor nun die große Sucherei losgeht, hier ist die Adresse:

https://l10n.kde.org/stats/gui/trunk-kf5/package/kstars/de/

Klicke ich auf dieser Seite auf kstars.po, wird mir die Sprachdatei zum Download angeboten.

Was mach ich nun mit kstars.po?

Wenn wir vorhin alles richtig gemacht haben, so befindet sich nun die aktuelle Version von kstars.po im Download-Verzeichnis unseres Rechners.

Und jetzt wird es interessant: Wenn ich nämlich kstars mit der deutschen Sprachunterstützung kompilieren will, muß ich die kstars.po mit kompilieren. Und dieser Kompiliervorgang ist mit einigen Überraschungen gesegnet.

Drum gehen wir das Ganze Schritt für Schritt durch

kstars mit deutscher Sprachunterstützung kompilieren

Wenn ihr euch an den Artikel erinnert, in dem ich das Kompilieren von kstars mit englischer Sprachunterstützung gezeigt habe, dann werden ihr jetzt vielleicht sagen: „Ist doch ganz einfach, 5 Zeilen und die Sache ist gegessen“.

Ganz so einfach ist es denn doch nicht mit den Sprachen in KDE.

Bis zur Zeile 3 bleiben wir identisch mit dem englischen Weg. Ab da wird die Straße dann so holprig, daß wir vom Fahrrad absteigen und schieben müssen.

Am besten gehen wir diesen Weg also Schritt für Schritt …

Projekt bilden, die Erste…

Die Zeilen 1 bis 3 sind identisch bei der englischen und deutschen Version:

  1. Wir erzeugen im build-Verzeichnis einen Unterordner mit dem Namen kstars
  2. und begeben uns in diesen Ordner
  3. Dort bereiten wir das Kompilieren vor
mkdir -p ~/astrostuff/build/kstars &&\
cd ~/astrostuff/build/kstars &&\
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release ~/astrostuff/kstars

Eine neue Heimat für kstars.po

Durch den cmake-Befehl in Zeile 3 hat sich der neu angelegte Ordner mit Dateien und Verzeichnissen gefüllt. Ein Verzeichnis mit dem Namen „po“ finden wir da drin aber nicht. Und exakt so ein Verzeichnis brauchen wir als neue Heimat für kstars.po.

Nun ja, kein allzu große Problem. Legen wir einfach dieses Verzeichnis neu an und spendieren ihm noch ein Unterverzeichnis mit dem Namen „de“.

mkdir -p ~/astrostuff/build/kstars/po/de

Und in dieses de-Verzeichnis kopieren wir die deutsche Übersetzungsdatei von kstars, die im Download-Verzeichnis unseres Rechners auf bessere Zeiten wartet.

mv ~/Downloads/kstars.po ~/astrostuff/build/kstars/po/de

Dieses Unterzeichnis „de“ ist übrigens reserviert für die deutsche Sprache. Würden wir kstars auf italienisch übersetzen wollen, dann würden wir anstelle von „de“ ein Unterverzeichnis mit dem Namen „it“ benötigen.

Projekt bilden, die Zweite…

Wer nun meint, er könne gleich mit dem Kompilieren loslegen, der sieht sich getäuscht. Denn da gibt es noch eine Kleinigkeit, die fehlt. Das will ich mal kurz erklären.

Beim Kompilieren mit dem make-Befehl wird unsere Klartext-Übersetzungdatei kstars.po umgewandelt in eine Datei mit dem Namen „kstars.mo“. Diese Datei enthält die Übersetzungen nicht mehr im Klartext, sondern in binärem Code.

kstars.mo wird aber nur erzeugt, wenn ein Ordner mit dem Namen „locale“ im Build-Verzeichnis für kstars zu finden ist. Ist er aber nicht.

Der Ordner „locale“ wird beim Bilden des Projekts (cmake) mit allen notwendigen Unterverzeichnissen erzeugt, aber nur dann, wenn ein Ordner „po“ vorhanden ist. Diesen Ordner samt Unterordner „po“ haben wir vorhin erzeugt. Also können wir das Projekt, diesmal mit bekannter Sprachunterstützung, nochmals bilden

cd ~/astrostuff/build/kstars &&\
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release ~/astrostuff/kstars

Und ob ihr es glaubt oder nicht! Wie durch ein Wunder ist in „~/astrostuff/build/kstars“ ein neues Verzeichnis „locale“ erschienen in dem sich das Unterverzeichnis „de“ befindet.

Aber jetzt: Zeit zum Kompilieren

make -j4

Nun dauert es eine Weile, bis kstars kompiliert ist. Dabei beikommt „~/astrostuff/build/kstars/locale/de“ einen Mieter, nämlich das „übersetzte Übersetzungsfile“ 🙂 kstars.mo

kstars installieren

Was bleibt, ist die Installation von kstars auf die Festplatte:

sudo make -j4 install

Noch mehr Sprachen in kstars

Für mich ist kstars in der deutschen Version vollkommen ausreichend. Falls jemand aber auch noch andere Sprachen installieren will, kann er das gern tun. Er muß nur in ~/astrostuff/build/kstars/po“ Unterverzeichnisse für die gewünschten Sprachen erzeugen und die entsprechenden po-files in diese Unterverzeichnisse kopieren. Und dann weiter wie oben.

Das ist für zwei oder drei Sprachen ein gangbarer Weg. Möchte man aber alle Sprachen anbieten, in die kstars schon übersetzt wurde, wird dieser Weg lästig werden, da mit einem Haufen Tipparbeit verbunden.

Der openSUSE Build-Service

Im oprnSUSE Build-Service werden alle möglichen Programme angeboten. So kann man von da auch kstars in einer sehr aktuellen Version mit schon eingebauter Sprachuntersützung für alles was gut und teuer ist installieren

Tun wir das, haben wir ein Problem.

Denn es ist nicht gewährleistet, daß das dann installierte kstars in jeder Hinsicht kompatibel ist, mit dem was wir von unserem selbst kompilierten kstars verlangen. Vor allem bei den 3rd-Party-Indi-Treibern kann es dann zu ungewünschten Effekten kommen.

Wir können aber das Quell-RPM von kstars aus dem Build-Service herunterladen. Denn dieses RPM-Paket enthält den kompletten von kstars und damit auch die po-Dateien für die vollständige Sprachunterstützung.

Also, ab geht es in den openSUSE Build-Service:

https://software.opensuse.org/search

  1. Search: kstars
  2. View
  3. Expert Download
  4. Grap binary packages directly
  5. kstars-3.3.6.src.rpm oder was gerade aktuell ist

Wichtig beim letzen Punkt in der Liste ist das „src“ im Namen, das als Synonym für Quellpaket steht.

Im nun folgenden Dialog drücken wir auf „Datei speichern“. Damit wird das Source-RPM in den Download-Ordner unseres Rechners heruntergeladen.

Entpacken

Um an die po-Datei zu kommen müssen wir das Quell-RPM entpacken. Also:

  • Rechtsclick auf das heruntergeladene Source- RPM (kstars-3.3.6.src.rpm)
  • Entpacken
  • Archiv hierher entpacken, Unterordner selbstständig ermitteln

Damit wird das Paket in ein Verzeichnis gleichen Namens, nur ohne das „rpm“ im Namen, entpackt. Das Verzeichnis heißt in unserem Fall dann: kstars-3.3.6.src

In diesem Verzeichnis befinden sich zwei Dateien. Eine ist der als tar.xz gepackte Quellcode von kstars. Und diesen gepackten Quellcode wollen wir sogleich entpacken 🙂

Also, wie schon vorhin:

  • Rechtsclick auf die Datei „kstars-3.3.6.tar.xz“
  • Entpacken
  • Archiv hierher entpacken, Unterordner selbstständig ermitteln

Das Resultat ist wiederum ein neuer Ordner, diesmal mit dem Namen kstars-3.3.6

Die po-Dateien

In diesem Verzeichnis befinden sich die Quelldateien von kstars. Und das schöne ist, daß darin ein Unterverzeichnis existiert, das auf den Namen „po! hört. Öffnet einmal dieses po-Vereichnis und ihr werdet überrascht sein, in wieviele Sprachen kstars schon übersetzt wurde.

Eine neue Heimat für die po-Dateien

Es wär nun sehr mühsam, diese Sprachdateien alle einzeln in unser build-Verzeichnis zu kopieren. Am besten kopieren wir gleich den gesamten Ordner po samt Inhalt.

Der gesamte Weg in Stichworten

  • Build-Ordner für kstars erzeugen
  • Projekt bilden mit cmake
  • po-Verzeichnis in den kstars-build-Ordner kopieren
  • Projekt mit cmake nochmal bilden (Verzeichnis „locale“ erscheint)
  • kompilieren mit make
  • Installieren

Nachwort

Ich hab mich vor einiger Zeit schonmal über das Thema „Sprachunterstützung für kstars“ ausgelassen.

Eigentlich sollte das Herunterladen der po-Dateien automatisiert erfolgen, wenn man dem cmake-Befehl die Option „-DFETCH_TRANSLATIONS=ON“ mitgibt.

Das hat schon damals nicht out of the box funktioniert, sondern erforderte gutes Zureden. Und aktuell funktioniert nicht einmal mehr mein Workaround von damals ( https://sternenkarten.com/2019/05/01/sprachunterstutzung-fur-kstars/ ).

Deshalb ich die Sprachunterstützung für kstars vorhin von Hand einbauen.

Das war´s denn wohl. Ich denke, nun bin nicht nur ich ins Schwitzen gekommen. Ist gar nicht so einfach mit den Sprachen in KDE. ich hab es aber dennoch geschafft 🙂

Weiter geht´s demnächst in diesem Theater. Dann werde ich die von mir gemalten Sternbildlinien aus meinen kleinen Sternenkarten in kstars einbauen.
Edit:
Meine Sternbildlinien sind inzwischen offizieller Bestandteil von kstars 🙂

Stay tuned 🙂

Hinweis:

Dieser Artikel ist als Gedankenstütze für mich gedacht. Er ist für das Betriebssystem openSUSE Tumbleweed geschrieben.
Die Verwendung von Code aus diesem Artikel sollte in einer virtuellen Maschine geschehen und erfolgt ausschließlich auf eigene Gefahr.

Sollte beim Kopieren dieses Codes in ein Terminal die Frage kommen, was mit den „Nicht-druckbaren Zeichen“ geschehen soll, bitte die Option „Nicht druckbare Zeichen entfernen“ auswählen.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.