diff --git a/lib/src/chinese/NumeralChi.gf b/lib/src/chinese/NumeralChi.gf index c287611e4..05704a023 100644 --- a/lib/src/chinese/NumeralChi.gf +++ b/lib/src/chinese/NumeralChi.gf @@ -16,10 +16,10 @@ oper Wan : Zero => Str = oper mkD : Str -> Str -> Str = \x,_ -> word x ; -- hiding the "formal" version -lincat Digit = {s,p : Str} ; -lincat Sub10 = {s,p : Str} ; -lincat Sub100 = {inh : Zero ; s,p : Bform => Str} ; -lincat Sub1000 = {inh : Zero ; s,p : Qform => Str} ; +lincat Digit = {s,p : Str} ; -- s/p: without/with classifier (er/liang) +lincat Sub10 = {s,p,t : Str} ; -- t: with "shi wan" +lincat Sub100 = {end0,beg0 : Zero ; s,p : Bform => Str} ; -- end0: ends with zeros, e.g. 20 ; beg0: begins with zeros, e.g. 02 +lincat Sub1000 = {end0,beg0 : Zero ; s,p : Qform => Str} ; -- end0: ends with zeros, e.g. 210 ; beg0: begins with zeros, e.g. 021 lincat Sub1000000 = {s,p : Str} ; lin num x0 = x0 ; @@ -43,89 +43,100 @@ lin n8 = lin n9 = {s,p = mkD "九" "玖"} ; lin pot01 = - {s,p = mkD "一" "壹"} ; + {s,p = mkD "一" "壹" ; t = []} ; -- t used in "(*yi) shi wan" lin pot0 d = - {s = d.s ; p = d.p} ; + {s,t = d.s ; p = d.p} ; lin pot110 = - {inh = nozero ; + {beg0 = nozero ; end0 = zero ; s,p = table { - shi => mkD "一十" "壹拾" ; + shi => mkD "十" "拾" ; shi0 => mkD "一十" "壹拾" ; - wan => mkD "一万" "壹万" ; - wan0 => mkD "一万" "壹万"}} ; + wan => mkD "一万" "壹万" ; + wan0 => mkD "一万" "壹万" + }} ; lin pot111 = - {inh = nozero ; + {beg0 = nozero ; end0 = nozero ; s,p = table { - shi => mkD "十一" "拾壹" ; + shi => mkD "十一" "拾壹" ; shi0 => mkD "一十一" "壹拾壹" ; - wan => mkD "一万一千" "壹万壹千" ; -- 11.16 by chenpeng wan => mkD "十一万" "拾壹万" ; - wan0 => mkD "一万一千" "壹万壹千"}} ; -- 11.16 by chenpeng wan0 => mkD "十一万" "拾壹万"}} ; + wan => mkD "一万一千" "壹万壹千" ; -- 11.16 by chenpeng wan => mkD "十一万" "拾壹万" ; + wan0 => mkD "一万一千" "壹万壹千" + }} ; -- 11.16 by chenpeng wan0 => mkD "十一万" "拾壹万"}} ; lin pot1to19 d = - {inh = nozero ; + {beg0 = nozero ; end0 = nozero ; s,p = table { - shi => mkD "一十" "壹拾" ++ d.s ; - shi0 => mkD "一十" "壹拾" ; - wan => mkD "一万" "壹万" ++ d.s ++ mkD "千" "仟" ; - wan0 => mkD "一万" "壹万" ++ d.s ++ mkD "千" "仟"}} ; + shi => mkD "十" "壹拾" ++ d.s ; + shi0 => mkD "一十" "壹拾" ++ d.s ; + wan => mkD "一万" "壹万" ++ d.s ++ mkD "千" "仟" ; + wan0 => mkD "一万" "壹万" ++ d.s ++ mkD "千" "仟" + }} ; lin pot0as1 n = - {inh = zero ; + {beg0 = zero ; end0 = nozero ; s = table { shi => n.s ; shi0 => n.s ; - wan => n.s ++ mkD "千" "仟" ; - wan0 => n.s ++ mkD "千" "仟"} ; + wan => n.p ++ mkD "千" "仟" ; + wan0 => n.p ++ mkD "千" "仟" + } ; p = table { shi => n.p ; shi0 => n.s ; - wan => n.s ++ mkD "千" "仟" ; - wan0 => n.s ++ mkD "千" "仟"} + wan => n.p ++ mkD "千" "仟" ; + wan0 => n.p ++ mkD "千" "仟" + } } ; lin pot1 d = - {inh = nozero ; -- inh = zero + {beg0 = nozero ; end0 = zero ; -- inh = nozero ; s,p = table { shi => d.s ++ mkD "十" "拾" ; shi0 => d.s ++ mkD "十" "拾" ; - wan0 => d.s ++ "万" ; - wan => d.s ++ "万"}} ; + wan0 => (d.p | d.s) ++ "万" ; + wan => (d.p | d.s) ++ "万" + }} ; lin pot1plus d e = - {inh = nozero ; + {beg0 = nozero ; end0 = nozero ; -- inh = nozero ; s,p = table { - shi => d.s ++ mkD "十" "拾" ++ e.s ; + shi => d.s ++ mkD "十" "拾" ++ e.s ; shi0 => d.s ++ mkD "十" "拾" ++ e.s ; - wan => d.s ++ "万" ++ e.s ++ mkD "千" "仟" ; - wan0 => d.s ++ "万" ++ e.s ++ mkD "千" "仟"}} ; + wan => (d.p | d.s) ++ "万" ++ e.s ++ mkD "千" "仟" ; + wan0 => (d.p | d.s) ++ "万" ++ e.s ++ mkD "千" "仟" + }} ; lin pot1as2 n = - {inh = zero ; + {beg0 = zero ; end0 = n.end0 ; -- inh = zero ; s = table { - bai => n.s ! shi ; - bai0 => n.s ! shi ; - shiwan => n.s ! wan ; - shiwan0 => n.s ! wan0} ; + bai => n.s ! shi ; + bai0 => n.s ! shi0 ; + shiwan => n.s ! wan ; + shiwan0 => n.s ! wan0 + } ; p = table { - bai => n.p ! shi ; - bai0 => n.s ! shi ; - shiwan => n.s ! wan ; - shiwan0 => n.s ! wan0}} ; + bai => n.p ! shi ; + bai0 => n.s ! shi0 ; + shiwan => n.s ! wan ; + shiwan0 => n.s ! wan0 + }} ; lin pot2 d = - {inh = zero ; + {beg0 = nozero ; end0 = zero ; -- inh = zero ; s,p = table { - bai => d.s ++ mkD "百" "佰" ; - bai0 => d.s ++ mkD "百" "佰" ; - shiwan0 => d.s ++ mkD "十万" "拾万" ; - shiwan => d.s ++ mkD "十万" "拾万"}} ; + bai => (d.p | d.s) ++ mkD "百" "佰" ; + bai0 => (d.p | d.s) ++ mkD "百" "佰" ; + shiwan0 => d.t ++ mkD "十万" "拾万" ; + shiwan => d.t ++ mkD "十万" "拾万" + }} ; lin pot2plus d e = - {inh = nozero ; + {beg0 = nozero ; end0 = e.end0 ; -- inh = nozero ; s,p = table { - bai => d.s ++ mkD "百" "佰" ++ (ling ! ) ++ e.s ! shi0 ; --why omit "百"? i add it /chenpeng - bai0 => d.s ++ mkD "百" "佰" ++ (ling ! ) ++ e.s ! shi0 ; --why omit "百"? i add it /chenpeng - shiwan => d.s ++ mkD "十" "拾" ++ (Wan ! (e.inh)) ++ e.s ! wan ; --why omit "十"? i add it /chenpeng - shiwan0 => d.s ++ mkD "十" "拾" ++ (Wan ! (e.inh)) ++ e.s ! wan0}} ;--why omit "十"? i add it /chenpeng + bai => (d.p | d.s) ++ mkD "百" "佰" ++ (ling ! ) ++ e.s ! shi0 ; --why omit "百"? i add it /chenpeng + bai0 => (d.p | d.s) ++ mkD "百" "佰" ++ (ling ! ) ++ e.s ! shi0 ; --why omit "百"? i add it /chenpeng + shiwan => d.t ++ mkD "十" "拾" ++ (Wan ! (e.end0)) ++ e.s ! wan ; --why omit "十"? i add it /chenpeng + shiwan0 => d.t ++ mkD "十" "拾" ++ (Wan ! (e.end0)) ++ e.s ! wan0 + }} ;--why omit "十"? i add it /chenpeng lin pot2as3 n = {s = n.s ! bai ; p = n.p ! bai} ; lin pot3 n = {s,p = n.s ! shiwan} ; lin pot3plus n m = - {s,p = (n.s ! shiwan0) ++ (ling ! ) ++ m.s ! bai0} ; + {s,p = (n.s ! shiwan0) ++ (ling ! ) ++ m.s ! bai0} ; -- numerals as sequences of digits diff --git a/lib/src/translator/DictionaryFin.gf b/lib/src/translator/DictionaryFin.gf index 40ba53b29..0f9ad45fa 100644 --- a/lib/src/translator/DictionaryFin.gf +++ b/lib/src/translator/DictionaryFin.gf @@ -23407,7 +23407,7 @@ lin hardihood_N = mkWN (k39 "uskallus") ; --UNCHK lin hardiness_N = mkWN (k39 "uskallus") ; --UNCHK lin hardinggrass_N = mkWN (compoundN "tuber" (k10 "osa")) "Phalaris" ; --UNCHK lin hardliner_N = mkWN (k10 "kannattaja") "kovan" "linjan" ; --UNCHK -lin hardly_AdV = mkAdV "tuskin" | adjAdv hard_2_A ; -- derived +lin hardly_AdV = mkAdV "tuskin" ; lin hardness_N = mkWN (k40 "jyrkkyys") ; --UNCHK lin hardscrabble_A = mkWA (k38 "vaivalloinen") ; --UNCHK lin hardship_N = mkWN (k40 "vakavuus") ; --UNCHK