Alterator/l10n: различия между версиями
(→po) |
м (→Добавление языка: на примере da_DK) |
||
(не показано 55 промежуточных версий 7 участников) | |||
Строка 1: | Строка 1: | ||
[[ | [[ruwp:Локализация|Локализация]] (l10n) — процесс адаптации [[Alterator/i18n|специально подготовленного]] ранее приложения для конкретного языка. | ||
В alterator для каждого модуля автоматически создаётся словарь с переводом сообщений интерфейса и бэкендов. Отдельно переводится текст встроенной справки. | |||
== Справка == | |||
Файл со справочной информацией сохраняется либо в alterator-l10n либо в самом модуле, устанавливается в {{path|/usr/share/alterator/help/}} | |||
== Переводы == | |||
=== Обновление === | |||
С точки зрения мейнтейнера модуля устроено так: | |||
При | * В alterator-l10n находится общий словарь (обновляется редко, «переводчиками»). | ||
* Там же есть отдельные словари для каждого модуля (обновляются при обновлении модулей, «мейнтейнерами модулей»). | |||
* Находясь в alterator-l10n обновляем словарь своего модуля модуля: '''./update_module <директория с модулем>''' (директория с модулем — та, в которой живет Makefile). При этом недостающие переводы берутся из общего словаря. '''Примечание''': требуется установленный alterator >= 3.5-alt1. | |||
* При первом запуске update_module (если словаря для этого модуля еще нет в alterator-l10n), словарь берётся из модуля. | |||
* Правим словарь своего модуля в alterator-l10n/po/<язык>/<имя>.po | |||
* Коммитим, пушим, просим мейнтейнера alterator-l10n втянуть… | |||
* Из своего модуля убираем паковку mo-файлов (иначе будет конфликт!) и (если уже и хелп переведён на новую схему) вообще сборочную зависимость на alterator-l10n | |||
* При сборке alterator-l10n для каждого модуля соберутся и установятся в систему mo-файлы. Причём недостающие переводы опять возьмутся из общего словаря. | |||
С точки зрения переводчика: | |||
* можно добавлять переводы в общий словарь (при пересборке alterator-l10n они добавятся во все словари модулей) | |||
* можно править переводы в модулях | |||
* можно слить переводы модулей в общий словарь (msgcat), посмотреть на несоответствия переводов и разобраться с каждым несоответствующем модулем по отдельности | |||
* Все это происходит только внутри alterator-l10n, при изменениях модули пересобирать не нужно. | |||
[[Файл:alterator-l10n-pr1.png]] | |||
Некоторая особенность связана с переводами полей {{term|Name}} и {{term|Comment}} в desktop-файлах. Использовать gettext при разборе desktop-файлов не хочется (при этом для построения главного меню придётся каждый перевод вытаскивать из своего словаря, что долго и странно), хочется переводы таскать внутри desktop-файлов, однако дать возможность переводчикам переводить их внутри alterator-l10n. | |||
* | Сейчас сделано так: | ||
* строчки для перевода вытаскиваются в alterator-l10n точно также, как и все остальное. | |||
* запуская в alterator-l10n скрипт {{cmd|./update_desktop <директория с модулем>}} мы обновляем desktop-файлы модуля… | |||
Оставшаяся проблема: скрипт для сливания общего словаря из всех модулей — синяя стрелка на картинке. Это несложно сделать, но пока общий словарь также используется для построения словарей модулей в старой схеме, это лучше делать хитрее и вручную. | |||
=== Добавление языка === | |||
На примере [http://lists.altlinux.org/pipermail/community-en/2022-January/001391.html датского]: | |||
$ mkdir po/<u>da</u> | |||
$ touch compendium/<u>da</u>.po ''# заполняется по аналогии с соседями'' | |||
$ echo "Dansk" > l10n/11-<u>da_DK</u> ''# название языка на нём самом'' | |||
$ gear-edit-spec ''# на предмет добавления нужного %lang(<u>da</u>)'' | |||
== Старая схема (бранч 4.1) == | |||
* | === Справка === | ||
* | * файлы справки хранятся в пакете alterator-l10n, устанавливаются в директорию {{path|/usr/share/alterator/l10n/help/}} и ''не'' используются альтератором | ||
* | * модуль, использующий хелп из alterator-l10n, должен иметь сборочную зависимость на alterator-l10n | ||
* при сборке модуля справка автоматически берется из {{path|/usr/share/alterator/l10n/help/}} и устанавливается в директорию {{path|/usr/share/alterator/help/}}, где её и ищет альтератор. Таким образом, при изменении справки в alterator-l10n следует пересобирать модуль. | |||
* файл справки устанавливается только если он упомянут в desktop-файле модуля | |||
=== Переводы === | |||
* словарь, общий для всех модулей, лежит в alterator-l10n | |||
* существует процедура обновления словаря, при которой по списку обновляются git-репозитории для всех модулей, использующих alterator-l10n, в них генерятся pot-файлы, берутся po-файлы и затем мерджатся с общим словарём внутри alterator-l10n. | |||
* модуль, использующий переводы из alterator-l10n, должен иметь сборочную зависимость на alterator-l10n | |||
* при сборке модуля переводы автоматически берутся из alterator-l10n, создаётся отдельный словарь для данного модуля и устанавливается в систему. | |||
{{Category navigation|title=Alterator|category=Alterator|sortkey={{SUBPAGENAME}}}} | |||
Текущая версия от 14:08, 3 февраля 2022
Локализация (l10n) — процесс адаптации специально подготовленного ранее приложения для конкретного языка.
В alterator для каждого модуля автоматически создаётся словарь с переводом сообщений интерфейса и бэкендов. Отдельно переводится текст встроенной справки.
Справка
Файл со справочной информацией сохраняется либо в alterator-l10n либо в самом модуле, устанавливается в /usr/share/alterator/help/
Переводы
Обновление
С точки зрения мейнтейнера модуля устроено так:
- В alterator-l10n находится общий словарь (обновляется редко, «переводчиками»).
- Там же есть отдельные словари для каждого модуля (обновляются при обновлении модулей, «мейнтейнерами модулей»).
- Находясь в alterator-l10n обновляем словарь своего модуля модуля: ./update_module <директория с модулем> (директория с модулем — та, в которой живет Makefile). При этом недостающие переводы берутся из общего словаря. Примечание: требуется установленный alterator >= 3.5-alt1.
- При первом запуске update_module (если словаря для этого модуля еще нет в alterator-l10n), словарь берётся из модуля.
- Правим словарь своего модуля в alterator-l10n/po/<язык>/<имя>.po
- Коммитим, пушим, просим мейнтейнера alterator-l10n втянуть…
- Из своего модуля убираем паковку mo-файлов (иначе будет конфликт!) и (если уже и хелп переведён на новую схему) вообще сборочную зависимость на alterator-l10n
- При сборке alterator-l10n для каждого модуля соберутся и установятся в систему mo-файлы. Причём недостающие переводы опять возьмутся из общего словаря.
С точки зрения переводчика:
- можно добавлять переводы в общий словарь (при пересборке alterator-l10n они добавятся во все словари модулей)
- можно править переводы в модулях
- можно слить переводы модулей в общий словарь (msgcat), посмотреть на несоответствия переводов и разобраться с каждым несоответствующем модулем по отдельности
- Все это происходит только внутри alterator-l10n, при изменениях модули пересобирать не нужно.
Некоторая особенность связана с переводами полей Name и Comment в desktop-файлах. Использовать gettext при разборе desktop-файлов не хочется (при этом для построения главного меню придётся каждый перевод вытаскивать из своего словаря, что долго и странно), хочется переводы таскать внутри desktop-файлов, однако дать возможность переводчикам переводить их внутри alterator-l10n.
Сейчас сделано так:
- строчки для перевода вытаскиваются в alterator-l10n точно также, как и все остальное.
- запуская в alterator-l10n скрипт ./update_desktop <директория с модулем> мы обновляем desktop-файлы модуля…
Оставшаяся проблема: скрипт для сливания общего словаря из всех модулей — синяя стрелка на картинке. Это несложно сделать, но пока общий словарь также используется для построения словарей модулей в старой схеме, это лучше делать хитрее и вручную.
Добавление языка
На примере датского:
$ mkdir po/da $ touch compendium/da.po # заполняется по аналогии с соседями $ echo "Dansk" > l10n/11-da_DK # название языка на нём самом $ gear-edit-spec # на предмет добавления нужного %lang(da)
Старая схема (бранч 4.1)
Справка
- файлы справки хранятся в пакете alterator-l10n, устанавливаются в директорию /usr/share/alterator/l10n/help/ и не используются альтератором
- модуль, использующий хелп из alterator-l10n, должен иметь сборочную зависимость на alterator-l10n
- при сборке модуля справка автоматически берется из /usr/share/alterator/l10n/help/ и устанавливается в директорию /usr/share/alterator/help/, где её и ищет альтератор. Таким образом, при изменении справки в alterator-l10n следует пересобирать модуль.
- файл справки устанавливается только если он упомянут в desktop-файле модуля
Переводы
- словарь, общий для всех модулей, лежит в alterator-l10n
- существует процедура обновления словаря, при которой по списку обновляются git-репозитории для всех модулей, использующих alterator-l10n, в них генерятся pot-файлы, берутся po-файлы и затем мерджатся с общим словарём внутри alterator-l10n.
- модуль, использующий переводы из alterator-l10n, должен иметь сборочную зависимость на alterator-l10n
- при сборке модуля переводы автоматически берутся из alterator-l10n, создаётся отдельный словарь для данного модуля и устанавливается в систему.