public static PhraseSequenceElement[] GetForms(DictionaryDataEntry entry) { if (additionalForms.ContainsKey(entry.Kanji)) { var forms = new PhraseSequenceElement[additionalForms[entry.Kanji].Count]; for (int i = 0; i < forms.Length; i++) { forms[i] = new PhraseSequenceElement(entry.ID, i); } return forms; } switch (entry.GetPartOfSpeech()) { case PartOfSpeech.GodanVerb: case PartOfSpeech.IchidanVerb: case PartOfSpeech.Copula: case PartOfSpeech.SuruVerb: return GetVerbForms(entry); case PartOfSpeech.Adjective: return GetAdjectiveForms(entry); default: return new PhraseSequenceElement[] { new PhraseSequenceElement(entry.ID, 0) }; } }
public static string GetVerbForm(DictionaryDataEntry entry, int form, JapaneseScriptType scriptType) { if (form == Want) { var s = GetVerbForm(entry, PolitePresentIndicative, scriptType); s = s.Substring(0, s.Length - 2); return s + verbEndings[Want]; } var text = entry.Kana; switch (scriptType) { case JapaneseScriptType.Kanji: text = entry.Kanji; break; } switch (entry.GetPartOfSpeech()) { case PartOfSpeech.GodanVerb: return ConjugateGroup1Verb(text, form); case PartOfSpeech.IchidanVerb: return ConjugateGroup2Verb(text, form); case PartOfSpeech.Copula: case PartOfSpeech.SuruVerb: return ConjugateIrregularVerb(text, form); } return null; }
public static string GetForm(DictionaryDataEntry entry, int form, JapaneseScriptType scriptType = JapaneseScriptType.Kanji) { if (entry == null) { return null; } if (additionalForms.ContainsKey(entry.Kanji)) { //if (scriptType == JapaneseScriptType.Kanji) { // return entry.Kanji; //} var formString = additionalForms[entry.Kanji].GetSafely(form); if (scriptType == JapaneseScriptType.Romaji) { return KanaConverter.Instance.ConvertToRomaji(formString); } else { return formString; } } switch (entry.GetPartOfSpeech()) { case PartOfSpeech.GodanVerb: case PartOfSpeech.IchidanVerb: case PartOfSpeech.Copula: case PartOfSpeech.SuruVerb: switch (scriptType) { case JapaneseScriptType.Romaji: return KanaConverter.Instance.ConvertToRomaji(GetVerbForm(entry, form, scriptType)); default: return GetVerbForm(entry, form, scriptType); } case PartOfSpeech.Adjective: if (scriptType == JapaneseScriptType.Romaji) { return KanaConverter.Instance.ConvertToRomaji(GetAdjectiveForm(entry, form, scriptType)); } else { return GetAdjectiveForm(entry, form, scriptType); } default: switch (scriptType) { case JapaneseScriptType.Kana: return entry.Kana; case JapaneseScriptType.Romaji: return KanaConverter.Instance.ConvertToRomaji(entry.Kana); default: return entry.Kanji; } } }