我的应用

时间:2017-01-09 07:14:49

标签: java android algorithm

我只是在android中开发了一个基本的英语到Chavacano(母语)翻译应用程序。

好吧,我已经完成了字符串标记,其中对于每个被标记化的单词,应用程序将在数据库中选择相应的等效字符。

为了清楚地形象化,我将使用图表和代码进一步解释它。

数据库:

_id | english   | chavacano
1       I           yo
2       you         tú
3    I love you    ta ama yo contigo

主要Activity.java

DataBaseHelper myDatabaseHelper = new DataBaseHelper(this);

//Declared EditText
TextView view = (TextView) getView().findViewById(R.id.editText4);
TextView view2 = (TextView) getView().findViewById(R.id.editText3);
enter code here

//First check if text input is phrase and store to String but if not return false

 myDatabaseHelper.openDatabase();
String preText = myDatabaseHelper.Translator(view2.getText().toString());
  myDatabaseHelper.closeDataBase();

//Check if bool is true , true if the text is translated but if false means there's no corresponding translation for it so do the String Tokenization

if(myDatabaseHelper.indicator==true{
 view.setText(preText.getText());
}

else if (myDatabaseHelper.indicator==false{
//Lets do the string tokenization
StringTokenizer st = new StringTokenizer(view2.getText().toString());
 while (st.hasMoreTokens()) {
                myDatabaseHelper.openDatabase();

                String text = myDatabaseHelper.translator(st.nextToken().toString()); //this is the method to query

                myDatabaseHelper.closeDataBase();


                    sb.append(text);
                    sb.append(" ");

            }
            view.setText(sb.toString());
}

DatabaseHelper.java的代码

boolean indicator=false;
public String translator(String answer) {

    String translated="x";
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor c = db.rawQuery("SELECT chavacano FROM dictionary where english'"+answer+"'", null);
    if(c.moveToFirst()){
        do{


            translated= c.getString(0);



        }while(c.moveToNext());
        indicator=false;
    }
    else{
        indicator=true;
        return answer;
    }
    c.close();
    db.close();

return translated;
}

所以我们走了, 我可以翻译我爱你到你的contigo 但如果我把另一个文字放入我爱你的短语中。就像我爱你女孩

它将被翻译成"哟爱tu女孩" 我怎么能得到" ta ama you contigo Girl" ?

我需要做什么或者我应该添加什么算法才能使这个应用更准确? 如果Text包含(AND,标点符号)等等,我还在考虑使用Split字符串之一

谢谢

2 个答案:

答案 0 :(得分:3)

为什么不使用比你制作的更好的翻译Apis

简单如下线

GoogleAPI.setKey(/* Enter your API key here */);

String translatedText = Translate.DEFAULT.execute("Bonjour le monde", Language.FRENCH, Language.ENGLISH);

请参阅此链接以获取Android翻译 https://developers.google.com/translate/

演示项目链接See here

此博客http://android-er.blogspot.in/2009/10/androidtranslate-using-google-translate.html

中有完整的示例

答案 1 :(得分:2)

正如您已经想到的那样,通过简单地根据模式或查找表映射单词和短语来翻译文本并不能产生良好的效果。

然而,做一个体面的翻译工作非常困难。如果你从头开始(和一本好的教科书),你需要多年的努力。

因此,更实际的方法是使用现有的Google Translate集成,或调查第三方现成的替代品......适用于Android。

如果这是一个学生项目,那么我会建议找到一本好的教科书并阅读它。另外,与您的项目顾问讨论有多好,"足够好" ...因为做得很好很可能是不可行的。

(我们无法解释如何在Stack Overflow答案中进行语言翻译。主题太大了。)