[general]
mode=new        ; method for playing numbers and dates

; say.conf
; 
; language configuration
;
; The new language routines produce strings of the form
;	prefix:[format:]data
; that are matched against the rules in this file to produce
; an output.
;
; The data is generally the string to be spelled (either a number,
; an ascii string or a date/time in the format specified below).
; It is available, in the right hand side of a rule, as variable ${SAY}.
;
; The format is optional and normally used only for date/time.
; The prefix is used to select the pronunciation - standard
; prefixes are
;	num		used for numbers
;	enum		used for enumerations
;	date 		for dates
;	time 		for times
;	datetime	for dates and times
;	char		for character strings
;	phonetic	for phonetic strings
;	digit		for digit strings
;
; but others can be used at will.
;
; Processing occurs as follows:
; If the format is empty, or there is no format, the entire
; string is matched against one of the pattern on the left hand side.
; On the first match, the various comma-separated components on the right
; hand side are pronounced, as follows:
; + a component starting with a prefix: (i.e. with a ':' in it)
;   is re-processed according to these rules;
; + a component without a ':' in it is considered a filename and
;   the corresponding file is played.
;
; If the format is non-empty, the format is split into its components
; (individual characters, or filenames in single quotes), and then
; filenames are played, whereas single characters are used to
; generate a new string format:pat:data to be processed.
;
; DATES/AND TIMES assume that the date info is available in
; the form	 YYYYMMDDHHmm.ss-dow-doy
; with 4 digits for the year, 2 for month, day, hour, minutes, seconds,
; one digit for the day-of-week, and 3 digits for the day-of-year.
;
; Example:
;     datetime::200604172030.00-4-102
; (typical format for a date) is first matched against the line
;	datetime::. => date:AdBY 'digits/at' IMp:${SAY}
; which is normally present with the default format for dates.
; In turn, the format string "AdBY 'digits/at' IMp" results in
; the sequence
;	date:A:200604172030.00-4-102
;	date:d:200604172030.00-4-102
;	date:B:200604172030.00-4-102
;	date:Y:200604172030.00-4-102
;	digits/at
;	date:I:200604172030.00-4-102
;	date:M:200604172030.00-4-102
;	date:p:200604172030.00-4-102
;
; 
; Remember, normally X Z N are special, and the search is
; case insensitive, so you must use [X] [N] [Z] .. if you
; want exact match.

; We start with the basic rules that might be more-or-less
; language-independent

[digit-base](!)		; base rule for digit strings
			; XXX incomplete yet
    _digit:[0-9] => digits/${SAY}
    _digit:[-] => letters/dash
    _digit:[*] => letters/star
    _digit:[@] => letters/at
    _digit:[0-9]. => digit:${SAY:0:1}, digit:${SAY:1}

[date-base](!)		; base rules for dates and times
    ; the 'SAY' variable contains YYYYMMDDHHmm.ss-dow-doy
    ; these rule map the strftime attributes.
    _date:Y:. => num:${SAY:0:4}	; year, 19xx
    _date:[Bb]:. => digits/mon-$[${SAY:4:2}-1]	; month name, 0..11
    _date:[Aa]:. => digits/day-${SAY:16:1}	; day of week
    _date:[de]:. => num:${SAY:6:2}		; day of month
    _date:[hH]:. => num:${SAY:8:2}		; hour
    _date:[I]:. => num:$[${SAY:8:2} % 12]	; hour 0-12
    _date:[M]:. => num:${SAY:10:2}		; minute
    ; XXX too bad the '?' function does not remove the quotes
    ; _date:[pP]:. => digits/$[ ${SAY:10:2} > 12 ? "p-m" :: "a-m"]	; am pm
    _date:[pP]:. => digits/p-m	; am pm
    _date:[S]:. => num:${SAY:13:2}		; seconds

[en-base](!)
    _[n]um:0. => num:${SAY:1}
    _[n]um:X => digits/${SAY}
    _[n]um:1X => digits/${SAY}
    _[n]um:[2-9]0 =>  digits/${SAY}
    _[n]um:[2-9][1-9] =>  digits/${SAY:0:1}0, num:${SAY:1}

    _[n]um:[1-9]00 => num:${SAY:0:1}, digits/hundred
    _[n]um:XXX => num:${SAY:0:1}, digits/hundred, num:${SAY:1}

    _[n]um:[1-9]000 => num:${SAY:0:1}, digits/thousand
    _[n]um:XXXX => num:${SAY:0:1}, digits/thousand, num:${SAY:1}

    _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2}

    _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousand, num:${SAY:3}

    _[n]um:[1-9]000000 => num:${SAY:0:1}, digits/million
    _[n]um:XXXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1}
    _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/million, num:${SAY:2}
    _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/million, num:${SAY:3}

    _[n]um:[1-9]000000000 => num:${SAY:0:1}, digits/billion
    _[n]um:XXXXXXXXXX => num:${SAY:0:1}, digits/billion, num:${SAY:1}
    _[n]um:XXXXXXXXXXX => num:${SAY:0:2}, digits/billion, num:${SAY:2}
    _[n]um:XXXXXXXXXXXX => num:${SAY:0:3}, digits/billion, num:${SAY:3}

    ; enumeration
    _e[n]um:X => digits/h-${SAY}
    _e[n]um:1X => digits/h-${SAY}
    _e[n]um:[2-9]0 => digits/h-${SAY}
    _e[n]um:[2-9][1-9] => num:${SAY:0:1}0, digits/h-${SAY:1}
    _e[n]um:[1-9]XX => num:${SAY:0:1}, digits/hundred, enum:${SAY:1}

[it](digit-base,date-base)
    _[n]um:0. => num:${SAY:1}
    _[n]um:X => digits/${SAY}
    _[n]um:1X => digits/${SAY}
    _[n]um:[2-9]0 =>  digits/${SAY}
    _[n]um:[2-9][1-9] =>  digits/${SAY:0:1}0, num:${SAY:1}
    _[n]um:1XX => digits/hundred, num:${SAY:1}
    _[n]um:[2-9]XX => num:${SAY:0:1}, digits/hundred, num:${SAY:1}

    _[n]um:1XXX => digits/thousand, num:${SAY:1}
    _[n]um:[2-9]XXX => num:${SAY:0:1}, digits/thousands, num:${SAY:1}
    _[n]um:XXXXX => num:${SAY:0:2}, digits/thousands, num:${SAY:2}
    _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousands, num:${SAY:3}

    _[n]um:1XXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1}
    _[n]um:[2-9]XXXXXX => num:${SAY:0:1}, digits/millions, num:${SAY:1}
    _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2}
    _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3}

    _datetime::. => date:AdBY 'digits/at' IMp:${SAY}
    _date::. => date:AdBY:${SAY}
    _time::. => date:IMp:${SAY}

[en](en-base,date-base,digit-base)
    _datetime::. => date:AdBY 'digits/at' IMp:${SAY}
    _date::. => date:AdBY:${SAY}
    _time::. => date:IMp:${SAY}

[en_cu]
    _[n]um:0. => num:${SAY:1}
    _[n]um:X => digits/${SAY},digits/yuan
    _[n]um:1X => digits/${SAY},digits/yuan
    _[n]um:[2-9]0 =>  digits/${SAY},digits/yuan
    _[n]um:[2-9][1-9] =>  digits/${SAY:0:1}0, num:${SAY:1}

    _[n]um:[1-9]00 => digits/${SAY:0:1}, digits/hundred,digits/yuan
    _[n]um:XXX => digits/${SAY:0:1}, digits/hundred, num:${SAY:1}

    _[n]um:[1-9]000 => digits/${SAY:0:1}, digits/thousand,digits/yuan
    _[n]um:XXXX => digits/${SAY:0:1}, digits/thousand, num:${SAY:1}


    _[n]um:1[1-9]XXX => digits/${SAY:0:2}, digits/thousand, num:${SAY:2}
    _[n]um:X0XXX => digits/${SAY:0:2}, digits/thousand, num:${SAY:2}
    _[n]um:XXXXX => digits/${SAY:0:1}0,digits/${SAY:1:1},digits/thousand, num:${SAY:2}


[de](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}
    _[n]um:X => de/digits/${SAY}
    _[n]um:1[0-2] => de/digits/${SAY}
    _[n]um:1[3-9] => de/digits/${SAY:1},de/digits/and, de/digits/${SAY:0:1}0
    _[n]um:[2-9]0 => de/digits/${SAY}
    _[n]um:[2-9][1-9] => de/digits/${SAY:1},de/digits/and, de/digits/${SAY:0:1}0
    _[n]um:1XX => de/digits/1, de/digits/000, num:${SAY:1}
    _[n]um:[2-9]XX => de/digits/${SAY:0:1}, de/digits/000, num:${SAY:1}
    _[n]um:1XXX => de/digits/1, de/digits/000, num:${SAY:1}
    _[n]um:[2-9]XXX => de/digits/${SAY:0:1}, de/digits/0000, num:${SAY:1}
    _[n]um:XXXXX => num:${SAY:0:2}, de/digits/0000, num:${SAY:2}
    _[n]um:X00XXX => de/digits/${SAY:0:1}, de/digits/000, digits/0000, num:${SAY:3}
    _[n]um:XXXXXX => de/digits/${SAY:0:1}, de/digits/000, num:${SAY:1}
    ;_[n]um:1XXXXXX => de/digits/1, digits/million, num:${SAY:1}
    ;_[n]um:[2-9]XXXXXX => digits/${SAY:0:1}, digits/millions, num:${SAY:1}
    ;_[n]um:XXXXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2}
    ;_[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3}

[de_cu](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}
    _[n]um:X => de/digits/${SAY},de/digits/yuan
    _[n]um:1[0-2] => de/digits/${SAY},de/digits/yuan
    _[n]um:1[3-9] => de/digits/${SAY:1},de/digits/and, de/digits/${SAY:0:1}0,de/digits/yuan
    _[n]um:[2-9]0 => de/digits/${SAY},de/digits/yuan
    _[n]um:[2-9][1-9] => de/digits/${SAY:1},de/digits/and, de/digits/${SAY:0:1}0,de/digits/yuan
    _[n]um:1XX => de/digits/1, de/digits/000, num:${SAY:1}
    _[n]um:[2-9]XX => de/digits/${SAY:0:1}, de/digits/000, num:${SAY:1}
    _[n]um:1XXX => de/digits/1, de/digits/000, num:${SAY:1}
    _[n]um:[2-9]XXX => de/digits/${SAY:0:1}, de/digits/0000, num:${SAY:1}
    _[n]um:XXXXX => num:${SAY:0:2}, de/digits/0000, num:${SAY:2}
    _[n]um:X00XXX => de/digits/${SAY:0:1}, de/digits/000, digits/0000, num:${SAY:3}
    _[n]um:XXXXXX => de/digits/${SAY:0:1}, de/digits/000, num:${SAY:1}
    ;_[n]um:1XXXXXX => de/digits/1, digits/million, num:${SAY:1}
    ;_[n]um:[2-9]XXXXXX => digits/${SAY:0:1}, digits/millions, num:${SAY:1}
    ;_[n]um:XXXXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2}
    ;_[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3}



[cn](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}    ;以0开头的去掉0

    _[n]um:X => cn/digits/${SAY}

    _[n]um:10 => cn/digits/shi    ;10
    _[n]um:1[1-9] => cn/digits/shi, num:${SAY:1}    ;
    _[n]um:[2-9]0 => cn/digits/${SAY:0:1}, cn/digits/shi        ; 20,30...90
    _[n]um:[2-9][1-9] => cn/digits/${SAY:0:1}, cn/digits/shi, num:${SAY:1}    ;先播放第一个,然后把第一个向后的重新匹配

    _[n]um:X00 => cn/digits/${SAY:0:1}, cn/digits/bai    ;播放X百
    _[n]um:X0X => cn/digits/${SAY:0:1}, cn/digits/bai, cn/digits/ling, num:${SAY:2}    ;播放X百零X
    _[n]um:X10 => cn/digits/${SAY:0:1}, cn/digits/bai, cn/digits/1, cn/digits/shi    ;播放X百一十
    _[n]um:X1X => cn/digits/${SAY:0:1}, cn/digits/bai, cn/digits/1, cn/digits/shi, num:${SAY:2}    ;播放X百一十X
    _[n]um:XXX => cn/digits/${SAY:0:1}, cn/digits/bai, num:${SAY:1}

    _[n]um:X000 => cn/digits/${SAY:0:1}, cn/digits/qian    ;播放X千
    _[n]um:X0[1-9]0 => cn/digits/${SAY:0:1}, cn/digits/qian, cn/digits/ling, cn/digits/${SAY:2:1}, cn/digits/shi
    _[n]um:X0[1-9][1-9] => cn/digits/${SAY:0:1}, cn/digits/qian, cn/digits/ling, cn/digits/${SAY:2:1}, cn/digits/shi, cn/digits/${SAY:3:1}
    _[n]um:X0XX => cn/digits/${SAY:0:1}, cn/digits/qian, cn/digits/ling, num:${SAY:2}    ;播放X千零xx
    _[n]um:X[1-9]XX => cn/digits/${SAY:0:1}, cn/digits/qian, num:${SAY:1}    ;播放X千X百
   
    _[n]um:X0000 => cn/digits/${SAY:0:1}, cn/digits/wan    ;播放X万
    _[n]um:X00[1-9]0 => cn/digits/${SAY:0:1}, cn/digits/wan,cn/digits/ling,cn/digits/${SAY:3:1}, cn/digits/shi
    _[n]um:X00[1-9][1-9] => cn/digits/${SAY:0:1}, cn/digits/wan,cn/digits/ling,cn/digits/${SAY:3:1}, cn/digits/shi,cn/digits/${SAY:4:1}
    _[n]um:X0XXX => cn/digits/${SAY:0:1}, cn/digits/wan, cn/digits/ling, num:${SAY:2}    ;播放X万零xx
    _[n]um:X[1-9]XXX => cn/digits/${SAY:0:1}, cn/digits/wan, num:${SAY:1}    ;
 

    _[n]um:[1-9]X0000 => num:${SAY:0:2}, cn/digits/wan    ;播放拾万
    _[n]um:[1-9]X0XXX => num:${SAY:0:2}, cn/digits/wan, cn/digits/ling, num:${SAY:3}    ;播放X拾万零
    _[n]um:[1-9]XXXXX => num:${SAY:0:2}, cn/digits/wan, num:${SAY:2}    ;播放X拾万X

    _[n]um:[1-9]XX0000 => num:${SAY:0:3}, cn/digits/wan    ;播放百万
    _[n]um:[1-9]XX0XXX => num:${SAY:0:3}, cn/digits/wan, cn/digits/ling, num:${SAY:4}    ;播放X百万零
    _[n]um:[1-9]XXXXXX => num:${SAY:0:3}, cn/digits/wan, num:${SAY:3}    ;播放X百万X

    _[n]um:[1-9]XXX0000 => num:${SAY:0:4}, cn/digits/wan    ;播放千万
    _[n]um:[1-9]XXX0XXX => num:${SAY:0:4}, cn/digits/wan, cn/digits/ling, num:${SAY:5}    ;播放X千万零
    _[n]um:[1-9]XXXXXXX => num:${SAY:0:4}, cn/digits/wan, num:${SAY:4}    ;播放X千万X
 
   _[n]um:[1-9]XXXXXXXX => num:${SAY:0:1}, cn/digits/yi, cn/digits/ling ,num:${SAY:1}
   _[n]um:[1-9]0XXXXXXX => num:${SAY:0:1}, cn/digits/yi, cn/digits/ling ,num:${SAY:2}

   _[n]um:[1-9]XXXXXXXXX => num:${SAY:0:2}, cn/digits/yi, cn/digits/ling ,num:${SAY:2}
   _[n]um:[1-9]0XXXXXXXX => num:${SAY:0:2}, cn/digits/yi, cn/digits/ling ,num:${SAY:3}

[cn_cu](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}

    _[n]um:X => cn/digits/${SAY}, cn/digits/yuan

    _[n]um:10 => cn/digits/shi, cn/digits/yuan    ;10
    _[n]um:1[1-9] => cn/digits/shi, num:${SAY:1}    ;
    _[n]um:[2-9]0 => cn/digits/${SAY:0:1}, cn/digits/shi , cn/digits/yuan       ; 20,30...90
    _[n]um:[2-9][1-9] => cn/digits/${SAY:0:1}, cn/digits/shi, num:${SAY:1}    ;先播放第一个,然后把第一个向后的重新匹配

    _[n]um:X00 => cn/digits/${SAY:0:1}, cn/digits/bai, cn/digits/yuan    ;播放X百
    _[n]um:X0X => cn/digits/${SAY:0:1}, cn/digits/bai, cn/digits/ling, num:${SAY:2}    ;播放X百零X
    _[n]um:X10 => cn/digits/${SAY:0:1}, cn/digits/bai, cn/digits/1, cn/digits/shi, cn/digits/yuan    ;播放X百一十
    _[n]um:X1X => cn/digits/${SAY:0:1}, cn/digits/bai, cn/digits/1, cn/digits/shi, num:${SAY:2}    ;播放X百一十X
    _[n]um:XXX => cn/digits/${SAY:0:1}, cn/digits/bai, num:${SAY:1}

    _[n]um:X000 => cn/digits/${SAY:0:1}, cn/digits/qian, cn/digits/yuan    ;播放X千
    _[n]um:X0[1-9]0 => cn/digits/${SAY:0:1}, cn/digits/qian, cn/digits/ling, cn/digits/${SAY:2:1}, cn/digits/shi, cn/digits/yuan
    _[n]um:X0[1-9][1-9] => cn/digits/${SAY:0:1}, cn/digits/qian, cn/digits/ling, cn/digits/${SAY:2:1}, cn/digits/shi, cn/digits/${SAY:3:1}, cn/digits/yuan
    _[n]um:X0XX => cn/digits/${SAY:0:1}, cn/digits/qian, cn/digits/ling, num:${SAY:2}    ;播放X千零xx
    _[n]um:X[1-9]XX => cn/digits/${SAY:0:1}, cn/digits/qian, num:${SAY:1}    ;播放X千X百
   
    _[n]um:X0000 => cn/digits/${SAY:0:1}, cn/digits/wan , cn/digits/yuan   ;播放X万
    _[n]um:X00[1-9]0 => cn/digits/${SAY:0:1}, cn/digits/wan,cn/digits/ling,cn/digits/${SAY:3:1}, cn/digits/shi, cn/digits/yuan
    _[n]um:X00[1-9][1-9] => cn/digits/${SAY:0:1}, cn/digits/wan,cn/digits/ling,cn/digits/${SAY:3:1}, cn/digits/shi,cn/digits/${SAY:4:1}, cn/digits/yuan
    _[n]um:X0XXX => cn/digits/${SAY:0:1}, cn/digits/wan, cn/digits/ling, num:${SAY:2}    ;播放X万零xx
    _[n]um:X[1-9]XXX => cn/digits/${SAY:0:1}, cn/digits/wan, num:${SAY:1}    ;
 

    _[n]um:[1-9]X0000 => num:${SAY:0:2}, cn/digits/wan, cn/digits/yuan    ;播放拾万
    _[n]um:[1-9]X0XXX => num:${SAY:0:2}, cn/digits/wan, cn/digits/ling, num:${SAY:3}    ;播放X拾万零
    _[n]um:[1-9]XXXXX => num:${SAY:0:2}, cn/digits/wan, num:${SAY:2}    ;播放X拾万X

    _[n]um:[1-9]XX0000 => num:${SAY:0:3}, cn/digits/wan, cn/digits/yuan    ;播放百万
    _[n]um:[1-9]XX0XXX => num:${SAY:0:3}, cn/digits/wan, cn/digits/ling, num:${SAY:4}    ;播放X百万零
    _[n]um:[1-9]XXXXXX => num:${SAY:0:3}, cn/digits/wan, num:${SAY:3}    ;播放X百万X

    _[n]um:[1-9]XXX0000 => num:${SAY:0:4}, cn/digits/wan, cn/digits/yuan    ;播放千万
    _[n]um:[1-9]XXX0XXX => num:${SAY:0:4}, cn/digits/wan, cn/digits/ling, num:${SAY:5}    ;播放X千万零
    _[n]um:[1-9]XXXXXXX => num:${SAY:0:4}, cn/digits/wan, num:${SAY:4}    ;播放X千万X

[ru](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}    ;以0开头的去掉0

    _[n]um:X => ru/digits/${SAY}		;0-9
    _[n]um:1[0-9] => ru/digits/${SAY}		;10-19
    _[n]um:[2-9]0 => ru/digits/${SAY}		;20,30...90

    _[n]um:[1-9][1-9] => ru/digits/${SAY:0:1}0, num:${SAY:1}

    _[n]um:[1-9]00 => ru/digits/${SAY}		;100,200...900
    _[n]um:[1-9]XX => ru/digits/${SAY:0:1}00, num:${SAY:1}

    _[n]um:[1-9]000 => ru/digits/${SAY}		;1000,2000...9000
    _[n]um:[1-9]XXX => ru/digits/${SAY:0:1}000, num:${SAY:1}

    _[n]um:1000 => ru/digits/${SAY}		;10000
    _[n]um:[1-9]XXXX => ru/digits/${SAY:0:1}0000, num:${SAY:1}

[ru_cu](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}    ;以0开头的去掉0

    _[n]um:1 => ru/digits/${SAY},ru/digits/yuan1
    _[n]um:[2-4] => ru/digits/${SAY},ru/digits/yuan2-4

    _[n]um:[5-9] => ru/digits/${SAY},ru/digits/yuan5-10000

    _[n]um:1[0-9] => ru/digits/${SAY},ru/digits/yuan5-10000		;10-19
    _[n]um:[2-9]0 => ru/digits/${SAY},ru/digits/yuan5-10000		;20,30...90

    _[n]um:[1-9][1-9] => ru/digits/${SAY:0:1}0, num:${SAY:1}

    _[n]um:[1-9]00 => ru/digits/${SAY},ru/digits/yuan5-10000		;100,200...900
    _[n]um:[1-9]XX => ru/digits/${SAY:0:1}00, num:${SAY:1}

    _[n]um:[1-9]000 => ru/digits/${SAY},ru/digits/yuan5-10000		;1000,2000...9000
    _[n]um:[1-9]XXX => ru/digits/${SAY:0:1}000, num:${SAY:1}

    _[n]um:1000 => ru/digits/${SAY},ru/digits/yuan5-10000		;10000
    _[n]um:[1-9]XXXX => ru/digits/${SAY:0:1}0000, num:${SAY:1}


[fr](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}
    _[n]um:X => digits/${SAY}
    _[n]um:1X => digits/${SAY}
    _[n]um:[2-9]0 =>  digits/${SAY}
    _[n]um:[2-6]1 => digits/${SAY:0:1}0, vm-and, digits/${SAY:1}
    _[n]um:71 => digits/60, vm-and, num:1${SAY:1}
    _[n]um:7X => digits/60, num:1${SAY:1}
    _[n]um:9X => digits/80, num:1${SAY:1}
    _[n]um:[2-9][1-9] =>  digits/${SAY:0:1}0, num:${SAY:1}
    _[n]um:100 => digits/hundred
    _[n]um:1XX => digits/hundred, num:${SAY:1}
    _[n]um:[2-9]00 => num:${SAY:0:1}, digits/hundred
    _[n]um:[2-9]XX => num:${SAY:0:1}, digits/hundred, num:${SAY:1}

    _[n]um:1000 => digits/thousand
    _[n]um:1XXX => digits/thousand, num:${SAY:1}
    _[n]um:[2-9]000 => num:${SAY:0:1}, digits/thousand
    _[n]um:[2-9]XXX => num:${SAY:0:1}, digits/thousand, num:${SAY:1}
    _[n]um:XX000 => num:${SAY:0:2}, digits/thousand
    _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2}
    _[n]um:XXX000 => num:${SAY:0:3}, digits/thousand
    _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousand, num:${SAY:3}

    _[n]um:1000000 => num:${SAY:0:1}, digits/million
    _[n]um:1XXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1}
    _[n]um:[2-9]000000 => num:${SAY:0:1}, digits/million
    _[n]um:[2-9]XXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1}
    _[n]um:XX000000 => num:${SAY:0:2}, digits/million
    _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/million, num:${SAY:2}
    _[n]um:XXX000000 => num:${SAY:0:3}, digits/million
    _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/million, num:${SAY:3}

    _datetime::. => date:AdBY 'digits/at' H 'hours' M 'perc':${SAY}
    _date::. => date:AdBY:${SAY}
    _time::. => date:H 'hours' M 'perc':${SAY}

    _pho[n]e:XXXX => num:${SAY:0:2}, num:${SAY:2:2}
    _pho[n]e:0[1-9]XXXXXXXX => num:${SAY:0:1}, num:${SAY:1:1}, num:${SAY:2:2}, num:${SAY:4:2}, num:${SAY:6:2}, num:${SAY:8:2}
    _pho[n]e:. => digit:${SAY}

[fr_cu](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}    ;以0开头的去掉0

    _[n]um:X => fr/digits/${SAY},fr/digits/yuan		;0-9
    _[n]um:1[0-6] => fr/digits/${SAY},fr/digits/yuan		;10-16
    _[n]um:1[7-9] => fr/digits/10, num:${SAY:1}		;17-19
    _[n]um:[2-6][0-2] => fr/digits/${SAY},fr/digits/yuan		;20-21
    _[n]um:[2-6][3-9] => fr/digits/${SAY:0:1}0, num:${SAY:1}		;
    _[n]um:7[0-9] => fr/digits/60, num:1${SAY:1}		;
    _[n]um:8[0-1] => fr/digits/${SAY},fr/digits/yuan		;
    _[n]um:8[2-9] => fr/digits/80, num:${SAY:1}		;
    _[n]um:9[0-9] => fr/digits/80, num:1${SAY:1}		;
    _[n]um:100 => fr/digits/100,fr/digits/yuan
    _[n]um:1XX => fr/digits/100, num:${SAY:1}
    _[n]um:[2-9]00 => fr/digits/${SAY:0:1}, fr/digits/100,fr/digits/yuan
    _[n]um:[2-9]XX => fr/digits/${SAY:0:1}, fr/digits/100, num:${SAY:1}
    _[n]um:1000 => fr/digits/1000,fr/digits/yuan
    _[n]um:1XXX => fr/digits/1000,num:${SAY:1}
    _[n]um:[2-9]XXX => fr/digits/${SAY:0:1}, fr/digits/1000, num:${SAY:1}

[es](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}    ;以0开头的去掉0

    _[n]um:X => es/digits/${SAY}		;0-9
    _[n]um:1[1-9] => es/digits/${SAY}		;11-19
    _[n]um:[1-9]0 => es/digits/${SAY}		;10,20,30...90
    _[n]um:[2-9][1-9] => es/digits/${SAY:0:1}0, num:${SAY:1}

    _[n]um:[1-9]00 => es/digits/${SAY}		;100,200,300...900
    _[n]um:[1-9]0[1-9] => es/digits/${SAY:0:1}00,num:${SAY:2:1}
    _[n]um:[1-9]1[0-9] => es/digits/${SAY:0:1}00,num:${SAY:1}
    _[n]um:[1-9][2-9]0 => es/digits/${SAY:0:1}00,num:${SAY:1}

    _[n]um:[1-9][2-9][1-9] => es/digits/${SAY:0:1}00,num:${SAY:1:1}0,es/digits/y,num:${SAY:2:1}

    _[n]um:1000 => es/digits/1000
    _[n]um:[1-9]XXX => es/digits/${SAY:0:1},es/digits/1000, num:${SAY:1}


[es_cu](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}    ;以0开头的去掉0

    _[n]um:X => es/digits/${SAY},es/digits/yuan
    _[n]um:1[1-9] => es/digits/${SAY},es/digits/yuan
    _[n]um:[1-9]0 => es/digits/${SAY},es/digits/yuan
    _[n]um:[2-9][1-9] => es/digits/${SAY:0:1}0, num:${SAY:1}

    _[n]um:[1-9]00 => es/digits/${SAY},es/digits/yuan
    _[n]um:[1-9]0[1-9] => es/digits/${SAY:0:1}00,num:${SAY:2:1}
    _[n]um:[1-9]1[0-9] => es/digits/${SAY:0:1}00,num:${SAY:1}
    _[n]um:[1-9][2-9]0 => es/digits/${SAY:0:1}00,num:${SAY:1}

    _[n]um:[1-9][2-9][1-9] => es/digits/${SAY:0:1}00,digits/${SAY:1:1}0,es/digits/y,num:${SAY:2:1}

    _[n]um:1000 => es/digits/1000,es/digits/yuan
    _[n]um:[1-9]XXX => es/digits/${SAY:0:1},es/digits/1000, num:${SAY:1}


[kr](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}    ;以0开头的去掉0

    _[n]um:X => kr/digits/${SAY}		;0-9
    _[n]um:10 => kr/digits/00    ;10
    _[n]um:1[1-9] => kr/digits/00, num:${SAY:1}    ;
    _[n]um:[2-9]0 => kr/digits/${SAY:0:1}, kr/digits/00        ; 20,30...90
    _[n]um:[2-9][1-9] => kr/digits/${SAY:0:1}, kr/digits/00, num:${SAY:1}  

    _[n]um:100 => kr/digits/100,kr/digits/yuan
    _[n]um:1XX => kr/digits/100,num:${SAY:1}

    _[n]um:[2-9]XX => kr/digits/${SAY:0:1}, kr/digits/100,num:${SAY:1}  


    _[n]um:1000 => kr/digits/1000
    _[n]um:1XXX => kr/digits/1000,num:${SAY:1}  

    _[n]um:[2-9]XXX => kr/digits/${SAY:0:1}, kr/digits/0000,num:${SAY:1}  

    _[n]um:10000 => kr/digits/10000
    _[n]um:1XXXX => kr/digits/10000,num:${SAY:1}  

    _[n]um:[2-9]XXXX => kr/digits/${SAY:0:1}, kr/digits/00000,num:${SAY:1}  

[kr_cu](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}    ;以0开头的去掉0

    _[n]um:X => kr/digits/${SAY},kr/digits/yuan
    _[n]um:10 => kr/digits/10,kr/digits/yuan
    _[n]um:1[1-9] => kr/digits/00, num:${SAY:1}
    _[n]um:[2-9]0 => kr/digits/${SAY:0:1}, kr/digits/00,kr/digits/yuan
    _[n]um:[2-9][1-9] => kr/digits/${SAY:0:1}, kr/digits/00, num:${SAY:1}  

    _[n]um:100 => kr/digits/100,kr/digits/yuan
    _[n]um:1XX => kr/digits/100,num:${SAY:1}

    _[n]um:[2-9]XX => kr/digits/${SAY:0:1}, kr/digits/000,num:${SAY:1}  

    _[n]um:1000 => kr/digits/1000,kr/digits/yuan
    _[n]um:1XXX => kr/digits/1000,num:${SAY:1}  

    _[n]um:[2-9]XXX => kr/digits/${SAY:0:1}, kr/digits/0000,num:${SAY:1}  

    _[n]um:10000 => kr/digits/10000,kr/digits/yuan
    _[n]um:1XXXX => kr/digits/10000,num:${SAY:1}  

    _[n]um:[2-9]XXXX => kr/digits/${SAY:0:1}, kr/digits/00000,num:${SAY:1}  

[jp](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}    ;以0开头的去掉0

    _[n]um:X => jp/digits/${SAY}		;0-9
    _[n]um:10 => jp/digits/00    ;10
    _[n]um:1[1-9] => jp/digits/00, num:${SAY:1}    ;
    _[n]um:[2-9]0 => jp/digits/${SAY:0:1}, jp/digits/10        ; 20,30...90
    _[n]um:[2-9][1-9] => jp/digits/${SAY:0:1}, jp/digits/10, num:${SAY:1}  

    _[n]um:100 => jp/digits/100
    _[n]um:1XX => jp/digits/100,num:${SAY:1}  

    _[n]um:[2-9]XX => jp/digits/${SAY:0:1}, jp/digits/100,num:${SAY:1}  

    _[n]um:1000 => jp/digits/1000
    _[n]um:1XXX => jp/digits/1000,num:${SAY:1}  

    _[n]um:[2-9]XXX => jp/digits/${SAY:0:1}, jp/digits/1000,num:${SAY:1}  

    _[n]um:10000 => jp/digits/10000
    _[n]um:1XXXX => jp/digits/10000,num:${SAY:1}  

    _[n]um:[2-9]XXXX => jp/digits/${SAY:0:1}, jp/digits/10000,num:${SAY:1}  

[jp_cu](date-base,digit-base)
    _[n]um:0. => num:${SAY:1}    ;以0开头的去掉0

    _[n]um:X => jp/digits/${SAY},jp/digits/yuan		;0-9
    _[n]um:10 => jp/digits/10,jp/digits/yuan    ;10
    _[n]um:1[1-9] => jp/digits/10, num:${SAY:1}    ;
    _[n]um:[2-9]0 => jp/digits/${SAY:0:1}, jp/digits/10,jp/digits/yuan        ; 20,30...90
    _[n]um:[2-9][1-9] => jp/digits/${SAY:0:1}, jp/digits/10, num:${SAY:1}  

    _[n]um:100 => jp/digits/1,jp/digits/100,jp/digits/yuan
    _[n]um:1XX => jp/digits/1,jp/digits/100,num:${SAY:1}

    _[n]um:[2-9]XX => jp/digits/${SAY:0:1}, jp/digits/100,num:${SAY:1}  

    _[n]um:1000 => jp/digits/1000,jp/digits/yuan
    _[n]um:1XXX => jp/digits/1000,num:${SAY:1}  

    _[n]um:[2-9]XXX => jp/digits/${SAY:0:1}, jp/digits/1000,num:${SAY:1}  

    _[n]um:10000 => jp/digits/10000,jp/digits/yuan
    _[n]um:1XXXX => jp/digits/10000,num:${SAY:1}  

    _[n]um:[2-9]XXXX => jp/digits/${SAY:0:1}, jp/digits/10000,num:${SAY:1}  
