如何在Android上使用Google翻译API?

4

我正尝试在安卓应用程序中使用谷歌翻译API,但不幸的是,由于谷歌云Java客户端目前不支持安卓,我找不到一个合理的方法来实现这个功能!

有没有更好的解决方案?

4个回答

4

请查看此链接

它是如何工作的?

它需要三个参数,要翻译的文本、源语言和目标语言。它在后台执行翻译并返回结果字符串。

特点

  • 使用Google Cloud Translation API翻译文本
  • 只有一个简短的类,易于使用和理解

示例:

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();

更新:

还可以查看这个文档GitHub

希望能对你有所帮助。


你能清楚地告诉我你想做什么吗?是语音转文字、文字转语音还是句子翻译等方面的内容? - Vishal Sharma
这个 API 是免费的还是付费的? - Sunil Chaudhary

0
云翻译 API 以 REST API 的方式公开,如文档所示,因此您可以使用喜爱的 Android HTTP 库来使用它。

0

你也可以尝试使用 Phrase Phrase 提供了一种方式,使用不同的翻译引擎或您选择的选项来将用户生成的内容翻译为所需的目标语言。


0

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();

请使用您的 API 密钥。
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);
}

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接