Skip to content

docs(i18n): add Turkish translation of README and quickstart - #3846

Closed
berkeagaya1597 wants to merge 2 commits into
microsoft:mainfrom
berkeagaya1597:docs/i18n-turkish
Closed

berkeagaya1597 wants to merge 2 commits into
microsoft:mainfrom
berkeagaya1597:docs/i18n-turkish

Conversation

@berkeagaya1597

Copy link
Copy Markdown

7. PR açıklaması (kopyalayıp kullanın)

Adds Turkish (tr) translation

Adds docs/i18n/README.tr.md and docs/i18n/quickstart.tr.md, following the
conventions already used by the ja/zh-CN/ko translations (YAML front matter with
title / last_reviewed / owner, a note pointing readers to the English
source, and the language switcher line).

One config change is required. .cspell.json sets "language": "en" and does
not exclude docs/i18n/. The CJK translations pass because cspell does not check
CJK characters, but Turkish uses the Latin script, so every word is reported as
unknown — I measured 1113 issues across the two files. I added a single glob to
ignorePaths:

"**/docs/i18n/*.tr.md"

The alternative would be adding several hundred Turkish words to
.cspell-repo-terms.txt, which seemed worse. Happy to switch approaches if the
maintainers prefer something else — for example an overrides entry, or excluding
docs/i18n/ as a whole so future Latin-script translations are covered too.

Also appended Türkçe to the two language switcher lines in README.md.

Checks I ran locally:

  • npx cspell --config .cspell.json "docs/i18n/*.tr.md" → 0 issues
  • All relative link targets verified to exist on main (specs, compliance,
    tutorials, deployment, ADR, LIMITATIONS, ARCHITECTURE, FAQ, ADOPTERS, CHARTER,
    COMMUNITY, PACKAGE-FEATURE-MATRIX)
  • Code blocks, YAML/policy samples, badge URLs and the architecture diagram are
    left byte-identical to the English source; only prose is translated.

Technical terms are kept in English on first use with a Turkish gloss
(e.g. "politika zorlama (policy enforcement)", "yürütme yalıtımı (sandboxing)",
"kurcalama kanıtı bırakan (tamper-evident)"), matching how these terms are used in
Turkish security writing. Happy to adjust any of them.


@github-actions

Copy link
Copy Markdown

Welcome to the Agent Governance Toolkit! Thanks for your first pull request.
Please ensure tests pass, code follows style (ruff check), and you have signed the CLA.
See our Contributing Guide.

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@github-actions github-actions Bot added documentation Improvements or additions to documentation size/XL Extra large PR (500+ lines) labels Aug 28, 2026
@github-actions

Copy link
Copy Markdown

PR Review Summary

Check Status Details
🔍 Code Review ⚠️ Missing No current-run comment
🛡️ Security Scan ⚠️ Missing No current-run comment
🔄 Breaking Changes ⚠️ Missing No current-run comment
📝 Docs Sync ⚠️ Missing No current-run comment
🧪 Test Coverage ⚠️ Missing No current-run comment

Verdict: ⚠️ AI review incomplete; ready for human review

AI review comments are untrusted advisory output. The summary reports workflow-generated completion status only, not model-authored pass/fail claims.

@berkeagaya1597

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree

San-Hsien (SanHsien) added a commit to SanHsien/agent-governance-toolkit that referenced this pull request Aug 30, 2026
在本 fork 實測重現:已註冊的 server 用 http:// 被 entry.require_tls 擋下,但同一個
URL 換成未註冊的名字,落到 fallback 路徑就完全沒有 TLS 檢查、直接放行。也就是說
allowlist 的鍵打錯一個字,傳輸層下限就等於關掉——治理工具本身的護欄失效。

落地照上游:McpAuthPolicy 新增 default_require_tls=True(fail-closed)、fallback
分支補上與已註冊條目相同的 scheme 檢查(只認 https/wss)、from_yaml 讀該欄位。
只在真的有給 URL 時才擋,與已註冊條目一致,所以不誤擋從不傳 URL 的呼叫端。
測試四條(含上游沒有的「未註冊+不給 URL 仍放行」),21 passed。

同輪另三筆:
- microsoft#3848(OPA timeout 測試 30ms 太緊)採用:假 opa sleep 30 秒,30ms 預算可能在
  行程還沒 spawn 完就到期,失敗的是 spawn 不是逾時,測到的不是這條要測的東西。
  本 fork 的 ci.yml 與 policy-engine-ci.yml 都跑 cargo test --workspace,opa.rs:254
  就是同一行。驗證限制照實說:本機沒裝 cargo,這一行沒實跑過,靠 CI。
- microsoft#3846(土耳其文翻譯)不引用:本 fork 沒有 docs/i18n/,維護一份讀不懂也無法審校的
  翻譯只會變成長期漂移的死文件。
- microsoft#3850(清理 python-app.yml 的 flake8)不引用:本 fork 沒有那支 workflow。

水位 PR 3845 → 3850。順帶把 test_fork_overlay 釘字面日期與字面水位的斷言改成釘性質
(第五個 repo 出現同一條)。

驗證:compileall / ruff / fork tests / 連結檢查 / mcp_auth 測試全部 exit 0。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
San-Hsien (SanHsien) added a commit to SanHsien/agent-governance-toolkit that referenced this pull request Aug 30, 2026
上游是 microsoft 的高速開發線,本輪處理完 microsoft#3846–microsoft#3850 之後同一天內又出現兩筆。

microsoft#3851(DecisionAssure Impact 治理變更影響分析引擎):OPEN、100 檔 +8742/-434 的
新功能。不引用——是提案不是上游狀態,且本 fork 沒有現在就在痛的缺陷需要它;提前
引用一個 100 檔的未採納功能等於扛下一條上游可能不會走的分支。

microsoft#3852(放寬 serde/serde_json/thiserror 的精確釘版):+4/-4。上游的理由成立,但那是
「發佈者」的理由——它說發佈到 crates.io 的 library crate 用精確釘版會鎖死下游的
Cargo.lock。本 fork 不是發佈方:publish.yml 有 9 處 official-repo guard、
publish-containers.yml 1 處,發佈流程全被閘門擋掉,沒有下游消費者受影響。而放寬釘版
對本線是負向的:精確釘版讓建置可重現,放寬後同一個 commit 在不同時間會拉到不同 patch
版,反而讓 dependency-freshness 的比對失去基準。

另記一句給後人:水位代表「到某個編號為止已逐筆看過」,不是「以後不會再有」。之後的
新項目由每週排程接手,不需要在同一輪裡追到底。

驗證:fork tests / 連結檢查 exit 0。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The translation itself follows the house pattern correctly: frontmatter present, the
"this is a translation, check the English for the latest" banner at the top, the language switcher
updated inside the translated file, and product names, commands and API identifiers left in English
as docs/i18n/README.md asks for. That is more of the convention than most translation PRs get right
first time.

Three integration points are missing, and they are all in the checklist the repo already publishes.

docs/i18n/README.md is not updated. That file carries the Language Availability table and its
own contributing steps say, at step 3, to add the translated files to it. Turkish is absent, so the
i18n index will not list a translation the root README links to. Two rows, README and quickstart,
both "Available".

mkdocs.yml has no Turkish entry. Lines 115 to 124 carry one link: per language
(i18n/README.ja/, i18n/README.ko/, i18n/README.zh-CN/, i18n/README.zh-TW/). Without a matching
entry the Turkish pages ship in the built site but are unreachable from its navigation.

This conflicts with #3673. That PR adds a Spanish translation and edits the exact same two lines
of the root README.md, the language bar at line 1 and the "Also in:" line at 211. Whichever merges
second will conflict. Worth knowing now rather than at the merge button, and the resolution is
trivial in both directions: both languages belong on both lines.

On the spell-check ignore, which is the interesting difference between the two PRs. Your approach
and #3673's are not the same: you add **/docs/i18n/*.tr.md to ignorePaths in .cspell.json, and
#3673 adds a term to .cspell-repo-terms.txt. Nothing on main handles this today, because
.cspell.json has no i18n entries at all and the existing translations are all CJK, which cspell does
not flag. Yours is the first Latin-script translation to hit the problem, so whatever lands here sets
the pattern.

For what it is worth, I think ignoring the path is the right answer and per-word dictionary entries
will not scale, but the pattern should be **/docs/i18n/*.md rather than *.tr.md. Spanish is
already queued in #3673 and the index file names French, German, Portuguese and Hindi as wanted, so a
language-specific line means a new entry per language forever, and each one is a shared append point
that conflicts with the next translation PR. One path covers all of them and this PR would be the
natural place to establish it.

One pre-existing thing this PR sits next to, not yours to fix: Traditional Chinese is complete on
main (README.zh-TW.md, quickstart.zh-TW.md), is listed in the i18n index, and is in the mkdocs
nav, but it is missing from the root README language bar, which is the line you are editing. So the
bar is already one language behind. Adding 繁體中文 while you are in there would close it, if you
would rather not leave a known gap in a line you touched.

Nothing blocking on the translation.

@MohammadHaroonAbuomar MohammadHaroonAbuomar left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

  • Commit 00c8a91 has no Signed-off-by trailer. The DCO check has not run yet because the fork workflows are gated, but it will fail once a maintainer approves them. Please git rebase --signoff and force-push; everything else in this PR is already verified and this is the only remaining item.

Signed-off-by: Muhammet Berke Ağaya <berke.agaya@setur.local>
@berkeagaya1597

Copy link
Copy Markdown
Author

Added the missing Signed-off-by trailer and force-pushed the updated commit.

Thanks for the review.

@MohammadHaroonAbuomar

Copy link
Copy Markdown
Collaborator

Thanks for your contribution; we're not taking this change, so I'm closing it.

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

Labels

documentation Improvements or additions to documentation size/XL Extra large PR (500+ lines)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants