此页面已由微软翻译机翻译服务自动翻译。 了解更多信息

微软翻译博客

使用 microsoft 翻译人员提供的翻译创建 web 应用程序。

使用 microsoft 翻译人员提供的翻译创建 web 应用程序。

在此演练中, 您将学习如何创建使用 microsoft 翻译器 api 翻译用户输入的文本的 web 应用程序。您将使用 asp. net 和免费的 visual studio express 2012 构建该页面。如果您已经有了 visual studio 安装, 您仍然可以按照本教程操作, 只需跳过步骤1即可。

在开始之前, 您需要注册 azure 中的 microsoft 翻译 api。有许多不同的产品, 包括免费产品, 你可以看到如何注册免费服务、注册你的应用并在这里获得你的凭据:

http://blogs.msdn.com/b/translation/p/gettingstarted1.aspx

您在这里生成的客户端 id 和客户端机密将在步骤4中使用, 因此请记下它们。

步骤1。获取 visual studio express 2012 为 web。

最好的开始方法是参观 http://www.asp.net/downloads , 然后在 "只需简单安装即可完成所有内容" 部分中选择 "立即安装" 按钮。

clip_image001

这将启动 web 平台安装程序, 该安装程序将安装 visual studio、asp. net、mvc 和大量其他可用于构建网站的好东西。

步骤2。创建 web 应用程序

运行 visual studio, 然后从 "文件" 菜单中选择 "新建项目"。您将看到一个对话框, 其中包含可用于生成网站的不同项目的列表。选择左侧的 "visual c#", 然后从列表中选择 "asp. net web 窗体应用程序"。

clip_image003

为 web 应用程序命名, 如 "翻译", 然后按 "确定"。visual studio 现在将创建生成和运行 web 应用程序所需的一切。按 f5 生成并运行应用程序, 您将看到如下内容:

clip_image005

 

 

步骤3。创建用于文本翻译的 ui

在本节中, 您将向网站添加允许最终用户键入某些文本的控件, 按翻译按钮, 然后查看他们输入的文本的翻译。例如, 这种类型的功能对于在使用不同语言时与客户交互非常有用。

从解决方案资源管理器中, 找到 "已提交. aspx" 页面。在设计器中打开它, 您将看到如下内容:

clip_image016

Delete the 3 <p> tags that say ‘Use this area to provide additional information’, and replace with some controls to provide a basic translation UI, like this:

clip_image018

为方便起见, 以下是此页的来源:

<%@ Page Title="About" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="About.aspx.cs" Inherits="Translator.About" %>

<asp: 内容 鲁纳= "服务器" ID= "身体内容" 内容= "主要内容">
    <企业集团 = "标题">
        <h1><%: 标题 %>.</h1>
        <h2>你的应用说明页面。</h2>
    </企业集团>

    <本文>
        输入要翻译的文本:<Br />
        <asp: 文本框 ID= "textbox1" 鲁纳= "服务器" 高度= "25px" 宽度= "342px"></asp: 文本框>
        <asp: 按钮 ID= "按钮 1" 鲁纳= "服务器" 高度= "37px" onclick= "Button1_Click" 文本= "翻译" />
        <Br />
        您翻译的文本是:<Br />
        <asp: 文字 ID= "文字 1" 鲁纳= "服务器"></asp: 文字>
    </本文>

    <一边>
        <h3>其他职务</h3>
        <P>        
            使用此区域可提供其他信息。
        </P>
        <Ul>
            <><一个 鲁纳= "服务器" Href="~/">回家</一个></>
            <><一个 鲁纳= "服务器" Href= "~/about-abouts. aspx">关于金龙</一个></>
            <><一个 鲁纳= "服务器" Href= "~/contactt. aspx">联系方式</一个></>
        </Ul>
    </一边>
</asp: 内容>

请注意, 在设计器中, 应双击该按钮以生成 "Button1_Click" 代码。您将在下一步中编写此代码。

步骤4。编写用于翻译用户文本的代码

在上一节中, 您创建了用于文本翻译的基本 ui。它将允许用户编写一些文本, 并按下一个按钮。在本节中, 您将在该按钮后面编写代码, 将用户所需的文本翻译成西班牙语, 并将其呈现在页面上。

首先, 您需要向解决方案中添加一个新类。叫它吧 admaccess标记 并给它下面的代码:

使用 制度; 制度; 制度; 制度;
使用 System.Collections.Generic;
使用 林克;
使用 网站;

命名 空间 翻译者
{
    公共  许可证:AdmAccessToken
    {
        公共 字符串 access_token { get; set; }
        公共 字符串 token_type { get; set; }
        公共 字符串 expires_in { get; set; }
        公共 字符串 scope { get; set; }
    }
}

 

请注意, 4 字符串的名称应与此处的名称完全匹配, 否则以后代码中将出现错误。

接下来, 在 visual studio 的 "解决方案资源管理器" 中, 右键单击 "引用" 文件夹, 然后选择 "添加引用"。使用下面的此对话框将引用添加到

– System.Runtime.Serialization

– System.XML.Linq

– System.ServiceModel.Web

在 About.aspx.cs 的代码顶部, 您将看到许多 "正在使用" 的语句。将使用 System.Xml.Linq 添加到这些, 使其如下所示:

使用 制度; 制度; 制度; 制度;
使用 System.Collections.Generic;
使用 林克;
使用 网站;
使用 System.Web.UI;
使用 System.Web.UI.WebControls;
使用 System.Xml.Linq;

命名 空间 翻译者
{
    公共 部分  About : Page
    {
        保护 无效 页面 _ 加载 (对象 sender, EventArgs e)
        {

        }

        保护 无效 Button1_Click (对象 sender, EventArgs e)
        {

        }
    }
}

 

您将看到 Button1_Click 代码为空。向其中添加以下代码。此代码将使用之前创建的客户端 id 和客户端机密获取翻译服务的访问令牌。

字符串 客户端 id = "<Your ClientID>";
字符串 客户端机密 = "<Your Client Secret>";
字符串字符串转换 accessuri = 
      "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13";
字符串字符串请求详细信息 = 
      字符串.格式 ("grant_type=client_credentials&client_id={0}&client_secret={1} &scope=http://api.microsofttranslator.com", url编码 (客户 id), http. urlcode (客户机密);

System.Net.WebRequest 的 web 请求 = System.Net.WebRequest.Create (字符串转换访问);
网站请求. 内容类型 = "应用程序/www-forms-urlenen编码";
方法 = "开机自检";
字节[] 字节 = System.Text.Encoding.ASCII.GetBytes (请方详细信息);
网站请求. 内容长度 = 字节。长度;
使用 (System.IO.Stream outputStream = webRequest.GetRequestStream())
{
  outputStream.Write(bytes, 0, bytes.Length);
}

System.Net.WebResponse webResponse = webRequest.GetResponse();
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = 新增功能 
    System.Runtime.Serialization.Json.DataContractJsonSerializer (类型(admaccess标记));

令牌 = (admaccess令牌) 序列化程序。阅读对象 (网络响应. getresestream ());

字符串 头像值 = "承载者" + 标记. access _ 标识;

 

此代码将对数据市场服务形成 post, 传递您的 id 和机密, 并获取 json 对象。然后将该对象反序列化为 admaccesstoken。然后, 您可以从中派生访问令牌。

然后将此标记添加到字符串中, 前缀为 "承载者" (不要忘记空格), 以创建将发送到翻译服务的标头值。

然后使用此标题值调用翻译服务, 并传递用户的文本, 您将使用如下代码:

字符串 ttto-tetp0纯 = textbox1. text;
字符串 uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text =" + System.Web.HttpUtility.UrlEncode (txtToTranslate) + "从 = en & to = es";
System.Net.WebRequest 翻译 webrequest = System.Net.WebRequest.Create (uri);
translationWebRequest.Headers.Add ("授权", 头像价值);

System.Net.WebResponse 响应 = ;
响应 = 翻译 webreqution. get响应 ();
System.IO.Stream 流 = 响应。();
System.Text.Encoding 编码 = System.Text.Encoding.GetEncoding ("utf-8");

System.IO.StreamReader 翻译流 = 新增功能 System.IO.StreamReader (流、编码);
System.Xml.XmlDocument xTranslation = 新增功能 System.Xml.XmlDocument ();
(翻译流. readtoend ());

文本 1. 文本 = x 翻译。

 

 

文本框被称为 "textbox1", 因此用户键入的文本可以简单地从中派生。之后, 将创建转换器 http 服务的 uri, 文本本身是 url 编码并添加到 uri。

请注意, "en" 语言用于 "发件人" (即, 我假设您是用英语键入), 而 "es" 用于 "to" (即它将翻译成西班牙语)。支持的语言的这些代码的完整列表如下所示: http://msdn.microsoft.com/en-us/library/hh456380.aspx

转换器服务返回 xml, 因此代码调用该服务, 将响应作为 xml 获取, 然后将其解码为文本。然后, 它将结果加载到您在 au. aspx 上创建的名为 "文本 1" 的文本中。

你可以在这里看到它的作用:

clip_image019

这就对了!现在, 您已使用 microsoft 翻译 api 将机器翻译添加到 asp. net 应用程序。

总结

在本演练中, 您了解了如何使用 asp. net 生成 web 应用程序, 以及如何向其中添加机器翻译。您使用 microsoft 翻译小工具提供页面内容的翻译, 并且了解了如何使用 c# 对 microsoft 翻译器 api 进行编程, 以便翻译用户生成的内容。