#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_EN; void Lang_Init(Language lang) { current_lang = (lang < LANG_COUNT) ? lang : LANG_EN; } 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; }