Alterator/l10n — различия между версиями

Материал из ALT Linux Wiki
Перейти к: навигация, поиск
(Старая схема (4.1))
Строка 1: Строка 1:
[[Category:Alterator]]
+
[[ruwp:Локализация|Локализация]] (l10n) — процесс адаптации [[Alterator/i18n|специально подготовленного]] ранее приложения для конкретного языка.
[[ruwp:Локализация|Локализация]] (l10n) - процесс адаптации [[Alterator/i18n|специально подготовленного]] ранее приложения для конкретного языка.
 
  
В alterator для каждого модуля автоматически создаётся словарь с переводом сообщений интерфейса и бакендов. Отдельно переводится текст встроенной справки.
+
В alterator для каждого модуля автоматически создаётся словарь с переводом сообщений интерфейса и бэкендов. Отдельно переводится текст встроенной справки.
  
 
== Справка ==
 
== Справка ==
 
 
Файл со справочной информацией сохраняется либо в alterator-l10n либо в самом модуле, устанавливается в {{path|/usr/share/alterator/help/}}
 
Файл со справочной информацией сохраняется либо в alterator-l10n либо в самом модуле, устанавливается в {{path|/usr/share/alterator/help/}}
  
 
==== Старая схема (бранч 4.1) ====
 
==== Старая схема (бранч 4.1) ====
 
* хелпы хранятся в пакете alterator-l10n, устанавливаются в директорию {{path|/usr/share/alterator/l10n/help/}} и ''не'' используются альтератором
 
* хелпы хранятся в пакете alterator-l10n, устанавливаются в директорию {{path|/usr/share/alterator/l10n/help/}} и ''не'' используются альтератором
* модуль, использующий хелп из alterator-l10n должен иметь сборочную зависимость на alterator-l10n
+
* модуль, использующий хелп из alterator-l10n, должен иметь сборочную зависимость на alterator-l10n
 
* при сборке модуля хелпы автоматически берутся из {{path|/usr/share/alterator/l10n/help/}} и устанавливаются в директорию {{path|/usr/share/alterator/help/}}, где их и ищет альтератор.
 
* при сборке модуля хелпы автоматически берутся из {{path|/usr/share/alterator/l10n/help/}} и устанавливаются в директорию {{path|/usr/share/alterator/help/}}, где их и ищет альтератор.
*: (неочевидная хитрость: хелп устанавливается только, если он упомянут в desktop-файле модуля)
+
*: (неочевидная хитрость: хелп устанавливается только если он упомянут в desktop-файле модуля)
  
 
Таким образом, при изменении хелпа в alterator-l10n следует пересобирать модуль.
 
Таким образом, при изменении хелпа в alterator-l10n следует пересобирать модуль.
  
 
== Переводы ==
 
== Переводы ==
 
 
С точки зрения мейнтейнера модуля устроено так:
 
С точки зрения мейнтейнера модуля устроено так:
  
Строка 23: Строка 20:
 
* Там же есть отдельные словари для каждого модуля (обновляются при обновлении модулей, «мейнтейнерами модулей»).
 
* Там же есть отдельные словари для каждого модуля (обновляются при обновлении модулей, «мейнтейнерами модулей»).
 
* Находясь в alterator-l10n обновляем словарь своего модуля модуля: '''./update_module <директория с модулем>''' (директория с модулем — та, в которой живет Makefile). При этом недостающие переводы берутся из общего словаря.
 
* Находясь в alterator-l10n обновляем словарь своего модуля модуля: '''./update_module <директория с модулем>''' (директория с модулем — та, в которой живет Makefile). При этом недостающие переводы берутся из общего словаря.
* При первом запуске update_module (если словаря для этого модуля еще нет в alterator-l10n), словарь берется из модуля.
+
* При первом запуске update_module (если словаря для этого модуля еще нет в alterator-l10n), словарь берётся из модуля.
 
* Правим словарь своего модуля в alterator-l10n/po/<язык>/<имя>.po
 
* Правим словарь своего модуля в alterator-l10n/po/<язык>/<имя>.po
 
* Коммитим, пушим, просим мейнтейнера alterator-l10n втянуть…
 
* Коммитим, пушим, просим мейнтейнера alterator-l10n втянуть…
Строка 36: Строка 33:
 
* Все это происходит только внутри alterator-l10n, при изменениях модули пересобирать не нужно.
 
* Все это происходит только внутри alterator-l10n, при изменениях модули пересобирать не нужно.
  
[[Изображение:alterator-l10n-pr1.png]]
+
[[Файл:alterator-l10n-pr1.png]]
  
 
Некоторая особенность связана с переводами полей {{term|Name}} и {{term|Comment}} в desktop-файлах. Использовать gettext при разборе desktop-файлов не хочется (при этом для построения главного меню придётся каждый перевод вытаскивать из своего словаря, что долго и странно), хочется переводы таскать внутри desktop-файлов, однако дать возможность переводчикам переводить их внутри alterator-l10n.
 
Некоторая особенность связана с переводами полей {{term|Name}} и {{term|Comment}} в desktop-файлах. Использовать gettext при разборе desktop-файлов не хочется (при этом для построения главного меню придётся каждый перевод вытаскивать из своего словаря, что долго и странно), хочется переводы таскать внутри desktop-файлов, однако дать возможность переводчикам переводить их внутри alterator-l10n.
Строка 48: Строка 45:
 
==== Старая схема (бранч 4.1) ====
 
==== Старая схема (бранч 4.1) ====
 
* словарь, общий для всех модулей, лежит в alterator-l10n
 
* словарь, общий для всех модулей, лежит в alterator-l10n
* существует процедура обновления словаря, при которой по списку обновляются git-репозитории для всех модулей, использующих alterator-l10n, в них генерятся pot-файлы, берутся po-файлы и затем мерджатся с общим словарем внутри alterator-l10n.
+
* существует процедура обновления словаря, при которой по списку обновляются git-репозитории для всех модулей, использующих alterator-l10n, в них генерятся pot-файлы, берутся po-файлы и затем мерджатся с общим словарём внутри alterator-l10n.
* модуль, использующий переводы из alterator-l10n должен иметь сборочную зависимость на alterator-l10n
+
* модуль, использующий переводы из alterator-l10n, должен иметь сборочную зависимость на alterator-l10n
 
* при сборке модуля переводы автоматически берутся из alterator-l10n, создаётся отдельный словарь для данного модуля и устанавливается в систему.
 
* при сборке модуля переводы автоматически берутся из alterator-l10n, создаётся отдельный словарь для данного модуля и устанавливается в систему.
 +
 +
[[Категория:Alterator]]

Версия 17:03, 12 апреля 2009

Локализация (l10n) — процесс адаптации специально подготовленного ранее приложения для конкретного языка.

В alterator для каждого модуля автоматически создаётся словарь с переводом сообщений интерфейса и бэкендов. Отдельно переводится текст встроенной справки.

Справка

Файл со справочной информацией сохраняется либо в alterator-l10n либо в самом модуле, устанавливается в /usr/share/alterator/help/

Старая схема (бранч 4.1)

  • хелпы хранятся в пакете 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 находится общий словарь (обновляется редко, «переводчиками»).
  • Там же есть отдельные словари для каждого модуля (обновляются при обновлении модулей, «мейнтейнерами модулей»).
  • Находясь в alterator-l10n обновляем словарь своего модуля модуля: ./update_module <директория с модулем> (директория с модулем — та, в которой живет Makefile). При этом недостающие переводы берутся из общего словаря.
  • При первом запуске 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

Некоторая особенность связана с переводами полей Name и Comment в desktop-файлах. Использовать gettext при разборе desktop-файлов не хочется (при этом для построения главного меню придётся каждый перевод вытаскивать из своего словаря, что долго и странно), хочется переводы таскать внутри desktop-файлов, однако дать возможность переводчикам переводить их внутри alterator-l10n.

Сейчас сделано так:

  • строчки для перевода вытаскиваются в alterator-l10n точно также, как и все остальное.
  • запуская в alterator-l10n скрипт ./update_desktop <директория с модулем> мы обновляем desktop-файлы модуля…

Оставшаяся проблема: скрипт для сливания общего словаря из всех модулей — синяя стрелка на картинке. Это несложно сделать, но пока общий словарь также используется для построения словарей модулей в старой схеме, это лучше делать хитрее и вручную.

Старая схема (бранч 4.1)

  • словарь, общий для всех модулей, лежит в alterator-l10n
  • существует процедура обновления словаря, при которой по списку обновляются git-репозитории для всех модулей, использующих alterator-l10n, в них генерятся pot-файлы, берутся po-файлы и затем мерджатся с общим словарём внутри alterator-l10n.
  • модуль, использующий переводы из alterator-l10n, должен иметь сборочную зависимость на alterator-l10n
  • при сборке модуля переводы автоматически берутся из alterator-l10n, создаётся отдельный словарь для данного модуля и устанавливается в систему.