Paquetes de idioma

La idea tras "langpack" es separar traducciones o contenido específico del idioma en subpaquetes dentro del caso que el tamaño de los archivos es enorme o el paquete es parte de una imagen core que sería mínima.

Los subpaquetes que existen únicamente para contener traducciones o contenido adicional deben nombrarse con el formato -langpack-, donde langpack es el nombre del paquete al que pertenecen los subpaquetes y langpack es un código de idioma válido de /usr/share/xml/iso-codes/iso_639_3.xml o de /usr/share/i18n/locales/. En concreto, el valor de langcode utilizado en el nombre del paquete debe coincidir con el identificador de código de idioma utilizado en la ruta del directorio por el repositorio original para los archivos de traducción o idioma.

El ecosistema de langpack no necesita ninguna lógica procedural en el formato de complementos. En lugar de eso toma la ventaja de la debilidad y enriquece características de dependencia proporcionadas por RPM. Las dependencias necesarias son calculadas por el gestor de paquetes (DNF o PackageKit) tal que es esencial incluir la etiqueta Supplements: seguida en relación a la definición del paquete langpack en el archivo spec:

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

Ejemplo

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//LC_MESSAGES/Horde_Perms.mo translations), you would need to define a new subpackage for each package. The snippet below shows a macro for automating the definition of langpacks, along with the definition of langpacks for bs and cs languages. This would replace the lines shown above. Note that this macro definition is specific to the example package; you will need to modify it as appropriate for your package.

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