Dutch Translation Problem

Dogu Tumerdem 0 Reputation points
2026-06-30T16:41:00.94+00:00

Hello,

I am using Translation service to translate some user inputs into several languages, including Dutch (NL).

On code side I used Azure.AI.Translation.Text v2.0.0 but Experienced some problems. Then I tried direct rest call the result was wrong too.

Doing the following call:

curl -X 'POST' \
  '{{azureTranslatorUrl}}/translate?api-version={{apiVersion}}' \
  -H 'Ocp-Apim-Subscription-Key: {{subscriptionKey}}' \
  -H 'Ocp-Apim-Subscription-Region: {{subscriptionRegion}}' \
  -H 'Content-Type: application/json' \
  -d '{
  "inputs": [
    {
      "Text": "Senior Collector",
      "language": "en",
      "targets": [
        { "Language": "nl" },
        { "Language": "tr" }
      ]
    }
  ]
}'

The Result is:

{
  "value": [
    {
      "translations": [
        {
          "language": "nl",
          "text": "Senior Collector",
          "sourceCharacters": 16
        },
        {
          "language": "tr",
          "text": "Kıdemli Koleksiyoncu",
          "sourceCharacters": 16
        }
      ]
    }
  ]
}

Switching off automatic language detections fails too. "Cherry" is returned as "Cherry" but "Banana" translated in correct way.

Am I missing something?

Azure Translator in Foundry Tools

1 answer

Sort by: Most helpful
  1. Ramin Ahmadi 86 Reputation points
    2026-07-01T21:22:05.08+00:00

    Nothing is wrong with your call — the API is working as designed. What you're hitting is model behaviour, not a bug, and it's specific to how Dutch treats English loanwords.

    Dutch business language borrows English job titles wholesale. "Senior Developer", "Account Manager", "Senior Collector" — these appear verbatim in Dutch job postings and CVs constantly. The NMT model has learned from parallel corpora that the most natural Dutch rendering of an English job title is often... the English title itself. Some other languages like Turkish doesn't have this borrowing pattern, so you get "Kıdemli Koleksiyoncu". So the model isn't failing to translate; it's making a (defensible) judgment that the "translation" into Dutch is the English term.

    Why "Cherry" but not "Banana"

    Same mechanism plus capitalization. Capitalized "Cherry" in isolation looks like a proper noun (a person's name, a brand), and MT engines preserve proper nouns. "Banana" is rarely a name, so it translates. Try these and you'll likely see the difference:

    "cherry" → kers

    "Cherry" → Cherry

    "I ate a cherry." → Ik heb een kers gegeten.

    You have few options:

    1. Add context or lowercase the input: Sending "senior collector" or a full sentence ("She works as a senior collector in the debt recovery team") will usually flip the behaviour. If your inputs are UI labels or job titles, wrapping them in a carrier sentence and extracting the phrase afterwards is a common (if ugly) trick.
    2. Dynamic dictionary: If you know the translation you want, you can force it inline (works in v3.0 with textType=html semantics preserved):
         It is a <mstrans:dictionary translation="senior incassomedewerker">senior collector</mstrans:dictionary>.
      
    3. Try the LLM model option: Since you're already on the new preview API (the inputs/targets request shape), you can set the target's model/deployment to the LLM-based translation (e.g. GPT-based) instead of the default NMT. LLM translation handles short ambiguous fragments and "should this loanword be translated?" decisions differently, and you can also pass a reference or adaptive examples to steer it. Worth an A/B test on your problem terms.

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.