实现方法:
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的项目。