多语言字典的数据结构

时间:2017-10-08 14:31:49

标签: java oop design-patterns data-structures

我正在尝试制作一个多语言词典让我们说英语 - 德语词典。

我认为我需要一个语言类和一个单词类,但不同的语言有不同的单词类型和动词时态,例如,在德语中有不同的单词性别(男性,女性,中性)。

现在我的问题是如何在代码中表示不同的语言:

1-语言父类,单词父类 2-语言" a" class,word" inLanguageA"类和不同的单词类型和功能 3-语言" b" class,word" inLanguageB"类和不同的单词类型和功能

这样我就可以获得wordInLanguageA.meaning(inLanguageB)。

例如,为语言嵌套类的最佳方法是什么:

如果德语是一个实现接口语言的新类,或者是父类语言的子类,那么单词类型如何处理呢? 德语有这种类型(名词,动词,形容词),每种类型都应该有自己的方法,有时一种或两种类型之间可能存在关系(" gehen":动词"去" ," gehend":形容词"去")

2 个答案:

答案 0 :(得分:0)

我认为你可以拥有像名词,动词......和语言类这样的单词的类,这些单词可以为不同的情况转换你的单词,比如扩展语言的类英语,例如类值为“写”的类Word,然后你可以调用语言类的方法toPastTime(Word“write”) - >写道,或类似这样的恕我直言。

答案 1 :(得分:0)

如果你想让它变得完美,那么不同的类将是你最小的问题,因为每种语言都有它的方法来转换一个短语。英语总是使用SVO,而在德语中你可以用任何你喜欢的方式扭曲这个短语。在德语中,你将挣扎于主格,指责,配音和属格,而英语只会将其语言转化为属格。关于这些语言如何运作的规则非常多,并且有一个原因可以让你在大学里学习它们。我的意思是,即使Google无法正确翻译100%。

因为您可能不需要为您的程序使用超级翻译器,我认为手动翻译所有文本然后创建一个简单的Text类更容易,它可以在你喜欢的语言。

编辑: 所以如果你只想要一本字典,你可以看起来像这样:

字典

public class Dictionary {

    private Word check, it, out;

    Dictionary() {

        check = new Verb("check", "prüfen", "tester");
        it = new Pronoun("it", "es", "le");
        out = new Preposition("out", "hinaus", "dehors");

        try {
            System.out.print(check.translateTo(Language.German));
            System.out.print(it.translateTo(Language.German));
            System.out.print(out.translateTo(Language.German));
        } catch (Exception whatever) {
            whatever.printStackTrace();
        }
    }
}

一个字

public abstract class Word {

    private final String english, german, french;

    protected Word(String english, String german, String french) {
        this.english = english;
        this.german = german;
        this.french = french;
    }

    public String translateTo(Language language) throws Exception {
        switch(language) {
        case English:   return english;
        case German:    return german;
        case French:    return french;
        }
        throw new Exception();      //you can write a LanguageNotFoundException
    }
}

不同类型的词语

public class Verb extends Word {

    protected Verb(String english, String german, String french) {
        super(english, german, french);
    }
}

public class Pronoun extends Word {

    protected Pronoun(String english, String german, String french) {
        super(english, german, french);
    }
}

public class Preposition extends Word {

    protected Preposition(String english, String german, String french) {
        super(english, german, french);
    }
}

语言

public enum Language {

    English,
    German,
    French;
}
相关问题