Skip to content

Commit 33e9d44

Browse files
committed
docs: add Arabic documentation edition
1 parent 91941ed commit 33e9d44

57 files changed

Lines changed: 8015 additions & 1 deletion

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎docs/translations.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This documentation is written in English. To make it useful to more people, we a
44

55
## What's available
66

7-
Translated documentation is currently a **preview** in twelve languages: Deutsch, español, français, हिन्दी, 日本語, 한국어, português (Brasil), русский язык, Türkçe, українська мова, 简体中文 and 繁體中文. Pick one from the language switcher at the top of any page. More languages may follow once these have proved themselves.
7+
Translated documentation is currently a **preview** in thirteen languages: العربية, Deutsch, español, français, हिन्दी, 日本語, 한국어, português (Brasil), русский язык, Türkçe, українська мова, 简体中文 and 繁體中文. Pick one from the language switcher at the top of any page. More languages may follow once these have proved themselves.
88

99
The API reference is not translated: the translated site links to the single English one.
1010

‎i18n/ar/glossary.json‎

Lines changed: 294 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,294 @@
1+
{
2+
"keep": [
3+
"MCP",
4+
"Model Context Protocol",
5+
"MCPServer",
6+
"FastMCP",
7+
"ClientSession",
8+
"Context",
9+
"ctx",
10+
"stdio",
11+
"Streamable HTTP",
12+
"SSE",
13+
"JSON-RPC",
14+
"JSON",
15+
"OAuth",
16+
"PKCE",
17+
"JWT",
18+
"CIMD",
19+
"HTTP",
20+
"HTTPS",
21+
"TLS",
22+
"CORS",
23+
"URI",
24+
"URL",
25+
"ASGI",
26+
"WebSocket",
27+
"API",
28+
"SDK",
29+
"CLI",
30+
"IDE",
31+
"LLM",
32+
"SEP",
33+
"RFC",
34+
"Python",
35+
"TypeScript",
36+
"Node.js",
37+
"PyPI",
38+
"Pydantic",
39+
"Starlette",
40+
"FastAPI",
41+
"uvicorn",
42+
"httpx",
43+
"anyio",
44+
"asyncio",
45+
"trio",
46+
"pytest",
47+
"OpenTelemetry",
48+
"Inspector",
49+
"Claude",
50+
"GitHub",
51+
"VS Code",
52+
"Windows",
53+
"macOS",
54+
"Linux",
55+
"llms.txt",
56+
"2026-07-28",
57+
"2025-11-25",
58+
"2025-06-18",
59+
"2025-03-26"
60+
],
61+
"terms": [
62+
{
63+
"source": "tool",
64+
"target": "أداة",
65+
"note": "MCP callable primitive; plural أدوات. Keep Tools when naming the Inspector UI tab, and all code identifiers unchanged."
66+
},
67+
{
68+
"source": "resource",
69+
"target": "مورد",
70+
"note": "Readable MCP data; plural موارد. A resource template is قالب مورد. Keep Resources and Resource Templates when naming actual UI tabs."
71+
},
72+
{
73+
"source": "prompt",
74+
"target": "قالب توجيه",
75+
"note": "Reusable MCP message template, plural قوالب توجيه. First prose mention on a page may include (prompt). A general instruction to an LLM is توجيه; a UI confirmation prompt is مطالبة. Keep Prompts as a literal UI label."
76+
},
77+
{
78+
"source": "sampling",
79+
"target": "أخذ العينات",
80+
"note": "MCP model-generation feature; first prose occurrence takes (sampling). Do not suggest it merely samples existing data. Wire identifiers remain unchanged."
81+
},
82+
{
83+
"source": "roots",
84+
"target": "المجلدات الجذرية",
85+
"note": "Client-exposed directory roots; first prose mention takes (roots). Not mathematical roots or administrator privileges."
86+
},
87+
{
88+
"source": "elicitation",
89+
"target": "استقاء المعلومات",
90+
"note": "Server requests user input through the client; first prose mention takes (elicitation). Preserve form/URL and push/pull distinctions."
91+
},
92+
{
93+
"source": "capability",
94+
"target": "قدرة",
95+
"note": "Declared protocol capability; plural قدرات. A feature is ميزة, not necessarily a declared capability."
96+
},
97+
{
98+
"source": "transport",
99+
"target": "وسيلة نقل",
100+
"note": "Protocol connection mechanism; plural وسائل نقل. stdio, Streamable HTTP, and SSE stay unchanged."
101+
},
102+
{
103+
"source": "session",
104+
"target": "جلسة",
105+
"note": "Plural جلسات. Session identifiers and class names stay unchanged."
106+
},
107+
{
108+
"source": "handler",
109+
"target": "دالة معالجة",
110+
"note": "Registered handler function; plural دوال معالجة. A handler body is جسم دالة المعالجة; avoid the hardware sense of processor."
111+
},
112+
{
113+
"source": "dependency",
114+
"target": "اعتمادية",
115+
"note": "Plural اعتماديات, for packages and injected dependencies. Dependency injection is حقن الاعتماديات."
116+
},
117+
{
118+
"source": "resolver",
119+
"target": "دالة حل الاعتمادية",
120+
"note": "Function supplying an injected parameter. Shorten to دالة الحل after the role is clear; preserve Resolve identifiers."
121+
},
122+
{
123+
"source": "client",
124+
"target": "عميل",
125+
"note": "Plural عملاء; the MCP component inside a host, distinct from the user and host application."
126+
},
127+
{
128+
"source": "server",
129+
"target": "خادم",
130+
"note": "Plural خوادم. Class and module names remain unchanged."
131+
},
132+
{
133+
"source": "host",
134+
"target": "تطبيق مضيف",
135+
"note": "The user-facing MCP application containing clients, not the MCP server or a hosting machine. Shorten to المضيف when unambiguous."
136+
},
137+
{
138+
"source": "request",
139+
"target": "طلب",
140+
"note": "Protocol/HTTP request; plural طلبات. A response is استجابة, a result is نتيجة."
141+
},
142+
{
143+
"source": "token",
144+
"target": "رمز",
145+
"note": "OAuth: access token رمز وصول, refresh token رمز تحديث, bearer token رمز حامل. LLM token: وحدة نصية (token) on first use, then وحدة نصية. Do not conflate the two."
146+
},
147+
{
148+
"source": "lifespan",
149+
"target": "دورة الحياة",
150+
"note": "Server startup/shutdown feature. Preserve lifespan= and other identifiers."
151+
},
152+
{
153+
"source": "callback",
154+
"target": "دالة رد نداء",
155+
"note": "Plural دوال رد نداء. OAuth callback URL is عنوان URL لرد النداء. First prose mention may take (callback)."
156+
},
157+
{
158+
"source": "deploy",
159+
"target": "نشر",
160+
"note": "Deploy a server: انشر الخادم. Deployment نشر; distinct from running locally, تشغيل."
161+
},
162+
{
163+
"source": "library",
164+
"target": "مكتبة",
165+
"note": "Software library; plural مكتبات."
166+
},
167+
{
168+
"source": "back-channel",
169+
"target": "قناة عكسية",
170+
"note": "Server-to-client calls during a request; first prose mention takes (back-channel). Preserve NoBackChannelError."
171+
},
172+
{ "source": "file", "target": "ملف", "note": "Plural ملفات." },
173+
{
174+
"source": "user",
175+
"target": "مستخدم",
176+
"note": "Plural مستخدمون / مستخدمين according to case. Distinct from client."
177+
},
178+
{
179+
"source": "escape hatch",
180+
"target": "منفذ للتحكم المباشر",
181+
"note": "Lower-level API mechanism for bypassing convenience-layer restrictions. Translate metaphor by its function."
182+
},
183+
{
184+
"source": "type hint",
185+
"target": "تلميح نوع",
186+
"note": "Python typing hint; plural تلميحات الأنواع. Type annotation is تعليق نوع when distinction matters; do not translate the identifier."
187+
},
188+
{
189+
"source": "Get started",
190+
"target": "ابدأ هنا",
191+
"note": "Guide section/index title; distinct from First steps."
192+
},
193+
{
194+
"source": "First steps",
195+
"target": "الخطوات الأولى",
196+
"note": "Tutorial page inside Get started."
197+
},
198+
{
199+
"source": "authentication",
200+
"target": "مصادقة",
201+
"note": "Verifying identity, distinct from authorization."
202+
},
203+
{
204+
"source": "authorization",
205+
"target": "تفويض",
206+
"note": "Granting/checking permission, distinct from authentication."
207+
},
208+
{
209+
"source": "middleware",
210+
"target": "برمجيات وسيطة",
211+
"note": "Request-processing middleware. A single middleware component is مكوّن وسيط."
212+
},
213+
{
214+
"source": "schema",
215+
"target": "مخطط",
216+
"note": "Data/type schema; JSON Schema remains the name JSON Schema."
217+
},
218+
{
219+
"source": "structured output",
220+
"target": "مخرجات منظّمة",
221+
"note": "Tool output matching a schema; structured content is محتوى منظّم."
222+
},
223+
{
224+
"source": "pagination",
225+
"target": "تقسيم النتائج إلى صفحات",
226+
"note": "Protocol list pagination, not printed-page numbering."
227+
},
228+
{
229+
"source": "subscription",
230+
"target": "اشتراك",
231+
"note": "Plural اشتراكات. Subscribe اشترك; unsubscribe ألغِ الاشتراك."
232+
},
233+
{
234+
"source": "notification",
235+
"target": "إشعار",
236+
"note": "Protocol notification distinct from request and response."
237+
},
238+
{
239+
"source": "cancellation",
240+
"target": "إلغاء",
241+
"note": "Cancelling a request/task; preserve cooperative cancellation semantics."
242+
},
243+
{
244+
"source": "stateless",
245+
"target": "عديم الحالة",
246+
"note": "No server-side state required between requests; statelessness انعدام الحالة."
247+
},
248+
{
249+
"source": "stateful",
250+
"target": "ذو حالة",
251+
"note": "Preserves state across requests; inflect for gender and number."
252+
},
253+
{
254+
"source": "identity assertion",
255+
"target": "إفادة الهوية",
256+
"note": "Signed assertion carrying authenticated identity; first prose occurrence may take (identity assertion)."
257+
},
258+
{
259+
"source": "completion",
260+
"target": "إكمال",
261+
"note": "MCP argument autocomplete إكمال تلقائي للوسائط; LLM completion استكمال يولّده النموذج. Preserve protocol/class identifiers."
262+
},
263+
{
264+
"source": "in-memory",
265+
"target": "داخل الذاكرة",
266+
"note": "Direct in-process test connection, without network transport or subprocess."
267+
},
268+
{
269+
"source": "legacy",
270+
"target": "قديم",
271+
"note": "Older protocol path, not a judgement about quality. Legacy client عميل قديم. Preserve mode=\"legacy\"."
272+
},
273+
{
274+
"source": "pull",
275+
"target": "سحب",
276+
"note": "New protocol where clients fetch outstanding requests; contrast with server-initiated دفع (push)."
277+
},
278+
{
279+
"source": "argument",
280+
"target": "وسيطة",
281+
"note": "Passed call value; plural وسائط. Parameter is مَعلمة, plural مَعلمات; preserve identifiers."
282+
},
283+
{
284+
"source": "stream",
285+
"target": "تدفّق",
286+
"note": "Streaming تَدَفّق / بث according to context; never translate the name Streamable HTTP."
287+
},
288+
{
289+
"source": "cache",
290+
"target": "ذاكرة تخزين مؤقت",
291+
"note": "Caching تخزين مؤقت; cached result نتيجة مخزّنة مؤقتًا."
292+
}
293+
]
294+
}

‎i18n/ar/instructions.md‎

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Arabic (ar) — translation instructions
2+
3+
Target language: Modern Standard Arabic (العربية الفصحى), directory and URL
4+
code `ar`, page language tag `ar`. These instructions accompany the shared
5+
rules in `../general-prompt.md`; `glossary.json` wins terminology conflicts.
6+
7+
## 1. Register
8+
9+
Write clear Modern Standard Arabic for software developers across the Arabic-speaking
10+
world. Use neither regional dialect nor ornate literary or bureaucratic language.
11+
Address the reader with direct singular imperatives: "ثبّت", "أنشئ", "شغّل", "مرّر".
12+
Prefer verbs to nominal constructions: "شغّل الخادم", not "قم بعملية تشغيل الخادم".
13+
Use "يمكنك" for can, "يجب" for must, "ينبغي" for should, and "قد" for may
14+
when it expresses possibility; never weaken a requirement or turn an option into one.
15+
Do not add "يرجى" to instructions that are direct in English.
16+
17+
## 2. Voice
18+
19+
Sound like an experienced Arabic-speaking developer explaining the SDK to a colleague:
20+
direct, practical, and approachable. Prefer short sentences and familiar connectors
21+
such as "ثم", "لذلك", and "أي". Preserve every technical claim, caveat, condition,
22+
negation, example, and step, including those in a friendly aside. Recast clause order
23+
when Arabic needs it without rearranging blocks or changing emphasis.
24+
25+
Avoid inflated introductions such as "تجدر الإشارة إلى" and "من الجدير بالذكر",
26+
mechanical English word order, excessive passive voice, and transliterated verbs.
27+
"Returns" is "يعيد" in a function description, not "يرجع إلى". "Expose" means
28+
"يتيح" in MCP prose, not "يفضح". "Argument" means a passed value, never a dispute.
29+
Distinguish the MCP host application from the client inside it and the server it
30+
connects to. Distinguish authentication (المصادقة) from authorization (التفويض).
31+
32+
## 3. Humour and idioms
33+
34+
Translate the meaning of an idiom rather than its literal image. "Out of the box"
35+
is "افتراضيًا"; "under the hood" is "داخليًا"; "the whole story" is "التفاصيل كاملة".
36+
"That's it. It's just Python." is "هذا كل شيء. إنها Python فحسب.".
37+
Keep short payoff sentences short. Preserve the source's emojis and punctuation
38+
emphasis without adding new ones. Do not omit an aside or invent explanatory notes.
39+
40+
## 4. Typography
41+
42+
Arabic prose reads right to left; Latin identifiers and code retain their original
43+
left-to-right spelling. Do not reverse text, insert invisible bidi control characters,
44+
or wrap identifiers in added HTML or Markdown. Direction is the site's responsibility.
45+
Use the Arabic comma "،", semicolon "؛", and question mark "؟" in prose; retain
46+
ordinary colons, parentheses, straight quotes, and the source's Markdown syntax.
47+
Do not translate punctuation inside code, URLs, or pinned heading anchors.
48+
49+
Use ASCII digits throughout, including quantities, ports, versions, dates, HTTP
50+
status codes, percentages, RFCs, and SEPs. Preserve decimal separators and protocol
51+
revision identifiers exactly. Avoid decorative elongation (tatweel) and full vowel
52+
marks; use an occasional mark only to resolve ambiguity. Spell hamza and final
53+
letters correctly (إعداد، إنشاء، استدعاء، واجهة، مكتبة).
54+
55+
Translate headings, table cells, admonition titles, tab labels, link text, and image
56+
alt text. Product/package names used as labels (uv, pip, Claude Desktop) stay as named.
57+
When referring to an actual English UI tab, keep its displayed label (Tools,
58+
Resources, Resource Templates, Prompts) so the reader can find it. Preserve bold and
59+
italic emphasis on the corresponding meaning and never add code spans.
60+
61+
## 5. Terminology pointer
62+
63+
Follow `glossary.json` consistently, allowing normal Arabic inflection, definiteness,
64+
agreement, and plural forms (أداة / الأدوات، مورد / الموارد، عميل / العملاء).
65+
The listed targets name concepts; do not force the singular into a plural sentence.
66+
Everything in a code span or fenced block stays byte-identical, including comments,
67+
docstrings, strings, snippet includes, annotation markers, and error messages.
68+
API identifiers, classes, functions, parameters, modules, headers, environment
69+
variables, commands, and protocol methods stay unchanged even outside code font.
70+
71+
On a page's first prose use of an unfamiliar MCP concept, include its English term
72+
in parentheses where the glossary asks for it. Subsequent uses use Arabic alone.
73+
Do not add a gloss to a code identifier or to a heading when the concept is explained
74+
in the body. Acronyms and proper names in `keep` remain exactly as in the source.
75+
Translate all other reader-visible English; do not leave whole sentences in English.
76+
77+
## 6. Provisional note
78+
79+
These choices require review by native Arabic-speaking developers. Propose durable
80+
corrections here or in `glossary.json`, then regenerate the affected pages; do not
81+
patch generated `pages/` or `notices.md`. The normal command is
82+
`translate --lang ar --pages …`; the English documentation remains authoritative.

0 commit comments

Comments
 (0)