def get_ui_lang(msg, locale='en'):
    """ get_ui_lang(msg, locale='en'): Retrieve language string for codename
    @param msg <- str: the codename
    @param locale <- str: language to retrieve
    @return msg -> str: translated string """
    langs = {'en', 'zh', 'jp'}
    lang_list = {
        'General.Title': {
            'en': 'HITWiFi: Automata',
            'zh': 'HITWiFi: Automata',
            'jp': 'HITWiFi: Automata',
        },
        'MenuItem.NetStatus.UpdatePaused': {
            'en': '- Connectivity update paused',
            'zh': '- 网络连接检测已暂停',
            'jp': '- ネットワーク接続の更新が一時停止しました',
        },
        'MenuItem.NetStatus.Detecting': {
            'en': '- Detecting connectivity...',
            'zh': '- 正在检测网络连接...',
            'jp': '- ネットワーク接続の検出中...',
        },
        'MenuItem.NetStatus.NoNetwork': {
            'en': '× No network available',
            'zh': '× 无可用网络连接',
            'jp': '× 使えるネットワークがありません',
        },
        'MenuItem.NetStatus.WanConnected': {
            'en': '√ Connected to Internet (WAN)',
            'zh': '√ 已连接到互联网 (WAN)',
            'jp': 'o インタネット (WAN) に接続された',
        },
        'MenuItem.NetStatus.CanDisconnected': {
            'en': '× Campus Network disconnected',
            'zh': '× 校园网已断开',
            'jp': '× 学園ネットワークが切断された',
        },
        'MenuItem.NetStatus.CanConnected': {
            'en': '√ Connected to Campus Network',
            'zh': '√ 校园网已连接',
            'jp': 'o 学園ネットワークに接続された',
        },
        'MenuItem.DaemonStatus.Working': {
            'en': 'Pause autoconnect',
            'zh': '暂停自动连接',
            'jp': '自動接続を一時停止する',
        },
        'MenuItem.DaemonStatus.Paused': {
            'en': 'Resume autoconnect',
            'zh': '恢复自动连接',
            'jp': '自動接続を再開する',
        },
        'MenuItem.Login': {
            'en': 'Manually connect to network',
            'zh': '手动连接到校园网',
            'jp': '学園ネットワークに接続する',
        },
        'MenuItem.Logout': {
            'en': 'Disconnect from network',
            'zh': '断开校园网',
            'jp': '学園ネットワークから切断する',
        },
        'MenuItem.LoggingIn': {
            'en': 'Connecting to network...',
            'zh': '正在连接...',
            'jp': '接続しています...',
        },
        'MenuItem.LoggingOut': {
            'en': 'Logging out...',
            'zh': '正在登出...',
            'jp': '切断しています...',
        },
        'MenuItem.Settings': {
            'en': 'Settings',
            'zh': '设置',
            'jp': '設定',
        },
        'MenuItem.Exit': {
            'en': 'Exit',
            'zh': '退出',
            'jp': '終了',
        },
        'Notification.DaemonStatus.Pause': {
            'en': 'Paused automatic connection to the Campus Network.',
            'zh': '已暂停校园网自动连接。',
            'jp': '学園ネットワークへの自動接続を一時停止しました。',
        },
        'Notification.DaemonStatus.Resume': {
            'en': 'Resumed automatic connection to the Campus Network.',
            'zh': '已恢复校园网自动连接。',
            'jp': '学園ネットワークへの自動接続を再開しました。',
        },
        'Notification.DaemonStatus.TooManyFailures': {
            'en': 'Too many failed attempts, pausing automatic connection.',
            'zh': '连接失败次数过多，已暂停自动连接。',
            'jp': '失敗した試行が多すぎて、自動接続を一時停止します。',
        },
        'Settings.Title': {
            'en': 'Settings',
            'zh': '设置',
            'jp': '設定',
        },
        'Settings.Locale': {
            'en': 'Language',
            'zh': '语言',
            'jp': '言語',
        },
        'Settings.Username': {
            'en': 'Username',
            'zh': '用户名',
            'jp': 'ユーザー名',
        },
        'Settings.Password': {
            'en': 'Password',
            'zh': '密码',
            'jp': 'パスワード',
        },
        'Settings.OkButton': {
            'en': 'Save Changes',
            'zh': '保存设置',
            'jp': '設定を保存する',
        },
    }
    if msg not in lang_list:
        return msg
    if locale not in langs:
        locale = 'en'
    return lang_list[msg][locale]