V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
xuanwu
V2EX  ›  JavaScript

中文輸進去,程式出得來,開發者發大財 - LingaScript: 中文化 TypeScript

  •  
  •   xuanwu · 2019-03-15 02:39:31 +08:00 · 2164 次点击
    这是一个创建于 2066 天前的主题,其中的信息可能已经有所发展或是发生改变。

    知乎专栏文章: 转载: 中文輸進去,程式出得來,開發者發大財 -LingaScript:中文化 TypeScript

    原文在原创者 (也是周蟒作者) 博客: 中文輸進去,程式出得來,開發者發大財

    前陣子過年,終於得以抽出的一些時間,可以來嘗試一些不同的東西。

    花了幾天查看 Typescript 程式碼,改寫了個可用繁 /簡中文語法寫 JS 的轉譯器 LingaScript

    使用它做了個「中文輸進去,程式出得來,開發者發大財」的中文程式影片範例,歡迎大家開心試用。

    演示

    如何做到的

    這個專案脫胎自過去開發周蟒(Python + 中文語法)的經驗,並參考了 CTS (Typescript + 中文語法)原始碼。

    微軟主導開發的 Typescript 提供了分析 Typescript 語法,並可輸出成 Javascript 的轉譯器(src/compiler)。更棒的是因為 Visual Studio 的開發工具中整合了 Typescript,而微軟為了讓 Visual Studio 中的所有編譯結果都有本地化語言輸出,也在 Typescript 中支援了本地化語言的命令行工具和錯誤輸出。

    因此, ‵ LingaScript ‵ 目前所做的,是讓支援的中文語法可分析為對應的 symbol,並預設將命令行工具設成對應的本地化語言。如此一來就可以得到較完整的使用本地化語言的開發體驗。

    2019-03-14-LingaScript 原理

    因為看到 CTS 改版不易的問題,我使用自己開發,基於 Google 提供的 diff-match-patch 包裝的 file-patch 工具,來對修改後的程式碼和 Typescript 原始碼做 diff/patch。‵ LingaScript ‵ 專案中保存了修改後的 compiler 相關檔案和 diff 檔。透過 patch 的方式更容易相容版本升級時的改動。

    具體可以查看相關用到的命令 https://github.com/gasolin/lingascript/blob/master/package.json#L14

    其他想法

    ‵ LingaScript ‵ 目前的架構不僅止於能支援繁簡中文語法,只要加上對應的關鍵字檔案,也可以很快地支援其他語種,讓開發者或講師得以用熟悉的語言來介紹並執行 Javascript 相容的程式。

    如果有興趣的話,歡迎前往 https://github.com/gasolin/lingascript 討論或提出想法。

    Yvette
        1
    Yvette  
       2019-03-15 06:49:14 +08:00
    「真的」「假的」好喜感啊哈哈哈哈

    而且,把等号和括号空格得弄成全角的才行啊,引号得用直角的,console.log 的也得改成「控制台。日志」。不然还得切换输入法,效率不够高啊!()
    xuanwu
        2
    xuanwu  
    OP
       2019-03-15 08:13:47 +08:00
    @Yvette "为避免频繁切换中英文: 为了在输入中文的同时不用切换就可以输入特殊符号(){};等等, 搜狗输入法支持”中文时使用英文标点”
    API 汉化是个大工程, 另一个项目正在实现.
    Kaiv2
        3
    Kaiv2  
       2019-03-15 08:38:00 +08:00 via Android   ❤️ 1
    支持
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2556 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 01:36 · PVG 09:36 · LAX 17:36 · JFK 20:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.