# 单词翻译的原理
其实是翻译SDK的使用原理
第一步,初始化SDK TranslateOfflineActivity
~~~
translatorOffline = new TranslatorOffline();
//(1)若使用离线查词,请通过方式一、方式二或者方式三初始化词库(方式一、二、三不可以共用);
//(2)若使用离线句子查询,请初始化离线句子库;
//(3)若查词和查句子都初始化了,则每次查询,先去词库中找,然后去句子库中查询
//初始化词库方式一,词库在assets/dict目录下,不支持直接放在assets目录下,会遍历该目录下所有词库进行初始化
translatorOffline.initWordDict("dict", true, new EnWordTranslator.EnWordInitListener() {
@Override
public void success() {
Log.d("translatorOffline","init success");
}
public void fail(TranslateErrorCode errorCode){
Log.d("translatorOffline","init false");
}
});
~~~
2. 第二步,翻译监控事件,输入框输入的单词,点击查询,都会回到listenner事件内部里,方便我们显示翻译结果、插入单词本数据中。
~~~
TranslateListener listener = new TranslateListener() {
@Override
public void onResult(final Translate result, final String input, String requestId) {
handler.post(new Runnable() {
@Override
public void run() {
TranslateData td = new TranslateData(
System.currentTimeMillis(), result);
list.add(td);
//添加至生词本
NoteDao noteDao=((DemoApplication)getApplication()).getDaoSession().getNoteDao();
Note note=new Note();
note.setSrcWords(input);
note.setText(td.getTranslate().getExplains().get(0));
noteDao .insertOrReplace(note);
trslist.add(result);
adapter.notifyDataSetChanged();
questList.setSelection(list.size() - 1);
imm.hideSoftInputFromWindow(
fanyiInputText.getWindowToken(), 0);
}
});
}
@Override
public void onError(final TranslateErrorCode error, String requestId) {
handler.post(new Runnable() {
@Override
public void run() {
ToastUtils.show("查询错误:" + error.name());
}
});
}
@Override
public void onResult(final List<Translate> results, List<String> inputs, final List<TranslateErrorCode> errors, String requestId) {
handler.post(new Runnable() {
@Override
public void run() {
StringBuilder sb = new StringBuilder("错误如下:");
boolean error = false;
for (int i = 0; i < results.size(); i++) {
Translate result = results.get(i);
if (result == null) {
sb.append(i + " " + errors.get(i).getCode() + " ");
error = true;
continue;
}
TranslateData td = new TranslateData(
System.currentTimeMillis(), result);
list.add(td);
trslist.add(result);
adapter.notifyDataSetChanged();
questList.setSelection(list.size() - 1);
imm.hideSoftInputFromWindow(
fanyiInputText.getWindowToken(), 0);
}
if (error) {
ToastUtils.show(sb.toString());
}
}
});
}
};
~~~