首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

12.4  在线翻译

Google的在线翻译功能强大,本节的目标就是利用Google的翻译引擎构造自己的翻译系统。要实现的翻译页面的运行效果如图12.4所示。

图12.4  在线翻译的页面效果图

12.4.1  在线翻译的显示页面Google.aspx

在图12.4中可以看出,整个页面的翻译功能有两种:网页翻译和文字翻译。其中网页翻译的实现比较简单,直接传递给Google合适的参数,然后打开google的翻译页面即可。而文字翻译则需要服务器端进行处理。Google.aspx的页面代码如下:

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>在线翻译</title>

    <script type="text/javascript" src="xmlhttp.js"></script>

    <script language="javascript" type="text/javascript">

function Button2_onclick()                              //网页翻译

{

     //post的数据,完全按google的要求

     var postdata="u="+$("text1").value+"&langpair="+$ ("langpair1"). value+"&hl ="+$("hl"). value+"&ie="+$("ie").value+"&oe="+$("ie").value;

     window.open("http://translate.google.com/translate_p?"+postdata);

}

function Button1_onclick()                              //文字翻译

{

     //post的数据

     var postdata=" text="+$("text"). value+"&langpair="+$ ("langpair"). value+"&hl=" +$("hl").value+" &ie="+$("ie").value;

     //显示提示文字

     $("q").value="正在翻译中,请稍候............";

     Request.sendPOST("google.ashx?type=strTo",postdata,rec,null,fal);//发送请求

}

function rec(req,data)                                  //服务器回调函数

{

     if(req.responseText=="")

           $("q").value = "没有数据,请重新查询!";

     else

           $("q").value = req.responseText;                    //显示数据

}

function fal(req,dat)                                   //失败后的回调函数

{

     alert('查询失败,请重试!!');

}

     </script>

</head>

<body>

    <form id="form1" runat="server">

         <div>

              <div>

                   <div style="width: 530px">

                      <table border="0" cellpadding="0" cellspacing="0" height="90"
                           width="70%">

                           <tr>

                                <td>

                                     <h3>

                                         翻译网页:</h3>

                                </td>

                          </tr>

                          <tr>

                               <td>

                                    <br />

                                    <input id="text1" size="45" type="text" value=
                                         "http://" /></td>

                          </tr>

                          <tr>

                               <td>

                                   <span>从&nbsp;<select id="langpair1">

                                       <option value="en|de">英语 翻译成 德语</option>

                                       <option value="en|es">英语 翻译成 西班牙语</option>

                                       <option value="en|fr">英语 翻译成 法语</option>

                                       <option value="en|it">英语 翻译成 意大利语</option>

                                       <option value="en|pt">英语 翻译成 葡萄牙语</option>

                                       <option value="en|ar">英语 翻译成 阿拉伯文BETA </option>

                                       <option value="en|ja">英语 翻译成 日语 BETA</option>

                                       <op tion value="en|ko">英语 翻译成 朝鲜语 BETA </option>

                                       <option value="en|zh-CN">英语 翻译成 中文(简体) BETA
                                            </option>

                                       <option value="de|en">德语 翻译成 英语</option>

                                       <option value="de|fr">德语 翻译成 法语</option>

                                       <option value="es|en">西班牙语 翻译成 英语</option>

                                       <option value="fr|en">法语 翻译成 英语</option>

                                       <option value="fr|de">法语 翻译成 德语</option>

                                       <option value="it|en">意大利语 翻译成 英语</option>

                                       <option value="pt|en">葡萄牙语 翻译成 英语</option>

                                       <option value="ar|en">阿拉伯文 翻译成 英语 BETA
                                            </option>

                                       <option value="ja|en">日语 翻译成 英语 BETA</option>

                                       <option value="ko|en">朝鲜语 翻译成 英语 BETA
                                            </option>

                                       <option selected="selected" value="zh-CN|en">
                                            中文(简体) 翻译成 英语 BETA</option>

                                   </select></span>

                                   <input name="Submit2" onclick="Button2_onclick()"
                                        type="button"value="翻 译" /></td>

                         </tr>

                    </table>

                    <br />

                    <table border="0" cellpadding="0" cellspacing="0" class="tb" width="70%">

                         <tr>

                               <td height="30">

                                    <h3>

                                        翻译下列文字:</h3>

                                </td>

                          </tr>

                          <tr>

                            <td>

                                <br />

                                <textarea id="text" cols="40" rows="6"></textarea></td>

                        </tr>

                        <tr>

                                <td height="30">

                                     <span>从 </span>

                                     <select id="langpair">

                                         <option value="en|de">英语 翻译成 德语</option>

                                         <option value="en|es">英语 翻译成 西班牙语</option>

                                         <option value="en|fr">英语 翻译成 法语</option>

                                         <option value="en|it">英语 翻译成 意大利语</option>

                                         <option value="en|pt">英语 翻译成 葡萄牙语</option>

                                         <option value="en|ar">英语 翻译成 阿拉伯文 BETA
                                              </option>

                                         <option value="en|ja">英语 翻译成 日语 BETA
                                              </option>

                                         <option value="en|ko">英语 翻译成 朝鲜语 BETA
                                              </option>

                                         <option value="en|zh-CN">英语 翻译成 中文(简体) BETA
                                              </option>

                                         <option value="de|en">德语 翻译成 英语</option>

                                         <option value="de|fr">德语 翻译成 法语</option>

                                         <option value="es|en">西班牙语 翻译成 英语</option>

                                         <option value="fr|en">法语 翻译成 英语</option>

                                         <option value="fr|de">法语 翻译成 德语</option>

                                         <option value="it|en">意大利语 翻译成 英语</option>

                                         <option value="pt|en">葡萄牙语 翻译成 英语</option>

                                         <option value="ar|en">阿拉伯文 翻译成 英语 BETA
                                              </option>

                                         <option value="ja|en">日语 翻译成 英语 BETA</option>

                                         <option value="ko|en">朝鲜语 翻译成 英语 BETA
                                              </option>

                                         <option selected="selected" value="zh-CN|en">
                                              中文(简体) 翻译成 英语 BETA</option>

                                     </select>

                                     &nbsp;

                                     <input name="Submit" onclick="Button1_onclick()"
                                          type="button" value="翻 译" /></td>

                          </tr>

                          <tr>

                                <td>

                                     <textarea id="q" cols="40" rows="6"></textarea></td>

                           </tr>

                      </table>

                      <input id="hl" type="hidden" value="zh-CN" /><input id="ie" type="hidden" value="UTF8" />&nbsp;<br />

                      <br />

                     </div>

               </div>

          </div>

     </form>

</body>

</html>

12.4.2  在线翻译的处理类Google

文字翻译的服务器端处理页面是Google.ashx。它的处理逻辑比较简单:首先接收客户端传递过来的参数,按照Google的特定格式把这些参数传递到Google页面。然后对Google返回的结果进行一系列过滤操作,并把其结果返回客户端显示。Google.ashx的实现代码如下:

<%@ WebHandler Language="C#" Class="Google" %>

using System;

using System.Web;

using System.Text.RegularExpressions;

using System.Xml;

using System.Text;

//在线翻译的handler

public class Google : IHttpHandler

{

     public void ProcessRequest(HttpContext context)

     {

          string[] postname = context.Request.Params.AllKeys;  //所有请求的参数

          StringBuilder topost = new StringBuilder();

          for (int i = 0; i < postname.Length; i++)        //遍历各参数,构造post字符串

          {

                topost.AppendFormat("{0}={1}&", postname[i], context.Server.UrlEncode
                     (context.Request.Params[postname[i]]));

          }

          //获得翻译结果

          string result = Thief.Post("http://translate.google.com/translate_t", topost.ToString());

          //删除不需要的部分

          result = Regex.Match(result, "<div id=result_box dir=ltr>[\\s\\S]*?</div>").
               Value;

          result = result.Substring(27);

          result = result.Substring(0, result.Length - 6);

          context.Response.Write(result);              //输出结果

      }

      public bool IsReusable                          //不重用

      {

           get

           {

                 return false;

        }

    }

}

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论