Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Simplified Chinese Support #772

Merged
merged 36 commits into from
Sep 21, 2023
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
e1a73f8
Add Simplified Chinese Support
smallg0at Sep 7, 2023
0ddfb07
Add zh_cn CliRunner tests
smallg0at Sep 7, 2023
fa8aecf
fix chinese help
smallg0at Sep 7, 2023
0cfa5f2
align clitest names
smallg0at Sep 7, 2023
9598846
Fix minor flaws
smallg0at Sep 7, 2023
2f82660
Modify Chinese internal name
smallg0at Sep 7, 2023
612444b
Fix Pipeline tab not raffected by localization
smallg0at Sep 7, 2023
fe965f4
refine zh_cn text
smallg0at Sep 7, 2023
2bb305f
Make tile MenuItem localizable
smallg0at Sep 7, 2023
a536f54
add spaces between char
smallg0at Sep 7, 2023
99f6228
Merge branch 'master' into master
lupino3 Sep 10, 2023
3fca8cc
fix: en docs typo
smallg0at Sep 12, 2023
fb2c8ff
add zh_cn docs
smallg0at Sep 12, 2023
b8361cc
feat: add zhcn docs build script
smallg0at Sep 12, 2023
8779127
fix: malformed table
smallg0at Sep 13, 2023
bc76473
action: add zhcn docs pdf upload
smallg0at Sep 13, 2023
7c742b3
neutralize: codacy warnings
smallg0at Sep 13, 2023
54bb967
fix PDF build by specifying a supported language
lupino3 Sep 13, 2023
10d23da
wip: try to fix rst2pdf for zh_CN output (not working)
lupino3 Sep 13, 2023
74b6a04
wip: move font in the conf dir (still not working)
lupino3 Sep 13, 2023
57a59fa
fix: still trying to fix blocky docs issue
smallg0at Sep 14, 2023
027d123
wip: recover stylesheet
smallg0at Sep 14, 2023
1566ee4
Merge branch 'EduMIPS64:master' into master
smallg0at Sep 16, 2023
1aa0a58
Remove zh docs pdf upload action
smallg0at Sep 16, 2023
12dda02
fix: correct workflow get version
smallg0at Sep 18, 2023
88af27b
fix: ci cannot find right jar
smallg0at Sep 19, 2023
5185761
wip: try to fix deploy-web
smallg0at Sep 19, 2023
09d19af
wip: try to allow rst2pdf to find correct styles
smallg0at Sep 20, 2023
e53e13f
wip: force utf-8 everywhere
smallg0at Sep 20, 2023
3303eb9
Revert "wip: try to allow rst2pdf to find correct styles"
smallg0at Sep 20, 2023
53bd8f9
add: garbled text warning
smallg0at Sep 21, 2023
85b4dce
Merge branch 'EduMIPS64:master' into master
smallg0at Sep 21, 2023
789a842
fix: tiny errors
smallg0at Sep 21, 2023
52b0cbf
Merge branch 'master' of https://github.com/smallg0at/edumips64
smallg0at Sep 21, 2023
a858e8f
fix: correct error
smallg0at Sep 21, 2023
4e8b71f
Merge branch 'EduMIPS64:master' into master
smallg0at Sep 21, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 26 additions & 1 deletion src/main/java/org/edumips64/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public class Main {
private JMenuItem stop;
private StatusBar sb;
private JMenu file, lastfiles, exec, config, window, help, lang, tools;
private JCheckBoxMenuItem lang_en, lang_it;
private JCheckBoxMenuItem lang_en, lang_it, lang_zhcn;
private JCheckBoxMenuItem pipelineJCB, registersJCB, memoryJCB, codeJCB, cyclesJCB, statsJCB, ioJCB;

private GUIIO ioFrame;
Expand Down Expand Up @@ -685,6 +685,7 @@ private void initMenuItems() {
setMenuItem(multi_cycle, "MenuItem.MULTI_CYCLE");
setMenuItem(lang_en, "MenuItem.ENGLISH");
setMenuItem(lang_it, "MenuItem.ITALIAN");
setMenuItem(lang_zhcn, "MenuItem.SCHINESE");
setMenuItem(dinero_tracefile, "MenuItem.DIN_TRACEFILE");
setMenuItem(aboutUs, "MenuItem.ABOUT_US");
setMenuItem(dinFrontend, "MenuItem.DIN_FRONTEND");
Expand Down Expand Up @@ -885,6 +886,7 @@ private JMenuBar createMenuBar() {
lang_en.addActionListener(e -> {
lang_en.setState(true);
lang_it.setState(false);
lang_zhcn.setState(false);
configStore.putString(ConfigKey.LANGUAGE, "en");
initMenuItems();
setFrameTitles();
Expand All @@ -906,13 +908,36 @@ private JMenuBar createMenuBar() {
lang_it.addActionListener(e -> {
lang_it.setState(true);
lang_en.setState(false);
lang_zhcn.setState(false);
configStore.putString(ConfigKey.LANGUAGE, "it");
initMenuItems();
setFrameTitles();
front.updateLanguageStrings();
// mainFrame.setVisible(true);
});

try {
lang_zhcn = new JCheckBoxMenuItem(
CurrentLocale.getString("MenuItem.SCHINESE"),
new ImageIcon(IMGLoader.getImage("zhcn.png")),
configStore.getString(ConfigKey.LANGUAGE).equals("zhcn"));

lang.add(lang_zhcn);
} catch (IOException e) {
log.log(Level.SEVERE, "Could not create simplified chinese language checkbox.", e);
}

lang_zhcn.addActionListener(e -> {
lang_zhcn.setState(true);
lang_en.setState(false);
lang_it.setState(false);
configStore.putString(ConfigKey.LANGUAGE, "zhcn");
initMenuItems();
setFrameTitles();
front.updateLanguageStrings();
// mainFrame.setVisible(true);
});


// ---------------- HELP MENU

Expand Down
237 changes: 237 additions & 0 deletions src/main/java/org/edumips64/utils/CurrentLocale.java
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ public static void setConfig(ConfigStore config) {
en.put("MenuItem.RUN_TO", "Run");
en.put("MenuItem.ITALIAN", "Italian");
en.put("MenuItem.ENGLISH", "English");
en.put("MenuItem.SCHINESE", "Simplified Chinese");
en.put("MenuItem.DIN_TRACEFILE", "Write _Dinero tracefile...");
en.put("MenuItem.FORWARDING", "Enable _forwarding");
en.put("MenuItem.WARNINGS", "Enable _warnings");
Expand Down Expand Up @@ -325,6 +326,7 @@ public static void setConfig(ConfigStore config) {
it.put("MenuItem.RUN_TO", "Esegui");
it.put("MenuItem.ITALIAN", "Italiano");
it.put("MenuItem.ENGLISH", "Inglese");
it.put("MenuItem.SCHINESE", "Cinese semplificato");
it.put("MenuItem.DIN_TRACEFILE", "Scrivi tracefile _Dinero...");
it.put("MenuItem.FORWARDING", "Abilita _forwarding");
it.put("MenuItem.WARNINGS", "Abilita _warning");
Expand Down Expand Up @@ -510,6 +512,241 @@ public static void setConfig(ConfigStore config) {
it.put("CLI.RUNNING", "In esecuzione");
it.put("LOG.HEADLESS_MSG", "Impossibile avviare la GUI in un ambiente headless.");
languages.put("it", it);

//Chinese Hashmap
HashMap<String, String> zhcn = new HashMap<>();
zhcn.put("DOUBLE_EXT_TOO_LARGE", "指数超过32位");
zhcn.put("LABELADDRESSINVALID", "无效偏移量:应在-32767和32768之间(16位有符号)");
zhcn.put("FP_INVALID_OPERATION", "执行了无效操作");
zhcn.put("FP_DIV_BY_ZERO", "执行了除以零的操作");
zhcn.put("FP_OVERFLOW", "浮点溢出,绝对值太大");
zhcn.put("FP_UNDERFLOW", "浮点下溢,绝对值太小");
zhcn.put("BYTEINCODE", ".byte指令出现在代码段中");
zhcn.put("WORD16INCODE", ".word16指令出现在代码段中");
zhcn.put("WORDINCODE", ".word指令出现在代码段中");
zhcn.put("WORD32INCODE", ".word32指令出现在代码段中");
zhcn.put("SPACEINCODE", ".space指令出现在代码段中");
zhcn.put("INVALIDVALUE", "无效值");
zhcn.put("INVALIDCODE", "无效代码");
zhcn.put("INVALIDCODEFORDATA", "数据的无效代码");
zhcn.put("INVALIDREGISTER", "无效寄存器");
zhcn.put("INVALIDIMMEDIATE", "无效立即数值");
zhcn.put("UNKNOWNSYNTAX", "未知语法");
zhcn.put("SEPARATORMISS", "缺少分隔符");
zhcn.put("LABELNOTFOUND", "找不到标签");
zhcn.put("VALUEISNOTUNSIGNED", "有符号值:需要一个无符号值");
zhcn.put("GUI_STEP_ERROR", "CPU步进错误");
zhcn.put("GUI_PARSER_ERROR", "解析错误");
zhcn.put("INCLUDE_LOOP", "包含循环");
zhcn.put("INT_FORMAT_EXCEPTION", "您必须输入一个整数值");
zhcn.put("ERROR_LABEL", "访问内存元素时出错。也许您已经达到了EduMIPS64内存的极限。");
zhcn.put("ERROR", "错误");
zhcn.put("FILE_NOT_FOUND", "找不到文件");
zhcn.put("SYSCALL5_ERROR", "写入标准输出时出错");
zhcn.put("Menu.FILE", "文件 (_F)");
zhcn.put("Menu.EXECUTE", "执行 (_X)");
zhcn.put("Menu.CONFIGURE", "配置 (_C)");
zhcn.put("Menu.WINDOW", "窗口 (_W)");
zhcn.put("Menu.HELP", "帮助 (_H)");
zhcn.put("Menu.CHANGE_LANGUAGE", "更改语言");
zhcn.put("Menu.TOOLS", "工具 (_T)");
zhcn.put("Menu.CHANGE_PIPELINE_COLORS", "更改流水线颜色");
zhcn.put("MenuItem.OPEN", "打开...(_O)");
zhcn.put("MenuItem.OPENLAST", "打开最近的文件...");
zhcn.put("MenuItem.RESET", "重置 (_R)");
zhcn.put("MenuItem.EXIT", "退出 (_X)");
zhcn.put("MenuItem.SINGLE_CYCLE", "单周期");
zhcn.put("MenuItem.MULTI_CYCLE", "多周期");
zhcn.put("MenuItem.MULTI_STEP", "多步骤");
zhcn.put("MenuItem.RUN_TO", "运行");
zhcn.put("MenuItem.ITALIAN", "意大利语");
zhcn.put("MenuItem.ENGLISH", "英语");
zhcn.put("MenuItem.SCHINESE", "简体中文");
zhcn.put("MenuItem.DIN_TRACEFILE", "写入 Dinero 跟踪文件...(_D)");
zhcn.put("MenuItem.FORWARDING", "启用转发 (_F)");
zhcn.put("MenuItem.WARNINGS", "启用警告 (_W)");
zhcn.put("MenuItem.ABOUT_US", "关于我们... (_A)");
zhcn.put("MenuItem.DIN_FRONTEND", "Dinero前端... (_D)");
zhcn.put("MenuItem.MANUAL", "手册... (_M)");
zhcn.put("MenuItem.STOP", "停止");
zhcn.put("ABOUT", "关于EduMIPS64");
zhcn.put("REGISTERS", "寄存器");
zhcn.put("MEMORY", "数据");
zhcn.put("CODE", "代码");
zhcn.put("PIPELINE", "流水线");
zhcn.put("LOGGER", "日志");
zhcn.put("IO", "输入/输出");
zhcn.put("EXCEPTION", "异常");
zhcn.put("FPUINFO", "浮点单元");
zhcn.put("FPUFCSR", "FCSR寄存器");
zhcn.put("ADDRESS", "地址");
zhcn.put("HEXREPR", "表示法");
zhcn.put("COMMENT", "注释");
zhcn.put("LABEL", "标签");
zhcn.put("INSTRUCTION", "指令");
zhcn.put("STATS", "统计数据");
zhcn.put("PROSIM", "MIPS64处理器模拟器");
zhcn.put("GUI_WARNING", "警告");
zhcn.put("WINMIPS64_NOT_MIPS64", "该指令属于WinMIPS64指令集,但不是合法的MIPS64指令");
zhcn.put("HALT_NOT_PRESENT", "缺少HALT指令:它将自动插入到文件的末尾");
zhcn.put("ROW", "行");
zhcn.put("COLUMN", "列");
zhcn.put("IMMEDIATE_TOO_LARGE", "立即数值太大");
zhcn.put("WORD_TOO_LARGE", "字值太大");
zhcn.put("WORD32_TOO_LARGE", "字32值太大");
zhcn.put("WORD16_TOO_LARGE", "字16值太大");
zhcn.put("BYTE_TOO_LARGE", "字节值太大");
zhcn.put("5BIT_IMMEDIATE_TOO_LARGE", "5位立即数值太大");
zhcn.put("3BIT_IMMEDIATE_TOO_LARGE", "3位立即数值太大");
zhcn.put("VALUE_MISS", "缺少内存单元的值");
zhcn.put("SAMELABEL", "标签已存在");
zhcn.put("CHOOSE_COLOR", "选择一种颜色");
zhcn.put("EXECUTION", "执行");
zhcn.put("CYCLES", "周期");
zhcn.put("CYCLE", "周期");
zhcn.put("INSTRUCTIONS", "指令");
zhcn.put("CPI", "CPI (每条指令的周期数)");
zhcn.put("RAWS", "RAW停顿");
zhcn.put("RAW", "RAW停顿");
zhcn.put("BYTES", "字节");
zhcn.put("STALLS", "停顿");
zhcn.put("WAWS", "WAW停顿");
zhcn.put("WARS", "WAR停顿");
zhcn.put("STRUCTS_DIVNOTAVAILABLE", "结构停顿(除法器不可用)");
zhcn.put("STRUCTS_MEMNOTAVAILABLE", "结构停顿(内存不可用)");
zhcn.put("BTS", "分支已采用停顿");
zhcn.put("BMS", "分支错误预测停顿");
zhcn.put("CSIZE", "代码大小");
zhcn.put("Config.APPEARANCE", "外观");
zhcn.put("Config.BEHAVIOR", "行为");
zhcn.put("Config.MAIN", "主要设置");
zhcn.put("Config.ITEM", "设置...");
zhcn.put("Config.WARNINGS", "启用警告");
zhcn.put("Config.WARNINGS.tip", "在编译时启用警告");
zhcn.put("Config.FORWARDING", "启用转发");
zhcn.put("Config.FORWARDING.tip", "在流水线中启用转发");
zhcn.put("Config.LONGDOUBLEVIEW", "长/双精度内存单元视图");
zhcn.put("Config.LONGDOUBLEVIEW.tip", "在状态栏中切换长和双精度内存单元的可视化方式");
zhcn.put("Config.VERBOSE", "在多步骤执行中与CPU同步图形显示");
zhcn.put("Config.VERBOSE.tip", "启用详细的多步骤执行模式");
zhcn.put("Config.N_STEP", "步骤数目");
zhcn.put("Config.N_STEP.tip", "每条指令的步骤数目");
zhcn.put("Config.FPUEXCEPTIONS", "FPU异常");
zhcn.put("Config.INVALID_OPERATION", "无效操作异常");
zhcn.put("Config.INVALID_OPERATION.tip", "启用浮点无效操作异常");
zhcn.put("Config.OVERFLOW", "溢出异常");
zhcn.put("Config.OVERFLOW.tip", "启用浮点溢出异常 ");
zhcn.put("Config.UNDERFLOW", "下溢异常");
zhcn.put("Config.UNDERFLOW.tip", "启用浮点下溢异常 ");
zhcn.put("Config.DIVIDE_BY_ZERO", "除以零异常");
zhcn.put("Config.DIVIDE_BY_ZERO.tip", "启用浮点除以零异常");
zhcn.put("Config.FPUROUNDING", "FPU舍入");
zhcn.put("Config.NEAREST", "最近");
zhcn.put("Config.NEAREST.tip", "将结果舍入到最接近的可表示值,当值相等时舍入到偶数");
zhcn.put("Config.TOWARDZERO", "向零舍入");
zhcn.put("Config.TOWARDZERO.tip", "永远不会增加被舍弃小数前的数字(即截断)");
zhcn.put("Config.TOWARDS_PLUS_INFINITY", "向正无穷舍入");
zhcn.put("Config.TOWARDS_PLUS_INFINITY.tip", "向正无穷舍入");
zhcn.put("Config.TOWARDS_MINUS_INFINITY", "向负无穷舍入");
zhcn.put("Config.TOWARDS_MINUS_INFINITY.tip", "向负无穷舍入");
zhcn.put("Config.IFCOLOR", "取指颜色");
zhcn.put("Config.IFCOLOR.tip", "设置IF颜色");
zhcn.put("Config.IDCOLOR", "译码颜色");
zhcn.put("Config.IDCOLOR.tip", "设置译码颜色");
zhcn.put("Config.EXCOLOR", "执行颜色");
zhcn.put("Config.EXCOLOR.tip", "设置执行颜色");
zhcn.put("Config.MEMCOLOR", "存储器颜色");
zhcn.put("Config.MEMCOLOR.tip", "设置存储器颜色");
zhcn.put("Config.WBCOLOR", "写回颜色");
zhcn.put("Config.WBCOLOR.tip", "设置写回颜色");
zhcn.put("Config.FPADDERCOLOR", "FP加法器颜色");
zhcn.put("Config.FPADDERCOLOR.tip", "设置FP加法器颜色");
zhcn.put("Config.FPMULTIPLIERCOLOR", "FP乘法器颜色");
zhcn.put("Config.FPMULTIPLIERCOLOR.tip", "设置FP乘法器颜色");
zhcn.put("Config.FPDIVIDERCOLOR", "FP除法器颜色");
zhcn.put("Config.FPDIVIDERCOLOR.tip", "设置FP除法器颜色");
zhcn.put("Config.SLEEP_INTERVAL", "周期间隔(毫秒)");
zhcn.put("Config.SLEEP_INTERVAL.tip", "在详细模式下,每个周期执行前要经过的毫秒数");
zhcn.put("Config.SYNCEXC-MASKED", "屏蔽同步异常");
zhcn.put("Config.SYNCEXC-MASKED.tip", "使模拟器忽略除以零和整数溢出异常");
zhcn.put("Config.SYNCEXC-TERMINATE", "同步异常终止");
zhcn.put("Config.SYNCEXC-TERMINATE.tip", "在除以零和整数溢出异常时停止模拟");
zhcn.put("Config.FONTSIZE", "字体大小");
zhcn.put("Config.FONTSIZE.tip", "字体的大小");
zhcn.put("StatusBar.WELCOME", "欢迎使用 EduMIPS64");
zhcn.put("StatusBar.DECIMALVALUE", "十进制值");
zhcn.put("StatusBar.OFREGISTER", "R寄存器的值为 ");
zhcn.put("StatusBar.OFREGISTERFP", "F寄存器的值为 ");
zhcn.put("StatusBar.MEMORYCELL", " 的地址为 ");
zhcn.put("Manual.CAPTION", "用户指南");
zhcn.put("Manual.INTRO", "介绍");
zhcn.put("Manual.GUI", "图形用户界面");
zhcn.put("Manual.IS", "指令");
zhcn.put("Manual.SYSCALL", "系统调用");
zhcn.put("ErrorDialog.ROW", "行");
zhcn.put("ErrorDialog.COLUMN", "列");
zhcn.put("ErrorDialog.LINE", "行");
zhcn.put("ErrorDialog.DESCRIPTION", "描述");
zhcn.put("ErrorDialog.MSG0", "代码包含");
zhcn.put("ErrorDialog.MSG1", "个错误和");
zhcn.put("ErrorDialog.MSG2", String.valueOf(ConfigKey.WARNINGS));
zhcn.put("ReportDialog.MSG", "EduMIPS64致命错误!<br/>请通过在 GitHub 上<a href='https://github.com/EduMIPS64/edumips64/issues/new'>建立一个新 Issue</a>并附上以下文本,或者通过发送电子邮件到<a href='mailto:[email protected]'>[email protected]</a>来帮助开发人员。");
zhcn.put("ReportDialog.BUTTON", "关闭");
zhcn.put("DIVZERO.Message", "除以零");
zhcn.put("INTOVERFLOW.Message", "整数溢出");
zhcn.put("FPOVERFLOW.Message", "浮点溢出");
zhcn.put("FPUNDERFLOW.Message", "浮点下溢");
zhcn.put("FPINVALID.Message", "浮点无效操作");
zhcn.put("FPDIVBYZERO.Message", "浮点除以零");
zhcn.put("NOOPENMODE", "没有指定打开文件的模式(读/写)");
zhcn.put("WRITETOSTDIN", "试图写入标准输入");
zhcn.put("FILENOTOPENED", "文件描述符无效。可能文件没有正确打开");
zhcn.put("OUTOFMEMORY", "写(或读)操作导致无效的内存访问");
zhcn.put("OUTOFMEMORY_PARSER", "输入文件中的数据超过了EduMIPS64的内存");
zhcn.put("OUTOFINSTRUCTIONMEMORY", "指令内存耗尽");
zhcn.put("READFROMSTDOUT", "试图从标准输出(或标准错误)读取");
zhcn.put("OPENREADANDCREATE", "试图以读模式打开一个不存在的文件(O_CREAT在读或读/写模式下不起作用)");
zhcn.put("INPUTNOTEXCEED", "输入不能超过");
zhcn.put("CHARACTERS", "个字符");
zhcn.put("ENTERINPUT", "请输入您的文本");
zhcn.put("INPUT", "输入");
zhcn.put("IOEXCEPTION", "I/O错误");
zhcn.put("HT.Options", "选项:");
zhcn.put("HT.MissingFile", "错误:缺少文件名。");
zhcn.put("HT.UnrecognizedArgs", "错误:无法识别的参数");
zhcn.put("HT.MultipleFile", "错误:-f只能使用一次。");
zhcn.put("CLEAR", "清除");
zhcn.put("DATA", "数据");
zhcn.put("HELPDIR", "/docs/user/en"); //This has been put in place to prevent help feature blowing up.
zhcn.put("NEGADDRERR", "指令中的负内存地址错误");
zhcn.put("ALIGNERR", "指令中的对齐错误");
zhcn.put("THEADDRESS", "该地址");
zhcn.put("ISNOTALIGNED", "没有对齐到");
zhcn.put("RESTART_FONT", "请重新启动模拟器以使用新字体。");
zhcn.put("NO_MASK_AND_TERMINATE", "请在屏蔽同步异常和同步异常终止程序之间只选择一个选项。");
zhcn.put("FWD_RESET_WARNING", "更改转发设置将重置模拟。继续吗? ");
zhcn.put("CLI.RUN.EXE_END", "执行结束。执行了%d个步骤,用时%d毫秒 ");
zhcn.put("CLI.STEP.NUM", "我执行了%d个模拟步骤。 ");
zhcn.put("CLI.EXIT", "再见...");
zhcn.put("CLI.WELCOME", "欢迎使用EduMIPS64命令行界面!");
zhcn.put("CLI.FILE.LOADED", "加载了文件%s ");
zhcn.put("CLI.FILE.NOT.LOADED", "无法加载文件:%s ");
zhcn.put("CLI.FILE.CANT.LOAD", "系统正在执行中,完成当前程序后再运行新程序 ");
zhcn.put("CLI.DINERO.CANT.WRITE", "在程序执行之前不能写入此输出。 ");
zhcn.put("CLI.FILE.NOT.FOUND", "找不到提供的文件,请检查位置并重试。 ");
zhcn.put("CLI.IO.ERROR", "写入文件时发生错误,请重试。 ");
zhcn.put("CLI.CONFIG.HEADER", "配置值 ");
zhcn.put("CLI.STEP.POSITIVE", "步骤必须是正数 ");
zhcn.put("CLI.CPU.NOT.RUNNABLE", "CPU在状态下不可运行: ");
zhcn.put("CLI.PARSE.ERROR", "无法解析文件,发现错误: ");
zhcn.put("CLI.DINERO.SAVE", "文件已保存!位置:");
zhcn.put("LOG.HEADLESS_MSG", "无法在无头环境中启动GUI。");
zhcn.put("CLI.REG.WARN", "寄存器编号从0开始,有效值为0-31。");
zhcn.put("CLI.NOT.RUNNABLE.LOAD.FILE", "加载文件以使CPU可运行。尝试load --help");
zhcn.put("CLI.RUN.EXE_START", "开始执行。");
zhcn.put("CLI.RUNNING", "运行中");
zhcn.put("LOG.HEADLESS_MSG", "无法在无头环境中启动图形用户界面");
languages.put("zhcn", zhcn);
}

public static String getString(String key) {
Expand Down
Binary file added src/main/resources/images/zhcn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 23 additions & 0 deletions src/test/java/org/edumips64/CliRunnerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,14 @@ public void prints_usage_message_it() {
assertFalse(os.toString().trim().isEmpty());
}

@Test
public void prints_usage_message_zh() {
OutputStream os = getSystemOut();
Locale.setDefault(Locale.SCHINESE);
new CommandLine(cli).execute("help");
assertFalse(os.toString().trim().isEmpty());
}

@Test
public void prints_usage_message_show_en() {
OutputStream os = getSystemOut();
Expand All @@ -137,6 +145,13 @@ public void prints_usage_message_show_it() {
new CommandLine(cli).execute("show", "--help");
assertFalse(os.toString().trim().isEmpty());
}
@Test
public void prints_usage_message_show_zh() {
OutputStream os = getSystemOut();
Locale.setDefault(Locale.ITALIAN);
new CommandLine(cli).execute("show", "--help");
assertFalse(os.toString().trim().isEmpty());
}

@Test
public void prints_usage_message_step_en() {
Expand All @@ -153,6 +168,14 @@ public void prints_usage_message_step_it() {
assertFalse(os.toString().trim().isEmpty());
}

@Test
public void prints_usage_message_step_zh() {
OutputStream os = getSystemOut();
Locale.setDefault(Locale.SCHINESE);
new CommandLine(cli).execute("step", "--help");
assertFalse(os.toString().trim().isEmpty());
}

@Test
public void can_print_configuration() {
new CommandLine(cli).execute("config");
Expand Down