У меня есть приложение щелчка, которые зависят от некоторого lib,
и у меня есть пакет что lib в пакете щелчка.
lib загружается хорошо. но файл переводов (.mo) не основан.
мой файл щелчка бесплатный взгляд как это:
/
/share
/share/locale/<LANG>/LC_MESSAGES/somlib.mo
/lib/i386-linux-gnu/somelib.so
Конечно, существует больше файлов, но это, что я думаю что важный для вопроса.
я также пытаюсь поставить его /usr/share/locale/<LANG>/LC_MESSAGES/somlib.mo
но что я нашел, что попытка lib найти файлы переводов на реальном /usr/share/locale/...
что у меня нет доступа к нему с пакетом щелчка для помещения файлов там...
(я копирую файлы в этот путь с mv
, и это - работа),
Я пытался использовать strace
знать, где тот lib ищут его файлы, но я не знаю, как сделать это по телефону (использующий эмулятор). попытка strace qmlscene
дал мне ошибку, которую я должен подключить к серверу Мира или чему-то как этот.
Спасибо.
Каталогом, где gettext будет искать переводы для конкретного домена перевода, управляют bindtextdomain
функция. Библиотека, скорее всего, имеет вызов к этой функции где-нибудь в ее стандартных программах инициализации. Таким образом, две опции, которые Вы могли попробовать:
Изменяют библиотеку так эти bindtextdomain
, вызов определяет каталог на основе $APP_DIR
. Таким образом, где библиотека могла бы работать:
bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR);
Вы могли бы изменить его на что-то как:
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);
}
Выполняют второй вызов к bindtextdomain
, который будет бежать за инициализацией библиотеки, которая устанавливает корректный каталог для домена перевода библиотеки (возможно использующий код, подобный вышеупомянутому).
трудно дать больше совет, не зная больше о специфических особенностях.