O diretório em que o gettext pesquisará por um domínio de tradução específico é controlado pelo bindtextdomain
função. A biblioteca provavelmente tem uma chamada para essa função em algum lugar em suas rotinas de inicialização. Então, duas opções que você pode tentar são:
-
Modifique a biblioteca para que a chamada
bindtextdomain
especifique um diretório baseado em$APP_DIR
. Então, onde a biblioteca pode ser executada:bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR);
Você pode alterá-lo para algo como:
const char *app_dir = getenv("APP_DIR"); if (app_dir) { char *localedir = NULL; asprintf(&localedir, "%s/share/locale", app_dir); bindtextdomain(PACKAGE, localedir); free(localedir); } else { /* Not running as a click package: use compiled in default */ bindtextdomain(PACKAGE, PACKAGE_LOCALE_DIR); }
-
Faça uma segunda chamada para
bindtextdomain
que será executada após a inicialização da biblioteca que define o diretório correto para o domínio de tradução da biblioteca (possivelmente usando código semelhante ao acima).
É difícil oferecer mais conselhos sem saber mais sobre os detalhes.