from enum import Enum, auto


class StringKey(Enum):
    RUN_MICROPHONE_TEST = auto()
    RUN_FAN_TEST = auto()
    RUN_BRIGHTNESS_TEST = auto()
    RUN_AUDIO_TEST = auto()
    RUN_RGB_LED_TEST = auto()
    RUN_DISPLAY_PICTURE_TEST = auto()
    RUN_VERTICAL_STRIPE_TEST = auto()
    RUN_USB_FLIP_TEST = auto()
    ERROR_CONNECT = auto()
    INSERT_HEADPHONES = auto()
    COLLECT_SAMPLES = auto()
    MAKE_NOISES = auto()
    HITS_RECEIVED = auto()
    FLIP_CABLE = auto()
    TEST_RUNNING = auto()
    TEST_PASSED = auto()
    TEST_FAILED = auto()
    FAN_POWER = auto()
    FAN_SPEED = auto()
    DISPLAY_COLOR_PROMPT = auto()
    VERTICAL_STRIPE_PROMPT = auto()
    LED_COLOR_PROMPT = auto()
    BRIGHTNESS_CHANGE_PROMPT = auto()
    HEAR_AUDIO_PROMPT = auto()
    CLOSE_VS_TEST = auto()
    AFFIRMATIVE = auto()
    NEGATIVE = auto()
    AUDIO_TEST_READY = auto()
    PLAY_AUDIO = auto()
    RESET_ALL = auto()
    REFRESH = auto()
    RETRY = auto()
    HEADPHONE_WARNING = auto()
    BOARD_SERIAL = auto()
    SOFTWARE_VERSION = auto()
    HMD_SERIAL = auto()
    FW_VERSION_MISMATCH = auto()
    TEST_TITLE = auto()


class Language(Enum):
    ENGLISH = auto()
    CHINESE = auto()


def get_string(string_key: StringKey, language: Language) -> str:
    localized_strings = {
        StringKey.RUN_MICROPHONE_TEST: {
            Language.ENGLISH: "Run Microphone Test",
            Language.CHINESE: "运行麦克风测试"
        },
        StringKey.RUN_FAN_TEST: {
            Language.ENGLISH: "Run Fan Test",
            Language.CHINESE: "运行风扇测试"
        },
        StringKey.RUN_BRIGHTNESS_TEST: {
            Language.ENGLISH: "Run Brightness Test",
            Language.CHINESE: "运行亮度测试"
        },
        StringKey.RUN_AUDIO_TEST: {
            Language.ENGLISH: "Run Audio Test",
            Language.CHINESE: "运行音频测试"
        },
        StringKey.RUN_RGB_LED_TEST: {
            Language.ENGLISH: "Run RGB LED Test",
            Language.CHINESE: "运行RGB LED测试"
        },
        StringKey.RUN_DISPLAY_PICTURE_TEST: {
            Language.ENGLISH: "Run Display Picture Test",
            Language.CHINESE: "运行显示图片测试"
        },
        StringKey.RUN_VERTICAL_STRIPE_TEST: {
            Language.ENGLISH: "Run Vertical Stripe Test",
            Language.CHINESE: "运行竖条纹测试"
        },
        StringKey.RUN_USB_FLIP_TEST: {
            Language.ENGLISH: "Run USB Flip Test",
            Language.CHINESE: "运行USB翻转测试"
        },
        StringKey.ERROR_CONNECT: {
            Language.ENGLISH: "Error: Couldn't connect to device",
            Language.CHINESE: "错误:无法连接到设备"
        },
        StringKey.INSERT_HEADPHONES: {
            Language.ENGLISH: "Insert headphones now",
            Language.CHINESE: "现在插入耳机"
        },
        StringKey.COLLECT_SAMPLES: {
            Language.ENGLISH: "Collecting background samples, please be quiet.",
            Language.CHINESE: "收集背景样本，请保持安静。"
        },
        StringKey.MAKE_NOISES: {
            Language.ENGLISH: "Testing, make 5 loud noises (clap, snap, etc.)",
            Language.CHINESE: "测试，发出5种声音(拍手等)"
        },
        StringKey.HITS_RECEIVED: {
            Language.ENGLISH: "# Hits Received",
            Language.CHINESE: "收到的点击数"
        },
        StringKey.FLIP_CABLE: {
            Language.ENGLISH: "Flip the USB-C cable + reinsert",
            Language.CHINESE: "请反插数据线"
        },
        StringKey.TEST_RUNNING: {
            Language.ENGLISH: "Test Running",
            Language.CHINESE: "测试运行"
        },
        StringKey.TEST_PASSED: {
            Language.ENGLISH: "Test Passed",
            Language.CHINESE: "测试通过"
        },
        StringKey.TEST_FAILED: {
            Language.ENGLISH: "Test Failed",
            Language.CHINESE: "测试失败"
        },
        StringKey.FAN_POWER: {
            Language.ENGLISH: "Fan Power: ",
            Language.CHINESE: "风扇功率: "
        },
        StringKey.FAN_SPEED: {
            Language.ENGLISH: "Fan Speed: ",
            Language.CHINESE: "风扇转速: "
        },
        StringKey.DISPLAY_COLOR_PROMPT: {
            Language.ENGLISH: "Did the display change color?",
            Language.CHINESE: "屏幕变色了吗？"
        },
        StringKey.VERTICAL_STRIPE_PROMPT: {
            Language.ENGLISH: "Did you see the vertical stripe error?",
            Language.CHINESE: "您看到垂直条纹错误了吗？"
        },
        StringKey.LED_COLOR_PROMPT: {
            Language.ENGLISH: "Did the LED change color?",
            Language.CHINESE: "LED变色了吗？"
        },
        StringKey.BRIGHTNESS_CHANGE_PROMPT: {
            Language.ENGLISH: "Did the brightness change?",
            Language.CHINESE: "亮度有变化吗？"
        },
        StringKey.HEAR_AUDIO_PROMPT: {
            Language.ENGLISH: "Did you hear audio?",
            Language.CHINESE: "能听到音频声音吗？"
        },
        StringKey.CLOSE_VS_TEST: {
            Language.ENGLISH: "Stop vertical stripe display",
            Language.CHINESE: "停止竖条纹显示"

        },
        StringKey.AFFIRMATIVE: {
            Language.ENGLISH: "Yes",
            Language.CHINESE: "是"
        },
        StringKey.NEGATIVE: {
            Language.ENGLISH: "No",
            Language.CHINESE: "否"
        },
        StringKey.AUDIO_TEST_READY: {
            Language.ENGLISH: "Audio Test Ready",
            Language.CHINESE: "音频测试就绪"
        },
        StringKey.PLAY_AUDIO: {
            Language.ENGLISH: "Play Audio",
            Language.CHINESE: "播放音频"
        },
        StringKey.RESET_ALL: {
            Language.ENGLISH: "Reset All",
            Language.CHINESE: "全部重置"
        },
        StringKey.REFRESH: {
            Language.ENGLISH: "Refresh",
            Language.CHINESE: "刷新"
        },
        StringKey.RETRY: {
            Language.ENGLISH: "Retry",
            Language.CHINESE: "重试"
        },
        StringKey.HEADPHONE_WARNING: {
            Language.ENGLISH: "Ensure headphones are unplugged before starting the test",
            Language.CHINESE: "在开始测试前确保耳机未插拔"
        },
        StringKey.BOARD_SERIAL: {
            Language.ENGLISH: "Board Serial: ",
            Language.CHINESE: "单板序列号: "
        },
        StringKey.SOFTWARE_VERSION: {
            Language.ENGLISH: "Software Version: ",
            Language.CHINESE: "软件版本: "
        },
        StringKey.HMD_SERIAL: {
            Language.ENGLISH: "HMD Serial: ",
            Language.CHINESE: "耳机序列号: "
        },
        StringKey.FW_VERSION_MISMATCH: {
            Language.ENGLISH: "Firmware version mismatch!",
            Language.CHINESE: "固件版本不匹配!"
        },
        StringKey.TEST_TITLE: {
            Language.ENGLISH: "Bigscreen Beyond MMI Test",
            Language.CHINESE: "Bigscreen Beyond MMI测试"
        }
    }

    return localized_strings[string_key][language]
