добавить перевод в Rumtime для gettext

Я использую gettext для перевода некоторых сообщений в программе C / C ++. В программе некоторые переводы определяются пользователем, поэтому их можно изменять во время работы. Можно ли обновить базу данных gettext во время выполнения?


person Shu Suzuki    schedule 01.11.2017    source источник


Ответы (1)


Из вашего вопроса неясно, хотите ли вы, чтобы переводы изменялись во время фактического выполнения программы, или вы просто имеете в виду, что переводы могут измениться после того, как программа уже скомпилирована.

Если вы имеете в виду позднее, вам ничего не нужно делать. Так работает gettext. Вы создаете основную базу данных, а затем подключаете переводы как отдельные файлы.

Если вы в буквальном смысле имеете в виду первое, то сделать это невозможно. gettext не гарантирует, как загружаются фактические переводы, и заменять базу данных переводов во время выполнения просто так небезопасно.

Что можно сделать, если программа знает, что переводы могут измениться, - это вручную очистить базу данных и перезагрузить ее. Вызов textdomain (3) для переключения на другой текстовый домен и затем обратно может перезагрузить базу данных.

person Shachar Shemesh    schedule 01.11.2017
comment
Да, я имею в виду бывшую. Я думаю, вы имеете в виду, что мне нужно создать файл mo по запросу и перезагрузить его. Я думаю, что это один из возможных способов, но я хотел знать, есть ли способ обновить базу данных из C api. В любом случае спасибо за ответ. - person Shu Suzuki; 02.11.2017