🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 单词翻译的原理 其实是翻译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()); } } }); } }; ~~~