整定一版
This commit is contained in:
525
demo/language.c
Normal file
525
demo/language.c
Normal file
@ -0,0 +1,525 @@
|
||||
#include "language.h"
|
||||
|
||||
/* 全局变量定义 ---------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief 当前系统语言
|
||||
*/
|
||||
static SystemLang_e sg_current_language = SYSTEM_LANG_CHINESE;
|
||||
|
||||
/**
|
||||
* @brief 中文文本数组
|
||||
*/
|
||||
static const char *sg_chinese_text[] = {
|
||||
[TEXT_ENTER] = "进入",
|
||||
[TEXT_EXIT] = "退出",
|
||||
[TEXT_RETURN] = "返回",
|
||||
[TEXT_OK] = "确定",
|
||||
[TEXT_CANCEL] = "取消",
|
||||
[TEXT_SAVE] = "保存",
|
||||
[TEXT_LOAD] = "加载",
|
||||
|
||||
[TEXT_MAIN_MENU] = "主菜单",
|
||||
[TEXT_MAIN_MEASUREMENT] = "测量",
|
||||
[TEXT_MAIN_PROTECTION] = "保护",
|
||||
[TEXT_MAIN_CONTROL] = "控制",
|
||||
[TEXT_MAIN_SETTING] = "设置",
|
||||
[TEXT_MAIN_RECORD] = "记录",
|
||||
[TEXT_MAIN_HELP] = "帮助",
|
||||
[TEXT_MAIN_ABOUT] = "关于",
|
||||
|
||||
[TEXT_MEASURE_VOLTAGE] = "电压",
|
||||
[TEXT_MEASURE_CURRENT] = "电流",
|
||||
[TEXT_MEASURE_POWER] = "功率",
|
||||
[TEXT_MEASURE_ENERGY] = "能量",
|
||||
[TEXT_MEASURE_FREQUENCY] = "频率",
|
||||
[TEXT_MEASURE_TEMPERATURE] = "温度",
|
||||
|
||||
[TEXT_PROTECT_OVER_VOLTAGE] = "过电压保护",
|
||||
[TEXT_PROTECT_UNDER_VOLTAGE] = "欠电压保护",
|
||||
[TEXT_PROTECT_OVER_CURRENT] = "过电流保护",
|
||||
[TEXT_PROTECT_SETTING] = "保护设置",
|
||||
|
||||
[TEXT_CONTROL_ON_OFF] = "开关控制",
|
||||
[TEXT_CONTROL_START_STOP] = "启停控制",
|
||||
[TEXT_CONTROL_AUTO_MANUAL] = "自动/手动",
|
||||
|
||||
[TEXT_SETTING_LANGUAGE] = "语言设置",
|
||||
|
||||
[TEXT_RECORD_EVENT] = "事件记录",
|
||||
|
||||
[TEXT_HELP_GUIDE] = "指南",
|
||||
|
||||
[TEXT_ABOUT_VERSION] = "版本信息",
|
||||
|
||||
[TEXT_PERSIST_SAVE_STATE] = "保存菜单状态",
|
||||
[TEXT_PERSIST_RESTORE_STATE] = "恢复菜单状态",
|
||||
[TEXT_PERSIST_SAVE_SUCCESS] = "保存成功",
|
||||
[TEXT_PERSIST_SAVE_FAILED] = "保存失败",
|
||||
[TEXT_PERSIST_RESTORE_SUCCESS] = "恢复成功",
|
||||
[TEXT_PERSIST_RESTORE_FAILED] = "恢复失败",
|
||||
|
||||
[TEXT_ERROR] = "错误",
|
||||
[TEXT_WARNING] = "警告",
|
||||
[TEXT_SUCCESS] = "成功",
|
||||
[TEXT_INFO] = "信息",
|
||||
[TEXT_TEST] = "测试",
|
||||
[TEXT_SELECT_OPTION] = "选择操作",
|
||||
[TEXT_CURRENT] = "当前",
|
||||
[TEXT_STATUS] = "状态",
|
||||
[TEXT_SUMMARY] = "摘要",
|
||||
[TEXT_EMPTY] = "空",
|
||||
[TEXT_CURRENT_SELECTION] = "当前选择",
|
||||
[TEXT_OPERATIONS] = "操作",
|
||||
[TEXT_SELECT_ITEM] = "选择项",
|
||||
[TEXT_ENTER_SUBMENU] = "进入子菜单",
|
||||
[TEXT_RETURN_PARENT] = "返回父菜单",
|
||||
[TEXT_SELECT_PREVIOUS] = "选择上一项",
|
||||
[TEXT_SELECT_NEXT] = "选择下一项",
|
||||
[TEXT_START_DEFAULT] = "从默认开始",
|
||||
[TEXT_REGISTER_CALLBACK_FAILED] = "注册回调失败",
|
||||
[TEXT_RESTORE_MENU_STATE] = "恢复菜单状态",
|
||||
[TEXT_RESTORE_MENU_STATE_FAILED] = "恢复菜单状态失败",
|
||||
[TEXT_SAVE_MENU_STATE_FAILED] = "保存菜单状态失败",
|
||||
|
||||
[TEXT_UP_ARROW] = "上箭头",
|
||||
[TEXT_DOWN_ARROW] = "下箭头",
|
||||
[TEXT_LEFT_ARROW] = "左箭头",
|
||||
[TEXT_RIGHT_ARROW] = "右箭头",
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 英文文本数组
|
||||
*/
|
||||
static const char *sg_english_text[] = {
|
||||
[TEXT_ENTER] = "Enter",
|
||||
[TEXT_EXIT] = "Exit",
|
||||
[TEXT_RETURN] = "Return",
|
||||
[TEXT_OK] = "OK",
|
||||
[TEXT_CANCEL] = "Cancel",
|
||||
[TEXT_SAVE] = "Save",
|
||||
[TEXT_LOAD] = "Load",
|
||||
|
||||
[TEXT_MAIN_MENU] = "Main Menu",
|
||||
[TEXT_MAIN_MEASUREMENT] = "Measurement",
|
||||
[TEXT_MAIN_PROTECTION] = "Protection",
|
||||
[TEXT_MAIN_CONTROL] = "Control",
|
||||
[TEXT_MAIN_SETTING] = "Setting",
|
||||
[TEXT_MAIN_RECORD] = "Record",
|
||||
[TEXT_MAIN_HELP] = "Help",
|
||||
[TEXT_MAIN_ABOUT] = "About",
|
||||
|
||||
[TEXT_MEASURE_VOLTAGE] = "Voltage",
|
||||
[TEXT_MEASURE_CURRENT] = "Current",
|
||||
[TEXT_MEASURE_POWER] = "Power",
|
||||
[TEXT_MEASURE_ENERGY] = "Energy",
|
||||
[TEXT_MEASURE_FREQUENCY] = "Frequency",
|
||||
[TEXT_MEASURE_TEMPERATURE] = "Temperature",
|
||||
|
||||
[TEXT_PROTECT_OVER_VOLTAGE] = "Over Voltage Protection",
|
||||
[TEXT_PROTECT_UNDER_VOLTAGE] = "Under Voltage Protection",
|
||||
[TEXT_PROTECT_OVER_CURRENT] = "Over Current Protection",
|
||||
[TEXT_PROTECT_SETTING] = "Protection Setting",
|
||||
|
||||
[TEXT_CONTROL_ON_OFF] = "On/Off",
|
||||
[TEXT_CONTROL_START_STOP] = "Start/Stop",
|
||||
[TEXT_CONTROL_AUTO_MANUAL] = "Auto/Manual",
|
||||
|
||||
[TEXT_SETTING_LANGUAGE] = "Language Setting",
|
||||
|
||||
[TEXT_RECORD_EVENT] = "Event Record",
|
||||
|
||||
[TEXT_HELP_GUIDE] = "Guide",
|
||||
|
||||
[TEXT_ABOUT_VERSION] = "Version Info",
|
||||
|
||||
[TEXT_PERSIST_SAVE_STATE] = "Save Menu State",
|
||||
[TEXT_PERSIST_RESTORE_STATE] = "Restore Menu State",
|
||||
[TEXT_PERSIST_SAVE_SUCCESS] = "Save Success",
|
||||
[TEXT_PERSIST_SAVE_FAILED] = "Save Failed",
|
||||
[TEXT_PERSIST_RESTORE_SUCCESS] = "Restore Success",
|
||||
[TEXT_PERSIST_RESTORE_FAILED] = "Restore Failed",
|
||||
|
||||
[TEXT_ERROR] = "Error",
|
||||
[TEXT_WARNING] = "Warning",
|
||||
[TEXT_SUCCESS] = "Success",
|
||||
[TEXT_INFO] = "Info",
|
||||
[TEXT_TEST] = "Test",
|
||||
[TEXT_SELECT_OPTION] = "Select Option",
|
||||
[TEXT_CURRENT] = "Current",
|
||||
[TEXT_STATUS] = "Status",
|
||||
[TEXT_SUMMARY] = "Summary",
|
||||
[TEXT_EMPTY] = "Empty",
|
||||
[TEXT_CURRENT_SELECTION] = "Current Selection",
|
||||
[TEXT_OPERATIONS] = "Operations",
|
||||
[TEXT_SELECT_ITEM] = "Select Item",
|
||||
[TEXT_ENTER_SUBMENU] = "Enter Submenu",
|
||||
[TEXT_RETURN_PARENT] = "Return Parent",
|
||||
[TEXT_SELECT_PREVIOUS] = "Select Previous",
|
||||
[TEXT_SELECT_NEXT] = "Select Next",
|
||||
[TEXT_START_DEFAULT] = "Start Default",
|
||||
[TEXT_REGISTER_CALLBACK_FAILED] = "Register Callback Failed",
|
||||
[TEXT_RESTORE_MENU_STATE] = "Restore Menu State",
|
||||
[TEXT_RESTORE_MENU_STATE_FAILED] = "Restore Menu State Failed",
|
||||
[TEXT_SAVE_MENU_STATE_FAILED] = "Save Menu State Failed",
|
||||
|
||||
[TEXT_UP_ARROW] = "Up Arrow",
|
||||
[TEXT_DOWN_ARROW] = "Down Arrow",
|
||||
[TEXT_LEFT_ARROW] = "Left Arrow",
|
||||
[TEXT_RIGHT_ARROW] = "Right Arrow",
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 日语文本数组
|
||||
*/
|
||||
static const char *sg_japanese_text[] = {
|
||||
[TEXT_ENTER] = "入る",
|
||||
[TEXT_EXIT] = "退出",
|
||||
[TEXT_RETURN] = "戻る",
|
||||
[TEXT_OK] = "OK",
|
||||
[TEXT_CANCEL] = "キャンセル",
|
||||
[TEXT_SAVE] = "保存",
|
||||
[TEXT_LOAD] = "読み込む",
|
||||
|
||||
[TEXT_MAIN_MENU] = "メインメニュー",
|
||||
[TEXT_MAIN_MEASUREMENT] = "計測",
|
||||
[TEXT_MAIN_PROTECTION] = "保護",
|
||||
[TEXT_MAIN_CONTROL] = "制御",
|
||||
[TEXT_MAIN_SETTING] = "設定",
|
||||
[TEXT_MAIN_RECORD] = "記録",
|
||||
[TEXT_MAIN_HELP] = "ヘルプ",
|
||||
[TEXT_MAIN_ABOUT] = "について",
|
||||
|
||||
[TEXT_MEASURE_VOLTAGE] = "電圧",
|
||||
[TEXT_MEASURE_CURRENT] = "電流",
|
||||
[TEXT_MEASURE_POWER] = "電力",
|
||||
[TEXT_MEASURE_ENERGY] = "エネルギー",
|
||||
[TEXT_MEASURE_FREQUENCY] = "周波数",
|
||||
[TEXT_MEASURE_TEMPERATURE] = "温度",
|
||||
|
||||
[TEXT_PROTECT_OVER_VOLTAGE] = "過電圧保護",
|
||||
[TEXT_PROTECT_UNDER_VOLTAGE] = "不足電圧保護",
|
||||
[TEXT_PROTECT_OVER_CURRENT] = "過電流保護",
|
||||
[TEXT_PROTECT_SETTING] = "保護設定",
|
||||
|
||||
[TEXT_CONTROL_ON_OFF] = "オン/オフ",
|
||||
[TEXT_CONTROL_START_STOP] = "スタート/ストップ",
|
||||
[TEXT_CONTROL_AUTO_MANUAL] = "オート/マニュアル",
|
||||
|
||||
[TEXT_SETTING_LANGUAGE] = "言語設定",
|
||||
|
||||
[TEXT_RECORD_EVENT] = "イベント記録",
|
||||
|
||||
[TEXT_HELP_GUIDE] = "ガイド",
|
||||
|
||||
[TEXT_ABOUT_VERSION] = "バージョン情報",
|
||||
|
||||
[TEXT_PERSIST_SAVE_STATE] = "メニュー状態を保存",
|
||||
[TEXT_PERSIST_RESTORE_STATE] = "メニュー状態を復元",
|
||||
[TEXT_PERSIST_SAVE_SUCCESS] = "保存成功",
|
||||
[TEXT_PERSIST_SAVE_FAILED] = "保存失敗",
|
||||
[TEXT_PERSIST_RESTORE_SUCCESS] = "復元成功",
|
||||
[TEXT_PERSIST_RESTORE_FAILED] = "復元失敗",
|
||||
|
||||
[TEXT_ERROR] = "エラー",
|
||||
[TEXT_WARNING] = "警告",
|
||||
[TEXT_SUCCESS] = "成功",
|
||||
[TEXT_INFO] = "情報",
|
||||
[TEXT_TEST] = "テスト",
|
||||
[TEXT_SELECT_OPTION] = "オプションを選択",
|
||||
[TEXT_CURRENT] = "現在",
|
||||
[TEXT_STATUS] = "ステータス",
|
||||
[TEXT_SUMMARY] = "サマリー",
|
||||
[TEXT_EMPTY] = "空",
|
||||
[TEXT_CURRENT_SELECTION] = "現在の選択",
|
||||
[TEXT_OPERATIONS] = "操作",
|
||||
[TEXT_SELECT_ITEM] = "項目を選択",
|
||||
[TEXT_ENTER_SUBMENU] = "サブメニューに入る",
|
||||
[TEXT_RETURN_PARENT] = "親メニューに戻る",
|
||||
[TEXT_SELECT_PREVIOUS] = "前の項目を選択",
|
||||
[TEXT_SELECT_NEXT] = "次の項目を選択",
|
||||
[TEXT_START_DEFAULT] = "デフォルトから開始",
|
||||
[TEXT_REGISTER_CALLBACK_FAILED] = "コールバック登録失敗",
|
||||
[TEXT_RESTORE_MENU_STATE] = "メニュー状態を復元",
|
||||
[TEXT_RESTORE_MENU_STATE_FAILED] = "メニュー状態復元失敗",
|
||||
[TEXT_SAVE_MENU_STATE_FAILED] = "メニュー状態保存失敗",
|
||||
|
||||
[TEXT_UP_ARROW] = "上矢印",
|
||||
[TEXT_DOWN_ARROW] = "下矢印",
|
||||
[TEXT_LEFT_ARROW] = "左矢印",
|
||||
[TEXT_RIGHT_ARROW] = "右矢印",
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 德语文本数组
|
||||
*/
|
||||
static const char *sg_german_text[] = {
|
||||
[TEXT_ENTER] = "Eingeben",
|
||||
[TEXT_EXIT] = "Verlassen",
|
||||
[TEXT_RETURN] = "Zurück",
|
||||
[TEXT_OK] = "OK",
|
||||
[TEXT_CANCEL] = "Abbrechen",
|
||||
[TEXT_SAVE] = "Speichern",
|
||||
[TEXT_LOAD] = "Laden",
|
||||
|
||||
[TEXT_MAIN_MENU] = "Hauptmenü",
|
||||
[TEXT_MAIN_MEASUREMENT] = "Messung",
|
||||
[TEXT_MAIN_PROTECTION] = "Schutz",
|
||||
[TEXT_MAIN_CONTROL] = "Steuerung",
|
||||
[TEXT_MAIN_SETTING] = "Einstellung",
|
||||
[TEXT_MAIN_RECORD] = "Aufzeichnung",
|
||||
[TEXT_MAIN_HELP] = "Hilfe",
|
||||
[TEXT_MAIN_ABOUT] = "Über",
|
||||
|
||||
[TEXT_MEASURE_VOLTAGE] = "Spannung",
|
||||
[TEXT_MEASURE_CURRENT] = "Strom",
|
||||
[TEXT_MEASURE_POWER] = "Leistung",
|
||||
[TEXT_MEASURE_ENERGY] = "Energie",
|
||||
[TEXT_MEASURE_FREQUENCY] = "Frequenz",
|
||||
[TEXT_MEASURE_TEMPERATURE] = "Temperatur",
|
||||
|
||||
[TEXT_PROTECT_OVER_VOLTAGE] = "Überspannungsschutz",
|
||||
[TEXT_PROTECT_UNDER_VOLTAGE] = "Unterspannungsschutz",
|
||||
[TEXT_PROTECT_OVER_CURRENT] = "Überstromschutz",
|
||||
[TEXT_PROTECT_SETTING] = "Schutz-Einstellung",
|
||||
|
||||
[TEXT_CONTROL_ON_OFF] = "Ein/Aus",
|
||||
[TEXT_CONTROL_START_STOP] = "Start/Stopp",
|
||||
[TEXT_CONTROL_AUTO_MANUAL] = "Auto/Manuell",
|
||||
|
||||
[TEXT_SETTING_LANGUAGE] = "Spracheinstellung",
|
||||
|
||||
[TEXT_RECORD_EVENT] = "Ereignisaufzeichnung",
|
||||
|
||||
[TEXT_HELP_GUIDE] = "Anleitung",
|
||||
|
||||
[TEXT_ABOUT_VERSION] = "Versionsinfo",
|
||||
|
||||
[TEXT_PERSIST_SAVE_STATE] = "Menüzustand speichern",
|
||||
[TEXT_PERSIST_RESTORE_STATE] = "Menüzustand wiederherstellen",
|
||||
[TEXT_PERSIST_SAVE_SUCCESS] = "Speichern erfolgreich",
|
||||
[TEXT_PERSIST_SAVE_FAILED] = "Speichern fehlgeschlagen",
|
||||
[TEXT_PERSIST_RESTORE_SUCCESS] = "Wiederherstellen erfolgreich",
|
||||
[TEXT_PERSIST_RESTORE_FAILED] = "Wiederherstellen fehlgeschlagen",
|
||||
|
||||
[TEXT_ERROR] = "Fehler",
|
||||
[TEXT_WARNING] = "Warnung",
|
||||
[TEXT_SUCCESS] = "Erfolg",
|
||||
[TEXT_INFO] = "Info",
|
||||
[TEXT_TEST] = "Test",
|
||||
[TEXT_SELECT_OPTION] = "Option wählen",
|
||||
[TEXT_CURRENT] = "Aktuell",
|
||||
[TEXT_STATUS] = "Status",
|
||||
[TEXT_SUMMARY] = "Zusammenfassung",
|
||||
[TEXT_EMPTY] = "Leer",
|
||||
[TEXT_CURRENT_SELECTION] = "Aktuelle Auswahl",
|
||||
[TEXT_OPERATIONS] = "Operationen",
|
||||
[TEXT_SELECT_ITEM] = "Element auswählen",
|
||||
[TEXT_ENTER_SUBMENU] = "In Untermenü eintreten",
|
||||
[TEXT_RETURN_PARENT] = "Zu übergeordnetem Menü zurückkehren",
|
||||
[TEXT_SELECT_PREVIOUS] = "Vorheriges auswählen",
|
||||
[TEXT_SELECT_NEXT] = "Nächstes auswählen",
|
||||
[TEXT_START_DEFAULT] = "Standard starten",
|
||||
[TEXT_REGISTER_CALLBACK_FAILED] = "Rückrufregistrierung fehlgeschlagen",
|
||||
[TEXT_RESTORE_MENU_STATE] = "Menüzustand wiederherstellen",
|
||||
[TEXT_RESTORE_MENU_STATE_FAILED] = "Wiederherstellung des Menüzustands fehlgeschlagen",
|
||||
[TEXT_SAVE_MENU_STATE_FAILED] = "Speichern des Menüzustands fehlgeschlagen",
|
||||
|
||||
[TEXT_UP_ARROW] = "Pfeil nach oben",
|
||||
[TEXT_DOWN_ARROW] = "Pfeil nach unten",
|
||||
[TEXT_LEFT_ARROW] = "Pfeil nach links",
|
||||
[TEXT_RIGHT_ARROW] = "Pfeil nach rechts",
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 语言文本映射表
|
||||
*/
|
||||
static const char **sg_language_text_map[] = {
|
||||
[SYSTEM_LANG_CHINESE] = sg_chinese_text,
|
||||
[SYSTEM_LANG_ENGLISH] = sg_english_text,
|
||||
[SYSTEM_LANG_JAPANESE] = sg_japanese_text,
|
||||
[SYSTEM_LANG_GERMAN] = sg_german_text,
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 全局菜单节点映射表
|
||||
*/
|
||||
const MenuNodeInfo_t menu_node_map[] = {
|
||||
// 一级菜单
|
||||
{MENU_NODE_ID_MAIN, MENU_NODE_ID_NONE, TEXT_MAIN_MENU, 1, MENU_NODE_ATTR_HAS_CHILDREN | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_MEASUREMENT, MENU_NODE_ID_MAIN, TEXT_MAIN_MEASUREMENT, 1, MENU_NODE_ATTR_HAS_CHILDREN | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_PROTECTION, MENU_NODE_ID_MAIN, TEXT_MAIN_PROTECTION, 1, MENU_NODE_ATTR_HAS_CHILDREN | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_CONTROL, MENU_NODE_ID_MAIN, TEXT_MAIN_CONTROL, 1, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_SETTING, MENU_NODE_ID_MAIN, TEXT_MAIN_SETTING, 1, MENU_NODE_ATTR_HAS_CHILDREN | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_RECORD, MENU_NODE_ID_MAIN, TEXT_MAIN_RECORD, 1, MENU_NODE_ATTR_HAS_CHILDREN | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_HELP, MENU_NODE_ID_MAIN, TEXT_MAIN_HELP, 1, MENU_NODE_ATTR_HAS_CHILDREN | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_ABOUT, MENU_NODE_ID_MAIN, TEXT_MAIN_ABOUT, 1, MENU_NODE_ATTR_HAS_CHILDREN | MENU_NODE_ATTR_VISIBLE},
|
||||
|
||||
// 二级菜单:测量菜单子项
|
||||
{MENU_NODE_ID_MEASUREMENT_VOLTAGE, MENU_NODE_ID_MEASUREMENT, TEXT_MEASURE_VOLTAGE, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_MEASUREMENT_CURRENT, MENU_NODE_ID_MEASUREMENT, TEXT_MEASURE_CURRENT, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_MEASUREMENT_POWER, MENU_NODE_ID_MEASUREMENT, TEXT_MEASURE_POWER, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_MEASUREMENT_ENERGY, MENU_NODE_ID_MEASUREMENT, TEXT_MEASURE_ENERGY, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_MEASUREMENT_FREQUENCY, MENU_NODE_ID_MEASUREMENT, TEXT_MEASURE_FREQUENCY, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_MEASUREMENT_TEMPERATURE, MENU_NODE_ID_MEASUREMENT, TEXT_MEASURE_TEMPERATURE, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
|
||||
// 二级菜单:保护菜单子项
|
||||
{MENU_NODE_ID_PROTECTION_OVER_VOLTAGE, MENU_NODE_ID_PROTECTION, TEXT_PROTECT_OVER_VOLTAGE, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_PROTECTION_UNDER_VOLTAGE, MENU_NODE_ID_PROTECTION, TEXT_PROTECT_UNDER_VOLTAGE, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_PROTECTION_OVER_CURRENT, MENU_NODE_ID_PROTECTION, TEXT_PROTECT_OVER_CURRENT, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_PROTECTION_SETTING, MENU_NODE_ID_PROTECTION, TEXT_PROTECT_SETTING, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
|
||||
// 二级菜单:控制菜单子项
|
||||
{MENU_NODE_ID_CONTROL_ON_OFF, MENU_NODE_ID_CONTROL, TEXT_CONTROL_ON_OFF, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_CONTROL_START_STOP, MENU_NODE_ID_CONTROL, TEXT_CONTROL_START_STOP, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_CONTROL_AUTO_MANUAL, MENU_NODE_ID_CONTROL, TEXT_CONTROL_AUTO_MANUAL, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
|
||||
// 二级菜单:其他子项
|
||||
{MENU_NODE_ID_SETTING_LANGUAGE, MENU_NODE_ID_SETTING, TEXT_SETTING_LANGUAGE, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_RECORD_EVENT, MENU_NODE_ID_RECORD, TEXT_RECORD_EVENT, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_HELP_GUIDE, MENU_NODE_ID_HELP, TEXT_HELP_GUIDE, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
{MENU_NODE_ID_ABOUT_VERSION, MENU_NODE_ID_ABOUT, TEXT_ABOUT_VERSION, 2, MENU_NODE_ATTR_OPERABLE | MENU_NODE_ATTR_VISIBLE},
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 菜单节点映射表大小
|
||||
*/
|
||||
const uint32_t menu_node_map_size = sizeof(menu_node_map) / sizeof(menu_node_map[0]);
|
||||
|
||||
/* 函数实现 ---------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief 初始化语言模块
|
||||
*/
|
||||
MenuErrCode language_init(void)
|
||||
{
|
||||
// 初始化核心菜单库语言模块
|
||||
MenuErrCode ret = menu_lang_init();
|
||||
if (ret != MENU_ERR_OK)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 设置默认语言
|
||||
return set_language(SYSTEM_LANG_CHINESE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 根据文本ID获取对应语言的文本字符串
|
||||
*/
|
||||
const char* get_text(TextId_e text_id)
|
||||
{
|
||||
if (text_id >= TEXT_MAX)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (sg_current_language >= SYSTEM_LANG_MAX)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return sg_language_text_map[sg_current_language][text_id];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 设置当前系统语言
|
||||
*/
|
||||
MenuErrCode set_language(SystemLang_e lang)
|
||||
{
|
||||
if (lang >= SYSTEM_LANG_MAX)
|
||||
{
|
||||
return MENU_ERR_INVALID_PARAM;
|
||||
}
|
||||
|
||||
sg_current_language = lang;
|
||||
|
||||
// 同步到核心菜单库
|
||||
return menu_lang_set_current((LangId)lang);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 获取当前系统语言
|
||||
*/
|
||||
SystemLang_e get_current_language(void)
|
||||
{
|
||||
return sg_current_language;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 根据菜单节点ID获取对应的文本ID
|
||||
*/
|
||||
TextId_e get_menu_text_id(MenuNodeId_e node_id)
|
||||
{
|
||||
for (uint32_t i = 0; i < menu_node_map_size; i++)
|
||||
{
|
||||
if (menu_node_map[i].node_id == node_id)
|
||||
{
|
||||
return menu_node_map[i].text_id;
|
||||
}
|
||||
}
|
||||
|
||||
return TEXT_MAX;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 根据菜单节点ID获取对应的父节点ID
|
||||
*/
|
||||
MenuNodeId_e get_menu_parent_id(MenuNodeId_e node_id)
|
||||
{
|
||||
for (uint32_t i = 0; i < menu_node_map_size; i++)
|
||||
{
|
||||
if (menu_node_map[i].node_id == node_id)
|
||||
{
|
||||
return menu_node_map[i].parent_id;
|
||||
}
|
||||
}
|
||||
|
||||
return MENU_NODE_ID_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 检查菜单节点是否有子节点
|
||||
*/
|
||||
uint8_t menu_node_has_children(MenuNodeId_e node_id)
|
||||
{
|
||||
for (uint32_t i = 0; i < menu_node_map_size; i++)
|
||||
{
|
||||
if (menu_node_map[i].node_id == node_id)
|
||||
{
|
||||
return MENU_NODE_HAS_ATTR(menu_node_map[i].attributes, MENU_NODE_ATTR_HAS_CHILDREN);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 检查菜单节点是否可操作
|
||||
*/
|
||||
uint8_t menu_node_is_operable(MenuNodeId_e node_id)
|
||||
{
|
||||
for (uint32_t i = 0; i < menu_node_map_size; i++)
|
||||
{
|
||||
if (menu_node_map[i].node_id == node_id)
|
||||
{
|
||||
return MENU_NODE_HAS_ATTR(menu_node_map[i].attributes, MENU_NODE_ATTR_OPERABLE);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 获取菜单节点的显示文本
|
||||
*/
|
||||
const char* get_menu_node_text(MenuNodeId_e node_id)
|
||||
{
|
||||
TextId_e text_id = get_menu_text_id(node_id);
|
||||
if (text_id == TEXT_MAX)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return get_text(text_id);
|
||||
}
|
||||
Reference in New Issue
Block a user