49 lines
1.1 KiB
C
49 lines
1.1 KiB
C
#include "language.h"
|
|
|
|
// 生成语言字符串数据表所用的临时结构体 (fr/en 两列)
|
|
typedef struct {
|
|
char *fr;
|
|
char *en;
|
|
} LangEntry;
|
|
|
|
//////////////////////////////////////////////////////////
|
|
// !!!!!! 不要动下面的代码 !!!!!!
|
|
#ifdef DEFINE_STRING
|
|
#undef DEFINE_STRING
|
|
#endif
|
|
#define DEFINE_STRING(name, fr, en) { fr, en },
|
|
// !!!!!! 不要动上面的代码 !!!!!!
|
|
//////////////////////////////////////////////////////////
|
|
|
|
// 复用 strings.h 里的同一份登记表,展开成 {法语, 英语} 数据数组,存放于 Flash (code 区)
|
|
LangEntry code language_pack[STR_COUNT] = {
|
|
WRISTBAND_STRING_LIST
|
|
};
|
|
|
|
static Language current_lang = LANG_FR;
|
|
|
|
void Lang_Init(Language lang)
|
|
{
|
|
current_lang = (lang < LANG_COUNT) ? lang : LANG_FR;
|
|
}
|
|
|
|
void Lang_Set(Language lang)
|
|
{
|
|
if (lang < LANG_COUNT) {
|
|
current_lang = lang;
|
|
}
|
|
}
|
|
|
|
Language Lang_Current(void)
|
|
{
|
|
return current_lang;
|
|
}
|
|
|
|
char *Lang_Get(StringID id)
|
|
{
|
|
if (id >= STR_COUNT) {
|
|
return "";
|
|
}
|
|
return (current_lang == LANG_EN) ? language_pack[id].en : language_pack[id].fr;
|
|
}
|