天天看點

Java源碼英翻中網頁示範

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

前端部分暫時合在同一庫"前端"檔案夾:

  • 前端方面
    • 實作了最簡單的前端, 左邊輸入源碼, 右邊顯示翻譯結果
    • 支援文法高亮: 基于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.