Çeviri API'sini Kullanarak Metin Çevirisi
Microsoft Çeviri API'sini kullanarak konuşma ve metinleri REST API aracılığıyla çevirebilirsiniz. Bu makalede, uygulamada metni bir dilden diğerine çevirmek için Microsoft Çeviri Metin API'sinin Xamarin.Forms nasıl kullanılacağı açıklanmaktadır.
Genel bakış
Çeviri API'sinin iki bileşeni vardır:
- Metin çevirisi REST API'sini kullanarak bir dilden diğerine metin çevirisi yapın. API, çevrilmeden önce gönderilen metnin dilini otomatik olarak algılar.
- Konuşmanın bir dilden başka bir dil metnine dökümünü almak için konuşma çevirisi REST API'si. API, çevrilen metni geri konuşmak için metin okuma özelliklerini de tümleştirir.
Bu makale, Çeviri Metin API'sini kullanarak metni bir dilden diğerine çevirmeye odaklanır.
Not
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Çeviri Metin API'sini kullanmak için bir API anahtarı alınmalıdır. Bu, Microsoft Çeviri Metin API'sine kaydolma adresinden edinilebilir.
Microsoft Çeviri Metin API'si hakkında daha fazla bilgi için bkz. Metin API'Çeviri Belgeleri.
Kimlik Doğrulaması
Çeviri Metin API'sine yapılan her istek, konumundaki https://api.cognitive.microsoft.com/sts/v1.0/issueToken
bilişsel hizmetler belirteç hizmetinden alınabilen bir JSON Web Belirteci (JWT) erişim belirteci gerektirir. Belirteç, belirteç hizmetine bir POST isteği gönderilerek ve değeri OLARAK API anahtarını içeren bir Ocp-Apim-Subscription-Key
üst bilgi belirtilerek elde edilebilir.
Aşağıdaki kod örneği, belirteç hizmetinden erişim belirteci isteme işlemini gösterir:
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 metni olan döndürülen erişim belirtecinin bitiş süresi 10 dakikadır. Bu nedenle, örnek uygulama erişim belirtecini 9 dakikada bir yeniler.
Erişim belirteci, aşağıdaki kod örneğinde gösterildiği gibi, her Çeviri Metin API'si çağrısında dizesi Bearer
ön ekli bir Authorization
üst bilgi olarak belirtilmelidir:
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
Bilişsel hizmetler belirteç hizmeti hakkında daha fazla bilgi için bkz . Kimlik doğrulaması.
Metin Çevirisi Gerçekleştirme
Metin çevirisi, adresinde https://api.microsofttranslator.com/v2/http.svc/translate
API'ye translate
bir GET isteği gönderilerek elde edilebilir. Örnek uygulamada yöntemi metin TranslateTextAsync
çevirisi işlemini çağırır:
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
yöntemi bir istek URI'sini oluşturur ve belirteç hizmetinden bir erişim belirteci alır. Daha sonra metin çevirisi isteği, sonucu içeren bir XML yanıtı döndüren API'ye translate
gönderilir. XML yanıtı ayrıştırılır ve çeviri sonucu görüntülenmek üzere çağırma yöntemine döndürülür.
Metin Çevirisi REST API'leri hakkında daha fazla bilgi için bkz. Metin API'Çeviri.
Metin Çevirisini Yapılandırma
Metin çevirisi işlemi HTTP sorgu parametreleri belirtilerek yapılandırılabilir:
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;
}
Bu yöntem çevrilecek metni ve çevrilecek dili ayarlar. Microsoft Çeviri tarafından desteklenen dillerin listesi için bkz. Microsoft Çeviri Metin API'sinde desteklenen diller.
Not
Bir uygulamanın metnin hangi dilde olduğunu bilmesi gerekiyorsa, Detect
metin dizesinin dilini algılamak için API çağrılabilir.
İstek Gönderme
yöntemi Metin SendRequestAsync
Çevirisi REST API'sine GET isteğinde bulunur ve yanıtı döndürür:
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();
}
Bu yöntem, üst bilgisine Authorization
erişim belirtecini dizesiyle Bearer
önek olarak ekleyerek GET isteğini oluşturur. GET isteği, çevrilecek metni ve çevrilecek dili belirten istek URL'si ile API'ye gönderilir translate
. Yanıt daha sonra okunur ve çağıran yönteme döndürülür.
API, isteğin translate
geçerli olması koşuluyla, isteğin başarılı olduğunu ve istenen bilgilerin yanıtta olduğunu gösteren HTTP durum kodu 200 (Tamam) gönderir. Olası hata yanıtlarının listesi için bkz. GET Translate'de Yanıt İletileri.
Yanıt İşleniyor
API yanıtı XML biçiminde döndürülür. Aşağıdaki XML verileri tipik bir başarılı yanıt iletisini gösterir:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Morgen kaufen gehen ein</string>
Örnek uygulamada XML yanıtı bir XDocument
örneğe ayrıştırılır ve xml kök değeri aşağıdaki ekran görüntülerinde gösterildiği gibi görüntülenmek üzere çağırma yöntemine döndürülür:
Özet
Bu makalede, Microsoft Çeviri Metin API'sinin bir dildeki metni uygulamadaki başka bir Xamarin.Forms dildeki metne çevirmek için nasıl kullanılacağı açıklanmıştır. Microsoft Çeviri API'sinde metin çevirmeye ek olarak bir dildeki konuşmaların dökümünü başka bir dildeki metne de dönüştürebilirsiniz.