我在基于web的应用程序中使用google translate来翻译从图像中提取的一些文本。我的代码如下
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文件导入到库中。但是我得到了以下输出
run:
Google API key must be passed as the first and last argument
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)我搞不懂原因。有人知道原因吗?谢谢。
更新
我将命令行参数部分替换为以下两行
String key = "AIzaSyAbofnwFYErbdycq5E8ip7f3_8mT6T_Tjc";
translator = new Translator(key);然后我得到了下面的输出
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吗?
发布于 2016-03-16 02:32:12
看看这个代码区域:-
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,但我建议将其作为命令行参数传递。
https://stackoverflow.com/questions/36025704
复制相似问题