forked from GitHub/gf-core
Bulgarian: formal and informal numerals + small bugfix
This commit is contained in:
@@ -5,19 +5,19 @@ concrete NumeralBul of Numeral = CatBul ** open Prelude, ResBul in {
|
|||||||
lincat
|
lincat
|
||||||
Digit = {s : DForm => CardOrd => Str} ;
|
Digit = {s : DForm => CardOrd => Str} ;
|
||||||
Sub10 = {s : DForm => CardOrd => Str; n : Number} ;
|
Sub10 = {s : DForm => CardOrd => Str; n : Number} ;
|
||||||
Sub100 = {s : CardOrd => Str; n : Number; i : Bool} ;
|
Sub100 = {s : CardOrd => NumF => Str; n : Number; i : Bool} ;
|
||||||
Sub1000 = {s : CardOrd => Str; n : Number; i : Bool} ;
|
Sub1000 = {s : CardOrd => NumF => Str; n : Number; i : Bool} ;
|
||||||
Sub1000000 = {s : CardOrd => Str; n : Number} ;
|
Sub1000000 = {s : CardOrd => NumF => Str; n : Number} ;
|
||||||
|
|
||||||
lin num x = x ;
|
lin num x = {s = \\c => x.s ! c ! Formal; n=x.n} ;
|
||||||
lin n2 = mkDigit "äâà" "äâàìà" "äâå" "âòîðè" "äâåñòà" ;
|
lin n2 = mkDigit "äâà" "äâàìà" "äâå" "âòîðè" "äâàéñåò" "äâåñòà" ;
|
||||||
lin n3 = mkDigit "òðè" "òðèìà" "òðè" "òðåòè" "òðèñòà" ;
|
lin n3 = mkDigit "òðè" "òðèìà" "òðè" "òðåòè" "òðèéñåò" "òðèñòà" ;
|
||||||
lin n4 = mkDigit "÷åòèðè" "÷åòèðèìà" "÷åòèðè" "÷åòâúðòè" "÷åòèðèñòîòèí" ;
|
lin n4 = mkDigit "÷åòèðè" "÷åòèðèìà" "÷åòèðè" "÷åòâúðòè" "÷åòèðèéñåò" "÷åòèðèñòîòèí" ;
|
||||||
lin n5 = mkDigit "ïåò" "ïåòèìà" "ïåò" "ïåòè" "ïåòñòîòèí" ;
|
lin n5 = mkDigit "ïåò" "ïåòèìà" "ïåò" "ïåòè" "ïåòäåñåò" "ïåòñòîòèí" ;
|
||||||
lin n6 = mkDigit "øåñò" "øåñòèìà" "øåñò" "øåñòè" "øåñòñòîòèí" ;
|
lin n6 = mkDigit "øåñò" "øåñòèìà" "øåñò" "øåñòè" "øåéñåò" "øåñòñòîòèí" ;
|
||||||
lin n7 = mkDigit "ñåäåì" "ñåäìèíà" "ñåäåì" "ñåäìè" "ñåäåìñòîòèí" ;
|
lin n7 = mkDigit "ñåäåì" "ñåäìèíà" "ñåäåì" "ñåäìè" "ñåäåìäåñåò" "ñåäåìñòîòèí" ;
|
||||||
lin n8 = mkDigit "îñåì" "îñìèíà" "îñåì" "îñìè" "îñåìñòîòèí" ;
|
lin n8 = mkDigit "îñåì" "îñìèíà" "îñåì" "îñìè" "îñåìäåñåò" "îñåìñòîòèí" ;
|
||||||
lin n9 = mkDigit "äåâåò" "äåâåòèìà" "äåâåò" "äåâåòè" "äåâåòñòîòèí" ;
|
lin n9 = mkDigit "äåâåò" "äåâåòèìà" "äåâåò" "äåâåòè" "äåâåòäåñåò" "äåâåòñòîòèí" ;
|
||||||
|
|
||||||
lin pot01 =
|
lin pot01 =
|
||||||
{s = table {
|
{s = table {
|
||||||
@@ -44,40 +44,43 @@ lin pot01 =
|
|||||||
APl Def => "ïúðâèòå"
|
APl Def => "ïúðâèòå"
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
teen => mkCardOrd "åäèíàäåñåò" "åäèíàäåñåòèìà" "åäèíàäåñåò" "åäèíàäåñåòè" ;
|
teen nf => case nf of {
|
||||||
ten => mkCardOrd "äåñåò" "äåñåòèìà" "äåñåò" "äåñåòè" ;
|
Formal => mkCardOrd "åäèíàäåñåò" "åäèíàäåñåòèìà" "åäèíàäåñåò" "åäèíàäåñåòè" ;
|
||||||
hundred => mkCardOrd "ñòî" "ñòîòèíà" "ñòî" "ñòîòåí"
|
Informal => mkCardOrd "åäèíàéñåò" "åäèíàéñåò" "åäèíàéñåò" "åäèíàéñòè"
|
||||||
|
} ;
|
||||||
|
ten nf => mkCardOrd "äåñåò" "äåñåòèìà" "äåñåò" "äåñåòè" ;
|
||||||
|
hundred => mkCardOrd100 "ñòî" "ñòîòåí"
|
||||||
}
|
}
|
||||||
;n = Sg
|
;n = Sg
|
||||||
} ;
|
} ;
|
||||||
lin pot0 d = d ** {n = Pl} ;
|
lin pot0 d = d ** {n = Pl} ;
|
||||||
|
|
||||||
lin pot110 = {s=pot01.s ! ten; n = Pl; i = True} ;
|
lin pot110 = {s=\\c,nf => pot01.s ! ten nf ! c; n = Pl; i = True} ;
|
||||||
lin pot111 = {s=pot01.s ! teen; n = Pl; i = True} ;
|
lin pot111 = {s=\\c,nf => pot01.s ! teen nf ! c; n = Pl; i = True} ;
|
||||||
lin pot1to19 d = {s = d.s ! teen; n = Pl; i = True} ;
|
lin pot1to19 d = {s = \\c,nf => d.s ! teen nf ! c; n = Pl; i = True} ;
|
||||||
lin pot0as1 n = {s = n.s ! unit; n = n.n; i = True} ;
|
lin pot0as1 n = {s = \\c,nf => n.s ! unit ! c; n = n.n; i = True} ;
|
||||||
lin pot1 d = {s = d.s ! ten; n = Pl; i = True} ;
|
lin pot1 d = {s = \\c,nf => d.s ! ten nf ! c; n = Pl; i = True} ;
|
||||||
lin pot1plus d e = {
|
lin pot1plus d e = {
|
||||||
s = \\c => d.s ! ten ! NCard DMascIndef ++ "è" ++ e.s ! unit ! c ; n = Pl; i = False} ;
|
s = \\c,nf => d.s ! ten nf ! NCard DMascIndef ++ "è" ++ e.s ! unit ! c ; n = Pl; i = False} ;
|
||||||
|
|
||||||
lin pot1as2 n = n ;
|
lin pot1as2 n = n ;
|
||||||
lin pot2 n = {s = \\c => n.s ! hundred ! c; n = Pl; i = True} ;
|
lin pot2 n = {s = \\c,nf => n.s ! hundred ! c; n = Pl; i = True} ;
|
||||||
lin pot2plus d e = {
|
lin pot2plus d e = {
|
||||||
s = \\c => d.s ! hundred ! NCard DMascIndef ++ case e.i of {False => []; True => "è"} ++ e.s ! c ;
|
s = \\c,nf => d.s ! hundred ! NCard DMascIndef ++ case e.i of {False => []; True => "è"} ++ e.s ! c ! nf ;
|
||||||
n = Pl ;
|
n = Pl ;
|
||||||
i = False
|
i = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
lin pot2as3 n = n ;
|
lin pot2as3 n = n ;
|
||||||
lin pot3 n = {
|
lin pot3 n = {
|
||||||
s = \\c => case n.n of {
|
s = \\c,nf => case n.n of {
|
||||||
Sg => mkCardOrd "õèëÿäà" "õèëÿäà" "õèëÿäà" "õèëÿäåí" ! c ;
|
Sg => mkCardOrd100 "õèëÿäà" "õèëÿäåí" ! c ;
|
||||||
Pl => n.s ! NCard DFemIndef ++ mkCardOrd "õèëÿäè" "õèëÿäè" "õèëÿäè" "õèëÿäåí" ! c
|
Pl => n.s ! NCard DFemIndef ! nf ++ mkCardOrd100 "õèëÿäè" "õèëÿäåí" ! c
|
||||||
} ;
|
} ;
|
||||||
n = Pl
|
n = Pl
|
||||||
} ;
|
} ;
|
||||||
lin pot3plus n m = {
|
lin pot3plus n m = {
|
||||||
s = \\c => (pot3 (n ** {lock_Sub1000=<>})).s ! NCard DMascIndef ++ case m.i of {False => []; True => "è"} ++ m.s ! c ;
|
s = \\c,nf => (pot3 (n ** {lock_Sub1000=<>})).s ! NCard DMascIndef ! nf ++ case m.i of {False => []; True => "è"} ++ m.s ! c ! nf ;
|
||||||
n = Pl
|
n = Pl
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -101,7 +101,8 @@ resource ResBul = ParamX ** open Prelude in {
|
|||||||
;
|
;
|
||||||
|
|
||||||
CardOrd = NCard DGenderSpecies | NOrd AForm ;
|
CardOrd = NCard DGenderSpecies | NOrd AForm ;
|
||||||
DForm = unit | teen | ten | hundred ;
|
NumF = Formal | Informal ;
|
||||||
|
DForm = unit | teen NumF | ten NumF | hundred ;
|
||||||
|
|
||||||
--2 Transformations between parameter types
|
--2 Transformations between parameter types
|
||||||
|
|
||||||
@@ -475,18 +476,24 @@ resource ResBul = ParamX ** open Prelude in {
|
|||||||
|
|
||||||
-- For $Numeral$.
|
-- For $Numeral$.
|
||||||
|
|
||||||
mkDigit : Str -> Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Str} =
|
mkDigit : Str -> Str -> Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Str} =
|
||||||
\dva, dvama, dve, vtori, dvesta ->
|
\dva, dvama, dve, vtori, dvaiset, dvesta ->
|
||||||
{s = table {
|
{s = table {
|
||||||
unit => mkCardOrd dva dvama dve vtori ;
|
unit => mkCardOrd dva dvama dve vtori ;
|
||||||
teen => mkCardOrd (dva+"íàäåñåò") (dva+"íàäåñåòèìà") (dva+"íàäåñåò") (dva+"íàäåñåòè") ;
|
teen nf => case nf of {
|
||||||
ten => mkCardOrd (dva+"äåñåò") (dva+"äåñåòèìà") (dva+"äåñåò") (dva+"äåñåòè") ;
|
Formal => mkCardOrd (dva+"íàäåñåò") (dva+"íàäåñåòèìà") (dva+"íàäåñåò") (dva+"íàäåñåòè") ;
|
||||||
|
Informal => mkCardOrd (dva+"íàéñåò") (dva+"íàéñåò") (dva+"íàéñåò") (dva+"íàéñòè")
|
||||||
|
} ;
|
||||||
|
ten nf => case nf of {
|
||||||
|
Formal => mkCardOrd (dva+"äåñåò") (dva+"äåñåòèìà") (dva+"äåñåò") (dva+"äåñåòè") ;
|
||||||
|
Informal => mkCardOrd dvaiset dvaiset dvaiset (dvaiset+"è")
|
||||||
|
} ;
|
||||||
hundred => let dvesten : Str
|
hundred => let dvesten : Str
|
||||||
= case dvesta of {
|
= case dvesta of {
|
||||||
dvest+"à" => dvest+"åí" ;
|
dvest+"à" => dvest+"åí" ;
|
||||||
chetiristot+"èí" => chetiristot+"åí"
|
chetiristot+"èí" => chetiristot+"åí"
|
||||||
}
|
}
|
||||||
in mkCardOrd dvesta dvesta dvesta dvesten
|
in mkCardOrd100 dvesta dvesten
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -509,6 +516,24 @@ resource ResBul = ParamX ** open Prelude in {
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkCardOrd100 : Str -> Str -> CardOrd => Str =
|
||||||
|
\sto, stoten ->
|
||||||
|
table {
|
||||||
|
NCard dg => sto ;
|
||||||
|
NOrd aform => let stotn = init (init stoten) + last stoten ;
|
||||||
|
in case aform of {
|
||||||
|
ASg Masc Indef => stoten ;
|
||||||
|
ASg Masc Def => stotn+"èÿ" ;
|
||||||
|
ASgMascDefNom => stotn+"èÿò" ;
|
||||||
|
ASg Fem Indef => stotn+"à" ;
|
||||||
|
ASg Fem Def => stotn+"àòà" ;
|
||||||
|
ASg Neut Indef => stotn+"î" ;
|
||||||
|
ASg Neut Def => stotn+"îòî" ;
|
||||||
|
APl Indef => stotn+"è" ;
|
||||||
|
APl Def => stotn+"èòå"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
digitGenderSpecies : Str -> Str -> Str -> DGenderSpecies => Str =
|
digitGenderSpecies : Str -> Str -> Str -> DGenderSpecies => Str =
|
||||||
\dva, dvama, dve
|
\dva, dvama, dve
|
||||||
-> let addDef : Str -> Str =
|
-> let addDef : Str -> Str =
|
||||||
|
|||||||
Reference in New Issue
Block a user