Entwicklung/Übersetzen unter Linux

    From The Document Foundation Wiki
    This page is a translated version of the page Development/BuildingOnLinux and the translation is 100% complete.

    Einführung

    Da das offensichtlich ein übliches Problem unter Newbies ist: Auf keinen Fall als root übersetzen! Das bringt die Übersetzung zum Abbruch und als Ergebnis darf alles (inklusive cchache) gelöscht werden und von vorne eingerichtet werden. Für die zu übertragenden Schritte wird sudo ausdrücklich aus der folgenden Erklärung verwendet.

    Bitte beachtet auch unsere generischen Übersetzungshinweise (engl.).

    Abhängigkeiten

    Im Allgemeinen ist der einfachste Weg, LibreOffice zu übersetzen, es unter Linux zu tun.

    Beachte: das Windows-Untersystem wird nicht unterstützt.

    Note pin.svg

    Anmerkung:
    Neuere Branches als die die in Ihrer Distribution verwendeten werden (insbesondere master) stellen üblicherweise höhere Anforderungen. autogen.sh hilft oft, diese festzustellen. Üblicherweise sind diese Anforderungen entweder optional und haben ein entsprechendes --disable-foo oder --without-foo Argument, oder die Anforderung kann erfüllt werden, indem im Bundle das Argument --without-system-foo gesetzt wird (welches bereits Standard sein sollte). Wenn nichts hilft, muss ein neues Update installiert werden: Je nachdem, worüber sich configure beschwert, kann mit apt-cache search oder yum search die relevanten Packages ermittelt werden. Üblicherweise haben diese -dev oder -devel im Namen.

    Debian and Ubuntu

    Installiere die Abhängigkeiten

    sudo apt-get install git build-essential zip ccache junit4 libkrb5-dev nasm graphviz python3 python3-dev python3-setuptools qtbase5-dev libkf5coreaddons-dev libkf5i18n-dev libkf5config-dev libkf5windowsystem-dev libkf5kio-dev libqt5x11extras5-dev autoconf libcups2-dev libfontconfig1-dev gperf openjdk-17-jdk doxygen libxslt1-dev xsltproc libxml2-utils libxrandr-dev libx11-dev bison flex libgtk-3-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev ant ant-optional libnss3-dev libavahi-client-dev libxt-dev
    
    Note pin.svg

    Anmerkung:
    Seit 22.09.2023 muss gcc/g++ mindestens in der Version 12 verwendet werden. sudo apt install gcc-12 g++-12 und dann sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 60 --slave /usr/bin/g++ g++ /usr/bin/g++-12

    Es kann sein, dass zuerst ein PPA ergänzt werden muss (um dann stattdessen Version 13 zu verwenden) unter sudo add-apt-repository ppa:ubuntu-toolchain-r/test

    openSUSE

    Die Abhängigkeiten können auf Tumbleweed mit diesem Kommando installiert werden:

    sudo zypper in git autoconf automake bison make gcc gcc-c++ cups-devel fontconfig-devel gperf java-17-openjdk-devel libxslt-devel python3-devel krb5-devel libX11-devel libXext-devel libICE-devel libSM-devel libXt-devel libXrender-devel libXrandr-devel flex gtk3-devel gstreamer-devel gstreamer-plugins-base-devel ant junit nasm ccache binutils-gold mozilla-nss-devel
    

    on Leap gcc12 and gcc12-c++ distro packages should be installed and the following lines should be added to autogen.input:

    CC=gcc-12
    CXX=g++-12
    

    Fedora/Red Hat

    sudo dnf builddep libreoffice

    Arch Linux

    Diese Abhängigkeiten wurden aus dem offiziellen PKGBUILD des Arch Build Systems (mit einigen Modifikationen da es Material enthält, das nicht benötigt wird).

    sudo pacman -S --needed 'base-devel' 'git' 'ccache' 'ant' 'apr' 'beanshell' 'bluez-libs' 'clucene' \
                            'coin-or-mp' 'cppunit' 'curl' 'dbus-glib' \
                            'desktop-file-utils' 'doxygen' 'flex' 'gcc-libs' \
                            'gdb' 'glm' 'gobject-introspection' 'gperf' 'gpgme' \
                            'graphite' 'gst-plugins-base-libs' 'gtk3' \
                            'harfbuzz-icu' 'hicolor-icon-theme' 'hunspell' \
                            'hyphen' 'icu' 'java-environment' 'junit' \
                            'lcms2' 'libabw' 'libatomic_ops' 'libcdr' 'libcmis' \
                            'libe-book' 'libepoxy' 'libepubgen' 'libetonyek' \
                            'libexttextcat' 'libfreehand' 'libgl' 'libjpeg' \
                            'liblangtag' 'libmspub' 'libmwaw' 'libmythes' \
                            'libnumbertext' 'libodfgen' 'liborcus' 'libpagemaker' \
                            'libqxp' 'libstaroffice' 'libtommath' 'libvisio' \
                            'libwpd' 'libwpg' 'libwps' 'libxinerama' 'libxrandr' \
                            'libxslt' 'libzmf' 'lpsolve' 'mariadb-libs' \
                            'mdds' 'nasm' 'neon' 'nspr' 'nss' 'pango' \
                            'plasma-framework5' 'poppler' 'postgresql-libs' \
                            'python' 'qt5-base' 'redland' 'sane' 'serf' 'sh' \
                            'shared-mime-info' 'ttf-liberation' 'unixodbc' \
                            'unzip' 'xmlsec' 'zip' 'gtk4' 'qt6-base' 'zxing-cpp' \
                            'abseil-cpp'

    Wenn nicht unter java gearbeitet wird, kann Ant, Beanshell, Java-Environment und JUnit von der Liste gestrichen werden, da LibreOffice meistens ohne diese Elemente arbeitet.

    Wenn 'gcc-libs-multilib' installiert wird, muss die Abhängigkeit 'gcc-libs' entfernt werden.

    Slackware

    ./autogen.sh --without-java --disable-postgresql-sdbc --disable-gstreamer-1-0

    BSDs

    • DragonFlyBSD cd /usr/dports/editors/libreoffice && make patch
    • FreeBSD cd /usr/ports/editors/libreoffice && make patch
    • NetBSD cd /usr/pkgsrc/misc/libreoffice && make depends

    Klonen und übersetzen

    Als Nächstes klonen wir das Repository. Übersetzungen scheinen momentan in Pfaden mir Unicode-Zeichen nicht richtig zu funktionieren und git clone braucht gerade ein wenig abhängig von der Geschwindigkeit der Verbindung und der Auslastung auf den Servern.

    $ git clone https://gerrit.libreoffice.org/core libreoffice
    $ cd libreoffice


    Hier wäre ein guter Moment, mögliche Optionen an autogen zu übergeben:

    $ ./autogen.sh --help

    Evtl. sollte eine Debugging-Option ergänzt werden. Die Änderung einiger Optionen erfordert eine komplette Übersetzung: z. Bsp. --enable-dbgutil hinzufügen. Da das folgende make-Kommando beim ersten Mal sehr lange läuft, wäre es besser, alle benötigten Einstellungen gleich zu Beginn einzupflegen, um sich viel Zeit zu sparen. Im Zweifel kann gerne auf #libreoffice-dev IRC:// um Rat gefragt werden.

    Sie sollten eine geeignete Konfiguration für die Übersetzung in die Datei autogen.input einfügen. Sie können auch mit einer Minimalkonfiguration starten und diese später erweiteren. Eine Beispiel-autogen.input für LibreOffice unter Linux kann wie folgt aussehen Sie ermöglicht Debuggen und schaltet Doxygen ab, um Zeit zu sparen. Da das make-Kommando beim ersten Mal sehr lange läuft, sind diese Optionen hilfreich.

    --enable-dbgutil
    --without-doxygen

    Dann können die verwaltenden Dateien wie folgt vorbereitet werden:

    $ ./autogen.sh


    Nun kann die Übersetzung mit make gestartet werden. Ein vollständiger, nicht-inkrementeller Übersetzungslauf mit allen Komponenten kann bis zu 24 Stunden dauern und benötigt bis zu 20 GB Speicherplatz auf dem Laufwerk. Er benötigt auch mindestens 8 GB RAM. Andernfalls beginnt der Rechner mit der Auslagerung und scheint einzufrieren.

    Am besten läuft zuerst make. So hat man eine funktionierende Übersetzung, wenn später make check abbricht.

    $ make
    $ make check

    Das Kompilat laufen lassen

    Der vorherige Schritt produziert eine gute, lauffähige Installation, die folgendermaßen gestarten werden kann:

    $ instdir/program/soffice --writer
    $ instdir/program/soffice --calc


    Video Tutorials

    Einführung in die Entwicklung von LibreOffice

    Bitte akzeptieren Sie dieses Video. Dadurch gelangen Sie an Inhalt von YouTube, einem Service, der von einer dritten Partei bereitgestellt wird.

    YouTube privacy policy

    Das Video zeigt wie eine Entwicklungsumgebung aufgesetzt wird und das Projekt compiliert wird. Nutzen Sie bitte trotzdem die Beschreibung im Wiki anstatt aus dem Video mitzuschreiben.

    Tipps

    Verwendung des Debuggers

    Zum Start des Builds unter einem Debugger:

    $ make debugrun

    Dann wird Writer mit folgendem Kommando gestartet:

       (gdb) run --writer
    

    soffice.bin bricht beim ersten direkten Start (oder über debugrun) ab. Das ist normal. Daher muss es nochmal gestartet werden. Der Start von soffice verwendet folgendes:

    Warnungen aktivieren

    Einige Versionen von GCC sind bekannt dafür, dass sie mehr/irreführende/falsche Warnungen auf höheren Optimierungsebenen ausgeben. Kombinieren Sie daher bitte keinen build unter --disable-debug --enable-werror mit GCC.

    Leistung

    LibreOffice zu übersetzen braucht Zeit, viel Zeit. Wieviel genau hängt von der Leistungsfähigkeit Ihres Rechners ab. Aber es gibt Tools, um das Ganze zu beschleunigen.

    ccache

    ccache ist ein Tool, das die Ergebnisse der C/C++-Übersetzung zwischenspeichert um sie später evtl. wiederzuverwenden. Es beschleunigt nicht die eigentliche Übersetzung (im Gegenteil, es verlangsamt sie ein wenig), aber es kann spätere erneute Übersetzungen dramatisch beschleunigen. Wenn Sie viele Änderungen in den Headern von LibreOffice planen, kann es ein wertvolles Tool sein.

    Standardmässig wird ccache aktiviert, wenn es auf dem System gefunden wird. Um für bessere Ergebnisse den Cache zu vergrössern oder die Cache-Kompression zu aktivieren, ist 'man ccache' Ihr Freund.

    Der Standard-Cache sind lediglich 5 GB, was für eine LibreOffice-Übersetzung eigentlich viel zu wenig ist. Für einen Build ohne Debug-Informationen werden wenigstens 8 GB und für einen Build mit kompletten Debug-Informationen sollten 32 GB hilfreich sein. Die Größe des Cahes wird wie folgt gesetzt (diese Einstellung wird innerhalb des Cache-Verzeichnisses gespeichert, sollte dieser Speicherort über $CCACHE_DIR geändert werden, müsste die Grösse neu gesetzt werden):

    ccache --max-size 32G
    

    ccache unterstüzt auch Kompression, die am besten auch aktiviert wird (hat jemand verlässliche Zahlen?). Vor allem, wenn ein kleiner oder langsamer Speicher wie SSD oder ein Laufwerk eines Laptops eingesetzt wird. Die Kompression wird wie folgt in der .bashrc bzw. seiner Entsprechung aktiviert:

    export CCACHE_COMPRESS=1
    

    Icecream / distcc

    Bei Zugriff auf mehrere Rechner mit freien CPU-Zyklen können diese mit icecream oder distcc verteilt genutzt werden. Icecream wird dabei empfohlen und ist einfacher zu installieren.

    Unterstützung für Icecream ist in LibreOffice eingebaut, es reicht, --enable-icecream in ./autogen.sh einzufügen und der Konfigurations Prozess wird einige Jobs zur Verfügung stellen. Er versucht die icecream gcc wrappers in /usr/lib/icecc/bin oder in /opt/icecream/bin zu finden. Sollten Sie sie woanders haben, verwenden Sie bitte den Schalter --with-gcc-home=/path/to/your/icecream/bin, um es zu überschreiben.

    Um distcc verwenden zu können, wird es erst auf allen Rechnern installiert und mit distccd gestartet. Dabei müssen alle Compiler-Versionen kompatibel sein (wichtig für C++-Code). Nun wird auf dem Leit-Rechner distcc installiert und konfiguriert, um die anderen Compile-Rechner zu nutzen. Dann wird --with-parallelism=N an autogen.sh übergeben, wobei N die Gesamtzahl der verfügbaren CPUs in Ihrem Cluster ist. Mit distcc-pump make CC=distcc CXX=distcc wird der verteilte Build gestartet.

    Precompiled Header

    Mit --enable-pch in der autogen.sh wird die Verwendung von precompiled Headern (PCH) aktiviert. Dabei wird die Compile-Zeit verkürzt auf Kosten von mehr Festplattenspeicher und mehr Quell-Dateien, die möglicherweise wieder übersetzt werden, wenn sich ein Header ändert. Die Option hat mehrere Level (System, Basis, Normal, Vollständig). Je höher das Level, desto höher ist der mögliche Gewinn aber auch der Speicherverbrauch und das Risiko möglicher Rebuilds bei Änderungen.

    --with-parallelism

    Der Build-Prozess kann parallel in mehreren Tasks ablaufen. Dieser parallele Ablauf wird durch den Schalter --with-parallelism in der autogen.sh gesteuert. Wenn genug Speicher vorhanden ist, liefert --with-parallelism=n, wobei n die Anzahl der Rechenkerne angibt, oder --with-parallelism=2 für eine CPU die schnellsten Ergebnisse.

    --with-parallelism ist standardmässig bereits auf die Anzahl der CPUs auf dem Rechner eingestellt, es sei denn --enable-icecream wird verwendet, dann werden standardmässig 10 CPUs erwartet.

    --with-system-libs

    Compilieren mit existierenden Libraries kann den Build beschleunigen, aber sie müssen an die Abhängigkeiten angepfriemelt werden.

    ungefähre Build-Zeiten

    Der erste Build oder ein kompletter Build dauert ca. 8/Anzahl der CPUs Stunden auf einem neuen Rechner. Mit ccache dauern die nachfolgenden Builds zwischen 2 und 10 Minuten (abhängig vün der Anzahl der modifizierten oder hinzugefügten Dateien und dedren Komplexität).

    Verbose make

    Make verdeckt die exakten aufgerufenen Kommandos. Um mitzuprotokollieren, was Make exakt tut, kann es folgendermaßen aufgerufen werden:

    $ make verbose=1

    Using verbose=1, in turn sets this option for the child make invocations, and also deals with externals. In the verbose mode, every single command used to build LibreOffice is shown, which can be used for troubleshooting build problems.

    mehrere Arbeitsverzeichnisse

    Zur gleichzeitigen Arbeit sowohl am Master als auch an den aktuellen Release Branch(es) können Git Repositories und externe Quellsammlungen geteilt werden. Dabei bleibt zu beachten, dass gesicherte Versionen massgebend sind, gerade bei so riesigen Sammlungen wie die l10n Quellen. Mehrere Branches in einem gemeinsamen Arbeitsverzeichnis zu bearbeiten ist nicht sehr empfehlenswert, selbst wenn keine Abhängigkeiten untereinander bestehen sollten. Die Menge des zu übersetzenden Quelltexte entsprcht quasi einem kompletten Rebuild. Wenn der Speicherplatz zur Verfügung steht, werden getrennte Verzeichnisse empfohlen.

    Es gibt zwei Möglichkeiten, Git Repositories für mehrere Verzeichnisse zu teilen: git clone --reference und git worktree. Ein referenzierter Clone kann wiederholtes Downloaden des Repositories unnötig machen.

    Setup

    Zuerst wird der erste Build auf Ihrem System wie oben beschrieben vorbereitet. Dann wird für alle anderen Builds der initiale Build geklont.

    $ git clone --reference /path/to/master --branch name-of-branch ssh://logerrit/core /dir/to/be/created

    Das Klonen läuft dabei deutlich schneller ab. Danach wird das neue Arbeitsverzeichnis mit diesen beiden zusätzlichen Konfigurations- (oder autogen.sh) Optionen eingerichtet:

    $ ./autogen.sh ... --with-referenced-git=/path/to/master --with-external-tar=/path/to/master/external/tarballs

    Erneut ist das Klonen deutlich schneller. Für die Option --with-external-tar wird ein absoluter Pfad verwendet. Danach wird mit building wie für den Einzel-Arbeitsverzeichniss-Fall weitergemacht.

    Die Option --with-referenced-git wird nur für die Aktivierung von Untermodulen (Übersetzungen, Verzeichnisse oder Hilfe) oder für den Branch libreoffice-4-0 (oder noch ältere Branches) verwendet. Bei neueren Branches sind die Untermodule standardmäßig abgeschaltet.

    Wenn Sie sich die Rosinen aus mehreren Arbeitsverzeichnissen herauspicken wollen, kann Ihr lokaler git wie ein entfernter git wie folgt eingestellt werden:

    $ cd /path/to/stable-workingcopy
    $ git remote add unstable /path/to/master/.git
    $ cd /path/to/master
    $ git remote add stable /path/to/stable-workingcopy/.git

    Jetzt können Sie commits herauspicken, wie Sie es bei einem "echten" remote auf einem anderen Server machen können.

    Einen Release Branch auschecken

    autogen.sh läuft auf dem Master mit den Spizifisch benötigten Parametern. Dann wird make fetch gestartet, um die Untermodule abhängig von den Parametern in der autogen.sh zu holen

    dann wird der Branch gewechselt mit

    $ ./g checkout -b libreoffice-4-0 origin/libreoffice-4-0


    rpm not found/ant not found/no package gnome-vfs-2.0

    --disable-epm Damit wird "rpm not found" behoben, da autogen.sh entweder dpkg or rpm auf dem System erwartet.

    --without-java Damit wird "ant not found" behoben

    Für den Master von LibreOffice 3.6 wird Doxygen benötigt, um das UNO SDK zu erzeugen. Dieses wird wiederum benötigt, um die HTML Dokumentation für das C++ UNO Interface zu generieren. Eine Möglichkeit wäre, Doxygen von seiner website zu installieren und doxygen ausführbar im PATH zu halten. Oder die absolute Lage über den Konfigurationsschalter --with-doxygen=pathname anzugeben, in der die Dokumentation für das C++-Interface fehlt. Hier wird sie aus der UNO SDK erzeugt. Eine dritte Möglichkeit ist, --disable-odk anzugeben. Hiermit wird das UNO SDK gar nicht erzeugt.

    Hinweis: Manuelles Installieren des Paketes 'libgnomevfs2-dev' auf Ubuntu behebt "No package 'gnome-vfs-2.0' found" für ältere Release Branches. Es wird im Master nicht mehr benötigt. Es wird durch den synaptischen Manager oder das Terminal ersetzt.

    $ sudo apt-get install libgnomevfs2-dev

    Build DEB und/oder RPM Packages

    Falls DEB oder RPM Pakete erzeugt werden sollen, werden entsprechende Optionen in der Datei autogen.input gesetzt:

    RPM

    --with-package-format=rpm
    --enable-epm

    DEB

    --with-package-format=deb
    --enable-epm

    Die Basis-Einstellungen der TDF können unter distro-configs module abgerufen werden. Für Linux gilt distro-configs/LibreOfficeLinux.conf.

    Wo sind die Pakete?

    Siehe die Dateien im Verzeichnis ./workdir/installation/. Es gibt einen Ordner für jedes Set an Paketen, der einen odedr mehrere Unterordner für die versichiedenen Paketarten enthält, entweder für DEB, RPM, oder für beide. In diesem Ordner gibt es einen Unterordner namens install. Dieser enthält zwei Unterordner. Einer davon enthält ein Archiv aller zusammengezippten Pakete (den ...-download Ordner) und der andere enthält einen DEBS/RPMS Ordner mit den entsprechenden Paketen. Der Rest sollte selbsterklärend sein.

    Über das Zeilenende und den Zeilenwechsel bei Git

    Falls autogen.sh Ausgaben wie die folgenden produziert:

    ./autogen.sh: line 1: $':\r': command not found
    ' '--srcdir=/home/user/libreoffice' '--enable-option-checking=fatal'
    configure: WARNING: you should use --build, --host, --target
    configure: WARNING: invalid host type: 
    ********************************************************************
    *
    *   Running LibreOffice build configuration.
    *
    ********************************************************************
    
    ' not recognized system type... Invalid configuration `
     failedre: error: /bin/bash ./config.sub 
    Error running configure at ./autogen.sh line 241.

    ...dann gibt es Probleme mit dem Zeilenende. Das kann an folgenden falsch gesetztem core.autocrlf=true unter Git liegen.

    Um das Problem zu beheben werden folgende Kommandos gegeben (ACHTUNG: nicht bestätigte Änderungen gehen verloren!)

    git config --unset core.autocrlf
    git rm --cached -r .
    git reset --hard
    git clean -x -f
    ./autogen.sh

    Wir bauen uns ein lokalisiertes User Interface mit .po Dateien aus dem TDF Weblate zusammen

    Das User Interface von LibreOffice wird aus den .po Dateien auf dem TDF Weblate server. Die Übersetzungen werden aktualisiert und als Sprachpaket mit jeder Version in jedem Branch neu zusammengepackt. Das heisst oft, dass das Sprachpaket die Neuerungen zwischen dem Releases widerspiegelt und die nightly builds nur für einige Sprachen existieren. Übersetzer testen daher am Besten ihre Arbeit bevor sie sie veröffentlichen und Beta-Tester die Übersetzungen testen sie vor dem offiziellen Release.

    Zunächst werden build Abhängigkeiten geklärt und dann wird versucht, den Build klonen und übersetzen zu starten.

    übersetzte Benutzer-Schnittstellen produzieren

    1. Zunächst werden die .po-Dateien aus dem TDF Weblate heruntergeladen. Sie können sich dazu zum TDF Weblate einloggen.
    2. Dann werden die Quellen mit dem Spachpaket unter Verwendung des Kommandos ./autogen.sh --with-lang="<langCode>" übersetzt. Nicht vergessen: <langCode> bitte durch den entsprechenden Sprachschlüssel ersetzen 😊. Wenn eine autogen.input Datei verwendet wird, dann wird daraus: --with-lang=de ja ar
    3. Nun werden die .po-Dateien geöffnet und der Inhalt in die entsprechenden Verzeichnisse verteilt. Dabei kann (unter GNU/Linux) das Kommando cp -R <langCode>/libo_ui/* libreoffice/translations/source/<langCode>/ verwendet werden. Auch hier bitte nicht vergessen, <langCode> (kommt zweimal vor) durch den entsprechenden Sprachschlüssel zu ersetzen.
    4. Dieser Schritt kann tricky werden. Einige .po Datein heissen 'messages.po', andere heissen anders. Jedenfalls müssen alle .po-Dateien in .mo-Dateien konvertiert werden. Am Besten geschieht das folgendermaßen:
      1. Dateien die nicht(!!!) 'messages.po' heissen werden mit dem Kommando make build-l10n-only konvertiert,
      2. Dateien, die tatsächlich(!!!) 'messages.po' heissen, müssen manuell in .mo-Dateien konvertiert werden. Dazu wird für jede Datei folgendes Kommando verwendet: msgfmt -o instdir/program/resource/<langCode>/LC_MESSAGES/<moFile><dir>/messages.po. Hier müssen drei Dinge geändert werden: <langCode> zum aktuellen Sprachschlüssel, <moFile> auf Daten aus der linken Spalte der folgenden Tabelle und <dir> auf Daten aus der rechten Spalte der folgenden Tabelle. Es muss dabei der vollständige Pfad für '<dir>/messages.po' vom aktuellen Verzeichnis aus angegeben werden.

    Wie in Schritt 4 erwähnt heissen einige .po-Dateien 'messages.po' und einige heissen anders. Die folgende Tabelle zeigt Verzeichnisse, die 'messages.po'-Dateien enthalten können. Hier findet Schritt 4.2 Anwendung.

    <mofile> <dir>
    acc.mo accessibility
    avmedia.mo avmedia
    basctl.mo basctl
    chart.mo chart2
    cnr.mo connectivity
    cui.mo cui
    dba.mo dbaccess
    dkt.mo desktop
    editeng.mo editeng
    filter filter
    for.mo formula
    fps.mo fpciker
    frm.mo forms
    fwk.mo framework
    pcr.mo extensions
    rpt.mo reportdesign
    sb.mo basic
    sc.mo sc
    sca.mo scaddins
    scc.mo sccomp
    sd.mo sd
    sfx.mo sfx2
    sm.mo starmath
    svl.mo svl
    svt.mo svtools
    svx.mo svx
    sw.mo sw
    uui.mo uui
    vcl.mo vcl
    wiz.mo wizards
    wpt.mo writerperfect
    xsc.mo xmlsecurity

    Der letzte Schritt im Prozess ist die Ausführung von sudo make install, um neu hinzugefügte Übersetzungen zu ergänzen.

    Wenn ein LibreOffice-master erzeugt und die Übersetzungen kontrolliert werden sollen, wird "make translations" angewendet, um die .po-Datei mit den .pot-Dateien zusammenzuführen.

    übersetzte Hilfe Dateien produzieren

    Hilfe Dateien werden auch im TDF Weblate übersetzt. Daher kann es auch mit übersetzten Hilfe Dateien gemachtet werden.

    1. .po Dateien der übersetzten Hilfe herunterladen
    2. ./autogen.sh --with-help --with-lang="<langCode>" starten, wobei <langCode> durch den entsprechenden Sprachschlüssel ersetzt wird. Wenn die Hilfe als HTML-Dateien angelegt werden sollen, wird --with-help=HTML mit angegeben. In einer autogen.input-Dastei werden keine Anführungszeichen verwendet. Hier heißt es also: --with-lang=de ja ar
    3. make starten
    4. cp -fR <langCode>/libo_help/* libreoffice/translations/source/<langCode>/helpcontent2/source/text/ starten. Aber bitte drandenken: zweimal <langCode> durch den aktuellen Sprachschlüssel ersetzen und diesen Ordner korrekt aus dem aktuellen Arbeitsverzeichnis aus ansteuern.
    5. mv libreoffice/translations/source/<langCode>/helpcontent2/source/text/auxiliary.po libreoffice/translations/source/<langCode>/helpcontent2/source/ starten. Die beiden Stellen mit <langCode> durch den aktuellen Sprachschlüssel ersetzen und auch diesen Ordner korrekt aus dem aktuellen Arbeitsverzeichnis aus ansteuern.
    6. make build-l10n-only starten
    7. sudo make install starten

    (Dank an Kiyotaka and Jihui)