Не знаю уже, куда копать. Есть несколько еще библиотек на вала (по сути на Си), где все настроено похоже и все работает.
Есть одна не рабочая библиотека, назовем ее libanon.
Библиотека зависит от GLib, собираю с помощью CMake. Опции сборки получены через (gettext явно как-то не подключаю):
pkg_check_modules( GLIB2 REQUIRED gio-2.0 glib-2.0 gobject-2.0 gmodule-2.0 gthread-2.0 )
Компилятору Си также передаю флаги:
-DGETTEXT_PACKAGE=\«libanon\» -DG_LOG_DOMAIN=\«libanon\»
Если флаги не передать, то сборка фейлится, так как не объявлен GETTEXT_PACKAGE. Все логично тут.
Внутри библиотеки есть весь (?) необходимый код:
#include <glib/gi18n-lib.h>
...
bindtextdomain («libanon», «po»);
_tmp2_ = _ («Some text»);
Перевод «Some text» прописан в po-файле, собран mo-файл и лежит он в
./po/ru/LC_MESSAGES/libanon.mo
Собираю тестовую программу, смотрю вывод:
strace ./bin/anon_test 2>&1 | grep --color '\.mo'
И вижу, как грузятся mo-файлы glib, libc, других моих аналогичных libanon библиотек, но mo-файл libanon не упоминается в выводе, даже нет попыток его открыть.