在基于java web的项目中使用google api翻译java

在基于java web的项目中使用google api翻译java,java,google-translate,Java,Google Translate,我在基于web的应用程序中使用google api translate java来翻译从图像中提取的一些文本。我的代码如下 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.transla

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

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


    }
}
我想不出原因。有人知道原因吗?先谢谢你

已更新

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

String key = "AIzaSyAbofnwFYErbdycq5E8ip7f3_8mT6T_Tjc";

        translator = new Translator(key);
然后我得到了以下输出

run:
Google API key must be passed as the first and last argument
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
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吗?

看看这个代码区域:-

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

这意味着您必须传递一个命令行参数,它恰好是GoogleAPI键。您可以删除此检查,然后用硬编码键代替args[0],如果您想测试它,但我建议将其作为命令行参数传递

我已经更新了你提到的问题。您能检查一下并帮助我吗?这取决于您使用API的频率。您在注册时是否有任何费率限制(例如每分钟20个电话?)。此外,这是否发生在第一次审判中?