Ç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/issueTokenbiliş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/translateAPI'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:

Metin Çevirisi-Almanca

Ö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.