A ideia por trás dos "langpacks" é separar as traduções ou o conteúdo específico do idioma em subpacotes no caso de o tamanho dos arquivos ser enorme ou o pacote fazer parte de uma imagem central que deveria ser mínima.

Os subpacotes que existem apenas para conter traduções ou conteúdo de idiomas adicionais devem ser nomeados no formato -langpack-, onde é o nome do pacote ao qual os langpacks pertencem e é um código de idioma válido de /usr/share/xml/iso- codes/iso_639_3.xml ou de /usr/share/i18n/locales/. Especificamente, o valor langcode usado no nome do pacote deve concordar com o identificador langcode usado no caminho do diretório pelo upstream para os arquivos de tradução ou idioma.

O ecossistema de langpack não precisa de nenhuma lógica procedimental na forma de plug-ins. Em vez disso, aproveita os recursos de dependência fracos e ricos fornecidos pelo RPM. As dependências necessárias são calculadas pelo gerenciador de pacotes (DNF ou PackageKit), portanto, é essencial incluir os seguintes Supplements: relação de tag na definição do pacote langpack no arquivo spec:

Supplements: (%{name} = %{version}-%{release} and langpacks-`)`

Exemplo

Suponha que você tenha um pacote com o seguinte arquivo spec:

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

Para criar langpacks para cada idioma (traduções /usr/share/pear-data/Horde_Perms/locale//LC_MESSAGES/Horde_Perms.mo), você precisa definir um novo subpacote para cada pacote. O snippet abaixo mostra uma macro para automatizar a definição de langpacks, junto com a definição de langpacks para os idiomas bs e cs. Isso substituiria as linhas mostradas acima. Observe que esta definição de macro é específica para o pacote de exemplo; você precisará modificá-lo conforme apropriado para o seu pacote.

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
...