gettext:更改默认 .mo 文件位置

问题描述 投票:0回答:1

默认情况下,gettext 在目录中搜索 .mo 文件,如下所示:

locale/en_EN/LC_MESSAGES
就我而言,我需要配置 gettext 以在没有任何区域设置规范的文件夹中搜索 .mo 文件,例如
locale/LC_MESSAGES
。 是否有可能以这种方式配置 gettext ? (我使用的是 C++ 版本的 gettext)

c++ gettext
1个回答
0
投票

在 C++ 下使用 GNU gettext 的 win32 版本时,通过使用“../../”文件夹约定引用 gettext 函数中的文件夹,我能够成功地做到这一点。因此,例如,如果您在文件夹 c:/locale 中有一个名为 filename.mo 的 mo 文件,那么您可以按如下方式引用它:

bindtextdomain("../../文件名", "c:/locale");

至少,这个技巧在 win32 版本的 gettext 下对我有用。诀窍在于,事实上,由于 gettext 基于子文件夹 en_EN/LC_MESSAGES 引用 mo 文件的方式(在您的示例中),上面对 bindtextdomain 的调用会导致 gettext 在 c:/locale/en_EN/LC_MESSAGES/../.. 下进行搜索。 /filename.mo 实际上等于 c:/locale/filename.mo。另外,在我的测试中,即使 c:/locale 下面没有 en_EN/LC_MESSAGES 子文件夹,它仍然有效(至少在我的环境中)。

© www.soinside.com 2019 - 2024. All rights reserved.