8.6
5.1 名语言核心库
5.1.1 ming/core
名语言标准库,语言关键程序(汉化程序和扩展程序)应含于此。
syntax
(mingize module-path)
名化(汉化)一个Racket的库。
Examples:
> (require racket/list) > (first (list 1 2 3)) 1
> (require (mingize racket/list)) > (甲 (list 1 2 3)) 1
> (require ming/racket/list) > (甲 (list 1 2 3)) 1
5.1.2 ming/scribble
(require ming/scribble) | package: ming |
使用示例可见Racket汉化库,其说明文档中的汉化是采用本库生成的。
syntax
(defchinesize chinese-id reason english-id)
reason : (or/c pre-content? string?)
生成从english-id汉化而来的chinese-id的文档,并给出reason为什么选择这个汉字或者汉语词汇作为汉化名。
syntax
(defmapping path-id mapping-expr)
mapping-expr = ([chinese-id reason] ...)
reason : (or/c pre-content? string?)
以名语言内部的翻译表为基准来生成一组翻译文档。
path-id应为ming库的内部路径maping/*中*代表的文件路径。TODO: after refactoring this requires in scribble/core, make this description in defform’s contracts.
mapping-expr可以用来新增或覆盖path-id所引进的翻译表中包含的chinese-id的额外说明。
path-id应为ming库的内部路径maping/*中*代表的文件路径。TODO: after refactoring this requires in scribble/core, make this description in defform’s contracts.
mapping-expr可以用来新增或覆盖path-id所引进的翻译表中包含的chinese-id的额外说明。
比如代码:
#lang scribble/manual @defmapping[racket/list]
生成的文档可见甲处。
而代码:
#lang scribble/manual @defmapping[racket/list ([甲 "甲即是第一的意思。"])]
5.1.3 mapping-lang
如何贡献翻译请见贡献翻译。
名语言为了借用Racket的标准库,需要做大量的翻译。又因翻译文件重在数据,其代码逻辑比较简单,故此另外实现了一个简单的语言来编写翻译代码,mapping-lang:
以>>>开头表示开始一个翻译。
>>>也不必非在行首;也可以在行中,如此则会从行中开始另一个翻译。
>>>之后可以跟上二或三个数据,分别为“原名(english-id)”、“翻译名(chinese-id)”和“原因(reason)”,数据间以空格分割。
三个数据中,“原因”可以被省略;如有则会在使用defchinesize、defmapping生成文档的时候被默认提取使用。
示例: