public static string ResolveH(TxtWord root, string formation, bool beginningOfSuffix, bool specialCaseTenseSuffix, bool rootWord, string formationToCheck) { if (root.IsAbbreviation()) { return(formation + 'i'); } if (beginningOfSuffix && TurkishLanguage.IsVowel(Word.LastPhoneme(formationToCheck)) && !specialCaseTenseSuffix) { return(formation); } if (specialCaseTenseSuffix) { //eğer ek Hyor eki ise, if (rootWord) { if (root.VowelAChangesToIDuringYSuffixation()) { if (TurkishLanguage.IsFrontRoundedVowel(Word.BeforeLastVowel(formationToCheck))) { //büyülüyor, bölümlüyor, çözümlüyor, döşüyor return(formation.Substring(0, formation.Length - 1) + 'ü'); } if (TurkishLanguage.IsFrontUnroundedVowel(Word.BeforeLastVowel(formationToCheck))) { //adresliyor, alevliyor, ateşliyor, bekliyor return(formation.Substring(0, formation.Length - 1) + 'i'); } if (TurkishLanguage.IsBackRoundedVowel(Word.BeforeLastVowel(formationToCheck))) { //buğuluyor, bulguluyor, çamurluyor, aforozluyor return(formation.Substring(0, formation.Length - 1) + 'u'); } if (TurkishLanguage.IsBackUnroundedVowel(Word.BeforeLastVowel(formationToCheck))) { //açıklıyor, çalkalıyor, gazlıyor, gıcırdıyor return(formation.Substring(0, formation.Length - 1) + 'ı'); } } } if (TurkishLanguage.IsVowel(Word.LastPhoneme(formationToCheck))) { if (TurkishLanguage.IsFrontRoundedVowel(Word.BeforeLastVowel(formationToCheck))) { return(formation.Substring(0, formation.Length - 1) + 'ü'); } if (TurkishLanguage.IsFrontUnroundedVowel(Word.BeforeLastVowel(formationToCheck))) { return(formation.Substring(0, formation.Length - 1) + 'i'); } if (TurkishLanguage.IsBackRoundedVowel(Word.BeforeLastVowel(formationToCheck))) { return(formation.Substring(0, formation.Length - 1) + 'u'); } if (TurkishLanguage.IsBackUnroundedVowel(Word.BeforeLastVowel(formationToCheck))) { return(formation.Substring(0, formation.Length - 1) + 'ı'); } } } if (TurkishLanguage.IsFrontRoundedVowel(Word.LastVowel(formationToCheck)) || (TurkishLanguage.IsBackRoundedVowel(Word.LastVowel(formationToCheck)) && root.NotObeysVowelHarmonyDuringAgglutination())) { return(formation + 'ü'); } if (TurkishLanguage.IsFrontUnroundedVowel(Word.LastVowel(formationToCheck)) || (Word.LastVowel(formationToCheck) == 'a' && root.NotObeysVowelHarmonyDuringAgglutination())) { return(formation + 'i'); } if (TurkishLanguage.IsBackRoundedVowel(Word.LastVowel(formationToCheck))) { return(formation + 'u'); } if (TurkishLanguage.IsBackUnroundedVowel(Word.LastVowel(formationToCheck))) { return(formation + 'ı'); } if (root.IsNumeral() || root.IsFraction() || root.IsReal()) { if (root.GetName().EndsWith("6") || root.GetName().EndsWith("40") || root.GetName().EndsWith("60") || root.GetName().EndsWith("90")) { //6'yı, 40'ı, 60'ı return(formation + 'ı'); } if (root.GetName().EndsWith("3") || root.GetName().EndsWith("4") || root.GetName().EndsWith("00")) { //3'ü, 4'ü, 100'ü return(formation + 'ü'); } if (root.GetName().EndsWith("9") || root.GetName().EndsWith("10") || root.GetName().EndsWith("30")) { //9'u, 10'u, 30'u return(formation + 'u'); } //2'yi, 5'i, 8'i return(formation + 'i'); } return(formation); }