On this page:
5.1.1 ming/  core
mingize
5.1.2 ming/  scribble
defchinesize
defmapping
5.1.3 mapping-lang
8.6

5.1 名语言核心库

5.1.1 ming/core

 (require ming/core) package: ming
名语言标准库,语言关键程序(汉化程序和扩展程序)应含于此。

syntax

(mingize module-path)

名化(汉化)一个Racket的库。
  • 仅只用于require的子句,且仅当名语言内部已经定义了该库的翻译文件时才会成功。

  • 当嵌入到require中作为子句一块使用时,其和(require ming/module-path)等同。除了后者所使用的翻译表的作用域是在原module中的,因此不能简单的被修改或重定义。

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的额外说明。

比如代码:

生成的文档可见处。

而代码:
#lang scribble/manual
@defmapping[racket/list ([ "甲即是第一的意思。"])]
生成的文档同样如处,只不过的说明被甲即是第一的意思。替换。

5.1.3 mapping-lang

如何贡献翻译请见贡献翻译

名语言为了借用Racket的标准库,需要做大量的翻译。又因翻译文件重在数据,其代码逻辑比较简单,故此另外实现了一个简单的语言来编写翻译代码,mapping-lang

示例:

"mapping/racket/list.rkt"

#lang s-exp "../../private/mapping-lang.rkt"
 
>>> first  "第一个的意思,源自中国古代文字记序符号十天干。"
>>> second 
>>> third  >>> fourth  >>> fifth    ;; 此行共三个翻译
>>> index-of 索引 (elem "从链中查出某个值的" (racket ))   ;; “原因”可以为一个链