From 75fe9c21558c9a56113ebca1b4e31c683560b4cd Mon Sep 17 00:00:00 2001 From: "virk.shafqat" Date: Thu, 16 Dec 2010 15:58:04 +0000 Subject: [PATCH] refinements-2010-12-16 --- lib/src/hindustani/CatHindustani.gf | 5 +- lib/src/hindustani/CommonHindustani.gf | 12 +-- lib/src/hindustani/NounHindustani.gf | 2 +- lib/src/hindustani/PhraseHindustani.gf | 2 +- lib/src/hindustani/QuestionHindustani.gf | 12 +-- lib/src/hindustani/RelativeHindustani.gf | 2 +- lib/src/hindustani/ResHindustani.gf | 4 +- lib/src/hindustani/VerbHindustani.gf | 2 +- lib/src/urdu/DiffUrd.gf | 2 +- lib/src/urdu/IdiomUrd.gf | 9 ++- lib/src/urdu/LexiconUrd.gf | 72 +++++++++--------- lib/src/urdu/MorphoUrd.gf | 36 +++++++-- lib/src/urdu/ParadigmsUrd.gf | 97 +++++++++++------------- lib/src/urdu/StructuralUrd.gf | 55 +++++++------- lib/src/urdu/src/DiffUrd.gf | 2 +- lib/src/urdu/src/IdiomUrd.gf | 9 ++- lib/src/urdu/src/LexiconUrd.gf | 72 +++++++++--------- lib/src/urdu/src/MorphoUrd.gf | 36 +++++++-- lib/src/urdu/src/StructuralUrd.gf | 55 +++++++------- lib/src/urdu/translit.gfs | 1 + 20 files changed, 270 insertions(+), 217 deletions(-) diff --git a/lib/src/hindustani/CatHindustani.gf b/lib/src/hindustani/CatHindustani.gf index fd2922bc3..d6eb8e52c 100644 --- a/lib/src/hindustani/CatHindustani.gf +++ b/lib/src/hindustani/CatHindustani.gf @@ -24,8 +24,9 @@ incomplete concrete CatHindustani of Cat = ---- Question QCl = {s : CommonHindustani.VPHTense => Polarity => QForm => Str} ; IP = {s: Case => Str ; g : Gender ; n : Number}; - IDet = {s :Gender => Str ; n : Number} ; - IQuant = {s : Number => Str} ; + IDet = {s :Gender => Case => Str ; n : Number} ; +-- IQuant = {s : Number => Str} ; + IQuant = {s : Number => Gender => Case => Str} ; ---- Relative diff --git a/lib/src/hindustani/CommonHindustani.gf b/lib/src/hindustani/CommonHindustani.gf index 6314cc091..3bd656138 100644 --- a/lib/src/hindustani/CommonHindustani.gf +++ b/lib/src/hindustani/CommonHindustani.gf @@ -158,12 +158,12 @@ resource CommonHindustani = ParamX ** open Prelude,Predef in { Adjective = { s: Number => Gender => Case => Degree => Str }; regAdjective : Str -> Adjective; regAdjective x = case x of { - acch + ("a"|"aN") => mkAdjective x ("bht" ++ x) ("sab sE" ++ x) (acch + "E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E") - (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") - (acch +"E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sab sE" ++ acch + "E") - (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sab sE" ++ acch + "y"); + acch + ("a"|"aN") => mkAdjective x ("bht" ++ x) ("sb sE" ++ x) (acch + "E") ("bht" ++ acch + "E") ("sb sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sb sE" ++ acch + "E") + (acch + "y") ("bht" ++ acch + "y") ("sb sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sb sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sb sE" ++ acch + "y") + (acch +"E") ("bht" ++ acch + "E") ("sb sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sb sE" ++ acch + "E") (acch + "E") ("bht" ++ acch + "E") ("sb sE" ++ acch + "E") + (acch + "y") ("bht" ++ acch + "y") ("sb sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sb sE" ++ acch + "y") (acch + "y") ("bht" ++ acch + "y") ("sb sE" ++ acch + "y"); - _ => mkAdjective x x x x x x x x x + _ => mkAdjective x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x @@ -259,6 +259,8 @@ resource CommonHindustani = ParamX ** open Prelude,Predef in { VPTense VPFutr (Ag g n p) => {fin = copula CFuture n p g ; inf = v.s ! VF Subj p n g } ; VPTense VPPerf (Ag g n p) => { fin = [] ; inf = v.s ! Root ++ cka g n } ; VPStem => {fin = [] ; inf = v.s ! Root}; + VPInf => {fin = v.s ! Inf_Obl ; inf = v.s ! Root}; -- for V2V like sonE ky altja krna , check if it is being used anywhere else + VPImp => {fin = v.s ! VF Subj Pers3_Near Pl Masc ; inf = v.s ! Root}; _ => {fin = [] ; inf = v.s ! Root} }; obj = {s = [] ; a = defaultAgr} ; diff --git a/lib/src/hindustani/NounHindustani.gf b/lib/src/hindustani/NounHindustani.gf index 4b0184ac0..1ee42fb9e 100644 --- a/lib/src/hindustani/NounHindustani.gf +++ b/lib/src/hindustani/NounHindustani.gf @@ -19,7 +19,7 @@ incomplete concrete NounHindustani of Noun = } ; PPartNP np v2 = { - s = \\c => v2.s ! VF Imperf Pers1 Sg Fem ++ np.s ! c ; + s = \\c => v2.s ! VF Perf (fromAgr np.a).p (fromAgr np.a).n (fromAgr np.a).g ++ np.s ! c ; a = np.a } ; diff --git a/lib/src/hindustani/PhraseHindustani.gf b/lib/src/hindustani/PhraseHindustani.gf index f6c25b5b9..43074b931 100644 --- a/lib/src/hindustani/PhraseHindustani.gf +++ b/lib/src/hindustani/PhraseHindustani.gf @@ -14,7 +14,7 @@ incomplete concrete PhraseHindustani of Phrase = UttIP ip = {s = ip.s ! Dir} ; --- Acc also UttIAdv iadv = iadv ; UttNP np = {s = np.s ! NPC Dir} ; - UttVP vp = {s = infVP False vp (agrP3 Masc Sg)} ; + UttVP vp = {s = vp.ad ++ infVP False vp (agrP3 Masc Sg) ++ vp.embComp} ; UttAdv adv = {s = adv.s ! Masc} ; UttCN cn = {s = cn.s ! Sg ! Dir}; UttCard n = n ; diff --git a/lib/src/hindustani/QuestionHindustani.gf b/lib/src/hindustani/QuestionHindustani.gf index a13c78836..c2866aa42 100644 --- a/lib/src/hindustani/QuestionHindustani.gf +++ b/lib/src/hindustani/QuestionHindustani.gf @@ -19,8 +19,8 @@ incomplete concrete QuestionHindustani of Question = qp1 = qp.s ! Dir; qp2 = qp.s ! Obl ++ nE in { s = \\t,p,o => case t of { - VPImpPast => qp2 ++ cl.s ! t ! p ! ODir; - _ => qp1 ++ cl.s ! t ! p ! ODir + VPImpPast => case vp.subj of {VIntrans => qp1 ++ cl.s ! t ! p ! ODir; _ => qp2 ++ cl.s ! t ! p ! ODir}; + _ => qp1 ++ cl.s ! t ! p ! ODir } }; QuestSlash ip slash = @@ -46,7 +46,7 @@ incomplete concrete QuestionHindustani of Question = } }; - PrepIP p ip = {s = ip.s ! Voc ++ p.s ! ip.g} ; + PrepIP p ip = {s = ip.s ! Obl ++ p.s ! ip.g} ; AdvIP ip adv = { s = \\c => adv.s ! ip.g ++ ip.s ! c ; @@ -55,19 +55,19 @@ incomplete concrete QuestionHindustani of Question = } ; IdetCN idet cn = { - s = \\c => idet.s ! cn.g ++ cn.s ! idet.n ! c ; + s = \\c => idet.s ! cn.g ! c ++ cn.s ! idet.n ! c ; g = cn.g; n = idet.n; } ; IdetIP idet = { - s = \\_ => idet.s ! Masc ; + s = \\c => idet.s ! Masc ! c ; n = idet.n; g = Masc; } ; IdetQuant iqant num = { - s = \\g => iqant.s ! num.n ++ num.s ; + s = \\g,c => iqant.s ! num.n ! g ! c ++ num.s ; n = num.n } ; diff --git a/lib/src/hindustani/RelativeHindustani.gf b/lib/src/hindustani/RelativeHindustani.gf index 16d6596fa..55d3f5de4 100644 --- a/lib/src/hindustani/RelativeHindustani.gf +++ b/lib/src/hindustani/RelativeHindustani.gf @@ -35,7 +35,7 @@ incomplete concrete RelativeHindustani of Relative = } ; RelSlash rp slash = { - s = \\t,p,o,agr => rp.s ! (giveNumber agr) ! Dir ++ slash.c2.s ++ slash.s ! t ! p ! o ;--case t of { + s = \\t,p,o,agr => rp.s ! (giveNumber agr) ! Obl ++ slash.c2.s ++ slash.s ! t ! p ! o ;--case t of { -- VPImpPast => rp.s ! (giveNumber agr) Obl ++ slash.c2.s ++ slash.s ! t ! p ! o ; -- _ => rp.s ! (giveNumber agr) Dir ++ slash.c2.s ++ slash.s ! t ! p ! o -- }; diff --git a/lib/src/hindustani/ResHindustani.gf b/lib/src/hindustani/ResHindustani.gf index e12992d31..6dd7e4063 100644 --- a/lib/src/hindustani/ResHindustani.gf +++ b/lib/src/hindustani/ResHindustani.gf @@ -267,7 +267,7 @@ param VPPerfPresCont => {fin = copula CPresent n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ; VPPerfPastCont => {fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ; VPPerfFutCont => {fin = copula CFuture n p g ; inf = (vp.s ! VPStem).inf ++ raha g n ++ hw p n } ; - VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "xayd" } + VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "Xayd" } }; @@ -337,7 +337,7 @@ param infVV : Bool -> VPH -> Str = \isAux,vp -> case isAux of {False => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ vp.inf ; True => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ (vp.s ! VPImp).fin } ; infV2V : Bool -> VPH -> Str = \isAux,vp -> - case isAux of {False => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ vp.inf ++ "ky" ; True => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ (vp.s ! VPImp).fin ++ "ky"}; + case isAux of {False => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ (vp.s ! VPInf).fin ++ "ky" ; True => vp.obj.s ++ (vp.comp ! (toAgr Sg Pers1 Masc)) ++ (vp.s ! VPImp).fin ++ "ky"}; insertObject : NP -> VPHSlash -> VPH = \np,vps -> { diff --git a/lib/src/hindustani/VerbHindustani.gf b/lib/src/hindustani/VerbHindustani.gf index ab49317ba..bb162fa7a 100644 --- a/lib/src/hindustani/VerbHindustani.gf +++ b/lib/src/hindustani/VerbHindustani.gf @@ -34,7 +34,7 @@ incomplete concrete VerbHindustani of Verb = CatHindustani ** open CommonHindust ReflVP v = insertObjPre (\\_ => RefPron) v ; PassV2 v = predV v ; -- need to be fixed CompAP ap ={s = \\a => ap.s ! giveNumber a ! giveGender a ! Dir ! Posit } ; - CompNP np = {s = \\_ => np.s ! NPObj} ; + CompNP np = {s = \\_ => np.s ! NPC Dir} ; CompAdv adv = {s = \\a => adv.s ! giveGender a} ; CompCN cn = {s = \\a => cn.s ! giveNumber a ! Dir} ; diff --git a/lib/src/urdu/DiffUrd.gf b/lib/src/urdu/DiffUrd.gf index 0bead3c38..2dcd641a9 100644 --- a/lib/src/urdu/DiffUrd.gf +++ b/lib/src/urdu/DiffUrd.gf @@ -81,7 +81,7 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; VPPerfPresCont => {fin = copula CPresent n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ; VPPerfPastCont => {fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ; VPPerfFutCont => {fin = copula CFuture n p g ; inf = (vp.s ! VPStem).inf ++ raha g n ++ hw p n } ; - VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "ژاید" } + VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "شاید" } }; diff --git a/lib/src/urdu/IdiomUrd.gf b/lib/src/urdu/IdiomUrd.gf index 81718a447..6d3f188e8 100644 --- a/lib/src/urdu/IdiomUrd.gf +++ b/lib/src/urdu/IdiomUrd.gf @@ -16,7 +16,7 @@ concrete IdiomUrd of Idiom = CatUrd ** open Prelude,Predef, ResUrd,ParamX,Common ExistNP np = mkSClause "وہاں" (agrP3 (fromAgr np.a).g (fromAgr np.a).n) - (insertObj (\\_ => np.s ! NPC Obl) (predAux auxBe)) ; + (insertObj (\\_ => np.s ! NPC Dir) (predAux auxBe)) ; ExistIP ip = let cl = mkSClause ("وہاں" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe); @@ -30,9 +30,10 @@ concrete IdiomUrd of Idiom = CatUrd ** open Prelude,Predef, ResUrd,ParamX,Common -- ProgrVP vp = insertObj (\\a => vp.obj.s ++ vp.ad ++ vp.comp ! a ++ (vp.s ! VPStem).inf ++ raha (fromAgr a).g (fromAgr a).n ) (predAux auxBe) ; ProgrVP vp = (predProg vp) ; - - ImpPl1 vp = {s = "آو" ++ infVP True vp (agrP1 Masc Pl)} ; - ImpP3 np vp = {s = np.s!NPC Dir ++ "كو" ++ (vp.s ! VPImp ).inf ++ "دو"}; +-- ImpPl1 vp = {s = "آو" ++ infVP True vp (agrP1 Masc Pl)} ; -- inf form is not used e.g Aw swna instead Aw swyyN (Imp.fin) + ImpPl1 vp = {s = "آو" ++ (vp.s ! VPImp).fin} ; +-- ImpP3 np vp = {s = np.s!NPC Dir ++ "كو" ++ (vp.s ! VPImp ).inf ++ "دو"}; here VPImp form is not correct e.g jan ko sw do, rather jan ko swnE do, and swnE is stored in vp.VPInf.fin + ImpP3 np vp = {s = np.s!NPC Dir ++ "كو" ++ (vp.s ! VPInf ).fin ++ "دو"}; } diff --git a/lib/src/urdu/LexiconUrd.gf b/lib/src/urdu/LexiconUrd.gf index e092f01ed..4a471b344 100644 --- a/lib/src/urdu/LexiconUrd.gf +++ b/lib/src/urdu/LexiconUrd.gf @@ -17,30 +17,30 @@ concrete LexiconUrd of Lexicon = CatUrd ** ask_V2Q = mkV2 (mkV "پوچھنا") ; baby_N = mkN "بچہ" ; bad_A = mkA "برا" ; - bank_N = mkN "بانك" ; + bank_N = mkN "بینك" ; beautiful_A = mkA "خوبصورت" ; become_VA = mkV "بننا"; - beer_N = mkN "بععر" ; + beer_N = mkN "بییر" ; beg_V2V = mkV2V (compoundV "التجا" (mkV "كرنا")) "سے" "كہ" False; big_A = mkA "بڑا" ; - bike_N = mkN "سایچل" feminine ; + bike_N = mkN "سایكل" feminine ; bird_N = mkN "پرندہ" ; black_A = mkA "كالا" ; blue_A = mkA "نیلا" ; boat_N = mkN "كشتی" ; book_N = mkN "كتاب" feminine ; boot_N = mkN "جوتا" ; - boss_N = mkN "صاہب" ; + boss_N = mkN "صاحب" ; boy_N = mkN "لڑكا" ; - bread_N = mkN "روتی" ; + bread_N = mkN "روٹی" ; break_V2 = mkV2 (mkV "توڑنا") ; broad_A = mkA "كھلا" ; brother_N2 = mkN2 (mkN "بھای") (mkPrep "كا" "كا") "كے" ; --not correct brown_A = mkA "نسواری" ; butter_N = mkN "مكھن" ; - buy_V2 = mkV2 (mkV "خریدنا"); + buy_V2 = mkV2 (mkV "خریدنا") "كو"; camera_N = mkN "كیمرہ" ; - cap_N = mkN "توپی" ; + cap_N = mkN "ٹوپی" ; car_N = mkN "گاڑی" ; carpet_N = mkN "تپائی" ; cat_N = mkN "بلی" ; @@ -49,7 +49,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** cheese_N = mkN "پنیر" feminine ; child_N = mkN "بچہ" ; church_N = mkCmpdNoun "گرجا" (mkN "گھر") ; - city_N = mkN "شہر" ; + city_N = mkN "شہر" ; clean_A = mkA "صاف" ; clever_A = mkA "ہوشیار" ; close_V2 = mkV2 (compoundV "بند" do_V2); @@ -65,7 +65,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** distance_N3 = mkN3 (mkN "فاصلہ") (mkPrep "كا" "كا") "كے" "سے" ; doctor_N = mkN "معالج" ; dog_N = mkN "كتا" ; - door_N = mkN "دروزہ" ; + door_N = mkN "دروازہ" ; drink_V2 = mkV2 (mkV "پینا"); easy_A2V = mkA "آسان" "" ; eat_V2 = mkV2 (mkV "كھانا") "" ; @@ -73,13 +73,13 @@ concrete LexiconUrd of Lexicon = CatUrd ** enemy_N = mkN "دشمن" ; factory_N = mkN "كارخانہ" ; father_N2 = mkN2 (mkN "ابا") (mkPrep "كا" "كا") "كے" ; - fear_VS = mkV "درنا"; + fear_VS = mkV "ڈرنا"; find_V2 = mkV2 (mkV "پانا") ; fish_N = mkN "مچھلی" ; floor_N = mkN "فرش" ; forget_V2 = mkV2 (mkV "بھولنا") ; - fridge_N = mkN "فریگ" ; --- friend_N = mkN "دوست" masculine ; + fridge_N = mkN "فریج" ; + friend_N = mkN "دوست" masculine ; fruit_N = mkN "پھل" ; -- fun_AV = mkAV (regA "f?ن") ; garden_N = mkN "باغ" ; @@ -91,7 +91,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** green_A = mkA "سبز" ; harbour_N = mkCmpdNoun "بندر" (mkN "گاہ") ; hate_V2 = mkV2 (compoundV "نفرت" do_V2) ; - hat_N = mkN "توپی" ; + hat_N = mkN "ٹوپی" ; -- have_V2 = dirV2 (mk5V "ہa?ع" "ہاس" "ہاد" "ہاد" "ہa??نگ") ; hear_V2 = mkV2 (mkV "سننا") ; hill_N = mkN "پہاڑی" ; @@ -118,8 +118,8 @@ concrete LexiconUrd of Lexicon = CatUrd ** lose_V2 = mkV2 (compoundV "كھو" do_V2) ; love_N = mkN "محبت" ; love_V2 = mkV2 (compoundV "پیار" do_V2) "كو"; - man_N = mkN "آدمی" ; -- not correct according to rules should be discussed - married_A2 = mkA "شادy?كرنا" "سے" ; + man_N = mkN "آدمی" "آدمی" "آدمی" "آدمی" "آدمیوں" "آدمیو" masculine ; + married_A2 = mkA "[شادی كرنa]" "سے" ; meat_N = mkN "گوشت" ; milk_N = mkN "دودھ" ; moon_N = mkN "چاند" ; @@ -162,10 +162,10 @@ concrete LexiconUrd of Lexicon = CatUrd ** seek_V2 = mkV2 (compoundV "تلاش" do_V2) ; see_V2 = mkV2 (mkV "دیكھنا") ; sell_V3 = mkV3 (mkV "بیچنا") "كو" ""; - send_V3 = mkV3 (mkV "بھیجنا") "كو" ""; + send_V3 = mkV3 (mkV "بھیجنا") "كو" "كو"; sheep_N = mkN "بھیڑ" feminine ; ship_N = mkN "جہاز" ; - shirt_N = mkN "قمیض" feminine; + shirt_N = mkN "قمیص" feminine; shoe_N = mkN "جوتا" ; shop_N = mkN "دوكان" feminine ; short_A = mkA "چھوٹا" ; @@ -177,7 +177,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** sock_N = mkN "جراب" feminine ; speak_V2 = mkV2 (mkV "بولنا") ; star_N = mkN "ستارا" ; - steel_N = mkN "ستیل" ; + steel_N = mkN "سٹیل" ; stone_N = mkN "پتھر" ; stove_N = mkN "چولہا" ; student_N = mkCmpdNoun "طالب" (mkN "علم") ; @@ -186,10 +186,10 @@ concrete LexiconUrd of Lexicon = CatUrd ** switch8off_V2 = mkV2 (mkV "چلانا") ; switch8on_V2 = mkV2 (compoundV "بند" do_V2) ; table_N = mkN "میز" feminine ; - talk_V3 = mkV3 (mkV "بولنا") "سے" "كE?بارE?معں"; - teacher_N = mkN "?ستاد" ; + talk_V3 = mkV3 (mkV "بولنا") "سے" "[كے بارے میN]"; + teacher_N = mkN "استاد" ; teach_V2 = mkV2 (mkV "پڑھنا") ; - television_N = mkN "تعلیویزن" ; + television_N = mkN "تیلیویژن" ; thick_A = mkA "موٹا" ; thin_A = mkA "پتلا" ; train_N = mkN "گاڑی" ; @@ -211,14 +211,14 @@ concrete LexiconUrd of Lexicon = CatUrd ** wine_N = mkN "شراب" feminine ; win_V2 = mkV2 (mkV "جیتنا") ; woman_N = mkN "عورت" feminine ; - wonder_VQ = compoundV "حعران" (mkV "ہونا") ; + wonder_VQ = compoundV "حیران" (mkV "ہونا") ; wood_N = mkN "لكڑی" ; write_V2 = mkV2 (mkV "لكھنا") ; yellow_A = mkA "پیلا" ; young_A = mkA "جوان" ; do_V2 = mkV2 (mkV "كرنا") ; now_Adv = mkAdv "اب" ; - already_Adv = mkAdv "پہلE?ہی" ; + already_Adv = mkAdv "[پہلے ہy]" ; song_N = mkN "گانا" ; add_V3 = mkV3 (compoundV "اضافہ" do_V2) "" "" ; number_N = mkN "ہندسہ" ; @@ -229,9 +229,9 @@ concrete LexiconUrd of Lexicon = CatUrd ** left_Ord = {s = "بایاں" ; n = singular}; right_Ord = {s= "دایاں" ; n = singular}; far_Adv = mkAdv "دور" ; - correct_A = mkA "صیہ" ; + correct_A = mkA "صیح" ; dry_A = mkA "خشك" ; - dull_A = mkA "ناl?ك" ; + dull_A = mkA "نالایق" ; full_A = mkA "مكمل" ; heavy_A = mkA "بھاری" ; near_A = mkA "قریب" ; @@ -257,26 +257,26 @@ concrete LexiconUrd of Lexicon = CatUrd ** earth_N = mkN "زمین" feminine ; egg_N = mkN "انڈہ" ; eye_N = mkN "آنكھ" feminine ; - fat_N = mkN "موتا" ; + fat_N = mkN "موٹا" ; feather_N = mkN "پر" ; fingernail_N = mkN "ناخن" ; fire_N = mkN "آگ" feminine ; flower_N = mkN "پھول" ; fog_N = mkN "دھند" feminine ; foot_N = mkN "پاوں" ; -- not properly covered need to be discussed - forest_N = mkN "نجگل" ; - grass_N = mkN "گھس" feminine ; - guts_N = mkN "g?ت" ; -- FIXME: no singular + forest_N = mkN "جنگل" ; + grass_N = mkN "گھاس" feminine ; + guts_N = mkN "گٹ" ; -- FIXME: no singular hair_N = mkN "بال" ; hand_N = mkN "ہاتھ" ; head_N = mkN "سر" ; heart_N = mkN "دل" ; - horn_N = mkN "گھنتی" ; + horn_N = mkN "گھنٹی" ; husband_N = mkN "شوہر" ; ice_N = mkN "برف" feminine ; knee_N = mkN "كہنی" ; leaf_N = mkN "پتہ" ; - leg_N = mkN "تانگ" feminine ; + leg_N = mkN "ٹانگ" feminine ; liver_N = mkN "جگر" ; louse_N = mkN "گھر" ; mouth_N = mkN "منہ" ; @@ -287,7 +287,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** person_N = mkN "شخص" ; rain_N = mkN "بارش" feminine ; road_N = mkN "سڑك" ; - root_N = mkN "گڑ" feminine ; + root_N = mkN "جڑ" feminine ; rope_N = mkN "رسی" ; salt_N = mkN "نمك" feminine ; sand_N = mkN "ریت" feminine ; @@ -317,7 +317,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** give_V3 = mkV3 (mkV "دینا") "كو" ""; laugh_V = mkV "ہنسنا" ; -- lie_N = mkN "جھوت" masculine ; - lie_V = compoundV "جھوت" (mkV "بولنا" ); + lie_V = compoundV "جھوٹ" (mkV "بولنا" ); play_V = mkV "كھیلنا" ; sew_V = mkV "سینا" ; sing_V = mkV "گانا" ; @@ -330,12 +330,12 @@ concrete LexiconUrd of Lexicon = CatUrd ** think_V = mkV "سوچنا" ; turn_V = mkV "مڑنا"; vomit_V = compoundV "التی" (mkV "كرنا") ; - bite_V2 = mkV2 (mkV "كاتنا") ; + bite_V2 = mkV2 (mkV "كاٹنا") ; count_V2 = mkV2 (mkV "گننا") ; cut_V2 = mkV2 (mkV "كاتنا") ; fear_V2 = mkV2 (mkV "ڈرنا") ; fight_V2 = mkV2 (mkV "لڑنا") ; - hit_V2 = mkV2 (compoundV "تھوكر" (mkV "مارنا" )); + hit_V2 = mkV2 (compoundV "ٹھوكر" (mkV "مارنا" )); hold_V2 = mkV2 (mkV "پكڑنا") ; hunt_V2 = mkV2 (compoundV "شكار" do_V2); kill_V2 = mkV2 (compoundV "مار" (mkV "ڈالنا" )) ; @@ -343,7 +343,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** push_V2 = mkV2 (mkV "دھكیلنا") "كو" ; rub_V2 = mkV2 (mkV "رگڑنا") ; scratch_V2 = mkV2 (mkV "كھرچنا") "كو" ; - split_V2 = mkV2 (mkV "بانتا") "كو" ; + split_V2 = mkV2 (mkV "بانٹنا") "كو" ; -- squeeze_V2 = dirV2 (regV "سq?ععزع") ; -- stab_V2 = dirV2 (regDuplV "ستاب") ; suck_V2 = mkV2 (mkV "چوسنا") ; diff --git a/lib/src/urdu/MorphoUrd.gf b/lib/src/urdu/MorphoUrd.gf index 29d8c02a6..9a32e5171 100644 --- a/lib/src/urdu/MorphoUrd.gf +++ b/lib/src/urdu/MorphoUrd.gf @@ -170,7 +170,7 @@ oper (bhao) (bhao) (bhao) Masc ; ----2 Determiners - IDeterminer = {s:Gender => Str ; n : Number}; + IDeterminer = {s:Gender => Case => Str ; n : Number}; makeDet : Str -> Str -> Str -> Str -> Number -> Determiner = \s1,s2,s3,s4,n -> { s = table { Sg => table { @@ -188,11 +188,37 @@ oper makeIDet : Str -> Str -> Number -> IDeterminer = \s1,s2,n -> { s = table { - Masc => s1; - Fem => s2 + Masc => table {_ =>s1}; + Fem => table {_ =>s2} }; n = n - }; + }; + +-- IQuant + +makeIQuant : Str -> {s : Number => Gender => Case => Str} = \str -> { + s = table { + Sg => table { + Masc => table { + Dir => str ++ "سا" ; + _ => str ++ "سے" + + }; + Fem => table { + _ => str ++ "سی" + } + }; + Pl => table { + Masc => table { + _ => str ++ "سے" + }; + Fem => table { + _ => str ++ "سی" + } + } + } + }; + -- Proposition @@ -379,7 +405,7 @@ oper => root+"تیں"; => root+"تا"; => root+"تی"; - => root+"تع"; + => root+"تے"; => root+"تیں" } diff --git a/lib/src/urdu/ParadigmsUrd.gf b/lib/src/urdu/ParadigmsUrd.gf index 4fe80dcad..904bbd9c0 100644 --- a/lib/src/urdu/ParadigmsUrd.gf +++ b/lib/src/urdu/ParadigmsUrd.gf @@ -27,46 +27,42 @@ oper --2 Nouns mkN = overload { - mkN : Str -> N + mkN : Str -> N -- Regular nouns like lRka, gender is judged from noun ending = \s -> regNoun s ** {lock_N = <>} ; - mkN : Str -> Gender -> N + mkN : Str -> Gender -> N -- nouns whose gender is irregular like Admy = \s,g -> reggNoun s g ** {lock_N = <>} ; - mkN : (x1,_,_,_,_,x6 : Str) -> Gender -> N + mkN : (x1,_,_,_,_,x6 : Str) -> Gender -> N -- worst case = \sd,so,sv,pd,po,pv,g -> mkNoun sd so sv pd po pv g ** {lock_N = <>} ; } ; - mkN2 : N -> Prep -> Str -> N2; + mkN2 : N -> Prep -> Str -> N2; -- e.g maN ky mkN2 = \n,p,c -> n ** {lock_N2 = <> ; c2 = p.s ! n.g ; c3 = c } ; - mkN3 : N -> Prep -> Str -> Str-> N3 ; + mkN3 : N -> Prep -> Str -> Str-> N3 ; -- e.g faSlh - sE - ka mkN3 = \n,p,q,r -> n ** {lock_N3 = <> ; c2 = p.s ! n.g ; c3 = q ; c4 = r} ; + + -- Compound Nouns - mkCmpdNoun : Str -> N -> N + mkCmpdNoun : Str -> N -> N -- e.g t-alb elm = \s,noun -> {s =\\n,c => s ++ noun.s ! n ! c ; g = noun.g ; lock_N = <>}; -- Proper names - mkPN : Str -> PN - = \s -> let n = regNoun s in {s = n.s ! Sg ; g = n.g ; lock_PN = <>} ; - personalPN : Str -> Str -> Str -> Str -> Number -> Gender -> UPerson -> Pron --% - = \s1,s2,s3,sp,nn,g,p -> let n = mkPron s1 s2 s3 in {s = n.s ; a = toAgr nn p g ; ps = sp ; lock_Pron = <>}; - demoPN : Str -> Str -> Str -> Quant --% - = \s1,s2,s3 -> let n = makeDemonPronForm s1 s2 s3 in {s = n.s ; a = defaultAgr ; lock_Quant = <>}; - mkDet : Str -> Str -> Str -> Str -> Number -> Det --% - = \s1,s2,s3,s4,nb -> let dt = makeDet s1 s2 s3 s4 nb in {s = dt.s ; n = nb ; lock_Det = <>}; - mkIP : (x1,x2,x3:Str) -> Number -> Gender -> IP --% - = \s1,s2,s3,n,g -> let p = mkIntPronForm s1 s2 s3 in { s = p.s ; n = n ; g = g ; lock_IP = <>}; + mkPN : Str -> PN = \s -> let n = regNoun s in {s = n.s ! Sg ; g = n.g ; lock_PN = <>} ; + personalPN : Str -> Str -> Str -> Str -> Number -> Gender -> UPerson -> Pron = \s1,s2,s3,sp,nn,g,p -> let n = mkPron s1 s2 s3 in {s = n.s ; a = toAgr nn p g ; ps = sp ; lock_Pron = <>}; + demoPN : Str -> Str -> Str -> Quant = \s1,s2,s3 -> let n = makeDemonPronForm s1 s2 s3 in {s = n.s ; a = defaultAgr ; lock_Quant = <>}; + mkDet : Str -> Str -> Str -> Str -> Number -> Det = \s1,s2,s3,s4,nb -> let dt = makeDet s1 s2 s3 s4 nb in {s = dt.s ; n = nb ; lock_Det = <>}; + mkIP : (x1,x2,x3:Str) -> Number -> Gender -> IP = \s1,s2,s3,n,g -> let p = mkIntPronForm s1 s2 s3 in { s = p.s ; n = n ; g = g ; lock_IP = <>}; -- AdN - mkAdN : Str -> AdN --% - = \s -> {s = s ; p = False ; lock_AdN = <>} ; + mkAdN : Str -> AdN = \s -> {s = s ; p = False ; lock_AdN = <>} ; --2 Adjectives mkA = overload { - mkA : Str-> A + mkA : Str-> A -- e.g ach'a = \s -> regAdjective s ** {lock_A = <>} ; - mkA : Str -> Str -> A2 + mkA : Str -> Str -> A2 -- e.g sE Xady krna = \a,c -> let n = regAdjective a in {s = n.s; c2 = c} ** {lock_A2 = <>} ; } ; mkA2 : A -> Str -> A2 ; @@ -74,42 +70,42 @@ oper --2 Verbs - mkV : Str -> V + mkV : Str -> V -- regular verbs like swna = \s -> mkVerb s ** {lock_V = <>} ; mkV2 = overload { - mkV2 : Str -> V2 + mkV2 : Str -> V2 -- e.g pyna = \s -> mkVerb s ** {c2 = {s = [] ; c = VTrans} ; lock_V2 = <>} ; - mkV2 : V -> V2 + mkV2 : V -> V2 -- e.g pyna = \v -> v ** {c2 = {s = [] ; c = VTrans} ; lock_V2 = <>} ; - mkV2 : V -> Str -> V2 + mkV2 : V -> Str -> V2 -- e.g bnd krna = \v,p -> v ** {c2 = {s = p ; c = VTrans} ; lock_V2 = <>} ; } ; - dirV2 : V -> V2 = \v -> v ** {c2 = {s = [] ; c = VTrans} ; lock_V2 = <>} ; --% + dirV2 : V -> V2 = \v -> v ** {c2 = {s = [] ; c = VTrans} ; lock_V2 = <>} ; - mkV3 : V -> Str -> Str -> V3; + mkV3 : V -> Str -> Str -> V3; -- e.g bycna mkV3 v p q = v ** { c2 = p ; c3 = q ; lock_V3 = <>} ; - mkV2V : V -> Str -> Str -> Bool -> V2V ; + mkV2V : V -> Str -> Str -> Bool -> V2V ; -- e.g eltja krna - sE - kw mkV2V v s1 s2 b = v ** {isAux = b ; c1 = s1 ; c2 = s2 ; lock_V2V = <>} ; dirdirV3 : V -> V3 ; dirdirV3 v = v ** { c2 = [] ; c3 = [] ; lock_V3 = <>} ; -- compund verbs compoundV = overload { - compoundV : Str -> V -> V - = \s,v -> {s = \\vf => s ++ v.s ! vf ; lock_V = <>} ; - compoundV : Str -> V2 -> V - = \s,v -> {s = \\vf => s ++ v.s ! vf ; lock_V = <>} ; + compoundV : Str -> V -> V -- e.g barX hwna + = \s,v -> {s = \\vf => s ++ v.s ! vf ; lock_V = <>} ; + compoundV : Str -> V2 -> V -- e.g bnd krna + = \s,v -> {s = \\vf => s ++ v.s ! vf ; lock_V = <>} ; }; ----2 Adverbs - mkAdv : Str -> Adv - = \str -> {s = \\_ => str ; lock_Adv = <>}; + mkAdv : Str -> Adv -- e.g yhaN + = \str -> {s = \\_ => str ; lock_Adv = <>}; ----2 Prepositions - mkPrep : Str -> Str -> Prep ; + mkPrep : Str -> Str -> Prep ; -- e.g ka - ky mkPrep s1 s2 = makePrep s1 s2 ** {lock_Prep = <>}; --3 Determiners and quantifiers @@ -123,6 +119,8 @@ oper -- mkQuant : Pron -> Quant = \p -> {s = \\_,_,c => p.s!c ;a = p.a ; lock_Quant = <>}; -- mkQuant : (no_sg, no_pl, none_sg, non_pl : Str) -> Quant = mkQuantifier; -- } ; + mkIQuant : Str -> IQuant = \s -> makeIQuant s ; + --2 Conjunctions mkConj : overload { @@ -131,13 +129,22 @@ oper mkConj : Str -> Str -> Conj ; -- both ... and (plural) mkConj : Str -> Str -> Number -> Conj ; -- either ... or (agrement number given as argument) } ; + mkConj = overload { + mkConj : Str -> Conj = \y -> mk2Conj [] y plural ; + mkConj : Str -> Number -> Conj = \y,n -> mk2Conj [] y n ; + mkConj : Str -> Str -> Conj = \x,y -> mk2Conj x y plural ; + mkConj : Str -> Str -> Number -> Conj = mk2Conj ; + } ; + + mk2Conj : Str -> Str -> Number -> Conj = \x,y,n -> + lin Conj (sd2 x y ** {n = n}) ; -- mkV0 : V -> V0 ; - mkVS : V -> VS; + mkVS : V -> VS; -- e.g drna mkVS v = v ; -- mkV2S : V -> Prep -> V2S ; - mkVV : V -> VV - = \v -> lin VV (v ** {isAux = False}); + mkVV : V -> VV = -- e.g cahna + \v -> lin VV (v ** {isAux = False}); mkAdA : Str -> AdA ; -- mkAdv x = lin Adv (ss x) ; @@ -148,7 +155,7 @@ oper -- mkV2V : V -> Prep -> Prep -> V2V ; -- mkVA : V -> VA ; -- mkV2A : V -> Prep -> V2A ; - mkVQ : V -> VQ ; + mkVQ : V -> VQ ; -- e.g janna mkVQ v = v ; -- mkV2Q : V -> Prep -> V2Q ; -- @@ -181,18 +188,4 @@ oper -- nominative = Nom ; -- genitive = Gen ; - mkConj = overload { - mkConj : Str -> Conj - = \y -> mk2Conj [] y plural ; - mkConj : Str -> Number -> Conj - = \y,n -> mk2Conj [] y n ; - mkConj : Str -> Str -> Conj - = \x,y -> mk2Conj x y plural ; - mkConj : Str -> Str -> Number -> Conj - = mk2Conj ; - } ; - - mk2Conj : Str -> Str -> Number -> Conj = \x,y,n -> - lin Conj (sd2 x y ** {n = n}) ; - } diff --git a/lib/src/urdu/StructuralUrd.gf b/lib/src/urdu/StructuralUrd.gf index a6c67fcf8..f0971bebb 100644 --- a/lib/src/urdu/StructuralUrd.gf +++ b/lib/src/urdu/StructuralUrd.gf @@ -9,12 +9,12 @@ concrete StructuralUrd of Structural = CatUrd ** after_Prep = mkPrep ["كے بعد"] ["كے بعد"] ; all_Predet = ss "تمام" ; almost_AdA, almost_AdN = mkAdN "تقریبا" ; - although_Subj = ss "اگرچh-" ; + although_Subj = ss "اگرچہ" ; always_AdV = ss "ہمیشہ" ; and_Conj = sd2 [] "اور" ** {n = Pl} ; - because_Subj = ss "كیونكh-" ; + because_Subj = ss "كیونكہ" ; before_Prep = mkPrep "پہلے" "پہلے" ; - behind_Prep = mkPrep "پیچh-ے" "پیچh-ے" ; + behind_Prep = mkPrep "پیچھے" "پیچھے" ; between_Prep = mkPrep "درمیاں" "درمیاں" ; both7and_DConj = sd2 "دونوں" "اور" ** {n = Pl} ; but_PConj = ss "لیكن" ; @@ -40,12 +40,12 @@ concrete StructuralUrd of Structural = CatUrd ** how8much_IAdv = ss "كتنا" ; if_Subj = ss "اگر" ; in8front_Prep = mkPrep ["كے سامنے"] ["كے سامنے"] ; - i_Pron = personalPN "میں" "مجh-" "" "میرا" Sg Masc Pers1; - in_Prep = mkPrep "معں" "معں" ; - it_Pron = personalPN "یہ" "یہ" "یہ" "اس كا" Sg Masc Pers3_Near; + i_Pron = personalPN "میں" "مجھ" "" "میرا" Sg Masc Pers1; + in_Prep = mkPrep "میں" "میں" ; + it_Pron = personalPN "یہ" "اس" "اس" "اس كا" Sg Masc Pers3_Near; less_CAdv = {s = "كم" ; p = ""} ; many_Det = mkDet "بہت زیادہ" "بہت زیادہ" "بہت زیادہ" "بہت زیادہ" Pl ; - more_CAdv = {s = "زیادh-" ; p = "" } ; + more_CAdv = {s = "زیادہ" ; p = "سے" } ; most_Predet = ss "زیادہ تر" ; much_Det = mkDet "بہت" "بہت" "بہت" "بہت" Sg ; -- must_VV = { @@ -64,20 +64,20 @@ concrete StructuralUrd of Structural = CatUrd ** no_Utt = ss "نہیں" ; on_Prep = mkPrep "پر" "پر" ; -- one_Quant = demoPN "ایك" "ایك" "ایك" ; -- DEPRECATED - only_Predet = ss "سرف" ; + only_Predet = ss "صرف" ; or_Conj = sd2 [] "یا" ** {n = Sg} ; - otherwise_PConj = ss "یا پh-ر" ; + otherwise_PConj = ss "یا پھر" ; part_Prep = mkPrep "" "" ; - please_Voc = ss "مہربانi" ; + please_Voc = ss "مہربانی" ; possess_Prep = mkPrep "كا" "كی" ; - quite_Adv = ss "كہامoسہ" ; + quite_Adv = ss "خاموش" ; she_Pron = personalPN "وہ" "اس" "وہ" "اس كی" Sg Fem Pers3_Distant ; - so_AdA = ss "سo" ; + so_AdA = ss "[اس لیE]" ; somebody_NP = MassNP (UseN (ParadigmsUrd.mkN "كوی" "كوی" "كوی" "كوی" "كوی" "كوی" Masc )); - someSg_Det = mkDet "كچh-" "كچh-" "كچh-" "كچh-" Sg ; - somePl_Det = mkDet "كچh-" "كچh-" "كچh-" "كچh-" Pl ; - something_NP = MassNP (UseN (ParadigmsUrd.mkN "كوی چیز" "كوی چیز" "كوی چیز" "كh- چیزیں" "كh- چیزوں" "كh- چیزو" Masc )); - somewhere_Adv = mkAdv ["كہiن پر"] ; + someSg_Det = mkDet "كچھ" "كچھ" "كچھ" "كچھ" Sg ; + somePl_Det = mkDet "كچھ" "كچھ" "كچھ" "كچھ" Pl ; + something_NP = MassNP (UseN (ParadigmsUrd.mkN "كوی چیز" "كوی چیز" "كوی چیز" "كھ چیزیں" "كھ چیزوں" "كھ چیزو" Masc )); + somewhere_Adv = mkAdv ["كہیں پر"] ; that_Quant = demoPN "وہ" "اس" "ان" ; that_Subj = ss "كہ"; there_Adv = mkAdv "وہاں" ; @@ -93,24 +93,25 @@ concrete StructuralUrd of Structural = CatUrd ** very_AdA = ss "بہت" ; want_VV = mkV "چاہنا" ** { isAux = False} ; we_Pron = personalPN "ہم" "ہم" "ہم" "ہمارا" Pl Masc Pers1 ; - whatSg_IP = mkIP "كیا" "كiس" "كiس" Sg Masc ; - whatPl_IP = mkIP "كیا" "كiن" "كiن" Pl Masc ; + whatSg_IP = mkIP "كیا" "كس" "كس" Sg Masc ; + whatPl_IP = mkIP "كیا" "كن" "كن" Pl Masc ; when_IAdv = ss "كب" ; - when_Subj = ss "كب" ; + when_Subj = ss "جب" ; where_IAdv = ss "كہاں" ; - which_IQuant = {s = \\_ => "كون سی"} ; +-- which_IQuant = {s = \\_ => "كون سی"} ; + which_IQuant = mkIQuant "كون" ; -- whichPl_IDet = makeDet "كون سا" "كون سی" "كون سے" "كون سی" ; -- whichSg_IDet = makeDet "كون سا" "كون سی" "كون سے" "كون سی" ; - whoSg_IP = mkIP "كون" "كiس" "كiس" Sg Masc ; + whoSg_IP = mkIP "كون" "كس" "كس" Sg Masc ; whoPl_IP = mkIP "كون" "كن" "كنہوں" Pl Masc ; why_IAdv = ss "كیوں" ; without_Prep = mkPrep ["كے بغیر"] ["كے بغیر"] ; - with_Prep = mkPrep ["كے ساتh-"] ["كے ساتh-"] ; + with_Prep = mkPrep ["كے ساتھ"] ["كے ساتھ"] ; -- yes_Phr = ss "ہاں" ; yes_Utt = ss "ہاں" ; - youSg_Pron = personalPN "تم" "تم" "تم" "تمh-ارا" Sg Masc Pers2_Casual ; - youPl_Pron = personalPN "تم" "تم" "تم" "تمh-ارا" Pl Masc Pers2_Casual ; - youPol_Pron = personalPN "آپ" "آP" "آP" "آپ كا" Sg Masc Pers2_Respect ; + youSg_Pron = personalPN "تو" "تو" "تو" "تیرا" Sg Masc Pers2_Casual ; + youPl_Pron = personalPN "تم" "تم" "تم" "تمھارا" Pl Masc Pers2_Casual ; + youPol_Pron = personalPN "آپ" "آپ" "آپ" "آپ كا" Sg Masc Pers2_Respect ; no_Quant = demoPN " كوی نہیں" "كوی نہیں" "كوی نہیں" ; not_Predet = {s="نہیں"} ; if_then_Conj = sd2 "اگر" "تو" ** {n = Sg} ; @@ -120,9 +121,9 @@ concrete StructuralUrd of Structural = CatUrd ** except_Prep = mkPrep "سواے" "سواے" ; nobody_NP = MassNP (UseN (ParadigmsUrd.mkN "كوی نہیں" "كوی نہیں" "كوی نہیں" "كوی نہیں" "كوی نہیں" "كوی نہیں" Masc )); - as_CAdv = {s = "عتنا" ; p = "جتنا"} ; + as_CAdv = {s = "اتنا" ; p = "جتنا"} ; - have_V2 = mkV2 (mkV "راكh-نا") "" ; + have_V2 = mkV2 (mkV "راكھنا") "" ; language_title_Utt = ss "اردو" ; diff --git a/lib/src/urdu/src/DiffUrd.gf b/lib/src/urdu/src/DiffUrd.gf index eea9a25a9..430999fd1 100644 --- a/lib/src/urdu/src/DiffUrd.gf +++ b/lib/src/urdu/src/DiffUrd.gf @@ -81,7 +81,7 @@ Clause : Type = {s : VPHTense => Polarity => Order => Str} ; VPPerfPresCont => {fin = copula CPresent n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ; VPPerfPastCont => {fin = copula CPast n p g ; inf = (vp.s ! VPStem).inf ++ raha g n } ; VPPerfFutCont => {fin = copula CFuture n p g ; inf = (vp.s ! VPStem).inf ++ raha g n ++ hw p n } ; - VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "xayd" } + VPSubj => {fin = insertSubj p (vp.s ! VPStem).inf ; inf = "Xayd" } }; diff --git a/lib/src/urdu/src/IdiomUrd.gf b/lib/src/urdu/src/IdiomUrd.gf index c71beea22..a194cff8a 100644 --- a/lib/src/urdu/src/IdiomUrd.gf +++ b/lib/src/urdu/src/IdiomUrd.gf @@ -16,7 +16,7 @@ concrete IdiomUrd of Idiom = CatUrd ** open Prelude,Predef, ResUrd,ParamX,Common ExistNP np = mkSClause "whaN" (agrP3 (fromAgr np.a).g (fromAgr np.a).n) - (insertObj (\\_ => np.s ! NPC Obl) (predAux auxBe)) ; + (insertObj (\\_ => np.s ! NPC Dir) (predAux auxBe)) ; ExistIP ip = let cl = mkSClause ("whaN" ++ ip.s ! Dir) (agrP3 ip.g ip.n) (predAux auxBe); @@ -30,9 +30,10 @@ concrete IdiomUrd of Idiom = CatUrd ** open Prelude,Predef, ResUrd,ParamX,Common -- ProgrVP vp = insertObj (\\a => vp.obj.s ++ vp.ad ++ vp.comp ! a ++ (vp.s ! VPStem).inf ++ raha (fromAgr a).g (fromAgr a).n ) (predAux auxBe) ; ProgrVP vp = (predProg vp) ; - - ImpPl1 vp = {s = "Aw" ++ infVP True vp (agrP1 Masc Pl)} ; - ImpP3 np vp = {s = np.s!NPC Dir ++ "kw" ++ (vp.s ! VPImp ).inf ++ "dw"}; +-- ImpPl1 vp = {s = "Aw" ++ infVP True vp (agrP1 Masc Pl)} ; -- inf form is not used e.g Aw swna instead Aw swyyN (Imp.fin) + ImpPl1 vp = {s = "Aw" ++ (vp.s ! VPImp).fin} ; +-- ImpP3 np vp = {s = np.s!NPC Dir ++ "kw" ++ (vp.s ! VPImp ).inf ++ "dw"}; here VPImp form is not correct e.g jan ko sw do, rather jan ko swnE do, and swnE is stored in vp.VPInf.fin + ImpP3 np vp = {s = np.s!NPC Dir ++ "kw" ++ (vp.s ! VPInf ).fin ++ "dw"}; } diff --git a/lib/src/urdu/src/LexiconUrd.gf b/lib/src/urdu/src/LexiconUrd.gf index 320b76864..0ac6dd2e3 100644 --- a/lib/src/urdu/src/LexiconUrd.gf +++ b/lib/src/urdu/src/LexiconUrd.gf @@ -17,30 +17,30 @@ concrete LexiconUrd of Lexicon = CatUrd ** ask_V2Q = mkV2 (mkV "pwch'na") ; baby_N = mkN "bch" ; bad_A = mkA "bra" ; - bank_N = mkN "bank" ; + bank_N = mkN "bynk" ; beautiful_A = mkA "KwbSwrt" ; become_VA = mkV "bnna"; - beer_N = mkN "beer" ; + beer_N = mkN "byyr" ; beg_V2V = mkV2V (compoundV "altja" (mkV "krna")) "sE" "kh" False; big_A = mkA "bRa" ; - bike_N = mkN "saycl" feminine ; + bike_N = mkN "saykl" feminine ; bird_N = mkN "prndh" ; black_A = mkA "kala" ; blue_A = mkA "nyla" ; boat_N = mkN "kXty" ; book_N = mkN "ktab" feminine ; boot_N = mkN "jwta" ; - boss_N = mkN "Sahb" ; + boss_N = mkN "SaHb" ; boy_N = mkN "lRka" ; - bread_N = mkN "rwty" ; + bread_N = mkN "rwTy" ; break_V2 = mkV2 (mkV "twRna") ; broad_A = mkA "kh'la" ; brother_N2 = mkN2 (mkN "bh'ay") (mkPrep "ka" "ka") "kE" ; --not correct brown_A = mkA "nswary" ; butter_N = mkN "mkh'n" ; - buy_V2 = mkV2 (mkV "Krydna"); + buy_V2 = mkV2 (mkV "Krydna") "kw"; camera_N = mkN "kymrh" ; - cap_N = mkN "twpy" ; + cap_N = mkN "Twpy" ; car_N = mkN "gaRy" ; carpet_N = mkN "tpay^y" ; cat_N = mkN "bly" ; @@ -49,7 +49,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** cheese_N = mkN "pnyr" feminine ; child_N = mkN "bch" ; church_N = mkCmpdNoun "grja" (mkN "gh'r") ; - city_N = mkN "Xhr" ; + city_N = mkN "Xhr" ; clean_A = mkA "Saf" ; clever_A = mkA "hwXyar" ; close_V2 = mkV2 (compoundV "bnd" do_V2); @@ -65,7 +65,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** distance_N3 = mkN3 (mkN "faSlh") (mkPrep "ka" "ka") "kE" "sE" ; doctor_N = mkN "mealj" ; dog_N = mkN "kta" ; - door_N = mkN "drwzh" ; + door_N = mkN "drwazh" ; drink_V2 = mkV2 (mkV "pyna"); easy_A2V = mkA "Asan" "" ; eat_V2 = mkV2 (mkV "kh'ana") "" ; @@ -73,13 +73,13 @@ concrete LexiconUrd of Lexicon = CatUrd ** enemy_N = mkN "dXmn" ; factory_N = mkN "karKanh" ; father_N2 = mkN2 (mkN "aba") (mkPrep "ka" "ka") "kE" ; - fear_VS = mkV "drna"; + fear_VS = mkV "Drna"; find_V2 = mkV2 (mkV "pana") ; fish_N = mkN "mch'ly" ; floor_N = mkN "frX" ; forget_V2 = mkV2 (mkV "bh'wlna") ; - fridge_N = mkN "fryg" ; --- friend_N = mkN "dwst" masculine ; + fridge_N = mkN "fryj" ; + friend_N = mkN "dwst" masculine ; fruit_N = mkN "ph'l" ; -- fun_AV = mkAV (regA "f?n") ; garden_N = mkN "baG" ; @@ -91,7 +91,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** green_A = mkA "sbz" ; harbour_N = mkCmpdNoun "bndr" (mkN "gah") ; hate_V2 = mkV2 (compoundV "nfrt" do_V2) ; - hat_N = mkN "twpy" ; + hat_N = mkN "Twpy" ; -- have_V2 = dirV2 (mk5V "ha?e" "has" "had" "had" "ha??ng") ; hear_V2 = mkV2 (mkV "snna") ; hill_N = mkN "phaRy" ; @@ -118,8 +118,8 @@ concrete LexiconUrd of Lexicon = CatUrd ** lose_V2 = mkV2 (compoundV "kh'w" do_V2) ; love_N = mkN "mHbt" ; love_V2 = mkV2 (compoundV "pyar" do_V2) "kw"; - man_N = mkN "Admy" ; -- not correct according to rules should be discussed - married_A2 = mkA "Xady?krna" "sE" ; + man_N = mkN "Admy" "Admy" "Admy" "Admy" "AdmywN" "Admyw" masculine ; + married_A2 = mkA "[Xady krna]" "sE" ; meat_N = mkN "gwXt" ; milk_N = mkN "dwdh'" ; moon_N = mkN "cand" ; @@ -162,10 +162,10 @@ concrete LexiconUrd of Lexicon = CatUrd ** seek_V2 = mkV2 (compoundV "tlaX" do_V2) ; see_V2 = mkV2 (mkV "dykh'na") ; sell_V3 = mkV3 (mkV "bycna") "kw" ""; - send_V3 = mkV3 (mkV "bh'yjna") "kw" ""; + send_V3 = mkV3 (mkV "bh'yjna") "kw" "kw"; sheep_N = mkN "bh'yR" feminine ; ship_N = mkN "jhaz" ; - shirt_N = mkN "qmyZ-" feminine; + shirt_N = mkN "qmyS" feminine; shoe_N = mkN "jwta" ; shop_N = mkN "dwkan" feminine ; short_A = mkA "ch'wTa" ; @@ -177,7 +177,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** sock_N = mkN "jrab" feminine ; speak_V2 = mkV2 (mkV "bwlna") ; star_N = mkN "stara" ; - steel_N = mkN "styl" ; + steel_N = mkN "sTyl" ; stone_N = mkN "pth'r" ; stove_N = mkN "cwlha" ; student_N = mkCmpdNoun "t-alb" (mkN "elm") ; @@ -186,10 +186,10 @@ concrete LexiconUrd of Lexicon = CatUrd ** switch8off_V2 = mkV2 (mkV "clana") ; switch8on_V2 = mkV2 (compoundV "bnd" do_V2) ; table_N = mkN "myz" feminine ; - talk_V3 = mkV3 (mkV "bwlna") "sE" "kE?barE?meN"; - teacher_N = mkN "?stad" ; + talk_V3 = mkV3 (mkV "bwlna") "sE" "[kE barE myN]"; + teacher_N = mkN "astad" ; teach_V2 = mkV2 (mkV "pRh'na") ; - television_N = mkN "telywyzn" ; + television_N = mkN "tylywyxn" ; thick_A = mkA "mwTa" ; thin_A = mkA "ptla" ; train_N = mkN "gaRy" ; @@ -211,14 +211,14 @@ concrete LexiconUrd of Lexicon = CatUrd ** wine_N = mkN "Xrab" feminine ; win_V2 = mkV2 (mkV "jytna") ; woman_N = mkN "ewrt" feminine ; - wonder_VQ = compoundV "Heran" (mkV "hwna") ; + wonder_VQ = compoundV "Hyran" (mkV "hwna") ; wood_N = mkN "lkRy" ; write_V2 = mkV2 (mkV "lkh'na") ; yellow_A = mkA "pyla" ; young_A = mkA "jwan" ; do_V2 = mkV2 (mkV "krna") ; now_Adv = mkAdv "ab" ; - already_Adv = mkAdv "phlE?hy" ; + already_Adv = mkAdv "[phlE hy]" ; song_N = mkN "gana" ; add_V3 = mkV3 (compoundV "aZ-afh" do_V2) "" "" ; number_N = mkN "hndsh" ; @@ -229,9 +229,9 @@ concrete LexiconUrd of Lexicon = CatUrd ** left_Ord = {s = "bayaN" ; n = singular}; right_Ord = {s= "dayaN" ; n = singular}; far_Adv = mkAdv "dwr" ; - correct_A = mkA "Syh" ; + correct_A = mkA "SyH" ; dry_A = mkA "KXk" ; - dull_A = mkA "nal?k" ; + dull_A = mkA "nalayq" ; full_A = mkA "mkml" ; heavy_A = mkA "bh'ary" ; near_A = mkA "qryb" ; @@ -257,26 +257,26 @@ concrete LexiconUrd of Lexicon = CatUrd ** earth_N = mkN "zmyn" feminine ; egg_N = mkN "anDh" ; eye_N = mkN "Ankh'" feminine ; - fat_N = mkN "mwta" ; + fat_N = mkN "mwTa" ; feather_N = mkN "pr" ; fingernail_N = mkN "naKn" ; fire_N = mkN "Ag" feminine ; flower_N = mkN "ph'wl" ; fog_N = mkN "dh'nd" feminine ; foot_N = mkN "pawN" ; -- not properly covered need to be discussed - forest_N = mkN "njgl" ; - grass_N = mkN "gh's" feminine ; - guts_N = mkN "g?t" ; -- FIXME: no singular + forest_N = mkN "jngl" ; + grass_N = mkN "gh'as" feminine ; + guts_N = mkN "gT" ; -- FIXME: no singular hair_N = mkN "bal" ; hand_N = mkN "hath'" ; head_N = mkN "sr" ; heart_N = mkN "dl" ; - horn_N = mkN "gh'nty" ; + horn_N = mkN "gh'nTy" ; husband_N = mkN "Xwhr" ; ice_N = mkN "brf" feminine ; knee_N = mkN "khny" ; leaf_N = mkN "pth" ; - leg_N = mkN "tang" feminine ; + leg_N = mkN "Tang" feminine ; liver_N = mkN "jgr" ; louse_N = mkN "gh'r" ; mouth_N = mkN "mnh" ; @@ -287,7 +287,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** person_N = mkN "XKS" ; rain_N = mkN "barX" feminine ; road_N = mkN "sRk" ; - root_N = mkN "gR" feminine ; + root_N = mkN "jR" feminine ; rope_N = mkN "rsy" ; salt_N = mkN "nmk" feminine ; sand_N = mkN "ryt" feminine ; @@ -317,7 +317,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** give_V3 = mkV3 (mkV "dyna") "kw" ""; laugh_V = mkV "hnsna" ; -- lie_N = mkN "jh'wt" masculine ; - lie_V = compoundV "jh'wt" (mkV "bwlna" ); + lie_V = compoundV "jh'wT" (mkV "bwlna" ); play_V = mkV "kh'ylna" ; sew_V = mkV "syna" ; sing_V = mkV "gana" ; @@ -330,12 +330,12 @@ concrete LexiconUrd of Lexicon = CatUrd ** think_V = mkV "swcna" ; turn_V = mkV "mRna"; vomit_V = compoundV "alty" (mkV "krna") ; - bite_V2 = mkV2 (mkV "katna") ; + bite_V2 = mkV2 (mkV "kaTna") ; count_V2 = mkV2 (mkV "gnna") ; cut_V2 = mkV2 (mkV "katna") ; fear_V2 = mkV2 (mkV "Drna") ; fight_V2 = mkV2 (mkV "lRna") ; - hit_V2 = mkV2 (compoundV "th'wkr" (mkV "marna" )); + hit_V2 = mkV2 (compoundV "Th'wkr" (mkV "marna" )); hold_V2 = mkV2 (mkV "pkRna") ; hunt_V2 = mkV2 (compoundV "Xkar" do_V2); kill_V2 = mkV2 (compoundV "mar" (mkV "Dalna" )) ; @@ -343,7 +343,7 @@ concrete LexiconUrd of Lexicon = CatUrd ** push_V2 = mkV2 (mkV "dh'kylna") "kw" ; rub_V2 = mkV2 (mkV "rgRna") ; scratch_V2 = mkV2 (mkV "kh'rcna") "kw" ; - split_V2 = mkV2 (mkV "banta") "kw" ; + split_V2 = mkV2 (mkV "banTna") "kw" ; -- squeeze_V2 = dirV2 (regV "sq?eeze") ; -- stab_V2 = dirV2 (regDuplV "stab") ; suck_V2 = mkV2 (mkV "cwsna") ; diff --git a/lib/src/urdu/src/MorphoUrd.gf b/lib/src/urdu/src/MorphoUrd.gf index 1b9636fab..ce86a3b0f 100644 --- a/lib/src/urdu/src/MorphoUrd.gf +++ b/lib/src/urdu/src/MorphoUrd.gf @@ -170,7 +170,7 @@ oper (bhao) (bhao) (bhao) Masc ; ----2 Determiners - IDeterminer = {s:Gender => Str ; n : Number}; + IDeterminer = {s:Gender => Case => Str ; n : Number}; makeDet : Str -> Str -> Str -> Str -> Number -> Determiner = \s1,s2,s3,s4,n -> { s = table { Sg => table { @@ -188,11 +188,37 @@ oper makeIDet : Str -> Str -> Number -> IDeterminer = \s1,s2,n -> { s = table { - Masc => s1; - Fem => s2 + Masc => table {_ =>s1}; + Fem => table {_ =>s2} }; n = n - }; + }; + +-- IQuant + +makeIQuant : Str -> {s : Number => Gender => Case => Str} = \str -> { + s = table { + Sg => table { + Masc => table { + Dir => str ++ "sa" ; + _ => str ++ "sE" + + }; + Fem => table { + _ => str ++ "sy" + } + }; + Pl => table { + Masc => table { + _ => str ++ "sE" + }; + Fem => table { + _ => str ++ "sy" + } + } + } + }; + -- Proposition @@ -379,7 +405,7 @@ oper => root+"tyN"; => root+"ta"; => root+"ty"; - => root+"te"; + => root+"tE"; => root+"tyN" } diff --git a/lib/src/urdu/src/StructuralUrd.gf b/lib/src/urdu/src/StructuralUrd.gf index 89e0debd8..8d18a5a71 100644 --- a/lib/src/urdu/src/StructuralUrd.gf +++ b/lib/src/urdu/src/StructuralUrd.gf @@ -9,12 +9,12 @@ concrete StructuralUrd of Structural = CatUrd ** after_Prep = mkPrep ["kE bed"] ["kE bed"] ; all_Predet = ss "tmam" ; almost_AdA, almost_AdN = mkAdN "tqryba" ; - although_Subj = ss "agrch-" ; + although_Subj = ss "agrch" ; always_AdV = ss "hmyXh" ; and_Conj = sd2 [] "awr" ** {n = Pl} ; - because_Subj = ss "kywnkh-" ; + because_Subj = ss "kywnkh" ; before_Prep = mkPrep "phlE" "phlE" ; - behind_Prep = mkPrep "pych-E" "pych-E" ; + behind_Prep = mkPrep "pych'E" "pych'E" ; between_Prep = mkPrep "drmyaN" "drmyaN" ; both7and_DConj = sd2 "dwnwN" "awr" ** {n = Pl} ; but_PConj = ss "lykn" ; @@ -40,12 +40,12 @@ concrete StructuralUrd of Structural = CatUrd ** how8much_IAdv = ss "ktna" ; if_Subj = ss "agr" ; in8front_Prep = mkPrep ["kE samnE"] ["kE samnE"] ; - i_Pron = personalPN "myN" "mjh-" "" "myra" Sg Masc Pers1; - in_Prep = mkPrep "meN" "meN" ; - it_Pron = personalPN "yh" "yh" "yh" "as ka" Sg Masc Pers3_Near; + i_Pron = personalPN "myN" "mjh'" "" "myra" Sg Masc Pers1; + in_Prep = mkPrep "myN" "myN" ; + it_Pron = personalPN "yh" "as" "as" "as ka" Sg Masc Pers3_Near; less_CAdv = {s = "km" ; p = ""} ; many_Det = mkDet "bht zyadh" "bht zyadh" "bht zyadh" "bht zyadh" Pl ; - more_CAdv = {s = "zyadh-" ; p = "" } ; + more_CAdv = {s = "zyadh" ; p = "sE" } ; most_Predet = ss "zyadh tr" ; much_Det = mkDet "bht" "bht" "bht" "bht" Sg ; -- must_VV = { @@ -64,20 +64,20 @@ concrete StructuralUrd of Structural = CatUrd ** no_Utt = ss "nhyN" ; on_Prep = mkPrep "pr" "pr" ; -- one_Quant = demoPN "ayk" "ayk" "ayk" ; -- DEPRECATED - only_Predet = ss "srf" ; + only_Predet = ss "Srf" ; or_Conj = sd2 [] "ya" ** {n = Sg} ; - otherwise_PConj = ss "ya ph-r" ; + otherwise_PConj = ss "ya ph'r" ; part_Prep = mkPrep "" "" ; - please_Voc = ss "mhrbani" ; + please_Voc = ss "mhrbany" ; possess_Prep = mkPrep "ka" "ky" ; - quite_Adv = ss "khamosh" ; + quite_Adv = ss "KamwX" ; she_Pron = personalPN "wh" "as" "wh" "as ky" Sg Fem Pers3_Distant ; - so_AdA = ss "so" ; + so_AdA = ss "[as lyE]" ; somebody_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy" "kwy" "kwy" "kwy" "kwy" "kwy" Masc )); - someSg_Det = mkDet "kch-" "kch-" "kch-" "kch-" Sg ; - somePl_Det = mkDet "kch-" "kch-" "kch-" "kch-" Pl ; - something_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy cyz" "kwy cyz" "kwy cyz" "kh- cyzyN" "kh- cyzwN" "kh- cyzw" Masc )); - somewhere_Adv = mkAdv ["khin pr"] ; + someSg_Det = mkDet "kch'" "kch'" "kch'" "kch'" Sg ; + somePl_Det = mkDet "kch'" "kch'" "kch'" "kch'" Pl ; + something_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy cyz" "kwy cyz" "kwy cyz" "kh' cyzyN" "kh' cyzwN" "kh' cyzw" Masc )); + somewhere_Adv = mkAdv ["khyN pr"] ; that_Quant = demoPN "wh" "as" "an" ; that_Subj = ss "kh"; there_Adv = mkAdv "whaN" ; @@ -93,24 +93,25 @@ concrete StructuralUrd of Structural = CatUrd ** very_AdA = ss "bht" ; want_VV = mkV "cahna" ** { isAux = False} ; we_Pron = personalPN "hm" "hm" "hm" "hmara" Pl Masc Pers1 ; - whatSg_IP = mkIP "kya" "kis" "kis" Sg Masc ; - whatPl_IP = mkIP "kya" "kin" "kin" Pl Masc ; + whatSg_IP = mkIP "kya" "ks" "ks" Sg Masc ; + whatPl_IP = mkIP "kya" "kn" "kn" Pl Masc ; when_IAdv = ss "kb" ; - when_Subj = ss "kb" ; + when_Subj = ss "jb" ; where_IAdv = ss "khaN" ; - which_IQuant = {s = \\_ => "kwn sy"} ; +-- which_IQuant = {s = \\_ => "kwn sy"} ; + which_IQuant = mkIQuant "kwn" ; -- whichPl_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ; -- whichSg_IDet = makeDet "kwn sa" "kwn sy" "kwn sE" "kwn sy" ; - whoSg_IP = mkIP "kwn" "kis" "kis" Sg Masc ; + whoSg_IP = mkIP "kwn" "ks" "ks" Sg Masc ; whoPl_IP = mkIP "kwn" "kn" "knhwN" Pl Masc ; why_IAdv = ss "kywN" ; without_Prep = mkPrep ["kE bGyr"] ["kE bGyr"] ; - with_Prep = mkPrep ["kE sath-"] ["kE sath-"] ; + with_Prep = mkPrep ["kE sath'"] ["kE sath'"] ; -- yes_Phr = ss "haN" ; yes_Utt = ss "haN" ; - youSg_Pron = personalPN "tm" "tm" "tm" "tmh-ara" Sg Masc Pers2_Casual ; - youPl_Pron = personalPN "tm" "tm" "tm" "tmh-ara" Pl Masc Pers2_Casual ; - youPol_Pron = personalPN "Ap" "AP" "AP" "Ap ka" Sg Masc Pers2_Respect ; + youSg_Pron = personalPN "tw" "tw" "tw" "tyra" Sg Masc Pers2_Casual ; + youPl_Pron = personalPN "tm" "tm" "tm" "tmh'ara" Pl Masc Pers2_Casual ; + youPol_Pron = personalPN "Ap" "Ap" "Ap" "Ap ka" Sg Masc Pers2_Respect ; no_Quant = demoPN " kwy nhyN" "kwy nhyN" "kwy nhyN" ; not_Predet = {s="nhyN"} ; if_then_Conj = sd2 "agr" "tw" ** {n = Sg} ; @@ -120,9 +121,9 @@ concrete StructuralUrd of Structural = CatUrd ** except_Prep = mkPrep "swaE" "swaE" ; nobody_NP = MassNP (UseN (ParadigmsUrd.mkN "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" "kwy nhyN" Masc )); - as_CAdv = {s = "etna" ; p = "jtna"} ; + as_CAdv = {s = "atna" ; p = "jtna"} ; - have_V2 = mkV2 (mkV "rakh-na") "" ; + have_V2 = mkV2 (mkV "rakh'na") "" ; language_title_Utt = ss "ardw" ; diff --git a/lib/src/urdu/translit.gfs b/lib/src/urdu/translit.gfs index b78d74eb6..dcd8b6a29 100644 --- a/lib/src/urdu/translit.gfs +++ b/lib/src/urdu/translit.gfs @@ -9,3 +9,4 @@ rf -file=src/LexiconUrd.gf | ps -env=quotes -to_urdu | wf -file=LexiconUrd.gf rf -file=src/MorphoUrd.gf | ps -env=quotes -to_urdu | wf -file=MorphoUrd.gf rf -file=src/StructuralUrd.gf | ps -env=quotes -to_urdu | wf -file=StructuralUrd.gf +