From 403043b239168a6a6b46dfc97ad3e723d33f56da Mon Sep 17 00:00:00 2001 From: Madraka <8898640+Madraka@users.noreply.github.com> Date: Wed, 11 Nov 2026 02:59:36 +0300 Subject: [PATCH] i18n(tr): review of the strings changed since the last Turkish review (#112) The owner asked the PM to check and approve docs/i18n-review/tr.md. Each of its 93 keys was reviewed by two independent reviewers (faithfulness and security wording; idiom and catalog terminology) and a judge; 22 change, applied through pnpm i18n:import. The pack records every change and its reason. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Madraka <8898640+Madraka@users.noreply.github.com> --- .changeset/tr-review-112.md | 6 ++++ apps/studio/src/i18n/lazy/build.tr.ts | 4 +-- .../src/i18n/lazy/connectedAgents.tr.ts | 20 ++++++------- apps/studio/src/i18n/lazy/oauthConsent.tr.ts | 14 ++++----- apps/studio/src/i18n/tr.ts | 10 +++---- docs/i18n-review/tr.md | 29 +++++++++++++++++++ .../astro-renderer/src/status-strings/tr.ts | 6 ++-- 7 files changed, 62 insertions(+), 27 deletions(-) create mode 100644 .changeset/tr-review-112.md diff --git a/.changeset/tr-review-112.md b/.changeset/tr-review-112.md new file mode 100644 index 00000000..003d9604 --- /dev/null +++ b/.changeset/tr-review-112.md @@ -0,0 +1,6 @@ +--- +"@cloudhal/cli": patch +"@cloudhal/astro-renderer": patch +--- + +Turkish: the strings added since the last review (the OAuth consent screen, Connected agents, the setup-link sign-up text, the Ended badge, the Build chat playground hint and the site status pages, #112) are reviewed and approved by the owner. 22 of 93 change: Connected agents says an agent "never" goes beyond your role again ("senin rolünü asla aşmaz"), "revoke" is "iptal et" as everywhere else, "operator" is "işletmeci" so it is not read as the Yönetici role, the setup-link text names the Sahip role, the consent title needs no suffix on the app's name, the invite page says "Çıkış yap" like its button, and the maintenance page says "Tahmini dönüş: {time}" and "Sabrınız için teşekkür ederiz". diff --git a/apps/studio/src/i18n/lazy/build.tr.ts b/apps/studio/src/i18n/lazy/build.tr.ts index 01c19347..04cfb5a3 100644 --- a/apps/studio/src/i18n/lazy/build.tr.ts +++ b/apps/studio/src/i18n/lazy/build.tr.ts @@ -1,6 +1,6 @@ // Generated by `pnpm i18n:import` (ADR-0034): tr `build.*` messages. // Do not edit: change the translation file and import it; only English is edited here. -// hash: e40593bff61b53c5 +// hash: 427a8c6664847736 import type { NamespaceMessages } from "../namespaces.ts"; export const messages: NamespaceMessages<"build"> = { @@ -66,7 +66,7 @@ export const messages: NamespaceMessages<"build"> = { "Cloudflare'de AI, Worker'ın bağlantısını kullanır; yerelde CLOUDFLARE_ACCOUNT_ID ve CLOUDHAL_AI_TOKEN ayarlayın.", settings: "Ayarları aç", playgroundHint: - "“AI ile kur” Workers AI ile çalışır; deneme alanında bu yok. Kullanmak için Cloudhal'ı kendi Cloudflare hesabına kur.", + "“AI ile kur” Workers AI ile çalışır; playground'da Workers AI yok. Kullanmak için Cloudhal'ı kendi Cloudflare hesabına kur.", pick: "Seç", picking: "Sayfadan bir parçaya tıklayın", pickLabel: "Değiştirilecek parçayı sayfadan seçin", diff --git a/apps/studio/src/i18n/lazy/connectedAgents.tr.ts b/apps/studio/src/i18n/lazy/connectedAgents.tr.ts index 11d43246..0af8c84f 100644 --- a/apps/studio/src/i18n/lazy/connectedAgents.tr.ts +++ b/apps/studio/src/i18n/lazy/connectedAgents.tr.ts @@ -1,27 +1,27 @@ // Generated by `pnpm i18n:import` (ADR-0034): tr `connectedAgents.*` messages. // Do not edit: change the translation file and import it; only English is edited here. -// hash: 1cce379f51724a08 +// hash: 26339a341f3564f0 import type { NamespaceMessages } from "../namespaces.ts"; export const messages: NamespaceMessages<"connectedAgents"> = { connectedAgents: { title: "Bağlı agent'lar", description: - "URL ile bağladığın Claude, ChatGPT veya Cursor gibi uygulamalar. Her biri sen bağlantısını kesene kadar senin adına, rolünün ötesine geçmeden çalışır.", + "URL ile bağladığın Claude, ChatGPT veya Cursor gibi uygulamalar. Her biri, sen bağlantısını kesene kadar senin adına çalışır ve senin rolünü asla aşmaz.", allTitle: "Herkesin bağlı agent'ları", allDescription: - "Tüm üyelerin bağlantıları. Birinin bağlantısını kesmek onu hemen sonlandırır; üyesi yeniden bağlayabilir.", + "Tüm üyelerin bağlantıları. Kestiğin bağlantı hemen sona erer; onu bağlayan üye yeniden bağlayabilir.", columns: { agent: "Agent", owner: "Üye", access: "Erişim", lastUsed: "Son kullanım", - connected: "Bağlanma", + connected: "Bağlandı", }, identifiedBy: "{host} ile tanımlanıyor", selfRegistered: "Kendini kaydetmiş, doğrulanmamış", lookalike: "{client} gibi görünüyor, öyle olduğu doğrulanmadı", - never: "Hiç", + never: "Hiç kullanılmadı", disconnect: "Bağlantıyı kes", disconnectLabel: "{client} bağlantısını kes", resource: "bağlantı", @@ -34,7 +34,7 @@ export const messages: NamespaceMessages<"connectedAgents"> = { allEmpty: "Henüz kimse URL ile agent bağlamadı", setup: { description: - "Bir uygulamaya bu Studio'nun MCP URL'sini ver ve istediğinde onayla ya da giriş yapamayan betikler ve istemciler için bir agent anahtarı oluştur.", + "Bir uygulamaya bu Studio'nun MCP URL'sini ver, onay istediğinde onayla. Giriş yapamayan betikler ve istemciler içinse bir agent anahtarı oluştur.", tabs: { key: "Agent anahtarıyla", url: "URL ile bağlan", @@ -63,14 +63,14 @@ export const messages: NamespaceMessages<"connectedAgents"> = { vscode: "Projende .vscode/mcp.json olarak kaydet, sonra sunucuyu başlat. VS Code giriş yapmanı ister ve Studio'yu açar.", inspector: - "Çalıştır, Streamable HTTP'yi seç, URL'yi yapıştır ve Auth Settings'i, ardından Quick OAuth Flow'u aç. Bir bağlantıyı denemek için iyidir.", + "Çalıştır, Streamable HTTP'yi seç, URL'yi yapıştır ve Auth Settings'i, ardından Quick OAuth Flow'u aç. Bir bağlantıyı denemek için kullanışlıdır.", }, needsDcr: - "{client} kendini kaydeder (dinamik istemci kaydı) ve bu sunucuda bu özellik kapalı. Sunucunun yöneticisinden CLOUDHAL_MCP_DCR'ı yeniden açmasını iste ya da bir agent anahtarı kullan.", + "{client} kendini kaydeder (dinamik istemci kaydı) ve bu sunucuda bu özellik kapalı. Sunucunun işletmecisinden CLOUDHAL_MCP_DCR ayarını yeniden açmasını iste ya da bir agent anahtarı kullan.", needsPublicUrl: - "Claude.ai ve ChatGPT kendi sunucularından bağlanır; bu sunucular {url} adresine erişemez. Studio'yu --base-url ile herkese açık bir https:// adresine ayarlayarak başlat ya da bu bilgisayardaki Claude Code veya Codex gibi bir uygulama kullan.", + "Claude.ai ve ChatGPT kendi sunucularından bağlanır; bu sunucular {url} adresine erişemez. Studio'yu --base-url ile herkese açık bir https:// adresi vererek başlat ya da bu bilgisayardaki Claude Code veya Codex gibi bir uygulama kullan.", unavailable: - "Bir uygulamanın kendini tanıtabileceği iki yol da (meta veri belgeleri ve dinamik kayıt) burada kapalı. Bu sunucunun yöneticisine sor ya da bir agent anahtarı kullan.", + "Bir uygulamanın kendini tanıtabileceği iki yol da (meta veri belgeleri ve dinamik kayıt) burada kapalı. Bu sunucunun işletmecisine sor ya da bir agent anahtarı kullan.", }, }, }; diff --git a/apps/studio/src/i18n/lazy/oauthConsent.tr.ts b/apps/studio/src/i18n/lazy/oauthConsent.tr.ts index a04b11d5..fa608235 100644 --- a/apps/studio/src/i18n/lazy/oauthConsent.tr.ts +++ b/apps/studio/src/i18n/lazy/oauthConsent.tr.ts @@ -1,18 +1,18 @@ // Generated by `pnpm i18n:import` (ADR-0034): tr `oauthConsent.*` messages. // Do not edit: change the translation file and import it; only English is edited here. -// hash: 9cd67ab61daa4c7b +// hash: b2149f191648a054 import type { NamespaceMessages } from "../namespaces.ts"; export const messages: NamespaceMessages<"oauthConsent"> = { oauthConsent: { - title: "{client} bağla", - titleFrom: "{host}: {client} bağla", + title: "{client} bağlantısı", + titleFrom: "{host}: {client} bağlantısı", description: "Bir agent bu Studio'da senin adına çalışmak istiyor. Onaylamadan önce neler yapabileceğine bak.", invalid: { title: "Bu istek kullanılamaz", description: - "Süresi doldu, zaten yanıtlandı ya da yolda değiştirildi. Bağlantıyı agent'tan yeniden başlat.", + "Süresi doldu, zaten yanıtlandı ya da aktarılırken değiştirildi. Bağlantıyı agent'tan yeniden başlat.", }, who: { title: "Kim istiyor", @@ -20,13 +20,13 @@ export const messages: NamespaceMessages<"oauthConsent"> = { registered: "Bu Studio'ya kayıtlı", selfRegistered: "Kendini kaydetmiş, doğrulanmamış", lookalike: - "Ad {client} gibi görünüyor ama herkes herhangi bir adla istemci kaydedebilir. Yalnızca bu bağlantıyı {client} üzerinden kendin başlattıysan ve yukarıda gösterilen dönüş adresi onun kullandığı adresse onayla.", + "Adı {client} gibi görünüyor ama herkes istediği adla istemci kaydedebilir. Yalnızca bu bağlantıyı {client} üzerinden kendin başlattıysan ve yukarıda gösterilen dönüş adresi gerçekten onun kullandığı adresse onayla.", sendsBack: "Seni {host} adresine geri gönderir", thisComputer: "Seni bu bilgisayardaki bir uygulamaya geri gönderir", thisComputerApp: "Seni bu bilgisayardaki bir uygulamaya geri gönderir ({scheme}:)", loopbackWarning: "Bu agent'ın seni geri gönderebileceği her adres bu bilgisayarda. Yalnızca bağlantıyı buradaki bir uygulamadan başlattıysan onayla.", - stepUp: "Bu agent zaten bağlı ve daha fazlasını istiyor. Bugün yapabildikleri işaretli.", + stepUp: "Bu agent zaten bağlı ve daha fazlasını istiyor. Şu an yapabildikleri işaretli.", }, scopes: { title: "Neler yapabilir", @@ -37,7 +37,7 @@ export const messages: NamespaceMessages<"oauthConsent"> = { narrowed: "{label}, rolünde yalnızca kendi işin için ({scope})", added: "{label} (yeni)", offline: - "Bağlantı geri alınana ya da erişimin bitene kadar, en fazla 90 gün boyunca bağlı kalır ve erişimini kendisi yeniler.", + "Bağlantı iptal edilene ya da erişimin bitene kadar, en fazla 90 gün boyunca bağlı kalır ve erişimini kendisi yeniler.", sites: "{count, plural, one {Yalnızca üzerinde çalıştığın siteye erişir.} other {Yalnızca üzerinde çalıştığın {count, number} siteye erişir.}}", none: "En az bir izin seç.", diff --git a/apps/studio/src/i18n/tr.ts b/apps/studio/src/i18n/tr.ts index 9a71dba7..0336d357 100644 --- a/apps/studio/src/i18n/tr.ts +++ b/apps/studio/src/i18n/tr.ts @@ -1,6 +1,6 @@ // Generated by `pnpm i18n:import` (ADR-0034): tr core messages. // Do not edit: change the translation file and import it; only English is edited here. -// hash: f749f4c874aec237 +// hash: 8153094b42fee39f import type { Messages } from "./en.ts"; export const messages: Messages = { @@ -72,7 +72,7 @@ export const messages: Messages = { failed: "Giriş başarısız", setupTitle: "Bu Studio'yu kur", setupDescription: - "Cloudhal başlarken ya da dağıtılırken yazdırılan kurulum bağlantısıyla geldin. Şimdi oluşturacağın hesap sahip olur; ardından yeni kayıtlar kapanır.", + "Cloudhal başlarken ya da dağıtılırken yazdırılan kurulum bağlantısıyla geldin. Şimdi oluşturacağın hesap Sahip olur; ardından kayıt kapanır.", }, sites: { title: "Siteler", @@ -776,7 +776,7 @@ export const messages: Messages = { noMatches: "“{query}” ile eşleşen anahtar yok", notEnabledTitle: "Bu sunucu agent anahtarı veremiyor", notEnabledDescription: - "Sunucu giriş olmadan çalışıyor, bu yüzden anahtar üretemez. Kendi bilgisayarındaki agent'lar yine de cloudhal mcp ile stdio üzerinden bağlanabilir.", + "Bu sunucu giriş gerektirmeden çalışıyor, bu yüzden anahtar üretemez. Kendi bilgisayarındaki agent'lar yine de cloudhal mcp ile stdio üzerinden bağlanabilir.", copyId: "Anahtar kimliğini kopyala", revoke: "İptal et", revokeKey: "Anahtarı iptal et", @@ -3208,7 +3208,7 @@ export const messages: Messages = { existing: "Bu hesapla katılmak için şifresini gir.", submit: "Daveti kabul et", toSignIn: "Giriş sayfasına git", - signOutFirst: "Önce oturumu kapat, sonra daveti kabul et.", + signOutFirst: "Önce çıkış yap, sonra daveti kabul et.", welcome: "{name} ekibine hoş geldin", welcomeDescription: "{role} olarak giriş yaptın.", missingTitle: "Bu bağlantı eksik", @@ -3218,7 +3218,7 @@ export const messages: Messages = { gone: "Kullanılmış, iptal edilmiş ya da süresi dolmuş. Seni davet eden kişiden yeni bir davet iste.", otherSessionTitle: "{email} olarak giriş yapmışsın", otherSessionTitleGeneric: "Başka biri olarak giriş yapmışsın", - otherSession: "Bu davet {email} için. Oturumu kapat, sonra kabul et.", + otherSession: "Bu davet {email} için. Çıkış yap, sonra daveti kabul et.", alreadyMemberTitle: "Zaten ekiptesin", alreadyMember: "Bu hesap zaten üye. Bunun yerine giriş yap.", errors: { diff --git a/docs/i18n-review/tr.md b/docs/i18n-review/tr.md index 83f56458..39bde569 100644 --- a/docs/i18n-review/tr.md +++ b/docs/i18n-review/tr.md @@ -8,6 +8,35 @@ Every Turkish string added or changed after your review of collections, fields a To accept or change a line, edit `.i18n/tr/.json` after `pnpm i18n:export --locale tr`, then `pnpm i18n:import --locale tr` (the key column is `:`). Or reply on the PR and an agent applies it. +## Review result (2026-11-11) + +The owner asked the PM to check and approve this pack. Every key below was reviewed by two independent AI reviewers (one for faithfulness and security wording, one for idiom and catalog-wide terminology) and a judge, then read by the PM; the owner approved the result. 95 keys were checked: 22 changed, the rest kept as they are. The open question is answered: the invite page now says *Çıkış yap*, the name of its own button. + +| Key | Now | Why | +|---|---|---| +| `oauthConsent:title` | {client} bağlantısı | '{client} bağla' would need an accusative suffix on the arbitrary name, so it reads as broken Turkish. The noun phrase needs no suffix on the argument and matches disconnectLabel '{client} bağlantısını kes'. Both reviewers agree. | +| `oauthConsent:titleFrom` | {host}: {client} bağlantısı | Same fix as title, so the two headings stay parallel. Both args are intact. | +| `oauthConsent:invalid.description` | Süresi doldu, zaten yanıtlandı ya da aktarılırken değiştirildi. Bağlantıyı agent'tan yeniden başlat. | 'yolda değiştirildi' is a literal calque. 'aktarılırken' means 'altered in transit', which is the intended sense. | +| `oauthConsent:who.lookalike` | Adı {client} gibi görünüyor ama herkes istediği adla istemci kaydedebilir. Yalnızca bu bağlantıyı {client} üzerinden kendin başlattıysan ve yukarıda gösterilen dönüş adresi gerçekten onun kullandığı adresse onayla. | Takes the pack's improvements: possessive 'Adı', the natural 'istediği adla', and 'gerçekten', which makes the check stronger. Drops the comma before 'ama', which standard Turkish leaves out and the catalog mostly omits. 'Yalnızca' and both conditions stay, and no suffix lands on {client}. | +| `oauthConsent:who.stepUp` | Bu agent zaten bağlı ve daha fazlasını istiyor. Şu an yapabildikleri işaretli. | The English 'today' means 'currently'. 'Bugün' reads as 'on this calendar day'. 'Şu an' matches tr.ts ('şu an yapabileceklerini'). | +| `oauthConsent:scopes.offline` | Bağlantı iptal edilene ya da erişimin bitene kadar, en fazla 90 gün boyunca bağlı kalır ve erişimini kendisi yeniler. | In tr.ts 'revoke' is consistently 'iptal et' (revokeKey, revoked, invite revoke), while 'geri al' means undo or rollback. The 90-day cap and both end conditions are kept. | +| `connectedAgents:description` | URL ile bağladığın Claude, ChatGPT veya Cursor gibi uygulamalar. Her biri, sen bağlantısını kesene kadar senin adına çalışır ve senin rolünü asla aşmaz. | The current 'rolünün ötesine geçmeden' softens 'never'. The pack's 'rolünün ötesine geçmez' restores it, but 'rolünün' can also be read as 'its own role'. 'senin rolünü asla aşmaz' says whose role it is and matches tr.ts ('rolünü asla aşmaz'). | +| `connectedAgents:allDescription` | Tüm üyelerin bağlantıları. Kestiğin bağlantı hemen sona erer; onu bağlayan üye yeniden bağlayabilir. | 'üyesi' ('its member') is awkward, and 'Birinin bağlantısını kesmek' can be read as 'someone's connection'. The new text keeps 'at once' (hemen) and avoids 'sahibi', which could be confused with the Sahip role. | +| `core:auth.setupDescription` | Cloudhal başlarken ya da dağıtılırken yazdırılan kurulum bağlantısıyla geldin. Şimdi oluşturacağın hesap Sahip olur; ardından kayıt kapanır. | With a lowercase 'sahip', 'hesap sahip olur' reads as the verb 'to own' with no object. Studio capitalises the role in running text ('ilk hesap Sahip olur', tr.ts). 'yeni kayıtlar' can also mean new entries, while the sign-up settings say 'kayıt ... kapandı'. | +| `connectedAgents:columns.connected` | Bağlandı | ConnectedAgents.tsx:269 shows this as a prefix directly before a RelativeTime ('Connected 3 days ago'), not as a column header. 'Bağlandı 3 gün önce' reads naturally. 'Bağlanma' also reads as the negative imperative, and 'Bağlanma tarihi 3 gün önce' (a date followed by 'ago') is awkward. | +| `connectedAgents:never` | Hiç kullanılmadı | It stands alone in the Last used cell, where a bare 'Hiç' looks clipped. This follows the existing 'Hiç çalışmadı' in scheduleSettings. | +| `connectedAgents:setup.description` | Bir uygulamaya bu Studio'nun MCP URL'sini ver, onay istediğinde onayla. Giriş yapamayan betikler ve istemciler içinse bir agent anahtarı oluştur. | Imperative 'istediğinde onayla' with no subject can read as 'approve whenever you like' instead of 'when it asks'. 'onay istediğinde' removes that, and two sentences replace the run-on 've ... ya da' chain. The 'giriş yap' fix is kept. | +| `connectedAgents:setup.hints.inspector` | Çalıştır, Streamable HTTP'yi seç, URL'yi yapıştır ve Auth Settings'i, ardından Quick OAuth Flow'u aç. Bir bağlantıyı denemek için kullanışlıdır. | '... için iyidir' is a calque of 'Good for'; 'kullanışlıdır' is the idiomatic UI phrasing. The rest is unchanged. | +| `connectedAgents:setup.needsDcr` | {client} kendini kaydeder (dinamik istemci kaydı) ve bu sunucuda bu özellik kapalı. Sunucunun işletmecisinden CLOUDHAL_MCP_DCR ayarını yeniden açmasını iste ya da bir agent anahtarı kullan. | Takes the pack's 'ayarını' fix, which avoids a guessed suffix on the variable name. 'operator' becomes 'işletmeci', as in media.tr.ts ('işletmeciden daha fazla alan iste'). 'yönetici' reads as Studio's Yönetici (Admin) role, who cannot change this environment setting. {client} is intact. | +| `connectedAgents:setup.needsPublicUrl` | Claude.ai ve ChatGPT kendi sunucularından bağlanır; bu sunucular {url} adresine erişemez. Studio'yu --base-url ile herkese açık bir https:// adresi vererek başlat ya da bu bilgisayardaki Claude Code veya Codex gibi bir uygulama kullan. | 'Studio'yu ... adresine ayarlayarak' grammatically sets Studio itself to an address. 'adresi vererek' says plainly that --base-url takes the public address, and is shorter than the 'değeri ... olacak şekilde' alternative. {url} needs no suffix. | +| `connectedAgents:setup.unavailable` | Bir uygulamanın kendini tanıtabileceği iki yol da (meta veri belgeleri ve dinamik kayıt) burada kapalı. Bu sunucunun işletmecisine sor ya da bir agent anahtarı kullan. | 'operator' is 'işletmeci' in the catalog (media quota_exceeded). 'yöneticisine' can send users to the Studio Yönetici (Admin) role, who cannot turn these server features on. This also keeps it consistent with needsDcr. | +| `build:chat.playgroundHint` | “AI ile kur” Workers AI ile çalışır; playground'da Workers AI yok. Kullanmak için Cloudhal'ı kendi Cloudflare hesabına kur. | I checked tr.ts: Studio calls it 'Playground' (playground.title, and playground'da in unavailableDescription), and this is the only string that says 'deneme alanı'. The new text also replaces the vague 'bu' with what is actually missing. The second sentence matches unavailableDescription word for word. | +| `status:maintenance.body` | Bu site bakım nedeniyle kapalı. Sabrınız için teşekkür ederiz. | 'teşekkürler' is casual. A formal public page in the siz register calls for 'teşekkür ederiz'. Both reviewers agree. | +| `status:backBy` | Tahmini dönüş: {time} | 'itibarıyla' means 'as of / from then on', not 'by'. The current text also repeats the maintenance title 'Yakında geri döneceğiz' right above it. The pack's label form is the natural Turkish maintenance phrasing, puts no suffix on {time} and keeps the single simple arg. 'Tahmini' fits because the owner-set return time is an expectation. Reviewer A's 'Dönüş: en geç {time}' reads awkwardly. | +| `core:agents.notEnabledDescription` | Bu sunucu giriş gerektirmeden çalışıyor, bu yüzden anahtar üretemez. Kendi bilgisayarındaki agent'lar yine de cloudhal mcp ile stdio üzerinden bağlanabilir. | The glossary fix (giriş) is right, but 'giriş olmadan çalışıyor' is awkward and drops 'This'. 'Bu sunucu ... giriş gerektirmeden' restores the subject and matches the playground copy in tr.ts ('giriş gerektirdiği için'). The meaning is unchanged. | +| `core:inviteAccept.signOutFirst` | Önce çıkış yap, sonra daveti kabul et. | Open question: yes. The current text is 'Önce oturumu kapat, sonra daveti kabul et.' I checked InvitePage.tsx: the banner's button is common.signOut, which reads 'Çıkış yap'. The instruction should name that button. 'oturumu kapat' stays only for closing one session or device in Account. | +| `core:inviteAccept.otherSession` | Bu davet {email} için. Çıkış yap, sonra daveti kabul et. | This banner text sits beside the 'Çıkış yap' button (InvitePage.tsx). It now uses the same verb as the button and as signOutFirst, and 'daveti' keeps the two strings parallel. {email} is followed by the separate word 'için', so no suffix is needed. | + ## Consent screen (OAuth) — security Shown when an agent asks to connect. Every line decides whether someone approves an agent; none may soften. diff --git a/packages/astro-renderer/src/status-strings/tr.ts b/packages/astro-renderer/src/status-strings/tr.ts index 7c12afc7..f43969a1 100644 --- a/packages/astro-renderer/src/status-strings/tr.ts +++ b/packages/astro-renderer/src/status-strings/tr.ts @@ -1,6 +1,6 @@ // Generated by `pnpm i18n:import` (ADR-0034): tr status page messages. // Do not edit: change the translation file and import it; only English is edited here. -// hash: ca071f0a31b002dd +// hash: 51a2954cb6f9db77 import type { StatusMessages } from "./en.ts"; export const messages: StatusMessages = { @@ -10,7 +10,7 @@ export const messages: StatusMessages = { }, maintenance: { title: "Yakında geri döneceğiz", - body: "Bu site bakım nedeniyle kapalı. Sabrınız için teşekkürler.", + body: "Bu site bakım nedeniyle kapalı. Sabrınız için teşekkür ederiz.", }, comingSoon: { title: "Çok yakında", @@ -28,7 +28,7 @@ export const messages: StatusMessages = { title: "Bu önizleme bağlantısının süresi doldu", body: "Bu sürümü görmek için yeni bir bağlantı isteyin.", }, - backBy: "{time} itibarıyla geri döneceğiz", + backBy: "Tahmini dönüş: {time}", reference: "Referans: {reference}", builtWith: "Cloudhal ile yapıldı", };