Для чего используются различные форматы файлов gettext?

Я начал пытаться перевести несколько наиболее используемых текстовых записей в программе на C используя gettext, но, копаясь в этом, я получил немного бит запутался во всех разных форматах файлов поскольку, похоже, существует некоторое перекрытие функциональности?

Я хотел бы получить обзор различных форматов

  • .po
  • .pot
  • .mo
  • .gmo
  • (другие форматы, которые я исключил?)

и узнайте

  • Каков нормальный рабочий процесс?
  • Что содержит этот формат файла?
  • Какие инструменты обычно используются?
  • Возможны "противоположные" преобразования направления (1)?

(1) Я знаю, что msgunfmt может конвертировать из .mo в .po, но поскольку .mo - это окончательный формат. Я предполагаю, что это не процесс без потерь. То есть если Я конвертирую с hello1.mo в hello2.po, а затем конвертирую с hello2.po на hello3.mo, я полагаю, что hello1.mo и hello3.mo будут содержать идентичные языковые строки, но некоторые метаинформации будут потеряны в пути, правильно?

Ответ 1

Я мог ошибаться, но:

.pot - доступный для пользователя шаблонный шаблон gettext - это то, что вы дадите переводчику (человек?).

.po - читаемый человеком текст gettext, основанный на POT - это тот переводчик, который возвращает вас.

.mo - машиночитаемый код (байт-код?), который будет использоваться PHP при выполнении фактического перевода. Этот формат предназначен для php. Это общий формат, понятный большинству программ, но он может не поддерживать все функции gnu gettext. Именно здесь появляется gmo.

.gmo - файлы, заканчивающиеся на .gmo, действительно являются файлами MO, когда известно, что эти файлы используют формат GNU.


Вы можете использовать poedit для обработки .pot → .po → .mo

подробнее

P.S. с учетом сказанного - только программисты будут вызывать такие форматы, как ПО или XML, для чтения человеком. также - вам, вероятно, не нужно будет конвертировать .mo в .po... ну... По крайней мере, это не похоже на общий сценарий для меня:)