【发布时间】:2017-11-01 08:36:45
【问题描述】:
我正在使用 gettext 来翻译 C/C++ 程序中的一些消息。 在程序中,一些翻译是用户可定义的,因此它们可以在运行时更改。 是否可以在运行时更新 gettext 数据库?
【问题讨论】:
我正在使用 gettext 来翻译 C/C++ 程序中的一些消息。 在程序中,一些翻译是用户可定义的,因此它们可以在运行时更改。 是否可以在运行时更新 gettext 数据库?
【问题讨论】:
从您的问题中不清楚您是否希望在程序实际运行时更改翻译,或者您是否仅仅意味着在程序已经编译后翻译可能会更改。
如果您指的是后者,则无需执行任何操作。这就是 gettext 的工作原理。您创建核心数据库,然后将翻译作为不同的文件插入。
如果你的字面意思是前者,那就没有办法了。 gettext 不保证实际的翻译是如何加载的,运行时替换翻译数据库也不安全,就像那样。
如果程序知道翻译可能会改变,那么可以做的是手动刷新数据库并重新加载它。调用textdomain(3) 切换到另一个文本域然后返回可能会重新加载数据库。
【讨论】: