我正在尝试制作一个多语言词典让我们说英语 - 德语词典。
我认为我需要一个语言类和一个单词类,但不同的语言有不同的单词类型和动词时态,例如,在德语中有不同的单词性别(男性,女性,中性)。
现在我的问题是如何在代码中表示不同的语言:
1-语言父类,单词父类 2-语言" a" class,word" inLanguageA"类和不同的单词类型和功能 3-语言" b" class,word" inLanguageB"类和不同的单词类型和功能
这样我就可以获得wordInLanguageA.meaning(inLanguageB)。
例如,为语言嵌套类的最佳方法是什么:
如果德语是一个实现接口语言的新类,或者是父类语言的子类,那么单词类型如何处理呢? 德语有这种类型(名词,动词,形容词),每种类型都应该有自己的方法,有时一种或两种类型之间可能存在关系(" gehen":动词"去" ," gehend":形容词"去")
答案 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;
}