---
title: "The language offer states what it removes, and why. An absence is not a refusal."
seo_title: "Supported languages, and what the offer removes | SazAI"
description: "Which target languages are offered, which are removed with reason, and why an absent one means unmeasured, not refused."
tags: [marketing]
---

> A list of supported languages is the easiest answer to give and the easiest to get wrong in silence. When a target leaves the list, it takes the reason with it, and whoever asks hears a no that nobody wrote.

<div class="chap">

<div class="ico-col"><sz-icon style="color:var(--verb-translate)" name="languages" size="36"></sz-icon></div>

<h2 id="offer-is-a-partition">The offer is a partition, not a list</h2>

<h3 class="sub">What is offered, what is removed with a reason, and what nobody has measured yet</h3>

When you ask which languages the system translates, the answer that reaches you is not a vector
of names. It is three sets, and the second is the one that matters for your decision: the targets
offered to you, the targets removed with the reason for each removal, and silence, which means
exactly one thing, and that thing is written down.

This was a correction we made, and it is worth explaining why. For a while, a removed target
simply vanished from the list, and an absence is the one answer that cannot carry a reason. Asked
about a language nobody had measured, the agent answered that it *does not appear among the
supported targets*. We never said it was not supported; we said nothing, and an absence has only
one possible meaning to whoever reads it. Today the removal is a data point, with the reason
attached.

<figure class="viz duo" role="group" aria-label="The three sets in the language offer">
<div class="side"><svg viewBox="0 0 90 60" aria-hidden="true"><ellipse cx="45" cy="30" rx="34" ry="21" fill="var(--verb-translate)" opacity=".14" stroke="var(--verb-translate)" stroke-width="1.5"/></svg><b>offered</b><span>with a caveat when there is one</span></div>
<div class="mid"><svg viewBox="0 0 90 60" aria-hidden="true"><ellipse cx="45" cy="30" rx="34" ry="21" fill="none" stroke="var(--verb-translate)" stroke-width="1.5" stroke-dasharray="4 3"/><line x1="24" y1="42" x2="66" y2="18" stroke="var(--verb-translate)" stroke-width="1.5"/></svg><b>removed</b><span>and the reason comes with it</span></div>
<div class="side"><svg viewBox="0 0 90 60" aria-hidden="true"><ellipse cx="45" cy="30" rx="34" ry="21" fill="none" stroke="var(--lightgray)" stroke-width="1.5" stroke-dasharray="2 4"/></svg><b>not evaluated</b><span>nobody has looked, and that is not a no</span></div>
<figcaption>A language outside the three sets above was not refused: it was not measured.</figcaption>
</figure>

The difference is commercial before it is technical. Telling you we do not do your language when
the truth is that nobody looked is a lost deal paid for with a missing field, and the loss falls
on both sides.

</div>

<div class="chap">

<div class="ico-col"><sz-icon style="color:var(--verb-translate)" name="warning" size="36"></sz-icon></div>

<h2 id="two-axes">Two different questions, and silence means the opposite in each one</h2>

<h3 class="sub">There is a font that draws the alphabet, and there is knowing how to assemble the line</h3>

Your target goes through two independent questions, and confusing the two is the classic error of
this domain. The first is whether a font exists that can draw those letters. The second is whether
we know how to assemble the line: right-to-left scripts need to be reordered, and several scripts
from South and Southeast Asia choose the shape of each letter by context.

The two fail in opposite ways, which is why silence means the reverse in each. When a font is
missing, the failure is loud: the segment is not replaced, the original sentence **stays on your
page** in the source language, the result goes out marked as partial, and your receipt names what
was left behind. You see that something did not happen even without speaking either language. So a
target nobody has measured yet can still be offered to you: if it goes wrong, it goes wrong in
plain sight.

When assembly is missing, the failure is silent: every letter is drawn, your page looks finished,
nothing is dropped, there is no receipt line to write, and only someone who reads that script
notices that the line runs backward. You could take that file into a meeting with no way of ever
knowing it was wrong. So on this axis, unmeasured is treated as unsupported, and the target is
removed before it reaches you.

<figure class="viz duo" role="group" aria-label="The two axes and the opposite meaning of silence in each">
<div class="side"><svg viewBox="0 0 90 60" aria-hidden="true"><rect x="10" y="10" width="70" height="40" rx="4" fill="none" stroke="var(--verb-translate)" stroke-width="1.5"/><line x1="20" y1="24" x2="60" y2="24" stroke="var(--verb-translate)" stroke-width="2"/><line x1="20" y1="36" x2="44" y2="36" stroke="var(--lightgray)" stroke-width="2" stroke-dasharray="3 3"/></svg><b>the font</b><span>fails in plain sight, and the receipt counts it</span></div>
<div class="mid"><svg viewBox="0 0 60 60" aria-hidden="true"><circle cx="30" cy="30" r="22" fill="none" stroke="var(--gray)" stroke-width="1.5"/><line x1="30" y1="12" x2="30" y2="48" stroke="var(--gray)" stroke-width="1.5"/></svg><b>two questions</b><span>and both need to pass</span></div>
<div class="side"><svg viewBox="0 0 90 60" aria-hidden="true"><rect x="10" y="10" width="70" height="40" rx="4" fill="none" stroke="var(--verb-translate)" stroke-width="1.5"/><line x1="30" y1="24" x2="70" y2="24" stroke="var(--verb-translate)" stroke-width="2"/><path d="M36 30l-6 6 6 6" fill="none" stroke="var(--verb-translate)" stroke-width="1.5"/></svg><b>assembly</b><span>fails in silence, so it is refused</span></div>
<figcaption>Only one of the two failures can be reported by whoever suffers it. That is the one that decides the default of silence.</figcaption>
</figure>

</div>

<div class="chap">

<div class="ico-col"><sz-icon style="color:var(--verb-translate)" name="file" size="36"></sz-icon></div>

<h2 id="where-format-decides">Where this bites, and it is only in one format</h2>

<h3 class="sub">In office formats, the program that opens the file does the drawing; in PDF, we do</h3>

In the three office formats, the file stores letters, and the program that opens it assembles the
line. That is why Arabic works in a presentation, a document, and a spreadsheet: the drawing is
not ours. In PDF, the text is already drawn at a position; translating means redrawing, and there,
the drawing is ours.

The consequence is declared when you choose the target, not when you receive the delivery. Arabic
is not offered as a PDF target, with the reason stated in the offer itself. Chinese, Japanese,
Korean, Hindi, and Thai are offered in PDF with a warning. And your scanned page, which is an
image and not text, comes through flagged instead of being chewed up in silence.

One thing worth separating, because the two look the same and are not: the configured list of
targets is an operating decision, and what we described above is a property of rendering. A
language can be missing for either reason, and the offer states which one it is.

</div>

<div class="chap">

<div class="ico-col"><sz-icon style="color:var(--verb-translate)" name="info" size="36"></sz-icon></div>

<h2 id="caveat-carries-extent">A warning without a size is not a warning</h2>

<h3 class="sub">The same caveat has meant both "a few passages" and "the whole document"</h3>

The rendering caveat named which scripts were left out and never said how much of your document
that was. Read by you at the moment of choosing, it sounded like *a few passages*, and in a real
case it sounded exactly the same when the truth was *practically everything*: a PDF translated to
Japanese came back with most elements still in plain English, wearing the same warning a document
almost entirely in Latin script would wear.

The fix is structural, not editorial. When your target language **is** that script, everything the
job translates comes out in it, and the honest extent at the moment you choose is *all text
translated for this target*. This became a field in the response you receive, rather than a
sentence someone has to remember to pass on to you.

<div class="bound"><p><b>And today's state, dated.</b> Translation has been down since 2026-08-23 on provider credit, and the last successful run was on 2026-08-20 at 22:43 UTC. This page describes the capability and does not invite a live test until that returns.</p></div>

Limits per format are stated in [your documents](documents), and what we recommend against doing
is in [trust](trust). What translation preserves when the language changes is in
[preserved layout](layout).

</div>
