我尝试了几乎所有在web / stackoverflow上找到的解决方案。
这是我缩短的代码:
#include "gettext.h"
std::string locale(setlocale(LC_ALL, ""));
MessageBoxA(NULL, locale.c_str(), "Locale", MB_OK); // prints out 'German_Germany.1252'
std::string lclocale = "LC_ALL=" + locale";
if(0 == putenv(lclocale.c_str()))
MessageboxA(NULL, "Set locale seccussful", "Locale", MB_OK);
else
MessageboxA(NULL, "Set locale error", "Locale", MB_OK);
std::string domain("xyz_locale");
textdomain(domain.c_str());
bindtextdomain(domain.c_str(), "./xyz_locale");
bind_textdomain_codeset(domain.c_str(), "UTF-8"); // same problem without this line
我已经尝试过:
这是我的语言环境目录结构:
pathToDomain
/(locale) //tried all names mentioned above
/LC_MESSAGES
/(domain).mo
我已经尝试设置绝对路径(" C:/....../(域名)")
翻译(-files)是用PoEdit制作的。 * .po文件使用UTF-8编码,行结尾设置为窗口(在PoEdit中设置)。
我已经从这里下载了gettext内容:
但结果与他们没有区别。
我将gettext.h
从gettext-tools-dev_0.18.1.1-2.win32/share/gettext
复制到我项目的/include
目录。
编辑:
我已经通读了gettext windows FAQ