К сожалению, большое количество добавленного материала пропало вместе с упавшим браузером. Придётся ещё раз смотреть в рассылке devel. Ключевые слова: specpot,
О проблеме переводов описаний пакетов и способе её решения.
Вот отголоски темы:
http://lists.altlinux.ru/pipermail/devel/2002-November/007826.html
http://www.fedora.us/pipermail/fedora-devel/2003-July/001763.html
http://lists.altlinux.ru/pipermail/devel/2004-March/011434.html
http://lists.altlinux.ru/pipermail/devel/2004-August/012844.html
В настоящий момент имеется пять основных систем упаковки пакетов и управления ими,
применяемые в различных свободных дистрибутивах и системах:
Пакет является атомарной величиной дистрибутива, и имеет название (Summary в RPM) и описание (Description в RPM).
В настоящий момент сложилась ситуация, когда описание пакета либо не переводится на другие языки вообще, либо
перевод указывается в самом пакете (спеке в RPM). Как правило, имеется перевод на один язык, в зависимости от
региональной принадлежности производителя дистрибутива. Так Su Se? пишет описание на немецком, PDL – на польском, ALT – на русском, Mandrake – на французском.
Получается, каждый дистрибутив имеет свой уклон в локализации, и существуют большие проблемы при создании действительно интернационального дистрибутива.
Указывание в спеке описания для разных языков, и особенно в разных кодировках, ведёт к тому, что текст может быть повреждён, малопортабелен,
и в общем случае непереводим никем, кроме сборщика пакета.
Некие наработки на тему specpot/specpo (Vital Khilko?)
Переводы в имеющихся спеках
Создать общую для всех дистрибутивов базу переводов для пакетов всех дистрибутивов и исключить всяческие переводы из спеков.
Для этого необходима координированная интеграционная работа между разработчиками дистрибутивов.
Для хранения и работы с переводами предлагаются po-файлы, со всем сопутствующим инструментарием. Кодировка – UTF-8.
Возможно также хранения переводов для Groups (хотя бы и как эталонных).
Примерный цикл жизни описания
На основании пакета (спека и пр) дистрибутивозависимой программой типа rpm2po формируется pot-файл,
который передаётся в базу переводов, с указанием группы, к которой он принадлежит (Video и д.т.)
Название po-файла должно соответствовать официальному названию проекта (из mainstream) и обычно должно получаться
из текстового домена проекта (то название, которое используется для mo-файлов проекта при установке в систему).
В случае, если установить такой невозможно, названием принимается название пакета.
Примерная структура хранилища базы переводов:
C
C / Video?
ru_RU
ru_RU/Video
en_US
uk_UA
pot-файл отправляется в каталог C, как шаблон для перевода.
Сами переводы располагаются в соответствующем локали каталоге.
Для каждой локали есть файл all.po, который содержит строки, которые встречаются в нескольких пакетах.
При объединении переводов с pot-файлами применяется следующий алгоритм:
**в po-файл отправляются только те строки, которые уникальны в рамках всей локали. Если строки повторяются для разных пакетов,
они помещаются в all.po**. Это также снимет остроту проблемы разных названий для пакетов.
Далее мантейнер пакета или переводчик переводит описания.
Возможно это уже решено в rpm лучшим способом:
Далее переводы объединяются в один большой ru.po файл, (возможно будет и разбиение по названиям),
который надлежит упаковке в пакет package-info-i18n-локаль.
Программы, работающие с переводами, должны использовать текстовый домен package-info,
а лучше подключить библиотеку libpackage-info, возвращающую нужное описание
для указанной локали и оригинала на английском.