我正尝试在安卓应用程序中使用谷歌翻译API,但不幸的是,由于谷歌云Java客户端目前不支持安卓,我找不到一个合理的方法来实现这个功能!
有没有更好的解决方案?
我正尝试在安卓应用程序中使用谷歌翻译API,但不幸的是,由于谷歌云Java客户端目前不支持安卓,我找不到一个合理的方法来实现这个功能!
有没有更好的解决方案?
请查看此链接
它是如何工作的?
它需要三个参数,要翻译的文本、源语言和目标语言。它在后台执行翻译并返回结果字符串。
特点
示例:
GoogleTranslate googleTranslate = new GoogleTranslate();
// Perform the translation by invoking the execute method, but first save the result in a String.
// The second parameter is the source language, the third is the terget language
String result = googleTranslate.execute("the text to be translated", "en", "de").get();
更新:
希望能对你有所帮助。
sourceList
包含要翻译的单词或短语列表。
如果 sourceLanguage
为空,则 Google 将自行确定语言源。该任务返回已翻译单词/短语的列表。
implementation 'com.google.cloud:google-cloud-translate:2.16.0'
我写这段代码只是作为一个例子,你可以随意使用它。
List<String> list = new ArrayList<>();
list.add("cat");
list.add("dog");
list.add("fish");
list.add("apple");
new TranslateAsyncTask(list, null, "ua").execute();
public class TranslateAsyncTask extends AsyncTask<Void, Void, List<String>> {
private final String TAG = TranslateAsyncTask.class.getName();
private final String API_KEY = "YOUR API KEY";
private List<String> sourceList = new ArrayList<>();
private String sourceLanguage;
private String targetLanguage;
public TranslateAsyncTask(List<String> list, String source, String target) {
this.sourceList = list;
this.sourceLanguage = source;
this.targetLanguage = target;
}
@Override
protected List<String> doInBackground(Void... params) {
List<String> resultList = new ArrayList<>();
try {
Log.i(TAG, "from " + this.sourceLanguage
+ "->" + this.targetLanguage
+ " : text: " + this.sourceList.toString());
// Objects needed for the translate object
NetHttpTransport netHttpTransport = new NetHttpTransport();
JacksonFactory jacksonFactory = new JacksonFactory();
Translate translate = new Translate.Builder(netHttpTransport, jacksonFactory, null).build();
Translate.Translations.List listToTranslate
= translate
.new Translations()
.list(sourceList, targetLanguage)
.setKey(API_KEY);
// If sourceLanguage == null then the language detects automatically
if (sourceLanguage != null) listToTranslate.setSource(sourceLanguage);
// Executing the translation and saving the response in the response object
TranslationsListResponse response = listToTranslate.execute();
List<TranslationsResource> list = response.getTranslations();
Log.i(TAG, "result list size: " + list.size());
for (TranslationsResource resource : list) {
Log.i(TAG, "resource: " + resource.getTranslatedText());
resultList.add(resource.getTranslatedText());
}
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
return resultList;
}
@Override
protected void onPostExecute(List<String> result) {
Log.w(TAG, "RESULT: " + result.toString());
super.onPostExecute(result);
}
}