Sprachpakete

Die Idee hinter Sprachpaketen (»langpacks«) besteht darin, Übersetzungen oder sprachspezifische Inhalte in Unterpakete aufzuteilen, falls die Dateien sehr groß sind oder das Paket Teil eines Kernimages ist, das minimal sein sollte.

Unterpakete, die ausschließlich zur Aufnahme zusätzlicher Sprachübersetzungen oder Inhalte dienen, müssen in der Form -langpack- benannt werden, wobei -langpack- der Name des Pakets ist, zu dem die Sprachpakete gehören, und ein gültiger Sprachcode aus /usr/share/xml/iso-codes/iso_639_3.xml oder /usr/share/i18n/locales/ ist. Insbesondere muss der im Paketnamen verwendete Sprachcode-Wert mit dem im Verzeichnispfad des Upstreams für die Übersetzungs- oder Sprachdateien verwendeten Sprachcode-Bezeichner übereinstimmen.

Das Langpack-Ökosystem benötigt keine prozedurale Logik in Form von Plugins. Stattdessen nutzt es die »weichen« und »harten« Abhängigkeitsfunktionen von RPM. Die notwendigen Abhängigkeiten werden von der Paketverwaltung (DNF oder PackageKit) ermittelt. Daher ist es wichtig, die folgende Tag-Relation Supplements: in die Langpack-Paketdefinition in der Spec-Datei aufzunehmen:

Supplements: (%{name} = %{version}-%{release} and langpacks-<locale>)

Beispiel

Angenommen, Sie haben ein Paket mit der folgenden Spec-Datei:

Name: php-horde-Horde-Perms + ... + %files -f Horde_Perms.lang + /usr/share/pear-data/Horde_Perms/locale/ + ...

Um Sprachpakete für jede Sprache (/usr/share/pear-data/Horde_Perms/locale//LC_MESSAGES/Horde_Perms.mo translations) zu erstellen, müssen Sie für jedes Paket ein neues Unterpaket definieren. Der folgende Codeausschnitt zeigt ein Makro zur Automatisierung der Definition von Sprachpaketen sowie die Definition von Sprachpaketen für die Sprachen bs und cs. Dies ersetzt die oben gezeigten Zeilen. Beachten Sie, dass diese Makrodefinition spezifisch für das Beispielpaket ist; Sie müssen sie entsprechend an Ihr Paket anpassen.

Name: php-horde-Horde-Perms
...

%define lang_subpkg() \
%package langpack-%{1}\
Summary:       %{2} language data for %{name}\
BuildArch:     noarch\
Requires:      %{name} = %{version}-%{release}\
Supplements:   (%{name} = %{version}-%{release} and langpacks-%{1})\
\
%description langpack-%{1}\
%{2} language data for %{name}.\
\
%files langpack-%{1}\
%{_datadir}/pear-data/Horde_Perms/locale/%{1}/
+ %lang_subpkg bs Bosnian+
%lang_subpkg cs Czech
...

%files
...