Для чего используются разные форматы файлов gettext? - PullRequest
12 голосов
/ 02 декабря 2010

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

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

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

и учиться

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

1 Ответ

13 голосов
/ 11 января 2011

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

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

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

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

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


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

подробнее

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

...