GNU gettext PO (переносимый объект)¶
Самый широкоиспользуемый формат для перевода свободного програмного обеспечения.
Контекстная информация, хранящаяся в файле, поддерживается настройкой его заголовков или его привязкой к соответствующим исходным файлам.
См. также
Отображение изменения исходной строки¶
Weblate может извлекать предыдущие исходные строки из PO-файлов, если они присутствуют, и показывать разницу строк для строк, требующих редактирования, на основе этого. Чтобы включить их, msgmerge должен быть выполнен с параметром --previous, и тогда результирующий PO-файл будет содержать строки, подобные следующим:
#, fuzzy
#| msgid "previous-untranslated-string"
msgid "untranslated-string"
msgstr "translated-string"
Это управляется параметром po_keep_previous Параметры формата файла. Это не влияет на устаревшие записи, отмеченные #~.
Устаревшие строки¶
msgmerge по умолчанию сохраняет строки, удалённые из POT-файла, как устаревшие записи #~. Включите параметр po_remove_obsolete Параметры формата файла, чтобы удалять устаревшие записи при сохранении PO-файлов Weblate.
Заголовок PO-файла¶
Заголовок PO-файла автоматически поддерживается Weblate. Его можно настроить на включение заголовков Language-Team, Last-Translator, X-Generator и Report-Msgid-Bugs-To с помощью Параметры формата файла.
Contributor comments¶
Use the po_contributor_comments Параметры формата файла parameter to add
contributor names and years to PO header comments. Choose gettext for
traditional comments or spdx for SPDX copyright entries. The default,
none, disables contributor updates without removing existing comments.
This setting works independently of the Last-Translator header setting.
With gettext, contributor comments look like this:
# Jane Doe <jane@example.com>, 2024, 2026.
With spdx, the same entry becomes:
# SPDX-FileCopyrightText: 2024, 2026 Jane Doe <jane@example.com>
On the next commit by an eligible contributor, SPDX mode converts all recognized contributor comments, preserves historical contribution years, and adds the current year for that contributor. Anonymous Weblate authors are skipped. Unrelated comments and copyright notices are preserved. Weblate does not infer copyright claims from translated credit strings or add project-specific notices or license identifiers; handle these in custom tooling.
Перенос строк¶
Перенос строк в основном соответствует поведению GNU gettext. Как алгоритм переноса в GNU gettext, так и данные Юникода, на которых основан перенос, развиваются, что может вызывать различия в некоторых граничных случаях.
Ширину переноса можно настроить с помощью параметра po_line_wrap, см. Параметры формата файла.
Создание соответствующих MO-файлов¶
Если MO-файлы хранятся в репозитории вместе с PO-файлами, можно использовать Создание MO-файлов, чтобы поддерживать их в актуальном состоянии в соответствии с PO-файлами.
Обновление PO-файлов из POT-файла¶
Обновлять PO-файлы до соответствия POT (msgmerge) можно использовать для обновления PO-файлов из POT-файла, см. Обновление файлов языка перевода.
Одноязычный gettext¶
Некоторые проекты решают использовать gettext в качестве одноязычного формата — в их исходном коде присутствуют только идентификаторы и строка должна быть переведена на все языки, в том числе и на английский. Такая конфигурация поддерживается, хотя для этого и надо явно выбирать этот формат файлов при импорте компонентов в Weblate.
Файлы примеров¶
Двуязычный PO-файл gettext обычно выглядит следующим образом:
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Monday"
msgstr "Pondělí"
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Tuesday"
msgstr "Úterý"
#: weblate/accounts/avatar.py:163
msgctxt "No known user"
msgid "None"
msgstr "Žádný"
Одноязычный PO-файл gettext обычно выглядит следующим образом:
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Pondělí"
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Úterý"
#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "Žádný"
А базовый языковой файл — вот таким образом:
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Monday"
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Tuesday"
#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "None"
Расширения файлов |
|
|---|---|
Языковость ⓘ |
Одноязычный |
Поддерживает множественное число ⓘ |
|
Поддерживает описания ⓘ |
|
Поддерживает пояснения ⓘ |
|
Поддерживает контекст ⓘ |
|
Поддерживает расположение ⓘ |
|
Поддерживает флаги ⓘ |
|
Дополнительные состояния ⓘ |
|
Идентификатор API |
|
Поддерживает строки только для чтения ⓘ |
|
Поддерживает удаление устаревших строк ⓘ |
|
Расширения файлов |
|
|---|---|
Языковость ⓘ |
Двуязычный |
Поддерживает множественное число ⓘ |
|
Поддерживает описания ⓘ |
|
Поддерживает пояснения ⓘ |
|
Поддерживает контекст ⓘ |
|
Поддерживает расположение ⓘ |
|
Поддерживает флаги ⓘ |
|
Дополнительные состояния ⓘ |
|
Идентификатор API |
|
Поддерживает строки только для чтения ⓘ |
|
Поддерживает удаление устаревших строк ⓘ |
|
Настройка Weblate¶
Типичный Настройки компонента Weblate для двуязычного gettext |
|
|---|---|
Маска файла |
|
Одноязычный базовый файл |
Пусто |
Шаблон для новых переводов |
|
Формат файла |
PO-файл gettext |
Типичный Настройки компонента Weblate для одноязычного gettext |
|
|---|---|
Маска файла |
|
Одноязычный базовый файл |
|
Шаблон для новых переводов |
|
Формат файла |
PO-файл gettext (одноязычный) |
Параметры формата файла¶
Параметры формата файла с шаблоном po_* можно использовать для настройки поведения формата gettext.