Gettext неверный язык по умолчанию - PullRequest
4 голосов
/ 13 августа 2010

Я использую gettext для обработки переводов в моем проекте на C ++. Я генерирую файл .pot, используя xgettext, а затем создаю файлы .po для испанского и английского, используя msginit (en.po и es.po).

Проблема в том, что, хотя языковой стандарт в моей системе настроен на испанский, автоматически заполняется .po файл en.po, где он должен быть es.po, поскольку по умолчанию все строки написаны на испанском в моем проекте. В целом, контент из en.po должен быть таким же, как у es.po и наоборот.

Есть ли способ указать xgettext и / или msginit, что испанский язык является языком по умолчанию?

1 Ответ

0 голосов
/ 18 октября 2018

Использование языков, отличных от английского, в качестве базового языка вашего проекта долгое время считалось источником неприятностей. Сегодня это уже не так.

При использовании msginit 0.19.8.1 при запуске msginit -l en -i project.pot создается файл en.po, но все переводы инициализируются с исходным значением. Очевидно, msginit предполагает, что английский является базовым языком проекта. Но это легко исправить: просто откройте en.po в вашем редакторе и выбросьте все записи, кроме первой (заголовок PO).

При вызове xgettext всегда следует указывать опцию --from-code=utf-8. Кроме этого нет проблем с использованием другого базового языка, кроме английского.

...