Ваша проблема в том, что hellogt.mo
находится не в том месте - ваша программа на самом деле не открывает его. Вы можете сказать это, используя strace
для отслеживания open
системных вызовов:
strace -e trace=open ./hellogt
...
open("/tmp/.//es_MX/LC_MESSAGES/hellogt.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/tmp/.//es/LC_MESSAGES/hellogt.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
Вы можете повлиять на то, где gettext ищет каталоги сообщений, с помощью переменной среды LOCPATH
, но если вы переместите его туда, где gettext пытается загрузить его из вашего примера, сработает:
mkdir -p es/LC_MESSAGES
cp hellogt.mo es/LC_MESSAGES
./hellogt
hola mundo