Alterator/l10n: различия между версиями
Ilis (обсуждение | вклад) |
Ilis (обсуждение | вклад) |
||
Строка 11: | Строка 11: | ||
=== Новая схема === | === Новая схема === | ||
* Хелп пакуется либо в alterator-l10n либо в модуль и в любом случае устанавливается сразу в | * Хелп пакуется либо в alterator-l10n либо в модуль и в любом случае устанавливается сразу в {{path|/usr/share/alterator/help/}} | ||
При | При правке хелпа и пересборки модуля не требуется. | ||
В 4.1 работает только старая схема, в 5.0 и Сизифе — обе схемы. Для поддержки двух схем в исходниках пакета alterator-l10n сделаны директории old_help и new_help. При переходе со старой схемы на новую надо следить, чтобы хелп не оказался запакован и в alterator-l10n и в модуль, и не возникло конфликта. | В 4.1 работает только старая схема, в 5.0 и Сизифе — обе схемы. Для поддержки двух схем в исходниках пакета {{pkg|alterator-l10n}} сделаны директории {{path|old_help}} и {{path|new_help}}. При переходе со старой схемы на новую надо следить, чтобы хелп не оказался запакован и в alterator-l10n и в модуль, и не возникло конфликта. | ||
== po == | == po == |
Версия от 16:51, 21 января 2009
alterator-l10n
help
Старая схема
- хелпы хранятся в пакете alterator-l10n, устанавливаются в директорию /usr/share/alterator/l10n/help/ и не используются альтератором
- модуль, использующий хелп из alterator-l10n должен иметь сборочную зависимость на alterator-l10n
- при сборке модуля хелпы берутся из /usr/share/alterator/l10n/help/ (см.) и устанавливаются в директорию /usr/share/alterator/help/, где их и ищет альтератор.
- (неочевидная хитрость: хелп устанавливается только, если он упомянут в desktop-файле модуля)
Таким образом, при изменении хелпа в alterator-l10n следует пересобирать модуль.
Новая схема
- Хелп пакуется либо в alterator-l10n либо в модуль и в любом случае устанавливается сразу в /usr/share/alterator/help/
При правке хелпа и пересборки модуля не требуется.
В 4.1 работает только старая схема, в 5.0 и Сизифе — обе схемы. Для поддержки двух схем в исходниках пакета alterator-l10n сделаны директории old_help и new_help. При переходе со старой схемы на новую надо следить, чтобы хелп не оказался запакован и в alterator-l10n и в модуль, и не возникло конфликта.
po
Старая схема
- словарь, общий для всех модулей, лежит в alterator-l10n
- существует процедура обновления словаря, при которой по списку обновляются git-репозитории для всех модулей, использующих alterator-l10n, в них генерятся pot-файлы, берутся po-файлы и затем мерджатся с общим словарем внутри alterator-l10n.
- модуль, использующий переводы из alterator-l10n должен иметь сборочную зависимость на alterator-l10n
- при сборке модуля переводы берутся из alterator-l10n, создаётся отдельный словарь для данного модуля и устанавливается в систему.
Недостатки старой схемы
- При изменении модуля, приходится пересобирать alterator-l10n, а затем — опять модуль.
- При пересборке alterator-l10n требуется иметь актуальные git-репозитории для всех модулей, которые используют alterator-l10n. Дело осложнено тем, что для модулей альтератора сложилась традиция сборки, при которой неясно, в чьём репозитории находится актуальная версия. Существуют, впрочем «нечестные» способы обновления базы переводов alterator-l10n
- «Общий» файл переводов очень неудобно мерджить, в случае, если несколько человек параллельно обновляют alterator-l10n
- «Общий» файл переводов неудобно переводить без контекста.
- В модуле, не использующем alterator-l10n может быть нужна сборочная зависимость на модуль, использующий alterator-l10n. В этом случае локальные переводы пропадут из модуля.
Предложение новой схемы
В alterator-l10n находится следующее:
- общий словарь (обновляется редко, «переводчиками»)
- отдельные словари для каждого модуля (обновляются при обновлении модулей, «мейнтейнерами модулей»)
- утилита update-po, для «мейнтейнеров модулей»: получает внешнюю директорию с модулем, обычным образом обновляет словарь для данного модуля (внутри altertator-l10n), берет недостающие переводы из общего словаря. После применения этой утилиты можно дополнить или исправить переводы только для данного модуля и сделать коммит, который затронет только словарь одного модуля.
- тривиальная возможность для переводчиков смерджить переводы всех модулей в общий словарь, посмотреть несоответствия, массово перевести на иностранный язык… Там, где нужен контекст, переводчики могут переводить словари отдельных модулей, а потом уже мерджить их…
- при сборке alterator-l10n собираются словари для всех модулей, причём опять недостающие переводы берутся из общего словаря.
Кажется, это решает все перечисленные проблемы.