예제 #1
0
    public string GetText(JapaneseScriptType scriptType = JapaneseScriptType.Kanji)
    {
        StringBuilder sb = new StringBuilder();
        if (PhraseElements.Count > 0) {
            sb.Append(PhraseElements[0].GetText(scriptType));
        }

        for (int i = 1; i < PhraseElements.Count; i++) {
            if (scriptType == JapaneseScriptType.Romaji) {
                sb.Append(" ");
            }
            sb.Append(PhraseElements[i].GetText(scriptType));
        }

        return sb.ToString();
    }
예제 #2
0
    public string GetText(JapaneseScriptType scriptType, ContextData context)
    {
        switch (ElementType) {
            case PhraseSequenceElementType.Text:
                //Debug.Log("IS TEXT");
                return Text;
            case PhraseSequenceElementType.FixedWord:
                var e = DictionaryData.Instance.GetEntryFromID(WordID);
                return ConjugationTool.GetForm(e, FormID, scriptType);
            case PhraseSequenceElementType.TaggedSlot:
                if (Tags.Count > 0) {
                    var s = "";
                    foreach (var t in Tags) {
                        s += "<" + t + "> ";
                    }
                    return s;
                } else {
                    return "<>";
                }
            case PhraseSequenceElementType.ContextSlot:
                //Debug.Log(Text);
                return context.Get(Text).Data.GetText(scriptType);

            case PhraseSequenceElementType.Wildcard:
                return "*";
        }
        return Text;
    }
예제 #3
0
 public string GetText(JapaneseScriptType scriptType)
 {
     switch (ElementType) {
         case PhraseSequenceElementType.Text:
             switch (scriptType) {
                 case JapaneseScriptType.Romaji:
                     if(RomajiText.IsEmptyOrNull()){
                         return KanaConverter.Instance.ConvertToRomaji(Text);
                     }else{
                 return RomajiText;
                     }
                 default:
                     return Text;
             }
         case PhraseSequenceElementType.FixedWord:
             var e = DictionaryData.Instance.GetEntryFromID(WordID);
             return ConjugationTool.GetForm(e, FormID, scriptType);
         case PhraseSequenceElementType.TaggedSlot:
             return "<" + Text + ">";
         case PhraseSequenceElementType.ContextSlot:
             return "[" + Text + "]";
         case PhraseSequenceElementType.Wildcard:
             return "*";
     }
     return Text;
 }
예제 #4
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;
        }
예제 #5
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;
                    }
            }
        }
예제 #6
0
        public static string GetAdjectiveForm(DictionaryDataEntry entry, int form, JapaneseScriptType scriptType)
        {
            if (form == AdjectiveI) {
                return entry.Kana.Substring(0, entry.Kana.Length - 1) + adjectiveEndings[AdjectiveI];
            }

            if (form == AdjectiveNa) {
                return entry.Kana + adjectiveEndings[AdjectiveNa];
            }

            return entry.Kana;
        }