пятница, 23 сентября 2011 г.

Перевод на основе GNU gettext в Windows приложении на C++

Проблема: хочется использовать продвинутые инструменты для перевода от GNU gettext в приложении Windows. При этом хочется словари строк грузить не из файлов, а из ресурсов. Проект на MFC и не должен зависеть от сторонних dll.

Решение: Использовать tinygettext, этот пакет строит словари из .po файлов (забыли про .mo)
  • Помещаем .po файл в кастомные ресурсы приложения и грузим с помощью FindResource/LoadResource/LockResource.
  • Скармливаем полученную строку в памяти вызову tinygettext::POParser::parse как строковый поток.
  • Определяем макрос _() чтобы он искал соответствия в полученном словаре.
  • Компилируемся с win_iconv, чтобы не зависеть от сторонних dll.
  • Дампим строки завернутые в _() c помощью:
    xgettext.exe -s -k_ -o OutputFileName.pot *.cpp *.h
  • Открываем POEdit и редактируем наши строчки 
  • Profit!

Комментариев нет:

Отправить комментарий