The idea behind "langpacks" is to separate translations or language specific content into subpackages in the case that the size of the files is huge or the package is part of a core image that should be minimal.
Subpackages that exist solely to contain additional language translations or content must be named in the form
The langpack ecosystem does not need any procedural logic in the form of plugins. Instead it takes advantage of the weak and rich dependency features provided by RPM. The necessary dependencies are computed by the package manager (DNF or PackageKit) so it is essential to include the following Supplements:
tag relation in the langpack package definition in the spec file:
Supplements: (%{name} = %{version}-%{release} and langpacks-
)
Suppose you have a package with following spec file:
Name: php-horde-Horde-Perms
\
...
\
%files -f Horde_Perms.lang
\
/usr/share/pear-data/Horde_Perms/locale/
\
...
In order to create langpacks for each language (/usr/share/pear-data/Horde_Perms/locale/
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
\
...