Java原始碼英翻中網頁演示 2018-09-24
阿新 • • 發佈:2019-01-13
線上演示地址: 原始碼翻譯
兩部分如下.
獨立的Java程式碼翻譯庫
續前文程式碼翻譯嘗試-使用Roaster解析和生成Java原始碼
原始碼庫: program-in-chinese/java_code_translator
功能
在前文基礎上: 重構; 完善測試(基本涵蓋主要介面); 小改進 - 支援陣列型別的屬性和方法返回型別的翻譯, 如"String[]" -> “字串[]”
原始碼節選
翻譯Java程式碼.java, 按類/Bean屬性/方法三部分翻譯命名. 仍不處理方法內容.
public static String 翻譯原始碼結構( String 原始碼) {
JavaClassSource 類結構;
try {
類結構 = 取類結構(原始碼);
} catch (ParserException e) {
return e.getLocalizedMessage();
}
翻譯類(類結構);
翻譯屬性(類結構);
翻譯方法(類結構);
return 類結構.toUnformattedString();
}
部署
暫未釋出到Maven, 在部署時, 執行’mvn install’安裝jar包到本地(伺服器同樣).
Spring Boot實現原始碼服務
原始碼庫: program-in-chinese/code_translator_service, maven依賴上面的庫java_code_translator
前端部分暫時合在同一庫"前端"資料夾: program-in-chinese/code_translator_service
功能
- 前端方面
- 實現了最簡單的前端, 左邊輸入原始碼, 右邊顯示翻譯結果
- 支援語法高亮: 基於CodeMirror, 包括行號, 關鍵詞高亮, 類名等等. 它支援100多程式語言, 適於今後新增其他語言支援.
原始碼節選
前端-Java模式語法高亮:
var 輸入 = CodeMirror.fromTextArea(document.getElementById("英文原始碼輸入"), {
mode : "text/x-java",
lineNumbers : true,
matchBrackets : true
});
輸入.setSize(500, 500);
前端-訪問後臺
$(document).ready(function() {
$("#翻譯按鈕").click(function() {
輸出.setValue("處理中...");
$.post("http://74.91.17.250:8091/", {
code : 輸入.getValue()
}, function(結果) {
輸出.setValue(結果.內容);
}, "json");
});
});
後臺部分-翻譯控制器.java
@RestController
public class 翻譯控制器 {
private static final Logger 筆錄 = LoggerFactory.getLogger(翻譯控制器.class);
@CrossOrigin(origins = "http://74.91.17.250:9000")
@RequestMapping(value = "/", method = RequestMethod.POST)
@ResponseBody
public 翻譯 翻譯(@RequestParam(name = "code", required = false, defaultValue = "") String 英文原始碼) {
筆錄.info("輸入: " + 英文原始碼);
return new 翻譯(翻譯Java程式碼.翻譯原始碼結構(英文原始碼));
}
}
部署
後臺部分
打包: mvn package
執行: nohup java -jar target/code_translator_service-0.0.1-SNAPSHOT.jar --server.port=8091 &
前端部分
伺服器: 將’前端’的public部分拷貝到tomcat(設定port為9000).
本地除錯: 執行’spring run app.groovy’即在8080啟動前端服務; 需修改post地址為"http://localhost:8091/", 以正確配置CORS.