번역기 API를 사용한 텍스트 번역
Microsoft 번역기 API를 사용하여 REST API를 통해 음성 및 텍스트를 번역할 수 있습니다. 이 문서에서는 Microsoft 번역기 Text API를 사용하여 애플리케이션에서 한 언어에서 다른 Xamarin.Forms 언어로 텍스트를 번역하는 방법을 설명합니다.
개요
번역기 API에는 다음 두 가지 구성 요소가 있습니다.
- 텍스트를 한 언어에서 다른 언어의 텍스트로 번역하는 텍스트 번역 REST API입니다. API는 번역하기 전에 전송된 텍스트의 언어를 자동으로 검색합니다.
- 한 언어에서 다른 언어의 텍스트로 음성을 전사하는 음성 번역 REST API입니다. 또한 API는 텍스트 음성 변환 기능을 통합하여 번역된 텍스트를 다시 말합니다.
이 문서에서는 번역기 Text API를 사용하여 텍스트를 한 언어에서 다른 언어로 번역하는 방법에 중점을 둡니다.
번역기 Text API를 사용하려면 API 키를 가져와야 합니다. 이 방법은 Microsoft 번역기 Text API에 등록하는 방법에서 얻을 수 있습니다.
Microsoft 번역기 Text API에 대한 자세한 내용은 번역기 Text API 설명서를 참조하세요.
인증
번역기 Text API에 대한 모든 요청에는 JWT(JSON 웹 토큰) 액세스 토큰이 필요하며, 이 토큰은 Cognitive Services 토큰 서비스에서 https://api.cognitive.microsoft.com/sts/v1.0/issueToken
가져올 수 있습니다. 토큰 서비스에 대한 POST 요청을 만들고 API 키를 포함하는 헤더를 해당 값으로 지정하여 Ocp-Apim-Subscription-Key
토큰을 가져올 수 있습니다.
다음 코드 예제에서는 토큰 서비스에서 액세스 토큰을 요청하는 방법을 보여줍니다.
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분마다 액세스 토큰을 갱신합니다.
다음 코드 예제와 같이 각 번역기 Text API 호출에 문자열 Bearer
접두사로 Authorization
액세스 토큰을 지정해야 합니다.
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
Cognitive Services 토큰 서비스에 대한 자세한 내용은 인증을 참조하세요.
텍스트 번역 수행
텍스트 변환은 에서 API에 대한 GET 요청을 수행하여 translate
수행할 수 있습니다 https://api.microsofttranslator.com/v2/http.svc/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를 생성하고 토큰 서비스에서 액세스 토큰을 검색합니다. 텍스트 번역 요청은 결과를 포함하는 XML 응답을 반환하는 API로 전송 translate
됩니다. XML 응답이 구문 분석되고 변환 결과가 표시를 위해 호출 메서드로 반환됩니다.
텍스트 번역 REST API에 대한 자세한 내용은 번역기 Text 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 번역기 지원하는 언어 목록은 Microsoft 번역기 Text API에서 지원되는 언어를 참조하세요.
참고 항목
애플리케이션에서 텍스트의 언어를 알아야 하는 경우 API를 Detect
호출하여 텍스트 문자열의 언어를 검색할 수 있습니다.
요청 보내기
이 메서드는 SendRequestAsync
Text Translation 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();
}
이 메서드는 문자열 Bearer
접두사로 된 헤더에 액세스 토큰 Authorization
을 추가하여 GET 요청을 빌드합니다. 그런 다음 GET 요청은 번역할 translate
텍스트와 텍스트를 번역할 언어를 지정하는 요청 URL을 사용하여 API로 전송됩니다. 그런 다음 응답을 읽고 호출 메서드로 반환합니다.
요청이 translate
유효하고 요청이 성공했으며 요청된 정보가 응답에 있음을 나타내는 경우 API는 응답에 HTTP 상태 코드 200(OK)을 보냅니다. 가능한 오류 응답 목록은 GET Translate의 응답 메시지를 참조하세요.
응답 처리
API 응답은 XML 형식으로 반환됩니다. 다음 XML 데이터는 일반적인 성공적인 응답 메시지를 보여줍니다.
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Morgen kaufen gehen ein</string>
샘플 애플리케이션에서 XML 응답은 인스턴스로 XDocument
구문 분석되며 XML 루트 값은 다음 스크린샷과 같이 표시를 위해 호출 메서드로 반환됩니다.
요약
이 문서에서는 Microsoft 번역기 Text API를 사용하여 한 언어의 텍스트를 애플리케이션의 다른 언어 텍스트로 번역하는 방법을 설명했습니다Xamarin.Forms. 텍스트를 번역하는 것 외에도 Microsoft 번역기 API는 한 언어에서 다른 언어의 텍스트로 음성을 전사할 수도 있습니다.