[type: gettext/rfc822deb] templates
Пути относительно родительского каталога.
$ debconf-updatepo
Вы должны запускать эту команду каждый раз не только после изменений в английских шаблонах, но и когда получаете новые или обновлённые файлы переводов, так как переводчики могли работать над устаревшим PO-файлом.
При переименовании, добавлении или удалении файлов шаблонов, также не забудьте внести соответствующие изменения в файл debian/po/POTFILES.in, иначе английские строки пропадут из PO-файлов и будут показаны пользователям даже если PO-файлы полностью переведены.
Программа debconf-updatepo является идемпотентной, она изменяет PO-файлы только если для них изменилось содержание. Таким образом лучшим решением поддерживать актуальное состояние PO-файлов в пакете это запускать эту команду в правиле "clean" файла debian/rules.
Заметьте, что вы должны запускать debconf-updatepo даже в случае использования dh_installdebconf. Последний вызывает po2debconf, который в свою очередь запускает debconf-updatepo, если обнаруживаются устаревшие файлы, но это не очень хорошее решение как минимум по двум причинам:
Чтобы сделать это вручную, нужно объединить шаблоны и переводы во время сборки (и должна быть зависимость от "po-debconf"), например:
$ po2debconf debian/templates > debian/tmp/DEBIAN/templates
ОСТОРОЖНО: эти два файла с именем templates имеют разное содержимое. Первый содержит только английский текст и поля, помеченные как переводимые, а второй содержит сообщения на всех остальных языках. Надо добавить, что вы НЕ МОЖЕТЕ хранить только объединённые шаблоны, иначе вы не сможете договориться с переводчиками, чтобы они выполняли обновление.
Template: debconf/frontend Type: select _Choices: Dialog, Readline, Gnome, Editor, Noninteractive Default: Dialog _Description: Interface to use for configuring packages: Packages that use debconf for configuration share a common look and feel. You can select the type of user interface they use. . The dialog frontend is a full-screen, character based interface, while the readline frontend uses a more traditional plain text interface, and the gnome frontend is a modern X interface. The editor frontend lets you configure things using your favorite text editor. The noninteractive frontend never asks you any questions.
__Choices: Dialog, Readline, Gnome, Editor, Noninteractive
то было бы 5 разных msgid. Заметим, что пробелы после запятых не обязательны.
В основном, когда список выбора никогда не меняется, можно указать "_Choices", в противном случае "__Choices" облегчит жизнь переводчику.
К сожалению, если вы решили переключиться между двумя этими формами, все переводы будут отмечены как неточные. Можно сделать это изменение без потери переводов (требуется "po-debconf" >= 1.0). Предположим, что вы хотите переключить предыдущий пример на "__Choices". Скопируйте файл templates во временный файл.
$ cp debian/templates debian/foo
Отредактируйте debian/foo и оставьте только поля "Template", "Type" и "_Choices" из этого примера
Template: debconf/frontend Type: select _Choices: Dialog, Readline, Gnome, Kde, Editor, Noninteractive
Запустите debconf-gettextize с параметрами "--merge" и "--choices", чтобы собрать PO-файлы, как если бы было записано "__Choices", и объединить эти PO-файлы с существующими:
$ debconf-gettextize --merge --choices debian/foo
В конце удалите foo и вручную отредактируйте debian/templates заменив "_Choices" на "__Choices" перед тем как запустить debconf-updatepo.
Template: debconf/button-yes Type: text # Translators, this text will appear on a button, so KEEP IT SHORT _Description: Yes
В "po-debconf" 1.0 были добавлены специальные комментарии, учитывающие строки с несколькими элементами (например, поле Choices) или параграфы (например, в Description). С помощью новых директив разработчики получают больший контроль над тем, что показывать переводчикам. Команды имеют вид "#flag:directive"; директивы описаны далее.
Template: partman-basicfilesystems/fat_mountpoint Type: select #flag:translate:3,4 __Choices: /dos, /windows, Enter manually, Do not mount it _Description: Mount point for this partition:
"Enter manually" и "Do not mount it" появятся в PO-файлах, а "/dos" и "/windows" --- нет. Если после ключевого слова translate поставить восклицательный знак, то в spec указываются какие строки будут исключены из PO-файлов, а все остальные строки будут выводиться. Предыдущий пример можно переписать как
Template: partman-basicfilesystems/fat_mountpoint Type: select #flag:translate!:1,2 __Choices: /dos, /windows, Enter manually, Do not mount it _Description: Mount point for this partition:
Это же ключевое слово можно также применить к полю Description, чтобы быть уверенным, что некоторые строки не переводятся.
Template: partman-crypto/options_missing Type: error #flag:translate!:3 _Description: Required encryption options missing The encryption options for ${DEVICE} are incomplete. Please return to the partition menu and select all required options. . ${ITEMS}
Но это опасно, так как из PO-файлов может быть утерян контекст. В этом случае добавляйте комментарии, чтобы не запутывать переводчиков.
Template: arcboot-installer/prom-variables Type: note # Translators, the 4th string of this description has been dropped # from PO files. It contains shell commands and should not be # translated. #flag:comment:3 # "Stop for Maintenance" should be left in English #flag:translate!:4 _Description: Setting PROM variables for Arcboot If this is the first Linux installation on this machine, or if the hard drives have been repartitioned, some variables need to be set in the PROM before the system is able to boot normally. . At the end of this installation stage, the system will reboot. After this, enter the command monitor from the "Stop for Maintenance" option, and enter the following commands: . setenv OSLoader arcboot setenv OSLoadFilename Linux . You will only need to do this once. Afterwards, enter the "boot" command or reboot the system to proceed to the next stage of the installation.
В примере выше комментарий указывался без директивы "#flag:comment", неявным добавлением "#flag:comment:*". Этот комментарий появился во всех строках, но указание Stop for Maintenance напечатано только перед соответствующей строкой.
Эти метки должны добавляться в конец строк для перевода, они должны начинаться с "[ " (левая квадратная скобка с пробелом после) и заканчиваться "]" (правая скобка), и могут содержать любые символы внутри кроме скобок и символов новой строки. Например, "[ blahblah]" допустимая метка, а "[ bla[bla]bla]" нет. Для любителей Perl regexp, метки распознаются (и удаляются) с помощью выражения:
$msg =~ s/\[\s[^\[\]]*\]$//s;
С другой стороны, "po-debconf" полагается на "gettext" при определении неясных элементов, и не рассматривает пробелы как специальные символы. То есть, лишние пробелы должны быть удалены в конце строк в мастер файлах шаблонов, или они появятся в PO- и POT-файлах.
По этой же причине, debconf-gettextize может отметить текст как неясный из-за несовпадения пробельных символов, и переводчики должны вручную снимать неясность с таких строк. Это случается только при преобразовании шаблонов в "po-debconf" формат, если, конечно, вы произвольно не изменяете пробелы в мастер файлах шаблонов, что болезненно отражается на переводчиках.
Локализованное значение должно не переводиться, а выбираться из английских значений поля Choices. Лучшим путём достигнуть этой цели является вставка комментария в файл шаблонов, который будет скопирован в PO-файлы.
Template: geneweb/lang Type: select __Choices: Danish (da), Dutch (nl), English (en), Esperanto (eo) # You must NOT translate this string, but you can change its value. # The comment between brackets is used to distinguish this msgid # from the one in the Choices list; you do not have to worry about # them, and have to simply choose a msgstr among the English values # listed in the Choices field above, e.g. msgstr "Dutch (nl)" _Default: English (en)[ default language] _Description: Geneweb default language
Значение по умолчанию также присутствует в поле Choices, и оба имеют различные переводы: первое содержит не переведённое значение, выбираемое из Choices, а второе имеет обычный перевод. Так как "gettext" не может содержать два различных перевода одного msgid, то msgid должны отличаться с помощью комментариев в квадратных скобках, как описывалось в предыдущем разделе.
До версии "po-debconf" 0.8.0, такие комментарии были недоступны и сопровождающие заменяли поле _Default: на поле _DefaultChoice:, чтобы как-то выделить такие поля в PO-файлах:
#. DefaultChoice msgid "" "English[ default: do not translate bracketed material, put your " "own language here but UNTRANSLATED. If it is not in the list, " "put English (without bracketed material)]" msgstr "" "Swedish"
Простые комментарии менее подвержены ошибкам и приветствуются.
С этой страницы переводчики могут получить PO- и POT-файлы, но они всегда должны связаться с предыдущим переводчиком (его почтовый адрес можно найти в PO-файле) и/или их коллегами переводчиками через debian-l10n-<язык>@lists.debian.org (если такой список существует), чтобы удостовериться, что никто в данный момент не работает над тем же переводом, а также изучить имеющиеся сообщения об ошибках пакета, который они намереваются переводить, чтобы проверить, что о переводе уже не сообщено.
После перевода этих файлов, они должны быть посланы сопровождающему в виде отчёта об ошибке с важностью minor и тегом patch.
Martin Quinson <[email protected]> Denis Barbier <[email protected]>
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |