软件实现多国语言界面的简单方法

来源:互联网 发布:java wait await 编辑:程序博客网 时间:2024/04/29 12:22

通用的软件国际化,一般比较正规的实现方法是,使用纯资源dll解决。因为这里面确实也没有什么可以称的上技术含量的,只是实现起来有点烦琐。实现方法网上的资料也很多,网友可自行查阅。本问提出的方法简单实用,并且灵活,可以在不重新编译程序的情况下,随时更改字符资源。起到修改软件显示界面的目的。下面就举一个基于对话框程序的开发实例,详细介绍实现方法。

一。实现原理:

在对话框程序的OnInitDialog()函数中,系统会对容器内的控件进行初始化,包括大小和文本。我们就在这里,根据我们所选择的语言,读取INI文件相应的资源字符串,并赋给控件,达到实现多国语言界面的目的。

二。基于对话框程序的开发实例

1.用VC生成一个基于对话框的程序。

2.在对话框上放置几个不同类型的控件,为了测试不同控件的记载效果。

本文中实际控件如下:

3.在头文件中添加语言标识变量。

public:             bool LanFlag;

4.在类的构造函数中初始化LanFlag变量。

 LanFlag = true;

5.在对话框类的OnInitDialog()函数中加入如下代码。

char FullFileName[201];       

CString path;        

CString IniFileName;       

GetModuleFileName(NULL, FullFileName, 200);       

CString s = FullFileName;       

int pos = s.ReverseFind('//');        

if (pos >= 0)      

{          

      path = s.Left(pos);      

}         

if (LanFlag)       

 {         

        IniFileName = path + CString("//Chinese.ini");       

} else      

 {        

         IniFileName = path + CString("//English.ini");      

}

 char text[201];       

CWnd *pWnd;

 ::GetPrivateProfileString("String","IDS_STRING1","Default",text,200,IniFileName);        

 pWnd = (CWnd *)GetDlgItem(IDC_STATIC1);        

pWnd->SetWindowText(text);         

 ::GetPrivateProfileString("String","IDS_STRING2","Default",text,200,IniFileName);       

pWnd = (CWnd *)GetDlgItem(IDC_BUTTON1);       

pWnd->SetWindowText(text);         

::GetPrivateProfileString("String","IDS_STRING3","Default",text,200,IniFileName);       

 pWnd = (CWnd *)GetDlgItem(IDC_RADIO1);       

pWnd->SetWindowText(text);         

::GetPrivateProfileString("String","IDS_STRING4","Default",text,200,IniFileName);       

pWnd = (CWnd *)GetDlgItem(IDC_CHECK1);       

pWnd->SetWindowText(text);        

 ::GetPrivateProfileString("String","IDS_STRING5","Default",text,200,IniFileName);       

pWnd = (CWnd *)GetDlgItem(IDOK);       

 pWnd->SetWindowText(text);         

 ::GetPrivateProfileString("String","IDS_STRING6","Default",text,200,IniFileName);       

pWnd = (CWnd *)GetDlgItem(IDCANCEL);       

pWnd->SetWindowText(text);

6.用写字板建立文件chinese.ini和english.ini输入一下内容。

在chinese.ini文件中输入

//chinese.ini

IDS_STRING1 = 中文      

 IDS_STRING2 = 启动      

IDS_STRING3 = 左       I

DS_STRING4 = 建立      

 IDS_STRING5 = 确定      

IDS_STRING6 = 取消

在English.ini文件中输入

[String]

IDS_STRING1 = Chinese       

IDS_STRING2 = GO       

IDS_STRING3 = Left       

 IDS_STRING4 = Create       

IDS_STRING5 = OK       

IDS_STRING6 = Cancel

保持所有的文件,编译并执行,程序运行结果如下:

手动修改LanFlag的值就可以让软件在中英文中切换。

可以直接修改ini文件中相应键值的字符串,就可以改变软件中控件的字符显示。从而实现方便的修改软件显示结果的目的,此方法本人运用到实际的软件开发中,使用效果很好。

 

原创粉丝点击