现在的位置: 首页 > 综合 > 正文

程序多语言实现

2013年08月14日 ⁄ 综合 ⁄ 共 1302字 ⁄ 字号 评论关闭

实现方法:

1.       将应用程序中用到的字串全部定义在数组中,根据相应的字串id找字串。

2.       应用程序要显示字串,通过调用text_display.c中提供的函数根据字串id显示。

3.       将原先的message数组定义中的字串成员改成字串id(在字串数组中对应原先的字串),原先的message id不变。显示message,也通过text_display.c中提供的函数根据message id显示

4.       在AppSrc,AppInc中增加了4个文件:

          text_string.h定义字串id, message id, 函数声明;

          str_def.h:定义具体各语种字串

          text_string.c定义字串数组,各种message数组;

          text_display.c显示函数,根据字串id显示,根据message id显示message;根据字串id得到该字串;设置当前语言。

          在include.h中加入了一些宏,和调用的接口函数声明。

5.  函数说明:

以下显示字串,在各个应用取代原先的显示函数。

uchar TS_DisplayLineCol(uchar line,uchar col,TEXT_STRING_ID str_id)

uchar TS_GetIDStr(TEXT_STRING_ID str_id,uchar *aucBuf)//根据字串id得到字串

uchar TS_SetCurLang(LanguageIndex lang)//设置当前语言

 

举例说明调用方法:

1.       若要加个语种,例如日语

a.         在include.h中,在枚举变量中加入

/*text_display.c*/

typedef enum LANGUAGE_INDEX

{

         LC_ENG = 0,

#ifdef PROJECT_CHINA

         LC_CHN,

#endif

#ifdef PROJECT_JPN

         LC_JPN,

#endif

         MAX_LANGUAGE_INDEX

}LanguageIndex;

 

b.在str_def.h中

DEF_STRING(TS_NULL,                             "中文",                                                      "English",          “日文字串”)

每一行都要加哦。

 

c.在text_string.c中

//定义日文字串数组,具体字串在str_def.h中。

static const T_STRING tsJPNTab[TS_NUM] =

{

#undef DEF_STRING

#define DEF_STRING(s0,s1,s2) s1,

#include "str_def.h"

#undef DEF_STRING

};

 

d.在text_display.c中

在各个显示函数中增加日文显示,修改设置当前语言函数。

 

备注:这种方法来源于以前多个遥控器scancode的项目。

 

抱歉!评论已关闭.