我正在尝试学习如何使用wxWidgets使文本国际化。我有wxWidgets 3.1.0设置和工作,并在Windows 10上使用Visual C ++ 2015。
我确实在事故发生的某个时刻开始工作,然后我尝试翻译更多的文字并停止工作。我不确定我做错了什么,但我似乎有错误的配置或错过了一步。
我写了一个SSCCE来测试它,它仍然失败,表明我可能做错了,这对我正在处理的真实项目来说不是问题。
C ++代码:
#include <iostream>
#include <wx/wx.h>
class Application : public ::wxApp {
public:
virtual bool OnInit() override {
wxMessageBox(_("MyTranslation"), "Test", wxOK | wxICON_INFORMATION);
return false;
}
};
wxIMPLEMENT_APP(Application);
在项目根目录(工作目录)中,我有一个文件夹&#34; en&#34;包含PO / MO文件。
Test.po:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: Test\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-25 00:59-0400\n"
"PO-Revision-Date: 2016-04-25 16:36-0400\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Last-Translator: \n"
"Language-Team: \n"
"X-Generator: Poedit 1.8.7\n"
#
msgid "MyTranslation"
msgstr "Hello world!"
Poedit对此文件没有任何问题,并且msgfmt不会发出警告或错误。
然后我运行以下命令来创建mo
文件:
msgfmt test.po -otest.mo
当我运行应用程序时,我会弹出消息框,但内容为&#34; MyTranslation&#34;而不是&#34; Hello world!&#34;
另请注意,我使用的是默认语言环境(en),所以现在我并没有弄乱wxLocale
实例。最终我需要,但我在这里采取了一些步骤 - 除非我需要,否则不要将更多代码堆积到破碎的流程上。
我做错了什么,我需要做些什么来解决它?