Я использую gettext для перевода некоторых сообщений в программе C / C ++. В программе некоторые переводы определяются пользователем, поэтому их можно изменять во время работы. Можно ли обновить базу данных gettext во время выполнения?
добавить перевод в Rumtime для gettext
Ответы (1)
Из вашего вопроса неясно, хотите ли вы, чтобы переводы изменялись во время фактического выполнения программы, или вы просто имеете в виду, что переводы могут измениться после того, как программа уже скомпилирована.
Если вы имеете в виду позднее, вам ничего не нужно делать. Так работает gettext. Вы создаете основную базу данных, а затем подключаете переводы как отдельные файлы.
Если вы в буквальном смысле имеете в виду первое, то сделать это невозможно. gettext
не гарантирует, как загружаются фактические переводы, и заменять базу данных переводов во время выполнения просто так небезопасно.
Что можно сделать, если программа знает, что переводы могут измениться, - это вручную очистить базу данных и перезагрузить ее. Вызов textdomain
(3) для переключения на другой текстовый домен и затем обратно может перезагрузить базу данных.