Локализация спецификации пакета RPM

Мне нужно упаковать проприетарную программу для местного рынка России.
Для создания пакета RPM я использовал это руководство: https://stackoverflow.com/a/1165200/1794089

Итак, мне нужно перевести описание пакета RPM на русский язык, т.е. локализовать их. Я искал этот метод в Google: https://www.redhat.com/archives/rpm-list/2004-January/msg00062.html

Но это не работает: в центре установки программного обеспечения Fedora 21 x64 по-прежнему отображается сводка / описание пакета на английском языке, а системный языковой стандарт - ru_RU.UTF-8.

Что я делаю неправильно?

Фрагмент файла SPEC:

...
Summary: Test
Summary(ru): Тест
...
License: Proprietary
...

%description
 Test application

%description -l ru
 Тестовое приложение

person eraxillan    schedule 18.06.2015    source источник


Ответы (1)


Ссылка (https://www.redhat.com/archives/rpm-list/2004-January/msg00062.html) вы опубликовали упоминания specspo: specspo - это кеш-память для тегов group / description / summary в формате PO gettext, чтобы упростить перевод крупномасштабных переводов в масштабе всего дистрибутива. метаданных пакета.

Краткий ответ: если specspo установлен, то теги group / summary / description в пакете не используются.

person Jeff Johnson    schedule 24.06.2015
comment
Хорошо, но есть ли какая-нибудь документация о specspo? Я не могу гуглить что-то вроде учебника / примера этого :( - person eraxillan; 26.06.2015
comment
Документация чего? Часть головоломки RPM - это двухуровневый поиск. - person Jeff Johnson; 26.06.2015
comment
Документация чего? Часть головоломки RPM представляет собой двухуровневый поиск в сторону, сначала с использованием метаданных пакета для получения msgid (из неиспользуемой локали en_US, затем с использованием полученного msgid для поиска локализованного msgstr ro, возвращаемого из headerGet. Как управлять переводом specspo process - это дистрибутив, а не функция rpm. - person Jeff Johnson; 26.06.2015
comment
Код, который выполняет поиск в сторону для группы / сводки / описания, можно найти с помощью grep'ing для en_US в источниках rpm. Процесс перевода дистрибутива намного сложнее. - person Jeff Johnson; 26.06.2015
comment
Подсказка: удалите пакет specspo, и rpm будет использовать теги в заголовке, а не значения, полученные из кеша. - person Jeff Johnson; 26.06.2015
comment
Документация об использовании specspo с нуля. Кроме того, я вообще никогда не использовал gettext, поэтому мне сложно понять все это: / Хорошо, я прочитаю rpm источники, чтобы понять, как он находит локализованную строку описания ... - person eraxillan; 27.06.2015
comment
Да, процесс перевода сложен для понимания, хотя концептуально прост. Обычно PO-файлы представляют собой пары (key, val), называемые (msgid, msgstr). get text передается msgid и возвращает msgstr (из соответствующего файла локали). - person Jeff Johnson; 27.06.2015
comment
Все, что делает rpm, - это двухуровневый поиск: поэтому msgid = gettext (pkgname) в локали en_US, а затем msgstr = get text (msgid) в соответствующей локали для каждого тега group / summary / description. - person Jeff Johnson; 27.06.2015
comment
Для проприетарной упаковки вне дистрибутива Fedora удаление пакета specspo и использование тегов из пакета, вероятно, будет единственным (и несовершенным) допустимым вариантом. - person Jeff Johnson; 27.06.2015