Cyril Lacroix
Cyril Lacroix

Reputation: 55

Custom Translator not applied with Azure Translator

I'm trying to setup a Custom Translator with a Phrase Dictionary for my company. I followed the official documentation and this tutorial: https://soltisweb.com/blog/detail/2019-08-13-using-a-custom-translator-with-azure-co.

When I translate it seems that it's not using my custom model, here is my setup:

1 Azure Translator:

1 Worspace in Custom Translator, connected to the Azure Translator above:

I've created one project:

I uploaded the same Phrase Dictionary as in the tutorial (Phrase Dictionary):

EN ES
one uno
two dos
three tres
four cuatro
five cinco
six seis
seven siete
eight ocho
nine nueve
ten diez
hi hola
hello buenos dias

I've generated a model and deployed it everywhere (America, Europe, Asia) without any error.

I've tried to translate "hello" with the following C# code:

                // Input and output languages are defined as parameters.
            string route = "/translate?api-version=3.0&category=*MyWorkspaceId*-GENERAL&from=en&to=es&allowFallback=true";
            string textToTranslate = "hello";
            object[] body = new object[] { new { Text = textToTranslate } };
            var requestBody = JsonConvert.SerializeObject(body);

            using (var client = new HttpClient())
            using (var request = new HttpRequestMessage())
            {
                // Build the request.
                request.Method = HttpMethod.Post;
                request.RequestUri = new Uri("https://api.cognitive.microsofttranslator.com/" + route);
                request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json");
                request.Headers.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
                request.Headers.Add("Ocp-Apim-Subscription-Region", "global");

                // Send the request and get response.
                HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
                // Read response as a string.
                string result = await response.Content.ReadAsStringAsync();
                Console.WriteLine(result);
            }

The result is:

[{"translations":[{"text":"Hola","to":"es"}]}]

The result should be "buenos dias".

I might be missing something really basic... I already tried to re-create everything from scratch with no success.

Update 1

Switched allowFallback=true to allowFallback=false.

{Method: POST, RequestUri: 'https://api.cognitive.microsofttranslator.com//translate?api-version=3.0&category=***-GENERAL&from=en&to=es&allowFallback=false',
 Version: 1.1,
 Content: System.Net.Http.StringContent,
 Headers:
{
  Ocp-Apim-Subscription-Key: ***
  Ocp-Apim-Subscription-Region: global
  Content-Type: application/json; charset=utf-8
}}

Input:

"one, two, three, four, five, six, seven, eight, nine, ten, hi, hello, My name is Doe."

Ouput:

[{"translations":[{"text":"uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez, hola, hola, Mi nombre es Doe.","to":"es"}]}]

Thanks for your support, Cyril

Upvotes: 0

Views: 541

Answers (2)

GiftA-MSFT
GiftA-MSFT

Reputation: 479

We rolled out a hot fix. Issue should be resolved now. Sorry for the inconvenience.

Upvotes: 1

Melghazali
Melghazali

Reputation: 29

There is a possibility you are not hitting your custom model. So, let's first make small change to your API call.

&allowFallback=false to ensure if you don't hit your custom model, the call would fail instead of getting served from our standard model.

Best, Mohamed

Upvotes: 0

Related Questions