首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的基于Java web的项目中使用google-api翻译Java

在我的基于Java web的项目中使用google-api翻译Java
EN

Stack Overflow用户
提问于 2016-03-16 02:17:29
回答 1查看 1.1K关注 0票数 0

我在基于web的应用程序中使用google translate来翻译从图像中提取的一些文本。我的代码如下

代码语言:javascript
复制
package translators;

import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Arrays;
import org.google.translate.api.v2.core.Translator;
import org.google.translate.api.v2.core.TranslatorException;
import org.google.translate.api.v2.core.model.Detection;
import org.google.translate.api.v2.core.model.Language;
import org.google.translate.api.v2.core.model.Translation;

/**
 *
 * @author User
 */
public class Translators {

    /**
     * @param args the command line arguments
     */
    private static Translator translator;

    public static void main(String[] args) throws IOException, URISyntaxException {

        if (args.length != 1) {

            System.out.println("Google API key must be passed as the first and last argument");

            System.exit(1);

        }
        translator = new Translator(args[0]);

        try {

            testLanguages();

            testTranslate();

            testDetect();

        } catch (TranslatorException e) {

            System.out.println("Google Translate API returned an error " + e.getMessage());

            e.printStackTrace();

        } finally {

            translator.close();

        }

    }

    public static void testLanguages() throws IOException, URISyntaxException, TranslatorException {

        Language[] languages = translator.languages("en"); 

        System.out.println("languages = " + Arrays.toString(languages));
    }

    public static void testTranslate() throws IOException, URISyntaxException, TranslatorException {


        Translation fromEnglish = translator.translate("I", "en", "es");

        System.out.println("'I' in en = '" + fromEnglish.getTranslatedText() + "' in es");


        Translation fromUnknown = translator.translate("I", null, "es");

        System.out.println("'I' in " + fromUnknown.getDetectedSourceLanguage() + " = '" + fromUnknown.getTranslatedText() + "' in es");


        String[] sourceTexts = {"I", "a"};

        Translation[] translations = translator.translate(sourceTexts, null, "es");

        for (int i = 0, sourceTextsLength = sourceTexts.length; i < sourceTextsLength; i++) {

            System.out.println("'" + sourceTexts[i] + "' in en = " + "'" + translations[i].getTranslatedText() + "' in es");

        }


    }

    private static void testDetect() throws IOException, URISyntaxException, TranslatorException {

        Detection[][] detections = translator.detect(new String[]{"I", "We"});

        System.out.println("detections = " + Arrays.deepToString(detections));


    }
}

我还将所需的jar文件导入到库中。但是我得到了以下输出

代码语言:javascript
复制
run:
Google API key must be passed as the first and last argument
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

我搞不懂原因。有人知道原因吗?谢谢。

更新

我将命令行参数部分替换为以下两行

代码语言:javascript
复制
String key = "AIzaSyAbofnwFYErbdycq5E8ip7f3_8mT6T_Tjc";

        translator = new Translator(key);

然后我得到了下面的输出

代码语言:javascript
复制
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
languages = [Afrikaans, Albanian, Amharic, Arabic, Armenian, Azerbaijani, Basque, Belarusian, Bengali, Bosnian, Bulgarian, Catalan, Cebuano, Chichewa, Chinese (Simplified), Chinese (Traditional), Corsican, Croatian, Czech, Danish, Dutch, English, Esperanto, Estonian, Filipino, Finnish, French, Frisian, Galician, Georgian, German, Greek, Gujarati, Haitian Creole, Hausa, Hawaiian, Hebrew, Hindi, Hmong, Hungarian, Icelandic, Igbo, Indonesian, Irish, Italian, Japanese, Javanese, Kannada, Kazakh, Khmer, Korean, Kurdish (Kurmanji), Kyrgyz, Lao, Latin, Latvian, Lithuanian, Luxembourgish, Macedonian, Malagasy, Malay, Malayalam, Maltese, Maori, Marathi, Mongolian, Myanmar (Burmese), Nepali, Norwegian, Pashto, Persian, Polish, Portuguese, Punjabi, Romanian, Russian, Samoan, Scots Gaelic, Serbian, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenian, Somali, Spanish, Sundanese, Swahili, Swedish, Tajik, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Uzbek, Vietnamese, Welsh, Xhosa, Yiddish, Yoruba, Zulu]
org.google.translate.api.v2.core.TranslatorException: ApiError{code=403, message='Daily Limit Exceeded', errors=[ErrorEntry{domain='usageLimits', reason='dailyLimitExceeded', message='Daily Limit Exceeded', location='null', locationType='null'}]}
Google Translate API returned an error ApiError{code=403, message='Daily Limit Exceeded', errors=[ErrorEntry{domain='usageLimits', reason='dailyLimitExceeded', message='Daily Limit Exceeded', location='null', locationType='null'}]}
    at org.google.translate.api.v2.core.Translator.readResponse(Translator.java:279)    at org.google.translate.api.v2.core.Translator.readResponse(Translator.java:279)
    at org.google.translate.api.v2.core.Translator.translate(Translator.java:124)
    at org.google.translate.api.v2.core.Translator.translate(Translator.java:87)
    at translators.Translators.testTranslate(Translators.java:73)
    at translators.Translators.main(Translators.java:45)
BUILD SUCCESSFUL (total time: 6 seconds)

你知道确切原因吗?我不能免费使用这个API吗?

EN

回答 1

Stack Overflow用户

发布于 2016-03-16 02:32:12

看看这个代码区域:-

代码语言:javascript
复制
 if (args.length != 1) {

        System.out.println("Google API key must be passed as the first and last argument");

        System.exit(1);

    }
    translator = new Translator(args[0]);

这意味着您必须传递一个命令行参数,这恰好是google键。您可以删除此检查,然后将一个硬编码键替换为要测试它的args,但我建议将其作为命令行参数传递。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36025704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档