Skip to content

Latest commit

 

History

History
658 lines (568 loc) · 17.5 KB

ENG-README.md

File metadata and controls

658 lines (568 loc) · 17.5 KB

This is the repository for the online and offline lookup app for http://moedict.tw/

Docker

You can retrieve a development environment from Docker Hub:

docker@boot2docker:~$ docker pull miaoski/moedict-webkit
docker@boot2docker:~$ docker run -p 8888:8888 -t -i miaoski/moedict-webkit /bin/bash
root@4a7bd751fd9e:/usr/local/src/moedict-webkit# make

Requirements

  • Node.js 0.10.x+
    • npm
  • Perl 5.8.0+
  • Python
    • lxml

In macOS, we currently only support HFS+ as a development environment. For versions after High Sierra, please use Disk Utility to make an HFS+ partition, and then open the development directory and place this folder in it.

Pre-Installation Instructions (Debian/Ubuntu)

For distributions prior to Ubuntu 16.04

sudo apt-get update
sudo apt-get install -y python g++ make nodejs python-lxml curl npm

For distribution Ubuntu 16.04 or later

sudo apt update
sudo apt install -y python g++ make nodejs python-lxml curl npm

Installation Environment

npm i
pip install lxml
sudo npm i -g gulp

Setup

Setting up an offline file

Set up the folder needed for offline browsing:

make offline

Step-by-step installation

The original JSON files dict-revised.unicode.json and dict-revised.pua.json are provided by https://github.com/g0v/moedict-data, and can be transformed into Unicode using the character encoding transformer at https://github.com/g0v/moedict-epub.

git clone --depth 1 https://github.com/g0v/moedict-data.git
git clone --depth 1 https://github.com/g0v/moedict-epub.git
cp -v moedict-data/dict-revised.json moedict-epub/
cd moedict-epub
perl json2unicode.pl > dict-revised.unicode.json
perl json2unicode.pl sym-pua.txt > dict-revised.pua.json

The indices pack, a, and t are created by json2prefix.ls, autolink.ls, and link2pack.pl :

lsc json2prefix.ls a
lsc autolink.ls a > a.txt
perl link2pack.pl a < a.txt

lsc json2prefix.ls t
lsc autolink.ls t > t.txt
perl link2pack.pl t < t.txt

Running a local instance

# quick static server, uses the pre-built js/deps.js ( watches: sass/ .jade )
npm start

# auto-reloads with react-hot-loader ( watches: sass/ .jade .ls )
npm run dev

# builds for deployment, using webpack and uglify
npm run build

API Documentation

Please note, the API for the MOE Dictionary must be queried at https://www.moedict.tw/, because only this address will satisfy the CORS policy. If you query http://moedict.org/, it will throw a No 'Access-Control-Allow-Origin' header error.

For the basic data on the API, please consult this link; this section is based on that information with some reorganization and additional examples.

The current API has 7 endpoints: /a/, /t/, /h/, /c/, /raw/, /uni/, /pua/

1. /raw/

The original JSON file. Characters outside the Big5 character range are shown using composite characters {[abcd]}.

Example: https://www.moedict.tw/raw/%E8%90%8C

{
  "heteronyms": [
    {
      "bopomofo": "ㄇㄥˊ",
      "bopomofo2": "méng",
      "definitions": [
        {
          "def": "草木初生的芽。",
          "quote": [
            "說文解字:「萌,艸芽也。」",
            "唐.韓愈、劉師服、侯喜、軒轅彌明.石鼎聯句:「秋瓜未落蒂,凍芋強抽萌。」"
          ],
          "type": ""
        },
        {
          "def": "事物發生的開端或徵兆。",
          "quote": [
            "韓非子.說林上:「聖人見微以知萌,見端以知末。」",
            "漢.蔡邕.對詔問{[9264]}異八事:「以杜漸防萌,則其救也。」"
          ],
          "type": ""
        },
        {
          "def": "人民。",
          "example": [
            "如:「萌黎」、「萌隸」。"
          ],
          "link": [
            "通「氓」。"
          ],
          "type": ""
        },
        {
          "def": "姓。如五代時蜀有萌慮。",
          "type": ""
        },
        {
          "def": "發芽。",
          "example": [
            "如:「萌芽」。"
          ],
          "quote": [
            "楚辭.王逸.九思.傷時:「明風習習兮龢暖,百草萌兮華榮。」"
          ],
          "type": ""
        },
        {
          "def": "發生。",
          "example": [
            "如:「故態復萌」。"
          ],
          "quote": [
            "管子.牧民:「惟有道者, 能備患於未形也,故禍不萌。」",
            "三國演義.第一回:「若萌異心,必獲惡報。」"
          ],
          "type": ""
        }
      ],
      "pinyin": "méng"
    }
  ],
  "non_radical_stroke_count": 8,
  "radical": "",
  "stroke_count": 12,
  "title": ""
}

2. /uni/

Takes the original JSON file and uses Unicode to display characters outside the Big5 range.

Example: https://www.moedict.tw/uni/%E8%90%8C

{
  "heteronyms": [
    {
      "bopomofo": "ㄇㄥˊ",
      "bopomofo2": "méng",
      "definitions": [
        {
          "def": "草木初生的芽。",
          "quote": [
            "說文解字:「萌,艸芽也。」",
            "唐.韓愈、劉師服、侯喜、軒轅彌明.石鼎聯句:「秋瓜未落蒂,凍芋強抽萌。」"
          ],
          "type": ""
        },
        {
          "def": "事物發生的開端或徵兆。",
          "quote": [
            "韓非子.說林上:「聖人見微以知萌,見端以知末。」",
            "漢.蔡邕.對詔問灾異八事:「以杜漸防萌,則其救也。」"
          ],
          "type": ""
        },
        {
          "def": "人民。",
          "example": [
            "如:「萌黎」、「萌隸」。"
          ],
          "link": [
            "通「氓」。"
          ],
          "type": ""
        },
        {
          "def": "姓。如五代時蜀有萌慮。",
          "type": ""
        },
        {
          "def": "發芽。",
          "example": [
            "如:「萌芽」。"
          ],
          "quote": [
            "楚辭.王逸.九思.傷時:「明風習習兮龢暖,百草萌兮華榮。」"
          ],
          "type": ""
        },
        {
          "def": "發生。",
          "example": [
            "如:「故態復萌」。"
          ],
          "quote": [
            "管子.牧民:「惟有道者,能備患於未形也,故禍不萌。」",
            "三國演義.第一回:「若萌異心,必獲惡報。」"
          ],
          "type": ""
        }
      ],
      "pinyin": "méng"
    }
  ],
  "non_radical_stroke_count": 8,
  "radical": "",
  "stroke_count": 12,
  "title": ""
}

3. /pua/

Like the /uni/ endpoint, /pua/ uses Unicode code points, but for dynamic composite characters, it uses @medicalwei.

For example, in the entry for '淘漉', there is a character whose raw codepoint is {[9ad7]}, and in uni it is a composite of ⿰扌 and 層, but in pua it has the codepoint U+F9AD7.

If you would like to display PUA, you will need to use the fonts available from the MOEDict at the following links: woff or ttf.

Example: https://www.moedict.tw/pua/%E8%90%8C

{
  "heteronyms": [
    {
      "bopomofo": "ㄇㄥˊ",
      "bopomofo2": "méng",
      "definitions": [
        {
          "def": "草木初生的芽。",
          "quote": [
            "說文解字:「萌,艸芽也。」",
            "唐.韓愈、劉師服、侯喜、軒轅彌明.石鼎聯句:「秋瓜未落蒂,凍芋強抽萌。」"
          ],
          "type": ""
        },
        {
          "def": "事物發生的開端或徵兆。",
          "quote": [
            "韓非子.說林上:「聖人見微以知萌,見端以知末。」",
            "漢.蔡邕.對詔問灾異八事:「以杜漸防萌,則其救也。」"
          ],
          "type": ""
        },
        {
          "def": "人民。",
          "example": [
            "如:「萌黎」、「萌隸」。"
          ],
          "link": [
            "通「氓」。"
          ],
          "type": ""
        },
        {
          "def": "姓。如五代時蜀有萌慮。",
          "type": ""
        },
        {
          "def": "發芽。",
          "example": [
            "如:「萌芽」。"
          ],
          "quote": [
            "楚辭.王逸.九思.傷時:「明風習習兮龢暖,百草萌兮華榮。」"
          ],
          "type": ""
        },
        {
          "def": "發生。",
          "example": [
            "如:「故態復萌」。"
          ],
          "quote": [
            "管子.牧民:「惟有道者,能備患於未形也,故禍不萌。」",
            "三國演義.第一回:「若萌異心,必獲惡報。」"
          ],
          "type": ""
        }
      ],
      "pinyin": "méng"
    }
  ],
  "non_radical_stroke_count": 8,
  "radical": "",
  "stroke_count": 12,
  "title": ""
}

4. Mandarin /a/

Also uses PUA composite characters, and in the content it uses automatic breaking characters.

Example https://www.moedict.tw/a/%E8%90%8C.json

{
  "n": 8,
  "t": "",
  "r": "`艸~",
  "c": 12,
  "h": [
    {
      "d": [
        {
          "q": [
            "`說文解字~:「`萌~,`艸~`芽~`也~。」",
            "`唐~.`韓愈~、`劉~`師~`服~、`侯~`喜~、`軒轅~`彌~`明~.`石~`鼎~`聯句~:「`秋~`瓜~`未~`落~`蒂~,`凍~`芋~`強~`抽~`萌~。」"
          ],
          "type": "`名~",
          "f": "`草木~`初~`生~`的~`芽~。"
        },
        {
          "q": [
            "`韓非子~.`說~`林~`上~:「`聖人~`見~`微~`以~`知~`萌~,`見~`端~`以~`知~`末~。」",
            "`漢~.`蔡邕~.`對~`詔~`問~`灾~`異~`八~`事~:「`以~`杜漸防萌~,`則~`其~`救~`也~。」"
          ],
          "type": "`名~",
          "f": "`事物~`發生~`的~`開端~`或~`徵兆~。"
        },
        {
          "type": "`名~",
          "l": [
            "`通~「`氓~」。"
          ],
          "e": [
            "`如~:「`萌黎~」、「`萌隸~」。"
          ],
          "f": "`人民~。"
        },
        {
          "type": "`名~",
          "f": "`姓~。`如~`五代~`時~`蜀~`有~`萌~`慮~。"
        },
        {
          "q": [
            "`楚辭~.`王~`逸~.`九思~.`傷~`時~:「`明~`風~`習習~`兮~`龢~`暖~,`百草~`萌~`兮~`華~`榮~。」"
          ],
          "type": "`動~",
          "e": [
            "`如~:「`萌芽~」。"
          ],
          "f": "`發芽~。"
        },
        {
          "q": [
            "`管子~.`牧民~:「`惟~`有道~`者~,`能~`備~`患~`於~`未~`形~`也~,`故~`禍~`不~`萌~。」",
            "`三國演義~.`第一~`回~:「`若~`萌~`異心~,`必~`獲~`惡報~。」"
          ],
          "type": "`動~",
          "e": [
            "`如~:「`故態復萌~」。"
          ],
          "f": "`發生~。"
        }
      ],
      "p": "méng",
      "b": "ㄇㄥˊ",
      "=": "0676"
    }
  ],
  "translation": {
    "francais": [
      "germer"
    ],
    "Deutsch": [
      "Leute, Menschen  (S)",
      "Meng  (Eig, Fam)",
      "keimen, sprießen, knospen, ausschlagen "
    ],
    "English": [
      "to sprout",
      "to bud",
      "to have a strong affection for (slang)",
      "adorable (loanword from Japanese `萌~え moe, slang describing affection for a cute character)"
    ]
  }
}

5. Taiwanese /t/

The structure is identical to /a/.

Example: https://www.moedict.tw/t/%E7%99%BC%E7%A9%8E.json

{
  "t": "`發~`穎~",
  "h": [
    {
      "_": "8778",
      "T": "huat-ínn",
      "s": "`發芽~",
      "d": [
        {
          "type": "`動~",
          "f": "`發芽~、萌`芽~。`植物~`的~`種子~`發出~`芽~。",
          "e": [
            "`樹仔~`發穎~`矣~!Tshiū-á huat-ínn--ah! `樹~`發芽~`了~!"
          ]
        }
      ]
    }
  ]
}

6. Hakka /h/

The structure is identical to /a/.

Example: https://www.moedict.tw/h/%E7%99%BC%E8%8A%BD.json

{
  "t": "`發~`芽~",
  "h": [
    {
      "=": "02735",
      "p": "四?⃞fad²nga¹¹ 海?⃞fad⁵nga⁵⁵ 大?⃞fad²¹nga¹¹³ 平?⃞fad²nga⁵⁵ 安?⃞fad²⁴nga⁵³",
      "s": "`暴~`芽~,`暴筍~",
      "d": [
        {
          "e": [
            "`春天~`一~`到~,`草~`仔~`樹仔~`相賽~`開始~`發芽~。`春天~`一~`到~,`草~`木~`相~繼`開始~萌`芽~。"
          ],
          "f": "`植物~`的~`種~`子~,`因~`本身~`的~`生理~、`外~`部~`環~`境~`條件~`的~`合適~,`而~`開始~萌`發~`的~`一~`種~`現象~。",
          "type": "`動~"
        }
      ]
    }
  ]
}

7. Cross-Straits Dictionary /c/

The structure is basically the same as /a/.

Example: https://www.moedict.tw/c/%E9%BE%8D.json

{
  "t": "",
  "h": [
    {
      "p": "lónɡ",
      "A": "",
      "d": [
        {
          "e": [
            "例?⃝「`飛~`龍~`在~`天~」、「`生龍活虎~」、「`葉公好龍~」、「`畫龍點睛~」。"
          ],
          "f": "`傳說~`中的~`神異~`動物~,`有~`角~、`鱗~、`爪~、`鬚~,`能~`上天~`入~`水~,`興~`雲~`降雨~。"
        },
        {
          "e": [
            "例?⃝「`龍顏~`大~`怒~」、「`龍~`體~`欠安~」、「`龍~`子~`龍~`孫~」。"
          ],
          "f": "`古代~`用作~`帝王~`的~`象徵~;`也~`指~`與~`帝王~`相關~`的~`物~`或~`人~。"
        },
        {
          "e": [
            "例?⃝「`人中~`之~`龍~」。"
          ],
          "f": "`借~`指~`首領~`或~`豪傑~`才~`俊~。"
        },
        {
          "e": [
            "例?⃝「`龍~`旗~」、「`龍舟~」、「`龍~`票~」。"
          ],
          "f": "`形狀~`像~`龍~`或~`裝飾~`著~`龍~`的~`圖案~`的~。"
        },
        {
          "e": [
            "例?⃝「`排~`成長~`龍~」、「`車水馬龍~」、「`大火~`蔓延~`一片~,`形成~`一~`條~`火龍~」。"
          ],
          "f": "`指~`某~`些~`連~`成~`一~`串~,`形狀~`像~`龍~`的~`東西~。"
        },
        {
          "e": [
            "例?⃝「`恐龍~」、「`翼~`手~`龍~」。"
          ],
          "f": "`指~`遠~`古~`某~`些~`巨大~`的~`爬行動物~。"
        },
        {
          "f": "`姓~。"
        },
        {
          "f": "`二~`一~`四部~`首~`之~`一~。"
        }
      ],
      "_": "1048060000",
      "b": "ㄌㄨㄥˊ"
    }
  ],
  "translation": {
    "francais": [
      "dragon",
      "impérial",
      "(nom de famille)",
      "212e radical"
    ],
    "Deutsch": [
      "Drache  (S)",
      "Long (Name)  (Eig, Fam)",
      "Schlange (auf der Speisekarte)  (Ess)",
      "Radikal Nr. 212 = Drache, Drachen "
    ],
    "English": [
      "surname Long",
      "dragon",
      "CL:`條~|条[tiao2]",
      "imperial"
    ]
  }
}

API Examples

Ajax

/uni/ Example

 $.ajax({
   url: "https://www.moedict.tw/uni/萌",
   dataType: "json",
   success: function(result) {
     console.log(result);
   }
 });

/a/ Example

 $.ajax({
   url: "https://www.moedict.tw/a/萌.json",
   dataType: "json",
   success: function(result) {
     console.log(result);
   }
 });

jsonp

The callback parameter must always be callback=moedict_jsonp_callback.

Example: https://www.moedict.tw/uni/萌?callback=moedict_jsonp_callback

ajax example:

 $.ajax({
   url: "https://www.moedict.tw/uni/萌",
   dataType: "jsonp",
   jsonpCallback: "moedict_jsonp_callback",
   success: function(result) {
     console.log(result);
   }
 });

Terminal

/uni/ example

$ curl "https://www.moedict.tw/uni/萌"

/a/ example

$ curl "https://www.moedict.tw/a/萌.json"

Miscellaneous

index.*.json is the complete list of all headwords in the「重編國語辭典(修訂本)」(Revised Mandarin Dictionary (Corrected Edition)).

dict-concised.audio.json is the index of filenames of pronunciation files in the「國語辭典簡編本」(Concise Mandarin Dictionary).

Versions for other platforms, API, and underlying data can be had from http://3du.tw/ .

Many thanks to to the assistant developers at http://g0v.tw/ .

CC0 1.0 Universal Public Domain Dedication

Apart from any files mentioned above, all other files in this directory have been dedicated by the author (Tang Feng) to the public ___domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.

教育部國語辭典公眾授權網

http://resources.publicense.moe.edu.tw/

教育部版權頁

    =====================================================
    編  輯  者:        教育部國語推行委員會
    國語推行委員會主任委員:童春發
    編輯委員會主任委員:    李 鍌
    總  編  輯:        李殿魁
    副 總 編 輯:        曾榮汾

    發  行  人:        杜正勝
    發  行  所:        教育部
    地     址:        臺北市中山南路5號
    電     話:        (02)7736-6801
    =====================================================