Lokalisierung

Das Lokalisieren Ihrer Anwendung mit GNU gettext erfordert etwas Aufwand, ist aber ziemlich unkompliziert. Wir erstellen ein po-Unterverzeichnis im Stammverzeichnis Ihres Projekts für alle Lokalisierungsinformationen.

Generieren von .pot- und .po-Dateien

Nehmen Sie in Ihre Haupt-meson.build-Datei das po-Unterverzeichnis in den Build-Prozess auf.

subdir('po')

In diesem po-Unterverzeichnis benötigen wir

  • LINGUAS: Durch Leerzeichen getrennte Liste von Sprachen
  • POTFILES: Liste der Quellcodedateien, die nach übersetzbaren Zeichenketten durchsucht werden sollen.
  • meson.build: Lokalisierungsspezifische Meson-Datei

LINGUAS

Datei mit einer durch Leerzeichen getrennten Liste von Sprachen. Eine Beispiel-LINGUAS könnte wie folgt aussehen.

aa ab ae af

POTFILES

Datei, die alle Quellcodedateien auflistet, die gettext durchsuchen soll, um Zeichenketten zum Übersetzen zu finden. Die Syntax der Datei ist eine Zeile pro Quellcodedatei, und die Zeile muss den relativen Pfad vom Quellcode-Stammverzeichnis enthalten. Eine Beispiel-POTFILES könnte wie folgt aussehen.

src/file1.c
src/file2.c
src/subdir/file3.c
include/mything/somefile.h

meson.build

Lokalisierungsspezifische Meson-Datei. Sie importiert und verwendet das i18n-Modul. Wenn es nicht zuvor definiert wurde, muss es das globale GETTEXT_PACKAGE definieren.

i18n = import('i18n')
# define GETTEXT_PACKAGE
add_project_arguments('-DGETTEXT_PACKAGE="intltest"', language:'c')
i18n.gettext(meson.project_name())

Der erste Befehl importiert das i18n-Modul, das gettext-Funktionen bereitstellt. Die vierte Zeile führt den eigentlichen Aufruf durch. Das erste Argument ist der Name des gettext-Pakets. Dies hat zwei Auswirkungen. Erstens generiert Meson binäre mo-Dateien und platziert sie an den richtigen Stellen bei der Installation. Zweitens erstellt es eine Build-Regel, um die Haupt-pot-Datei neu zu generieren. Wenn Sie das Ninja-Backend verwenden, würden Sie den Neubau auf diese Weise aufrufen.

generiere .pot-Datei

Dann müssen wir die Haupt-pot-Datei generieren. Die pot-Datei kann jeden Namen haben, ist aber normalerweise der Name des gettext-Pakets. Nehmen wir an, das Projekt heißt intltest. In diesem Fall würde die entsprechende pot-Datei intltest.pot heißen.

Führen Sie den folgenden Befehl von Ihrem Build-Ordner aus, um die pot-Datei zu generieren. Es wird empfohlen, sie anschließend manuell zu überprüfen und z.B. korrekte Copyright- und Kontaktinformationen einzufügen.

$ meson compile intltest-pot

generiere .po-Dateien

Für jede Sprache, die in der obigen Liste aufgeführt ist, benötigen wir eine entsprechende .po-Datei. Diese können generiert werden, indem Sie den folgenden Befehl von Ihrem Build-Ordner aus ausführen.

$ meson compile intltest-update-po

Die Ergebnisse der Suche sind