调用 Google 翻译的地址格式:

http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + 原始文本 + "&langpair=" + 原语言 + "%7C" + 目标语言


利用Google提供的插件来翻译

详细内容可以参考:http://code.google.com/p/google-api-translate-java/

http://code.google.com/p/google-api-translate-java/downloads/detail?name=google-api-translate-java-0.92.jar


返回的数据格式如下, 可以用 responseData.translatedText 简单获取:

{
  "responseData" : {"translatedText" : "返回的文本"}, 
  "responseDetails" : null, 
  "responseStatus" : 200
}


$ dropjava -user user/password@tns  google-api-translate-java-0.92.jar
$ loadjava -user user/password@tns -force -resolve -verbose google-api-translate-java-0.92.jar 

create or replace and compile java source named gtranslate  as

import java.net.URLEncoder;

import com.google.api.translate.Language;
import com.google.api.translate.Translate;

public class gtranslate  {
  private static final String CHARSET = "UTF-8";
  public static void main(String[] args) throws Exception {
    /* Enter the URL of your site here */  
    Translate.setHttpReferrer("http://code.google.com/p/google-api-translate-java/");  
    /** 
     * 第一个参数:要翻译的内容 
     * 第二个参数:翻译内容原始的语言 
     * 第三个参数:翻译内容要得到结果的语言 
     */  
    String translatedText = Translate.execute("试验", Language.CHINESE, Language.ENGLISH);       
    System.out.println(translatedText);   
  }
  
  public static void run() throws Exception {
    // Set the HTTP referrer to your website address.
    Translate.setHttpReferrer("http://code.google.com/p/google-api-translate-java/");
    String translatedText = Translate.execute("试验", Language.CHINESE, Language.ENGLISH); 
    System.out.println(translatedText);
  }
  
  public static String UTF8Encode (String s) throws Exception {
    String utf8encode = URLEncoder.encode(s, CHARSET);
    return utf8encode;
  }
  
}

create or replace package pkg_translate is

  function utf8encode(p_text in varchar2) return varchar2;

end pkg_translate;
/
create or replace package body pkg_translate is

  function utf8encode(p_text in varchar2) return varchar2
  is language java name 'gtranslate.UTF8Encode(java.lang.String) return java.lang.String';
end pkg_translate;
/

create or replace procedure pro_gtranslate 
as language java
name 'gtranslate.run()';
/

begin
  -- Call the function
  :result := pkg_translate.utf8encode(p_text => :p_text);
end;
/

--待解决
SQL> execute pro_gtranslate;
 Exception in thread "Root Thread" java.lang.Exception: [google-api-translate-java] Error retrieving translation.
	at com.google.api.GoogleAPI.retrieveJSON(GoogleAPI.java:123)
	at com.google.api.translate.Translate.execute(Translate.java:69)
	at TestTranslate.db_run(TESTTRANSLATE:23)
Caused by: java.net.UnknownHostException: ajax.googleapis.com
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
	at java.net.Socket.connect(Socket.java:519)
	at java.net.Socket.connect(Socket.java:469)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:382)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:494)
	at sun.net.www.http.HttpClient.<init>(HttpClient.java:231)
	at sun.net.www.http.HttpClient.New(HttpClient.java:304)
	at sun.net.www.http.HttpClient.New(HttpClient.java:316)
	at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:817)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:769)
	at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:694)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:861)
	at com.google.api.GoogleAPI.retrieveJSON(GoogleAPI.java:107)
	... 2 more
 
begin pro_gtranslate; end;
 
ORA-29532: Java call terminated by uncaught Java exception: java.lang.Exception: [google-api-translate-java] Error retrieving translation.
ORA-06512: at "GTRANSLATE.PRO_GTRANSLATE", line 1
ORA-06512: at line 2


--PL/SQL
DECLARE
  v_text varchar2(1000) := '专案系统的中文信息 %S 自动批次翻译成英文已完成啦!';
  req    utl_http.req;
  resp   utl_http.resp;
  value  VARCHAR2(1000);
  obj    json;
BEGIN
  v_text := pkg_translate.utf8encode@gtranslate(v_text);
  req    := utl_http.begin_request('http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=' ||
                                   v_text || '&langpair=zh|en');
  resp   := utl_http.get_response(req);
  LOOP
    utl_http.read_line(resp, value, TRUE);
    obj   := json(value);
    value := json_ext.get_string(obj, 'responseData.translatedText');
    value := replace(value, '% S', '%S');
    dbms_output.put_line(value);
  END LOOP;
  utl_http.end_response(resp);
EXCEPTION
  WHEN utl_http.end_of_body THEN
    utl_http.end_response(resp);
END;

你可能感兴趣的:(java,Ajax,.net,Google,sun)