【问题标题】:Google Translate API with android application带有 Android 应用程序的 Google 翻译 API
【发布时间】:2016-02-05 22:06:02
【问题描述】:

我创建了一个 android 应用程序,并且正在使用 Google Translate Rest 服务。

我使用此 URL 发送请求以翻译源文本。

"https://www.googleapis.com/language/translate/v2?key=" + apiKey + "&target=en&q=" + text"

如您所见,未设置源语言以使服务能够检测到 给定文本的语言。

当我用希伯来语输入一些东西时,我得到的结果是问号。

例如,如果我输入“שלום עולם”,需要翻译成英文的“hello world”, 我得到结果“???? ????”。

我尝试过使用其他语言,例如俄语或西班牙语。它适用于西班牙语,但 使用俄语,它就像希伯来语一样工作。

API 有什么错误还是我做错了什么?

更新:

  encoded = URLEncoder.encode(textToTranslate,"UTF-8");
  url = new URL("https://www.googleapis.com/language/translate/v2?key=" + apiKey + "&target=en&q=" + encoded);

谢谢, 埃利奥

【问题讨论】:

    标签: android google-translate


    【解决方案1】:

    您需要在作为q参数传递之前对文本进行编码。

    例如对于字符串 שלום עולם

    String original = "שלום עולם";
    String encoded = null;
    try {
        encoded = URLEncoder.encode(original, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    

    encoded 变量的值将是%D7%A9%D7%9C%D7%95%D7%9D+%D7%A2%D7%95%D7%9C%D7%9D,URL 变为:

    "https://www.googleapis.com/language/translate/v2?key=" + apiKey + "&target=en&q=%D7%A9%D7%9C%D7%95%D7%9D+%D7%A2%D7%95%D7%9C%D7%9D"
    

    【讨论】:

    • 谢谢,它有助于从希伯来语翻译,但目前还没有翻译其他语言,如德语和西班牙语。当我传递德语中的“welt”或西班牙语中的“hola”时,我得到输入作为结果,它没有翻译它们..还有其他选择吗?
    • 这真的很奇怪,它应该也适用于拉丁字符。 URLEncoder.encode 带有 welthola 字样的结果是什么?它们应该与输入保持相同。您能否更新您的问题并添加您使用 welthola (带或不带URLEncoder.encode)调用的网址?谢谢
    • 您指定了source 参数,因此它只翻译自希伯来语。删除source=he,它应该可以工作
    • 对不起。这是错误的网址,问题是当我尝试从西班牙语翻译时,它返回我输入的输入,而不是翻译后的单词。
    • 您要翻译的西班牙语单词的textToTranslateencoded 的值是多少?
    猜你喜欢
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    相关资源
    最近更新 更多