Windows 上的 glib i18n

发布于 2024-12-13 20:16:33 字数 674 浏览 0 评论 0原文

我正在尝试使用 Eclipse CDT + MinGW 和 GTK 2.22 在 Windows 7 上运行 C++ GTK2 应用程序。它使用 进行国际化,并且在 Linux 上完美运行。但是,我无法让它在 Windows 上运行。我使用以下代码初始化本地化:

setlocale(LC_ALL, "sk_SK");
bindtextdomain ("MyApp", "MyPath");
bind_textdomain_codeset ("MyApp", "UTF-8");
textdomain ("MyApp");

这些函数都没有返回 NULL,因此它们成功完成。

然后,当我尝试使用:获取字符串时

gettext("someText");

,我只得到“someText”,这意味着找不到我的翻译文件。

我的 GNU-gettext 创建的语言文件是 MyPath/sk_SK/LC_MESSAGES/MyApp.mo。 我可以完成这项工作的唯一方法是将 Windows 中的 LC_ALL 环境变量手动设置为 sk_SK (但是 putenv("LC_ALL=sk_SK") 在我的代码中也不起作用)。

I am trying to run C++ GTK2 application on Windows 7, using Eclipse CDT + MinGW and GTK 2.22. It uses <glib/gi18n.h> for internationalization and it works perfectly on Linux. However, I can't make it work on Windows. I initialize localization using this code:

setlocale(LC_ALL, "sk_SK");
bindtextdomain ("MyApp", "MyPath");
bind_textdomain_codeset ("MyApp", "UTF-8");
textdomain ("MyApp");

None of these functions returns NULL, so they finish successfully.

Then when I try to obtain a string using:

gettext("someText");

, I get only "someText", which means that my translations file was not found.

My GNU-gettext created language file is MyPath/sk_SK/LC_MESSAGES/MyApp.mo.
The only way I can make this work is to set the LC_ALL environment variable in Windows manually to sk_SK (but putenv("LC_ALL=sk_SK") in my code does not work either).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文