Microsoft Translator API 可用于通过 REST API 翻译语音和文本。 本文介绍如何使用 Microsoft 文本翻译 API 在应用程序中将文本从一种语言翻译成另一种语言 Xamarin.Forms 。
翻译器 API 有两个组件:
文本翻译 REST API,用于将文本从一种语言翻译成另一种语言的文本。 API 会自动检测在翻译之前发送的文本的语言。
语音翻译 REST API,用于将语音从一种语言转录为另一种语言的文本。 此 API 还集成了文本转语音功能,可以将翻译的文本再次转换成语音。
本文重点介绍如何使用文本翻译 API 将文本从一种语言翻译成另一种语言。
如果还没有
Azure 订阅
,可以在开始前创建一个
免费帐户
。
必须获取 API 密钥才能使用文本翻译 API。 可在
如何注册 Microsoft 文本翻译 API
中获取此信息。
有关 Microsoft 文本翻译 API 的详细信息,请参阅
文本翻译 API 文档
。
对文本翻译 API 发出的每个请求都需要一个 JSON Web 令牌 (JWT) 访问令牌,该令牌可从 上的
https://api.cognitive.microsoft.com/sts/v1.0/issueToken
认知服务令牌服务获取。 可以通过向令牌服务发出 POST 请求,指定
Ocp-Apim-Subscription-Key
包含 API 密钥的标头作为其值来获取令牌。
下面的代码示例演示如何从令牌服务请求访问令牌:
public AuthenticationService(string apiKey)
subscriptionKey = apiKey;
httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", apiKey);
async Task<string> FetchTokenAsync(string fetchUri)
UriBuilder uriBuilder = new UriBuilder(fetchUri);
uriBuilder.Path += "/issueToken";
var result = await httpClient.PostAsync(uriBuilder.Uri.AbsoluteUri, null);
return await result.Content.ReadAsStringAsync();
返回的访问令牌(Base64 文本)的过期时间为 10 分钟。 因此,示例应用程序每 9 分钟续订一次访问令牌。
必须在每个文本翻译 API 调用中将访问令牌指定为 Authorization
前缀为字符串 Bearer
的标头,如以下代码示例所示:
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
有关认知服务令牌服务的详细信息,请参阅 身份验证。
执行文本翻译
可以通过在 https://api.microsofttranslator.com/v2/http.svc/translate
向 API 发出 GET 请求translate
来实现文本翻译。 在示例应用程序中, TranslateTextAsync
方法调用文本翻译过程:
public async Task<string> TranslateTextAsync(string text)
string requestUri = GenerateRequestUri(Constants.TextTranslatorEndpoint, text, "en", "de");
string accessToken = authenticationService.GetAccessToken();
var response = await SendRequestAsync(requestUri, accessToken);
var xml = XDocument.Parse(response);
return xml.Root.Value;
方法 TranslateTextAsync
生成请求 URI,并从令牌服务检索访问令牌。 然后,将文本翻译请求发送到 translate
API,该 API 返回包含结果的 XML 响应。 分析 XML 响应,并将转换结果返回到调用方法进行显示。
有关文本翻译 REST API 的详细信息,请参阅 文本翻译 API。
配置文本翻译
可以通过指定 HTTP 查询参数来配置文本翻译过程:
string GenerateRequestUri(string endpoint, string text, string to)
string requestUri = endpoint;
requestUri += string.Format("?text={0}", Uri.EscapeUriString(text));
requestUri += string.Format("&to={0}", to);
return requestUri;
此方法设置要翻译的文本以及要将文本翻译为的语言。 有关 Microsoft Translator 支持的语言列表,请参阅 Microsoft 文本翻译 API 中支持的语言。
如果应用程序需要知道文本的语言, Detect
则可以调用 API 来检测文本字符串的语言。
方法 SendRequestAsync
向文本翻译 REST API 发出 GET 请求,并返回响应:
async Task<string> SendRequestAsync(string url, string bearerToken)
if (httpClient == null)
httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
var response = await httpClient.GetAsync(url);
return await response.Content.ReadAsStringAsync();
此方法通过将访问令牌添加到 Authorization
标头(前缀为 字符串 Bearer
)来生成 GET 请求。 然后,GET 请求将发送到 translate
API,其中请求 URL 指定要翻译的文本,以及要将文本翻译为的语言。 然后读取响应并将其返回到调用方法。
API translate
将在响应中发送 HTTP 状态代码 200 (正常) ,前提是请求有效,这表示请求成功且请求的信息在响应中。 有关可能的错误响应的列表,请参阅 GET Translate 中的响应消息。
API 响应以 XML 格式返回。 以下 XML 数据显示了典型的成功响应消息:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Morgen kaufen gehen ein</string>
在示例应用程序中,XML 响应分析为 实例 XDocument
,并将 XML 根值返回到调用方法进行显示,如以下屏幕截图所示:
本文介绍了如何在应用程序中使用 Microsoft 文本翻译 API 将文本从一种语言翻译为另一 Xamarin.Forms 种语言的文本。 除了翻译文本外,Microsoft Translator API 还可以将语音从一种语言转录为另一种语言的文本。
文本翻译 API 文档
使用 RESTful Web 服务
Todo 认知服务 (示例)
文本翻译 API