Pan-African Living Dictionary Online

Swahili

#Verb Parser ( kasahorow concept )
{ function getPartsOfSpeech($id){ $PartsOfSpeech = array ( "abbreviation", "adj/adv", "adjective", "adverb", "conjunction", "infix", "interjection", "interrogative", "name", "noun", "phrase", "prefix", "preposition", "pronoun", "verb", "verb subject", "verb tense", "verb relative", "verb object", "verb suffix" ); return $PartsOfSpeech[$id]; } function getSubjectPrefix($id){ $SubjectPrefix = array( "","ni","u","a","yu","tu","m","wa","u","i", "li","ya","ki","vi","i","zi","xxxxu","ku","pa","ku", "m","mw","mw","","","","","","","", "si","hu","ha","hatu","ham","hamw","hawa","hau","hai","hali", "haya","haki","havi","hai","hazi","xxxhau","haku","hapa","haku","ham", "hamw","","","","","","","","","", "na","wa","a","yua","twa","mwa","wa","wa","ya","la", "ya","cha","vya","xxxxya","za","xxxwa","kwa","pa","kwa","mwa" ); return $SubjectPrefix[$id]; } function getSubjectDescription($id){ $SubjectDescription = array( "","I","you (singular)","he she or it (for people or animals)","he she or it (for people or animals)", "we","you (plural)","they (for people or animals)","it (class 3 11 or 14)","they (class 4)", "it (class 5)","they (class 6) or it (class 6 collective nouns)","it (class 7)","they (class 8)", "it (class 9)","they (class 10)","xxxxu (not used)","it (class 15)","it (someplace)","it (someplace)", "it (someplace inside)","it (someplace inside)","you (plural)","","","","","","","", "I negative","you (singular) negative","he she or it (for people or animals) negative", "we negative","you (plural) negative","you (plural) negative", "they (for people or animals) negative","it (class 3 11 or 14) negative", "they (class 4) negative","it (class 5) negative", "they (class 6) or it (class 6 collective nouns) negative","it (class 7) negative", "they (class 8) negative","it (class 9) negative","they (class 10) negative", "xxxhau (not used)","it (class 15) negative","it (someplace) negative","it (someplace) negative", "it (someplace inside) negative", "it (someplace inside) negative","","","","","","","","","", "I","you (singular)","he she or it (for people or animals)","he she or it (for people or animals)", "we","you (plural)","they (for people or animals)","it (class 3 11 or 14)","they (class 4 or 6)", "it (class 5)", "it (class 9 or class 5 collective nouns)","it (class 7)","they (class 8)","xxxxxxit (class 9)", "they (class 10)","xxxxxxwa (not used)","it (class 15)","it (someplace)","it (someplace)", "it (someplace inside)" ); return $SubjectDescription[$id]; } function getObjectInfix($id){ $ObjectInfix = array( "","ni","ku","m","mw","mu","tu","wa(eni)","wa","wa", "u","i","li","ya","ya","ki","vi","i","zi","xxxxu", "ku","pa","ku","m","mw","ji" ); return $ObjectInfix[$id]; } function getObjectDescription($id){ $ObjectDescription = array( "","me","you (singular)","him her or it (for people or animals)", "him her or it (for people or animals)","him her or it (for people or animals)","us", "you (plural)","them (people or animals)","you (plural)", "it (class 3 11 or 14)","them (class 4)","it (class 5)","them (class 6)", "it (class 6 collective nouns)","it (class 7)","them (class 8)","it (class 9)","them (class 10)", "xxxxxxu (not used)", "it (class 15)","it (someplace)","it (someplace)","it (someplace inside)","it (someplace inside)", "herself/ himself/ itself/ myself/ oneself/ ourselves/ themselves/ yourself/ yourselves" ); return $ObjectDescription[$id]; } function getRelativeInfix($id){ $RelativeInfix = array( "","ye","ye","ye","ye","o","o","o","o","yo", "lo","yo","cho","vyo","yo","zo","","","","", "ye","o","yo","lo","cho","po","vyo","zo","ko","mo" ); return $RelativeInfix[$id]; } function getRelativeDescription($id){ $RelativeDescription = array( "","he or she or the animal who","he or she or the animal who","he or she or the animal who","he or she or the animal who","they who or the thing that (class 3, 11, or 14)","they who or the thing that (class 3, 11, or 14)","they who or the thing that (class 3, 11, or 14)","they who or the thing that (class 3, 11, or 14)","the things that (class 4)", "the thing that (class 5)","the things that (class 6)","the thing that (class 7)","the things that (class 8)","the thing that (class 9)","the things that (class 10)","","","","", "he or she or the animal who","they who, or the thing that (class 3, 11, or 14)","the things that (class 4 or 6) or the thing that (class 9)","the thing that (class 5)","the thing that (class 7)","the time or place that (class 16)","the things that (class 8)","the things that (class 10)","the place that (class 17)","the place inside that (class 18)" ); return $RelativeDescription[$id]; } function getTenseInfix($id){ $TenseInfix = array( "","na","li","me","ta","ki","nge","nga","japo","ngali", "ngeli","sipo","ka","mesha","mekwisha","lisha","kiisha","kisha","singe","singali", "singeli","kito","xxxxsivyo","","","","","","","", "ku","ja","ta","","","","","","","", "","","","","","","","","ka","", "","si","ka","","si","","","","","", "","","hu","ka" ); return $TenseInfix[$id]; } ## these descriptions correspond with the Tense arrays above function getTenseDescription($id){ $TenseDescription = array( "","do/ does or is doing/ are doing/ am doing (present continuous)","in the past (past simple)", "recently or beginning in the past (past perfect)","will/ in the future (future)", "if or when (conditional)","were/ in the unlikely event (suppositional)","although","although", "were it to have occurred/ had in the past (past suppositional)", "were it to have occurred/ had in the past (past suppositional)", "if not or when not (negative conditional)","and then (narrative)","have already","have already", "did already","once it has occured","once it has occured","negative conditional", "negative past conditional", "negative past conditional","if not","xxxxsivyo (not used)","","","","","","","", "negative past","incomplete past","negative future","","","","","","","", "present negative","present indefinite","simple command","simple command plural","polite command", "polite command plural","command with object","command plural with object","command","", "subjunctive","negative subjunctive","expeditious","general relative","negative relative","","","","","", "infinitive","negative infinitive","habitual","headline" ); return $TenseDescription[$id]; } ## main use of this function is to spot monosyllabic verbs eg “kula” so as not to allow “ku” in “nimekula” to ##be interpreted as an object function NotMonosyllabic ($word) { if (($word == "fa") || ($word == "wa") || ($word == "ja") || ($word == "la") || ($word == "nywa")) { return (0); } return (1); } function Monosyllabic($word) { if (($word == "kufa") || ($word == "kuwa") || ($word == "kuja") || ($word == "kula") || ($word == "kunywa") || ($word == "kuwa na")) { return (1); } return (0); } function getSingleSolutionTxt($num,$root,$iTense,$iSubject,$iRelative,$iObject,$lookupStr) { global $psCode; $tenseLink = getTenseInfix($iTense); if ($tenseLink == "") { $tenseLink = getTenseDescription($iTense); } else { $posRestrict = $psCode["verb tense"]; $tenseLink = "${tenseLink}"; $tenseLink .= " - " . getTenseDescription($iTense); } $solution = "Possible Option :
\n"; $solution .= "   $lookupStr
\n"; if ($iSubject>0) { $subject = getSubjectDescription($iSubject); $swaSubjectDesc = $subject; $swaSubjectPrefix = getSubjectPrefix($iSubject); $posRestrict = $psCode["verb subject"]; $swaSubjectLink = "${swaSubjectPrefix}" . " - $swaSubjectDesc"; # $solution .= " Subject: " . $swaSubjectLink . "\n"; $solution .= "   Subject: " . $swaSubjectLink . "
\n"; } # $solution .= " Tense: $tenseLink\n"; $solution .= "   Tense: $tenseLink
\n"; if ($iRelative>0) { $relLink = getRelativeInfix($iRelative); $relLinkDescr = getRelativeDescription($iRelative); $posRestrict = $psCode["verb relative"]; $relLink = "${relLink} - $relLinkDescr"; # $solution .= " Relative: " . $relLink . "\n"; $solution .= "   Relative: " . $relLink . "
\n"; } if ($iObject>0) { $objInfix = getObjectInfix($iObject); $objLink = getObjectDescription($iObject); $posRestrict = $psCode["verb object"]; $objLink = "${objInfix} - $objLink"; # $solution .= " Object: " . $objLink; $solution .= "   Object: " . $objLink . "

\n"; } return($solution); return; } function SetSolution(&$solnsArr,$num,$root,$iTense,$iSubject,$iRelative,$iObject) { if (strlen($root) < 2){ return 1; } $lookupStr = "Verb: ${root}"; $curSoln = getSingleSolutionTxt(++$dictSolnNum,$root,$iTense,$iSubject,$iRelative,$iObject,$lookupStr); $curSoln .= "

${verbLookupHtml}${subTxt}
"; $divnum++; array_push($solnsArr, $curSoln); return; } function CheckTenses($testword){ $start=0; $n=0; $end=strlen($testword); $RelativeNotFound = 1; $iRelative; $iTense; $iTenseSing; $iTensePlural; $iSubject; $iTenseInf; $iTenseNegInf; $solns = array(); ## just go through all the tense checks one after another ######## 1) Regular tenses (1 to 22) with positive subject prefix eg 'ninaenda' ################ for ($iSubject = 1; $iSubject <= 21; $iSubject++) ## ni, u, a etc { $start = 0; if (substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { for ($iTense = 1; $iTense <= 22; $iTense++) ## na, me, ta, etc { $start = strlen(getSubjectPrefix($iSubject)); if (substr($testword,$start,strlen(getTenseInfix($iTense))) == getTenseInfix($iTense)) { $start = strlen(getSubjectPrefix($iSubject)) + strlen(getTenseInfix($iTense)); if (Monosyllabic(substr($testword,$start, $end - $start))) { $start += 2; } SetSolution ($solns, (++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,0,0); $RelativeNotFound = 1; if (($iTense == 1) || ($iTense == 2) || (($iTense == 4) && (substr($testword,$start,2) == "ka"))) { $tempStart = $start; if ($iTense == 4) { $tempStart += 2; } ##ie ignore the ka in nitakachofanya for ($iRelative = 20; ($iRelative <= 29)&&($RelativeNotFound); $iRelative++) { if (substr($testword,$tempStart,strlen(getRelativeInfix($iRelative))) == getRelativeInfix($iRelative)) { $RelativeNotFound = 0; ##ie break out of loop $start = $tempStart + strlen(getRelativeInfix($iRelative)); SetSolution($solns, (++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,$iRelative,0); last; #break out here } } } if ($RelativeNotFound) { $iRelative = 0; } for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - $start-strlen(getObjectInfix($iObject))),$iTense,$iSubject,$iRelative,$iObject); } } } } } } # 2) Regular tenses with negative subject prefix (30-32) eg 'sikuenda' ################ for ($iSubject = 30; $iSubject <= 50; $iSubject++) #si, hu, ha etc { $start = 0; if (substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { for ($iTense = 30; $iTense <= 32; $iTense++) ## ku, ja, ta { $start = strlen(getSubjectPrefix($iSubject)); if (substr($testword,$start,strlen(getTenseInfix($iTense))) == getTenseInfix($iTense)) { $start = strlen(getSubjectPrefix($iSubject)) + strlen(getTenseInfix($iTense)); if (Monosyllabic(substr($testword,$start,$end - $start))) { $start += 2; } SetSolution ($solns, (++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,0,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - $start-strlen(getObjectInfix($iObject))),$iTense,$iSubject,$iRelative,$iObject); } } } } } } ######/ 3) Present -ve (40) eg 'siendi' ######################## $iTense = 40; if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { for ($iSubject = 30; $iSubject <= 50; $iSubject++) ## si, hu, ha etc { $start = 0; if (substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { ##no tense infix $start = strlen(getSubjectPrefix($iSubject)); ## if word ends in "i" then the root could either end in "i" or "a" SetSolution ($solns, (++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,0,0); if (substr($testword,$end-1,1) == "i") { SetSolution ($solns, (++$n),substr($testword,$start,$end - 1 - $start) . "a",$iTense,$iSubject,0,0); } for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - $start-strlen(getObjectInfix($iObject))),$iTense,$iSubject,0,$iObject); if (substr($testword,$end-1,1) == "i") { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - 1 - $start-strlen(getObjectInfix($iObject))) . "a",$iTense,$iSubject,0,$iObject); } } } } } } #### 4) Present indefinite ('a' tense) (41) eg 'naenda' #### $iTense = 41; if ((substr($testword,$end-1,1) == "a")||(substr($testword,$end-1,1) == "e")||(substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { for ($iSubject = 60; $iSubject <= 79; $iSubject++) ## na, wa, twa etc { $start = 0; if (substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { ##no tense infix $start = strlen(getSubjectPrefix($iSubject)); if (Monosyllabic(substr($testword,$start, $end - $start))) { $start += 2; } SetSolution ($solns, (++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,0,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - $start-strlen(getObjectInfix($iObject))),$iTense,$iSubject,0,$iObject); } } } } } ####/ 5) Simple command (42,43) piga pigeni #################################### $iTenseSing=42; $iTensePlural=43; ##first deal with irregulars njoo, njooni, nenda, nendeni, lete, (leteni) if ($testword == "njoo") { SetSolution($solns, ++$n,"ja",$iTenseSing,0,0,0); } else if ($testword == "njooni") { SetSolution($solns, ++$n,"kuja",$iTensePlural,0,0,0); } else if ($testword == "nenda") { SetSolution($solns, ++$n,"enda",$iTenseSing,0,0,0); } else if ($testword == "nendeni") { SetSolution($solns, ++$n,"enda",$iTensePlural,0,0,0); } else if ($testword == "lete") { SetSolution($solns, ++$n,"leta",$iTenseSing,0,0,0); } else if ($testword == "leteni") { SetSolution($solns, ++$n,"leta",$iTensePlural,0,0,0); } else if (substr($testword,$end-3,3) == "eni") { ##two possible stems –e or –a/ SetSolution($solns, (++$n),substr($testword,0,$end-3) . "a",$iTensePlural,0,0,0); SetSolution($solns, (++$n),substr($testword,0,$end-3) . "e",$iTensePlural,0,0,0); } else if (substr($testword,$end-2,2) == "ni") { ##just remove -ni SetSolution($solns, (++$n),substr($testword,0,$end-2),$iTensePlural,0,0,0); } ##this gives too many false readings, and would be picked up anyway by Kamusi ## else if ((substr($testword,$end-1,1) eq "a")||(substr($testword,$end-1,1) eq "e")||(substr($testword,$end-1,1) eq "i")||(substr($testword,$end-1,1) eq "u")) ## SetSolution($solns, (++$n),substr($testword,0,$end),$iTenseSing,0,0,0); ###### 6) command in subjunctive (44,45) uende or mkuleni ####################/ $iTenseSing=44; $iTensePlural=45; for ($i = 0; $i <= 2; $i++) { if ($i==0) { $iSubject = 2; } ##u else if ($i==1) { $iSubject = 6; } ##m else { $iSubject = 21; }##mw $start = 0; if (substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { $start = strlen(getSubjectPrefix($iSubject)); if (substr($testword,$end-3,3) == "eni") { ##two possible stems –e or –a/ SetSolution($solns, (++$n),substr($testword,$start,$end - 3 - $start) . "a",$iTensePlural,$iSubject,0,0); SetSolution($solns, (++$n),substr($testword,$start,$end - 3 - $start) . "e",$iTensePlural,$iSubject,0,0); } else if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start,$end - 1 - $start) . "a",$iTenseSing,$iSubject,0,0); SetSolution($solns, (++$n),substr($testword,$start,$end - 1 - $start) . "e",$iTenseSing,$iSubject,0,0); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, (++$n),substr($testword,$start,$end - $start),$iTenseSing,$iSubject,0,0); } for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { if (substr($testword,$end-3,3) == "eni") { ##two possible stems –e or –a/ SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - 3 - $start-strlen(getObjectInfix($iObject))) . "a",$iTensePlural,$iSubject,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - 3 - $start-strlen(getObjectInfix($iObject))) . "e",$iTensePlural,$iSubject,0,$iObject); } else if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - 1 - $start-strlen(getObjectInfix($iObject))) . "a",$iTenseSing,$iSubject,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - 1 - $start-strlen(getObjectInfix($iObject))) . "e",$iTenseSing,$iSubject,0,$iObject); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - $start-strlen(getObjectInfix($iObject))),$iTenseSing,$iSubject,0,$iObject); } } } } } ###### 7) command with object nipe / nipeni (give me) (46,47) ######################/ $iTenseSing=46; $iTensePlural=47; $iSubject = 0; ##no subject for ($iObject = 1; $iObject <= 25; $iObject++) { if (($iObject != 2) && (substr($testword,0,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject))) { if (substr($testword,$end-3,3) == "eni") { ##two possible stems –e or –a/ SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - 3 - $start-strlen(getObjectInfix($iObject))) . "a",$iTensePlural,$iSubject,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-3-$start-strlen(getObjectInfix($iObject))) . "e",$iTensePlural,$iSubject,0,$iObject); } else if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-1-$start-strlen(getObjectInfix($iObject))) . "a",$iTenseSing,$iSubject,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-1-$start-strlen(getObjectInfix($iObject))) . "e",$iTenseSing,$iSubject,0,$iObject); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTenseSing,$iSubject,0,$iObject); } } } ########/8) command with ka kapige (48) #################### $iTenseSing = 48; $iTensePlural = 49; $start = 0; if (substr($testword,$start,strlen($TenseInfix[$iTenseSing])) == $TenseInfix[$iTenseSing]) { $start = strlen($TenseInfix[$iTenseSing]); if (substr($testword,$end-3,3) == "eni") ##not sure if kapigeni exists though { ##two possible stems –e or –a/ SetSolution($solns, (++$n),substr($testword,$start,$end-3-$start) . "a",$iTensePlural,0,0,0); SetSolution($solns, (++$n),substr($testword,$start,$end-3-$start) . "e",$iTensePlural,0,0,0); } else if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start,$end-1-$start) . "a",$iTenseSing,0,0,0); SetSolution($solns, (++$n),substr($testword,$start,$end-1-$start) . "e",$iTenseSing,0,0,0); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, ++$n,substr($testword,$start,$end),$iTenseSing,0,0,0); } for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { if (substr($testword,$end-3,3) == "eni") { ##two possible stems –e or –a/ not sure if valid with ka tense SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-3-$start-strlen(getObjectInfix($iObject))) . "a",$iTensePlural,0,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-3-$start-strlen(getObjectInfix($iObject))) . "e",$iTensePlural,0,0,$iObject); } else if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-1-$start-strlen(getObjectInfix($iObject))) . "a",$iTenseSing,0,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-1-$start-strlen(getObjectInfix($iObject))) . "e",$iTenseSing,0,0,$iObject); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTenseSing,0,0,$iObject); } } } } ####/9) subjunctive +ve and –ve & expeditious (50,51,52) (nipende and nisipende and nikapige)##########/ for ($iSubject = 1; $iSubject <= 22; $iSubject++) ## ni, u, a etc NOTE 22 not 21 { $start = 0; if (substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { for ($iTense = 50; $iTense <= 52; $iTense++) ## null, si, ka { $start = strlen(getSubjectPrefix($iSubject)); if (substr($testword,$start,strlen(getTenseInfix($iTense))) == getTenseInfix($iTense)) { $start = strlen(getSubjectPrefix($iSubject)) + strlen(getTenseInfix($iTense)); if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start,$end-1-$start) . "a",$iTense,$iSubject,0,0); SetSolution($solns, (++$n),substr($testword,$start,$end-1-$start) . "e",$iTense,$iSubject,0,0); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, (++$n),substr($testword,$start,$end-$start),$iTense,$iSubject,0,0); } for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-1-$start-strlen(getObjectInfix($iObject))) . "a",$iTense,$iSubject,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-1-$start-strlen(getObjectInfix($iObject))) . "e",$iTense,$iSubject,0,$iObject); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTense,$iSubject,0,$iObject); } } } } } } } #////10) general relative (53) nipigaye /////////// $iTense = 53; for ($iSubject = 1; $iSubject <= 15; $iSubject++) #// ni, u, a etc { if (substr($testword,0,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { #// if end of word matches the relative for that subjec eg “ye” for “ni” if (substr($testword,$end - strlen($RelativeInfix[$iSubject]), strlen($RelativeInfix[$iSubject])) == $RelativeInfix[$iSubject]) { $start = strlen(getSubjectPrefix($iSubject)); if (Monosyllabic(substr($testword,$start,strlen($RelativeInfix[$iSubject])))) { $start += 2; } SetSolution($solns, (++$n),substr($testword,$start,$end-strlen($RelativeInfix[$iSubject]) - $start),$iTense,$iSubject,$iSubject,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - strlen($RelativeInfix[$iSubject]) - $start - strlen(getObjectInfix($iObject))),$iTense,$iSubject,$iSubject,$iObject); } } } #/// now test for general relative of time/manner eg afikapo (still within the first if statement) for ($iRelative = 25; $iRelative <= 26; $iRelative++) #// po and vyo { #// if end of word is "vyo" or "po" if (substr($testword,$end - strlen(getRelativeInfix($iRelative)), strlen(getRelativeInfix($iRelative))) == getRelativeInfix($iRelative)) { $start = strlen(getSubjectPrefix($iSubject)); if (Monosyllabic(substr($testword,$start,$end - strlen(getRelativeInfix($iRelative)) - $start))) { $start = $start +2; } SetSolution($solns,(++$n),substr($testword,$start,$end - strlen(getRelativeInfix($iRelative)) - $start), $iTense,$iSubject,$iRelative,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns,(++$n),substr($testword,$start+strlen(getObjectInfix($iObject))),$end - strlen($RelativeInfix[$iSubject]) - ($start+strlen(getObjectInfix($iObject))),$iTense,$iSubject,$iRelative,$iObject); } } } } } } ####11) general negative relative (53) nisiyekula ##########/ $iTense = 54; for ($iSubject = 1; $iSubject <= 15; $iSubject++) ## ni, u, a etc { if (substr($testword,0,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { $start = strlen(getSubjectPrefix($iSubject)); ## if next 2 letters match TenseInfix (si) and following are the relative for that subjec eg “ye” for “ni” if ((substr($testword,$start,strlen(getTenseInfix($iTense))) == getTenseInfix($iTense)) && (substr($testword,$start+strlen(getTenseInfix($iTense)),strlen($RelativeInfix[$iSubject])) == $RelativeInfix[$iSubject])) { $start = strlen(getSubjectPrefix($iSubject)) +strlen(getTenseInfix($iTense)) + strlen($RelativeInfix[$iSubject]); if (Monosyllabic(substr($testword,$start,$end-$start))) { $start += 2; } SetSolution($solns, (++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,$iSubject,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTense,$iSubject,$iSubject,$iObject); } } } #/// now test for negative relative of time/manner eg asipofika (still within the first if statement) $start = strlen(getSubjectPrefix($iSubject)); for ($iRelative = 25; $iRelative <= 26; $iRelative++) #// po and vyo { #// if "vyo" or "po" after the "si" eg nisipofanya if ((substr($testword,$start,strlen(getTenseInfix($iTense))) == getTenseInfix($iTense)) && (substr($testword,$start+strlen(getTenseInfix($iTense)), strlen(getRelativeInfix($iRelative))) == getRelativeInfix($iRelative))) { $start = strlen(getSubjectPrefix($iSubject)) + strlen(getTenseInfix($iTense)) + strlen(getRelativeInfix($iRelative)); if (Monosyllabic(substr($testword,$start,$end - $start))) { $start = $start +2; } SetSolution($solns,(++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,$iRelative,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns,(++$n),substr($testword,$start+strlen(getObjectInfix($iObject)), $end - ($start+strlen(getObjectInfix($iObject)))), $iTense,$iSubject,$iRelative,$iObject); } } } } } } #### 12) infinitive positive and negative (60,61) eg “kupiga” ######################/ $iTenseInf = 60; $iTenseNegInf = 61; if (substr($testword,0,4) == "kuto") { $start = 4; if (Monosyllabic(substr($testword,$start,$end-$start))) { $start += 2; } SetSolution($solns, (++$n),substr($testword,$start,$end-$start),$iTenseNegInf,0,0,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTenseNegInf,0,0,$iObject); } } } if (substr($testword,0,2) == "ku") { $start = 2; if (Monosyllabic(substr($testword,$start,$end-$start))) { $start += 2; } SetSolution($solns, (++$n),substr($testword,$start,$end-$start),$iTenseInf,0,0,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTenseInf,0,0,$iObject); } } } else if (substr($testword,0,2) == "kw") { $start = 2; if (Monosyllabic(substr($testword,$start,$end-$start))) { $start += 2; } SetSolution($solns, (++$n),substr($testword,$start,$end-$start),$iTenseInf,0,0,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTenseInf,0,0,$iObject); } } } ####/ 14 & 15) habitual 62 hupiga, and headline tense (63) mtoto kapigwa na .. and ha############## if ((substr($testword,$end-1,1) == "a")||(substr($testword,$end-1,1) == "e")||(substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { for ($iTense = 62; $iTense<=63; $iTense++) { ## if starts with ka or hu if (substr($testword,0,strlen(getTenseInfix($iTense))) == getTenseInfix($iTense)) { $start = strlen(getTenseInfix($iTense)); if (Monosyllabic(substr($testword,$start,$end-$start))) { $start += 2; } SetSolution($solns, (++$n),substr($testword,$start,$end-$start),$iTense,0,0,0); ##no subject in these tenses for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTense,0,0,$iObject); } } } } } #//////// 16) Kuwa na - irregular present tense nina, una, ana etc //////// $iTense = 1; #//present continuous $start = 0; for ($iSubject = 1; $iSubject <= 21; $iSubject++) { #// ni, u, a etc if ((substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) && (substr($testword,strlen(getSubjectPrefix($iSubject)),$end - strlen(getSubjectPrefix($iSubject))) == "na")) { SetSolution($solns,(++$n),"wa na",$iTense,$iSubject,0,0); } } $iTense = 40; #//present negative sina, huna, hakuna etc for ($iSubject = 30; $iSubject <= 50; $iSubject++) { # // si, hu, ha etc if ((substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) && (substr($testword,strlen(getSubjectPrefix($iSubject)),$end - strlen(getSubjectPrefix($iSubject))) == "na")) { SetSolution($solns,(++$n),"wa na",$iTense,$iSubject,0,0); } } return($solns); } $solnsArr = CheckTenses($query); if(count($solnsArr)){ $node->title = "$query looks like a sentence"; $node->children_html = "We have some possible search refinements
"; foreach($solnsArr as $soln){ $node->children_html.= $soln."
"; } return $node; }else{ return NULL; } }
kasahorow concept   
Advanced   
Kiswahili   

#Verb Parser

.
jina
name
noun   
noun 5   
singular   
Basic   
Kiswahili   

jina

.
kiva ( noun )
agreement, covenant
nubabla, nuɔoɔo
agreement
viva
noun   
noun 7   
noun 8   
singular   
Intermediate   
Kiswahili   

kiva

.
Misri ( Swahili )
Egypt
Igyipt
Misri ni nchi ya Afrika ya Kaskazini-Mashariki. Rasi ya Sinai ambayo ni sehemu ya Misri huhesabiwa kuwa sehemu ya bara la Asia. Misri imepakana na Bahari ya Mediteraneo, Israel, Eneo la mamlaka ya Palestina, ghuba la Suez, ghuba la Aqaba, Bahari ya Shamu, Sudan na Libya.
noun   
singular   
Basic   
Country   
Kiswahili   

Misri

.
kamusi
go, dictionary, words and sentences
dictionnaire
k'amus
agbedegbẹyọ
anyɛmi
nsɛmfuaasekyerɛ
kamusi
Kiswahili   

kamusi

.
-a kumi
eighth
na takwas
Kiswahili   

-a kumi

.
-a nane
sixth, to despise
ke-fa, ke-gan
raina
Kiswahili   

-a nane

.
-a tisa
seventh
na bakwai
Kiswahili   

-a tisa

.
-a saba
ka-run, ka-san, ka-se, fin
Kiswahili   

-a saba

.
-a sita
fourth
na hudu
Kiswahili   

-a sita

.
Syndicate content

Syndicate

Syndicate content

Lookup a word

My list

Review tools

2754.11