1. 程式人生 > >Java原始碼英翻中網頁演示 2018-09-24

Java原始碼英翻中網頁演示 2018-09-24

2018-09-23-Java翻譯演示
線上演示地址: 原始碼翻譯

兩部分如下.

獨立的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實現原始碼服務

續前文Java原始碼英翻中庫以及服務原型

原始碼庫: 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.