Çeviri API'sini Kullanarak Metin Çevirisi

Örneği İndir Örneği indirme

Konuşma Microsoft Çeviri API'si, konuşma ve metinleri bir REST API. Bu makalede, bir uygulamada Microsoft Çeviri bir dilden diğerine çevirmek için Microsoft Çeviri Metin API'sini kullanma Xamarin.Forms açıklanmıştır.

Genel Bakış

Çeviri API'si iki bileşen içerir:

  • Metin çevirisi REST API bir dilden başka bir dile çevrilebilir. API, göndermeden önce gönderilen metnin dilini otomatik olarak algılar.
  • Konuşma çevirisi REST API bir dilden başka bir dil metnine dönüştürebilirsiniz. API, çevrilmiş metni geri konuşmaya yardımcı olmak için metinden konuşmaya özelliklerini de tümleştirin.

Bu makale, Metin API'sini kullanarak metni bir dilden diğerine Çeviri odaklanır.

Not

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Metin Api'sini kullanmak için bir API Çeviri alın gerekir. Bu bilgiye Microsoft Çeviri Metin API'sini Microsoft Çeviri edinebilirsiniz.

Microsoft Çeviri Metin API'si hakkında daha fazla bilgi için bkz. Çeviri Metin API'si Belgeleri.

Kimlik Doğrulaması

Çeviri Metin API'sinde yapılan her istek JSON Web Token (JWT) erişim belirteci gerektirir ve bu belirteç, 'de bilişsel hizmetler belirteç hizmetlerinden https://api.cognitive.microsoft.com/sts/v1.0/issueToken edinebilirsiniz. Belirteç, değeri olarak API anahtarını içeren bir üst bilgi belirterek belirteç hizmetine bir POST Ocp-Apim-Subscription-Key isteğinde bulundurarak elde edilebilir.

Aşağıdaki kod örneğinde, belirteç hizmetten erişim belirteci isteği nasıl gerçekleştirin?

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 belirteci, 10 dakikalık bir süre sonu süresine sahip. Bu nedenle, örnek uygulama erişim belirteci her 9 dakikada bir yeniler.

Erişim belirteci, aşağıdaki kod Çeviri gösterildiği gibi dize ön ekli bir üst bilgi olarak Metin API'si AuthorizationBearer çağrılarında 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, api'ye bir GET isteğinde bulundurarak translate elde https://api.microsofttranslator.com/v2/http.svc/translate 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;
}

yöntemi TranslateTextAsync bir istek URI'si üretir ve belirteç hizmetten bir erişim belirteci alır. Ardından metin çevirisi isteği translate API'ye gönderilir ve bu istek sonucu içeren bir XML yanıtı döndürür. XML yanıtı ayrıştırıldı ve çeviri sonucu görüntülenmek için çağırma yöntemine döndürülür.

Metin Çevirisi REST API'leri hakkında daha fazla bilgi için bkz. Çeviri API'si.

Metin Çevirisini Yapılandırma

Metin çevirisi işlemi, HTTP sorgu parametreleri belirterek yalıtabilirsiniz:

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 çevrilen metni ve çevrilen dili ayarlar. Microsoft Çeviri tarafından desteklenen dillerin listesi için bkz. Metin Api'si Microsoft Çeviri desteklenen diller.

Not

Bir uygulamanın metnin hangi dilde olduğunu tanıması gerekirse, metin dizesinin dilini Detect algılamak için API çağrılebilir.

İsteği Gönderme

yöntemi, SendRequestAsync Metin Çevirisi'ne GET REST API yapar 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, erişim belirteci dizesini içeren üst bilgiye ekleyerek GET Authorization isteğini derlemeye devam Bearer eder. Ardından GET isteği API'ye gönderilir ve istek URL'si çevrilen metni ve metnin translate çevrilebilir dilini belirtir. Ardından yanıt okunur ve çağıran yönteme döndürülür.

İsteğin geçerli olması şartıyla API, isteğin başarılı olduğunu ve istenen bilgilerin yanıtta olduğunu belirten translate 200 (Tamam) HTTP durum kodunu gönderir. Olası hata yanıtlarının listesi için GET Translate 'de Yanıt İletileri'ne bakın.

Yanıtı İşleme

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 örnekte ayrıştırıldı ve XML kök değeri aşağıdaki ekran görüntülerde gösterildiği gibi görüntülenmek için çağırma XDocument yöntemine döndürüldü:

Almancaya Metin Çevirisi

Özet

Bu makalede, Microsoft Çeviri API'sini kullanarak bir dilden başka bir dil metnine nasıl metin Xamarin.Forms çevirebilirsiniz? Metin çevirisine ek olarak, Microsoft Çeviri API'si konuşmayı bir dilden başka bir dilin metnine de dönüştürebilirsiniz.