За и против использования gettext вместо QObject.tr () для локализации приложения PyQt4?

У меня есть несколько приложений, записанных в PyQt4, где я использовал стандартный Python gettext библиотека для интернационализации и локализации GUI. Это работает хорошее для меня. Но я выбрал gettext просто, потому что у меня уже были знания и опыт gettext использования и нуль опыта с Qt4 tr () подход.

Теперь я хотел бы лучше сравнить оба подхода и понять то, что я пропускаю при помощи gettext вместо QObject.tr и делаю там какую-либо серьезную причину, почему я не должен использовать gettext для приложений Qt4/PyQt4?

В моих преимуществах понимания использования gettext:

  • GNU gettext является сформировавшимся, и это, кажется, стандартно де-факто в мире GNU/Linux.
  • Существует достаточно специальных редакторов для файлов ПО для упрощения работы переводчиков, хотя текстовая природа шаблонов ПО делает ее не строго необходимой.
  • Существуют даже веб-сервисы, доступные, который может использоваться для совместных переводов.
  • gettext является стандартной библиотекой Python, таким образом, я не должен устанавливать ничего специального для использования его во времени выполнения.
  • Это имеет очень хорошую поддержку исключительного выбора / выбора форм множественного числа через ngettext ().

Что я рассматриваю как преимущества QObject.tr ():

  • Это - собственная технология для Qt4/PyQt4 поэтому, возможно, это будет работать лучше/быстрее (хотя у меня нет данных для доказательства).
  • Сообщения для перевода могут иметь дополнительную контекстную информацию, которая поможет переводчикам выбрать лучшие варианты для слов омонима, например, английское слово "Letter" может быть, переводит как "Символ", "Почта" или даже вид "Формата бумаги" в зависимости от фактического контекста.

Что я рассматриваю как недостатки QObject.tr () по сравнению с gettext:

  • Я не сделал найденный в спокойной документации, как поддерживал исключительный/множественный выбор там.
  • Шаблон перевода Qt4 TS находится в формате XML и поэтому более сложен для редактирования без специального редактора (спокойный Лингвист), и кажется, что нет никаких других сторонних решений или веб-сервисов. Таким образом, это потребовало бы, чтобы переводчики изучили новый инструмент (если они уже знакомы с инструментами PO).

Но все объекты выше не достаточно очень важны, чтобы ясно сказать, что любой инструмент лучше из другого. И я не хочу запускать войну пламени о том, что лучше, потому что это очень субъективно. Я просто хочу знать что я отсутствующий как за и против QObject.tr () по сравнению с gettext.

8
задан bialix 7 January 2010 в 15:50
поделиться

1 ответ

Вы можете добавить, что аргументы управляются по-другому ...

С помощью Gettext мы можем делать

_ («Привет% (name) s из% (city) s»)% {person .__ dict __}

, тогда как в PyQt мы делаем

self.tr («Привет% 1 из% 2»). arg (person.name) .arg (person.city)

-1
ответ дан 5 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: