Пример #1
0
        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) };
            }
        }
Пример #2
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;
        }
Пример #3
0
        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;
                    }
            }
        }