Skip to content

docs: refresh translations for recent English changes - #3636

Merged
maxisbey merged 1 commit into
mainfrom
docs/refresh-translations
Oct 2, 2026
Merged

maxisbey merged 1 commit into
mainfrom
docs/refresh-translations

Conversation

@maxisbey

@maxisbey maxisbey commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Re-runs scripts/docs/translations.py translate for all twelve languages to catch up with English changes since the last refresh in #3458.

Motivation and Context

Two pages had no translation yet (handlers/cancellation.md and advanced/header-parameters.md), and fourteen more per language had sections whose English source changed (middleware, subscriptions, lifespan, identity assertion, transports, troubleshooting, and a handful of one-line edits elsewhere), so the translated sites were showing English or the "translation behind the English page" notice on those. The tool retranslated only the changed sections and carried everything else over byte for byte, which is why the diff is section-scoped despite touching 192 files (168 updated, 24 new).

Nothing under docs/, i18n/*/instructions.md, i18n/*/glossary.json, i18n/languages.yml or the tool itself changed.

How Has This Been Tested?

  • translations.py status reports 0 missing / 0 outdated / 53 current / 0 removable for every language.
  • scripts/docs/build.sh builds the English site strictly and all twelve language sites with 0 warnings (no dead links or anchors), and both new pages render in every language. It ran with DOCS_ALLOW_INVENTORY_FAILURE=1 because the pydantic objects.inv wasn't reachable from my machine; that only relaxes the English API reference cross-reference check, which this PR doesn't touch and CI still enforces.
  • An offline pass over all 192 pages compared each one with its English source: same sections, heading levels, anchors (also identical across languages), code fences, inline code, link targets, admonitions and list items; no section left in English, in the wrong script, truncated, or with prompt text leaked into it; prose length ratios are in a tight band per language.
  • The same pass checked against main that only the sections the tool opened were rewritten. The one exception is expected: the advanced/middleware.md introduction is unchanged in ja, ko, zh and zh-hant, because the English edit there was only "example" → "examples".
  • I read a sample against the English rather than every diff: de/handlers/lifespan.md, fr/run/deploy.md, ja/servers/tools.md, de and ja advanced/middleware.md, and the whole of es/handlers/cancellation.md.

Breaking Changes

None.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

Generated pages are never hand-edited; if a reviewer spots a wording problem, the fix goes into that language's instructions.md/glossary.json and the page is re-run.

AI Disclaimer

Re-run scripts/docs/translations.py translate for all twelve languages: two new pages (handlers/cancellation.md, advanced/header-parameters.md) and the changed sections of fourteen others.
@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

📚 Documentation preview

Preview https://pr-3636.mcp-python-docs.pages.dev
Deployment https://b179a7a5.mcp-python-docs.pages.dev
Commit e31e1a1
Triggered by @maxisbey
Updated 2026-10-02 21:50:05 UTC

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

18 issues found across 192 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="i18n/tr/pages/handlers/cancellation.md">

<violation number="1" location="i18n/tr/pages/handlers/cancellation.md:12">
P2: This sentence is grammatically incomplete, so the page does not clearly introduce the two handler types that need special handling. Rewrite it as `İki tür işleyici için ise bir şey yapmanız gerekir: ...`.</violation>

<violation number="2" location="i18n/tr/pages/handlers/cancellation.md:46">
P2: The `Client` inflection is incorrect and makes this sentence unnatural. Use `` `Client`'ını kullanırken `` to express giving up while using this SDK's client.</violation>
</file>

<file name="i18n/uk/pages/advanced/index.md">

<violation number="1" location="i18n/uk/pages/advanced/index.md:17">
P3: Use the page’s established Ukrainian title here so navigation and cross-links consistently identify the same page: `Параметри в заголовках`.</violation>
</file>

<file name="i18n/zh/pages/handlers/cancellation.md">

<violation number="1" location="i18n/zh/pages/handlers/cancellation.md:12">
P3: `有两类需要` is incomplete and leaves the reader unsure what these two kinds need; state explicitly that these handlers need extra handling.</violation>
</file>

<file name="i18n/tr/pages/client/transports.md">

<violation number="1" location="i18n/tr/pages/client/transports.md:64">
P2: The translation changes `resumed streams` to `sürdürülen akışlar`, which describes an ongoing stream rather than a stream resumed after disconnection. Use `devam ettirilen akışlar` so readers know this limit also covers the reconnection path.</violation>
</file>

<file name="i18n/de/pages/advanced/header-parameters.md">

<violation number="1" location="i18n/de/pages/advanced/header-parameters.md:54">
P2: `um aus dem zu antworten` is not idiomatic German and makes this instruction unclear. Use `die auf Grundlage dessen antwortet, was du schon hast` instead.</violation>
</file>

<file name="i18n/es/pages/handlers/cancellation.md">

<violation number="1" location="i18n/es/pages/handlers/cancellation.md:49">
P3: `noticia` is a literal rendering of the English idiom and does not naturally identify cancellation in Spanish. Say that the handler does not receive the cancellation signal, for example `tu handler se entere de la cancelación`.</violation>
</file>

<file name="i18n/ja/pages/advanced/middleware.md">

<violation number="1" location="i18n/ja/pages/advanced/middleware.md:52">
P2: この文は英語の「4 本の接続からなる単一プール」を「4 つの接続プール」としており、同時実行数の例のリソース構成を変えています。4 本の接続からなる 1 つのプールを表すよう修正してください。

(Based on your team's feedback about keeping translated docs aligned with the English source.) .</violation>
</file>

<file name="i18n/zh-hant/pages/handlers/cancellation.md">

<violation number="1" location="i18n/zh-hant/pages/handlers/cancellation.md:12">
P3: `有兩種需要:` is grammatically incomplete and obscures what the two kinds have in common. Replace it with `有兩種處理函式需要特別處理:`.</violation>
</file>

<file name="i18n/ru/pages/advanced/header-parameters.md">

<violation number="1" location="i18n/ru/pages/advanced/header-parameters.md:21">
P2: Перевод сужает условие до клиента, который вообще не запрашивал список инструментов. Инструмент может отсутствовать в полученном или устаревшем списке, и такой клиент также не видел пометки; переведите условие как «Клиент, в чьём списке ещё не было этого инструмента…». 

(Based on your team's feedback about keeping generated translations aligned with English source wording.)</violation>
</file>

<file name="i18n/uk/pages/advanced/header-parameters.md">

<violation number="1" location="i18n/uk/pages/advanced/header-parameters.md:54">
P2: This sentence is an unnatural literal translation and obscures that the callback supplies the existing tool schema. Translate it through the Ukrainian translation inputs and regenerate the page.</violation>
</file>

<file name="i18n/de/pages/client/transports.md">

<violation number="1" location="i18n/de/pages/client/transports.md:47">
P3: „ein `httpx2.AsyncClient`, der ohne gebaut wird“ fehlt das Objekt von „ohne“ — der Satz ist ungrammatisch. Die Entsprechungen in den anderen Sprachen (z. B. es „construido sin uno“, ru „созданный без него“) führen das Bezugsobjekt korrekt an. Ergänze „ohne einen (Timeout)“.</violation>
</file>

<file name="i18n/tr/pages/troubleshooting.md">

<violation number="1" location="i18n/tr/pages/troubleshooting.md:134">
P2: “2026-07-28 üzerindeki istemciler” can be read as clients on a calendar date, not clients using that protocol revision. Say `2026-07-28` protokol sürümünü kullanan istemciler, matching the linked page.</violation>
</file>

<file name="i18n/pt/pages/handlers/cancellation.md">

<violation number="1" location="i18n/pt/pages/handlers/cancellation.md:12">
P3: `Dois tipos precisam:` is incomplete Portuguese and makes the opening summary read awkwardly. Write `Dois tipos precisam de atenção:` before listing the affected handlers.</violation>

<violation number="2" location="i18n/pt/pages/handlers/cancellation.md:49">
P2: `notícia` is ambiguous in this warning and does not identify what the handler misses. Say `o cancelamento` so the caveat clearly names the signal suppressed by these options.</violation>
</file>

<file name="i18n/pt/pages/troubleshooting.md">

<violation number="1" location="i18n/pt/pages/troubleshooting.md:135">
P3: Use the established translated page title `Parâmetros de cabeçalho` here. The current `Parâmetros de header` label gives the same page two different Portuguese names.</violation>
</file>

<file name="i18n/de/pages/handlers/cancellation.md">

<violation number="1" location="i18n/de/pages/handlers/cancellation.md:24">
P3: `Hier sind das 5 Sekunden` is grammatically incorrect German. Replace `das` with `es`.</violation>

<violation number="2" location="i18n/de/pages/handlers/cancellation.md:46">
P2: `dessen` grammatically points to the nearest masculine noun, `Task`, but `read_timeout_seconds` belongs to `Client`. Name the client timeout explicitly so readers do not look for this setting on the task.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic


Prompt ve kaynak fonksiyonları tam olarak araçlar gibi iptal edilir.

İptal, stdio ve Streamable HTTP üzerinde aynı şekilde çalışır. Bu SDK'nın `Client`'ında vazgeçmek, `call_tool`'u bekleyen görevi iptal etmek ya da `read_timeout_seconds` süresinin dolmasına izin vermek demektir.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The Client inflection is incorrect and makes this sentence unnatural. Use `Client`'ını kullanırken to express giving up while using this SDK's client.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At i18n/tr/pages/handlers/cancellation.md, line 46:

<comment>The `Client` inflection is incorrect and makes this sentence unnatural. Use `` `Client`'ını kullanırken `` to express giving up while using this SDK's client.</comment>

<file context>
@@ -0,0 +1,60 @@
+
+Prompt ve kaynak fonksiyonları tam olarak araçlar gibi iptal edilir.
+
+İptal, stdio ve Streamable HTTP üzerinde aynı şekilde çalışır. Bu SDK'nın `Client`'ında vazgeçmek, `call_tool`'u bekleyen görevi iptal etmek ya da `read_timeout_seconds` süresinin dolmasına izin vermek demektir.
+
+!!! warning
</file context>
Suggested change
İptal, stdio ve Streamable HTTP üzerinde aynı şekilde çalışır. Bu SDK'nın `Client`'ında vazgeçmek, `call_tool`'u bekleyen görevi iptal etmek ya da `read_timeout_seconds` süresinin dolmasına izin vermek demektir.
İptal, stdio ve Streamable HTTP üzerinde aynı şekilde çalışır. Bu SDK'nın `Client`'ını kullanırken vazgeçmek, `call_tool`'u bekleyen görevi iptal etmek ya da `read_timeout_seconds` süresinin dolmasına izin vermek demektir.


Bu olduğunda SDK **işleyicinizi iptal eder**. İşleyicinin beklediği `await` istisna fırlatır, fonksiyon geri sarılır ve döndürdüğü hiçbir şey gönderilmez. Çoğu işleyicinin bu konuda bir şey yapması gerekmez.

İki tür işleyicinin ise gerekir: temizlemesi gereken bir şey olan işleyici ve düz bir `def` olan işleyici.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This sentence is grammatically incomplete, so the page does not clearly introduce the two handler types that need special handling. Rewrite it as İki tür işleyici için ise bir şey yapmanız gerekir: ....

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At i18n/tr/pages/handlers/cancellation.md, line 12:

<comment>This sentence is grammatically incomplete, so the page does not clearly introduce the two handler types that need special handling. Rewrite it as `İki tür işleyici için ise bir şey yapmanız gerekir: ...`.</comment>

<file context>
@@ -0,0 +1,60 @@
+
+Bu olduğunda SDK **işleyicinizi iptal eder**. İşleyicinin beklediği `await` istisna fırlatır, fonksiyon geri sarılır ve döndürdüğü hiçbir şey gönderilmez. Çoğu işleyicinin bu konuda bir şey yapması gerekmez.
+
+İki tür işleyicinin ise gerekir: temizlemesi gereken bir şey olan işleyici ve düz bir `def` olan işleyici.
+
+## `async def` araçta temizlik yapma {#clean-up-in-an-async-def-tool}
</file context>
Suggested change
İki tür işleyicinin ise gerekir: temizlemesi gereken bir şey olan işleyici ve düz bir `def` olan işleyici.
İki tür işleyici için ise bir şey yapmanız gerekir: temizlemesi gereken bir işleyici ve düz bir `def` olan işleyici.

```

Varsayılan değer olay başına 1 MiB; bu, olay ayrıştırılmadan önce bayt cinsinden ölçülür. Sınır
POST yanıtlarına, GET akışına ve sürdürülen akışlara uygulanır. Bir POST yanıtındaki ya da sürdürülen

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The translation changes resumed streams to sürdürülen akışlar, which describes an ongoing stream rather than a stream resumed after disconnection. Use devam ettirilen akışlar so readers know this limit also covers the reconnection path.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At i18n/tr/pages/client/transports.md, line 64:

<comment>The translation changes `resumed streams` to `sürdürülen akışlar`, which describes an ongoing stream rather than a stream resumed after disconnection. Use `devam ettirilen akışlar` so readers know this limit also covers the reconnection path.</comment>

<file context>
@@ -44,22 +44,40 @@ Dikkat edilecek iki şey:
+```
+
+Varsayılan değer olay başına 1 MiB; bu, olay ayrıştırılmadan önce bayt cinsinden ölçülür. Sınır
+POST yanıtlarına, GET akışına ve sürdürülen akışlara uygulanır. Bir POST yanıtındaki ya da sürdürülen
+bir akıştaki aşırı büyük bir olay, o isteği bir SSE hatasıyla başarısız kılar. Arka plandaki GET akışında ise istemci
+hatayı log'a yazar ve akışı yeniden dener. Sunucuya güveniyorsanız ve daha büyük olaylara ihtiyacınız varsa
</file context>
Suggested change
POST yanıtlarına, GET akışına ve sürdürülen akışlara uygulanır. Bir POST yanıtındaki ya da sürdürülen
POST yanıtlarına, GET akışına ve devam ettirilen akışlara uygulanır. Bir POST yanıtındaki ya da devam ettirilen

--8<-- "docs_src/header_parameters/tutorial003.py"
```

* Übergib die Funktion, um aus dem zu antworten, was du schon hast.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: um aus dem zu antworten is not idiomatic German and makes this instruction unclear. Use die auf Grundlage dessen antwortet, was du schon hast instead.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At i18n/de/pages/advanced/header-parameters.md, line 54:

<comment>`um aus dem zu antworten` is not idiomatic German and makes this instruction unclear. Use `die auf Grundlage dessen antwortet, was du schon hast` instead.</comment>

<file context>
@@ -0,0 +1,65 @@
+--8<-- "docs_src/header_parameters/tutorial003.py"
+```
+
+* Übergib die Funktion, um aus dem zu antworten, was du schon hast.
+* Gib `None` für ein Tool zurück, bei dem es nichts zu prüfen gibt.
+
</file context>
Suggested change
* Übergib die Funktion, um aus dem zu antworten, was du schon hast.
* Übergib die Funktion, die auf Grundlage dessen antwortet, was du schon hast.


ミドルウェアは必ずしも `call_next(ctx)` を呼ぶ必要はありません。代わりに `MCPError` を送出すると、そのメッセージ 1 つが**拒否**されます。接続は維持され、次のメッセージは通ります。

たとえば、検索のたびに 4 本の接続プールから接続を 1 本占有するとします。このミドルウェアは、ツール呼び出しを同時に 4 つまで実行させ、5 つ目は拒否します。

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: この文は英語の「4 本の接続からなる単一プール」を「4 つの接続プール」としており、同時実行数の例のリソース構成を変えています。4 本の接続からなる 1 つのプールを表すよう修正してください。

(Based on your team's feedback about keeping translated docs aligned with the English source.) .

View Feedback

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At i18n/ja/pages/advanced/middleware.md, line 52:

<comment>この文は英語の「4 本の接続からなる単一プール」を「4 つの接続プール」としており、同時実行数の例のリソース構成を変えています。4 本の接続からなる 1 つのプールを表すよう修正してください。

(Based on your team's feedback about keeping translated docs aligned with the English source.) .</comment>

<file context>
@@ -45,12 +45,28 @@ tools/call took 0.1 ms
+
+ミドルウェアは必ずしも `call_next(ctx)` を呼ぶ必要はありません。代わりに `MCPError` を送出すると、そのメッセージ 1 つが**拒否**されます。接続は維持され、次のメッセージは通ります。
+
+たとえば、検索のたびに 4 本の接続プールから接続を 1 本占有するとします。このミドルウェアは、ツール呼び出しを同時に 4 つまで実行させ、5 つ目は拒否します。
+
+```python title="server.py" hl_lines="15-16 40-55 59"
</file context>
Suggested change
たとえば、検索のたびに 4 本の接続プールから接続を 1 本占有するとします。このミドルウェアは、ツール呼び出しを同時に 4 つまで実行させ、5 つ目は拒否します。
たとえば、検索のたびに 4 本の接続からなる接続プールから接続を 1 本占有するとします。このミドルウェアは、ツール呼び出しを同時に 4 つまで実行させ、5 つ目は拒否します。


這時 SDK 會**取消你的處理函式**。它正在等待的那個 `await` 會引發例外,函式逐層退出,它回傳的任何東西都不會送出。大多數處理函式不需要為此做任何事。

有兩種需要:有東西要清理的處理函式,以及用普通 `def` 寫的處理函式。

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: 有兩種需要: is grammatically incomplete and obscures what the two kinds have in common. Replace it with 有兩種處理函式需要特別處理:.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At i18n/zh-hant/pages/handlers/cancellation.md, line 12:

<comment>`有兩種需要:` is grammatically incomplete and obscures what the two kinds have in common. Replace it with `有兩種處理函式需要特別處理:`.</comment>

<file context>
@@ -0,0 +1,57 @@
+
+這時 SDK 會**取消你的處理函式**。它正在等待的那個 `await` 會引發例外,函式逐層退出,它回傳的任何東西都不會送出。大多數處理函式不需要為此做任何事。
+
+有兩種需要:有東西要清理的處理函式,以及用普通 `def` 寫的處理函式。
+
+## 在 `async def` 工具中清理 {#clean-up-in-an-async-def-tool}
</file context>
Suggested change
有兩種需要:有東西要清理的處理函式,以及用普通 `def` 寫的處理函式。
有兩種處理函式需要特別處理:有東西要清理的處理函式,以及用普通 `def` 寫的處理函式。

* Der `httpx2.AsyncClient` gehört dir, also betrittst und verlässt **du** ihn. Das SDK schließt nie einen Client, den es nicht selbst erzeugt hat.
* `streamable_http_client(url, http_client=...)` gibt einen Transport zurück, und `Client(transport)` nimmt ihn an wie alles andere auch.

Behalte das `timeout=` bei. Es ist dasselbe, das der SDK-eigene Client verwendet (30 Sekunden, 300 für Lesevorgänge); ein `httpx2.AsyncClient`, der ohne gebaut wird, bekommt den 5-Sekunden-Standardwert von `httpx2`, und ein Tool-Aufruf, der länger läuft, schlägt mit einem Read-Timeout fehl.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: „ein httpx2.AsyncClient, der ohne gebaut wird“ fehlt das Objekt von „ohne“ — der Satz ist ungrammatisch. Die Entsprechungen in den anderen Sprachen (z. B. es „construido sin uno“, ru „созданный без него“) führen das Bezugsobjekt korrekt an. Ergänze „ohne einen (Timeout)“.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At i18n/de/pages/client/transports.md, line 47:

<comment>„ein `httpx2.AsyncClient`, der ohne gebaut wird“ fehlt das Objekt von „ohne“ — der Satz ist ungrammatisch. Die Entsprechungen in den anderen Sprachen (z. B. es „construido sin uno“, ru „созданный без него“) führen das Bezugsobjekt korrekt an. Ergänze „ohne einen (Timeout)“.</comment>

<file context>
@@ -44,23 +44,41 @@ Zwei Dinge fallen auf:
 * Der `httpx2.AsyncClient` gehört dir, also betrittst und verlässt **du** ihn. Das SDK schließt nie einen Client, den es nicht selbst erzeugt hat.
 * `streamable_http_client(url, http_client=...)` gibt einen Transport zurück, und `Client(transport)` nimmt ihn an wie alles andere auch.
 
+Behalte das `timeout=` bei. Es ist dasselbe, das der SDK-eigene Client verwendet (30 Sekunden, 300 für Lesevorgänge); ein `httpx2.AsyncClient`, der ohne gebaut wird, bekommt den 5-Sekunden-Standardwert von `httpx2`, und ein Tool-Aufruf, der länger läuft, schlägt mit einem Read-Timeout fehl.
+
 Eine Anmerkung zu TLS: `httpx2` prüft Zertifikate gegen den Trust Store des Betriebssystems (über
</file context>
Suggested change
Behalte das `timeout=` bei. Es ist dasselbe, das der SDK-eigene Client verwendet (30 Sekunden, 300 für Lesevorgänge); ein `httpx2.AsyncClient`, der ohne gebaut wird, bekommt den 5-Sekunden-Standardwert von `httpx2`, und ein Tool-Aufruf, der länger läuft, schlägt mit einem Read-Timeout fehl.
Behalte das `timeout=` bei. Es ist dasselbe, das der SDK-eigene Client verwendet (30 Sekunden, 300 für Lesevorgänge); ein `httpx2.AsyncClient`, der ohne einen gebaut wird, bekommt den 5-Sekunden-Standardwert von `httpx2`, und ein Tool-Aufruf, der länger läuft, schlägt mit einem Read-Timeout fehl.


Quando isso acontece, o SDK **cancela o seu handler**. O `await` em que ele está esperando lança uma exceção, a função é desempilhada, e nada do que ela retornar é enviado. A maioria dos handlers não precisa fazer nada a respeito.

Dois tipos precisam: um handler com algo para limpar, e um handler que é um `def` comum.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: Dois tipos precisam: is incomplete Portuguese and makes the opening summary read awkwardly. Write Dois tipos precisam de atenção: before listing the affected handlers.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At i18n/pt/pages/handlers/cancellation.md, line 12:

<comment>`Dois tipos precisam:` is incomplete Portuguese and makes the opening summary read awkwardly. Write `Dois tipos precisam de atenção:` before listing the affected handlers.</comment>

<file context>
@@ -0,0 +1,60 @@
+
+Quando isso acontece, o SDK **cancela o seu handler**. O `await` em que ele está esperando lança uma exceção, a função é desempilhada, e nada do que ela retornar é enviado. A maioria dos handlers não precisa fazer nada a respeito.
+
+Dois tipos precisam: um handler com algo para limpar, e um handler que é um `def` comum.
+
+## Faça a limpeza em uma ferramenta `async def` {#clean-up-in-an-async-def-tool}
</file context>
Suggested change
Dois tipos precisam: um handler com algo para limpar, e um handler que é um `def` comum.
Dois tipos precisam de atenção: um handler com algo para limpar, e um handler que é um `def` comum.


Um argumento de ferramenta está marcado com `x-mcp-header` de um jeito que a especificação não permite, e `<reason>` diz qual regra ele quebra. Clientes em `2026-07-28` deixariam uma ferramenta assim fora da listagem deles, então o SDK se recusa a registrá-la.

Só argumentos `str`, `int` e `bool` podem ser marcados, e `str | None` não é nenhum deles. **[Parâmetros de header](advanced/header-parameters.md)** tem a forma de escrever um argumento opcional.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: Use the established translated page title Parâmetros de cabeçalho here. The current Parâmetros de header label gives the same page two different Portuguese names.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At i18n/pt/pages/troubleshooting.md, line 135:

<comment>Use the established translated page title `Parâmetros de cabeçalho` here. The current `Parâmetros de header` label gives the same page two different Portuguese names.</comment>

<file context>
@@ -128,6 +128,14 @@ Adicione os parênteses. `@mcp.resource(...)` e `@mcp.prompt()` dizem a mesma co
+
+Um argumento de ferramenta está marcado com `x-mcp-header` de um jeito que a especificação não permite, e `<reason>` diz qual regra ele quebra. Clientes em `2026-07-28` deixariam uma ferramenta assim fora da listagem deles, então o SDK se recusa a registrá-la.
+
+Só argumentos `str`, `int` e `bool` podem ser marcados, e `str | None` não é nenhum deles. **[Parâmetros de header](advanced/header-parameters.md)** tem a forma de escrever um argumento opcional.
+
+Como a entrada acima, isso lança quando o módulo é **importado**, antes de qualquer cliente se conectar.
</file context>
Suggested change
Só argumentos `str`, `int` e `bool` podem ser marcados, e `str | None` não é nenhum deles. **[Parâmetros de header](advanced/header-parameters.md)** tem a forma de escrever um argumento opcional.
Só argumentos `str`, `int` e `bool` podem ser marcados, e `str | None` não é nenhum deles. **[Parâmetros de cabeçalho](advanced/header-parameters.md)** tem a forma de escrever um argumento opcional.


* Das `finally` läuft, egal wie das Tool endet: ob es zurückgekehrt ist, eine Exception ausgelöst hat oder abgebrochen wurde.
* Aufräumcode, der `await` verwenden muss, braucht `shield=True`. In einem abgebrochenen Handler löst auch jedes weitere `await` eine Exception aus. Ohne die Abschirmung würde `release_hold` also schon in seiner ersten Zeile stoppen.
* Einen abgeschirmten Block kann nichts abbrechen, gib ihm also ein Zeitlimit. Hier sind das `5` Sekunden.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: Hier sind das 5 Sekunden is grammatically incorrect German. Replace das with es.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At i18n/de/pages/handlers/cancellation.md, line 24:

<comment>`Hier sind das 5 Sekunden` is grammatically incorrect German. Replace `das` with `es`.</comment>

<file context>
@@ -0,0 +1,60 @@
+
+* Das `finally` läuft, egal wie das Tool endet: ob es zurückgekehrt ist, eine Exception ausgelöst hat oder abgebrochen wurde.
+* Aufräumcode, der `await` verwenden muss, braucht `shield=True`. In einem abgebrochenen Handler löst auch jedes weitere `await` eine Exception aus. Ohne die Abschirmung würde `release_hold` also schon in seiner ersten Zeile stoppen.
+* Einen abgeschirmten Block kann nichts abbrechen, gib ihm also ein Zeitlimit. Hier sind das `5` Sekunden.
+
+!!! tip
</file context>
Suggested change
* Einen abgeschirmten Block kann nichts abbrechen, gib ihm also ein Zeitlimit. Hier sind das `5` Sekunden.
* Einen abgeschirmten Block kann nichts abbrechen, gib ihm also ein Zeitlimit. Hier sind es `5` Sekunden.

@maxisbey
maxisbey merged commit 2118f14 into main Oct 2, 2026
57 checks passed
@maxisbey
maxisbey deleted the docs/refresh-translations branch October 2, 2026 21:56

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review found no issues

No high-confidence issues detected in this change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant