2009年4月16日星期四

U++教程3:多语言支持

使用U++编程可以方便的支持多国语言,U++平台本身就带了许多国家与地区的语言包,其中就包括了中文。U++支持编译时语言支持与运行时语言支持两种方式。我们先来看看编译时语言支持。还是用我们的Hello World程序作例子,看看我们是如何让它支持中文的。首先将我们的程序代码改成下面这样,蓝色部分为新增加的:
#include <CtrlLib/CtrlLib.h>
#define TFILE <helloworld/helloworl.t> //定义编译时语言文件
#include <Core/t.h>                   //多语言支持头文件
using namespace Upp;

class HelloWindow:public TopWindow
{
 private:
 Button hellobtn;
 Button closebtn;
 public:
 void hellofn();
 void closefn();
 HelloWindow();
 typedef HelloWindow CLASSNAME;
};

void HelloWindow::hellofn()
{
 PromptOK(t_("Hello World")); //为需要翻译的文件添加t_()宏
}

void HelloWindow::closefn()
{
 Close();
}

HelloWindow::HelloWindow()
{
 Title(t_("Hello World!")).Sizeable().Zoomable();
 SetRect(0,0,300,150);
 Add(hellobtn.SetLabel(t_("Hello")).LeftPos(50,80).TopPos(50,30));
 Add(closebtn.SetLabel(t_("Close")).RightPos(50,80).TopPos(50,30));
 hellobtn<<=THISBACK(hellofn);
 closebtn<<=THISBACK(closefn);
}

GUI_APP_MAIN
{

    SetLanguage(GetSystemLNG()); //设定程序所用的语言
    HelloWindow().Run(); //为了使代码更紧凑,我们使用了匿名对象。
}

我们在源代码所在的目录下新建helloworl.t文件,此文件就为U++程序所用的编译时语言文件,内容如下:
T_("Hello World")
zhCN("世界你好")

T_("Hello World!")
zhCN("世界你好!")

T_("Hello")
zhCN("你好")

T_("Close")
zhCN("关闭")


编译后我们就得到了一个中文版的HelloWorld了。


没有评论: