From 79dbda2a8f0ace103c072dfd084d754543f0150c Mon Sep 17 00:00:00 2001 From: Sinan Eldem Date: Thu, 3 Sep 2026 21:22:21 +0300 Subject: [PATCH] feat(i18n): add Turkish locale --- ...ssistant.writeConfirmationProposal.spec.ts | 2 +- ...itorSettingsDialog.previewPosition.spec.ts | 8 +- .../meilisearch/MeilisearchIndexView.vue | 2 + .../agentOfflineExportParity.spec.ts | 2 + .../src/i18n/__tests__/backendErrors.spec.ts | 2 + .../__tests__/cachedResultMessages.spec.ts | 2 + .../src/i18n/__tests__/consulUiParity.spec.ts | 2 + .../i18n/__tests__/customTypeMessages.spec.ts | 3 +- .../__tests__/docsNamespaceParity.spec.ts | 2 + .../executionNamespaceParity.spec.ts | 2 + .../__tests__/sqliteRebuildNotice.spec.ts | 2 + .../__tests__/userAdminHostMessages.spec.ts | 3 +- apps/desktop/src/i18n/index.ts | 6 +- apps/desktop/src/i18n/locales/docs/tr.ts | 69 + .../src/i18n/locales/meilisearchManagement.ts | 29 + apps/desktop/src/i18n/locales/tr.ts | 9391 +++++++++++++++++ .../zookeeperConnectionDialog.spec.ts | 2 +- apps/desktop/src/lib/app/localeOptions.ts | 1 + .../settings/__tests__/settingsSearch.spec.ts | 4 +- crates/dbx-core/assets/docs-export.js | 2 +- .../dbx-core/assets/docs-export.manifest.json | 2 +- packages/app-tests/aiCliErrorI18n.test.ts | 3 +- .../app-tests/postgresLegacyTlsI18n.test.ts | 3 +- packages/app-tests/queryMessagesView.test.ts | 3 +- .../app-tests/sidebarMutationRuntime.test.ts | 2 +- src-tauri/src/lib.rs | 9 + 26 files changed, 9540 insertions(+), 18 deletions(-) create mode 100644 apps/desktop/src/i18n/locales/docs/tr.ts create mode 100644 apps/desktop/src/i18n/locales/tr.ts diff --git a/apps/desktop/src/components/editor/__tests__/AiAssistant.writeConfirmationProposal.spec.ts b/apps/desktop/src/components/editor/__tests__/AiAssistant.writeConfirmationProposal.spec.ts index adc2a69999..f8258e1d27 100644 --- a/apps/desktop/src/components/editor/__tests__/AiAssistant.writeConfirmationProposal.spec.ts +++ b/apps/desktop/src/components/editor/__tests__/AiAssistant.writeConfirmationProposal.spec.ts @@ -2,7 +2,7 @@ import { readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; const source = readFileSync(new URL("../AiAssistant.vue", import.meta.url), "utf8"); -const localePaths = ["en", "es", "it", "ja", "ko", "pt-BR", "zh-CN", "zh-TW"]; +const localePaths = ["en", "es", "it", "ja", "ko", "pt-BR", "tr", "zh-CN", "zh-TW"]; describe("AI assistant write confirmation replacement", () => { it("renders a localized confirmation from the backend's semantic event", () => { diff --git a/apps/desktop/src/components/editor/__tests__/EditorSettingsDialog.previewPosition.spec.ts b/apps/desktop/src/components/editor/__tests__/EditorSettingsDialog.previewPosition.spec.ts index d956da28b1..1a92c3db32 100644 --- a/apps/desktop/src/components/editor/__tests__/EditorSettingsDialog.previewPosition.spec.ts +++ b/apps/desktop/src/components/editor/__tests__/EditorSettingsDialog.previewPosition.spec.ts @@ -104,7 +104,7 @@ describe("EditorSettingsDialog live preview placement", () => { it("describes the execute shortcut below the mode selector in every supported locale", () => { expect(editorSection.indexOf("executeModeDescription")).toBeGreaterThan(editorSection.indexOf("executeModeLabel")); - for (const locale of ["zh-CN", "zh-TW", "en", "es", "it", "ja", "ko", "pt-BR"]) { + for (const locale of ["zh-CN", "zh-TW", "en", "es", "it", "ja", "ko", "pt-BR", "tr"]) { const source = readFileSync(new URL(`../../../i18n/locales/${locale}.ts`, import.meta.url), "utf8"); expect(source, locale).toContain("executeModeDescription:"); } @@ -115,7 +115,7 @@ describe("EditorSettingsDialog live preview placement", () => { expect(editorSection).toContain("{{ completionTriggerModeDescription }}"); expect(editorSection).not.toContain('t("settings.completionTriggerModeDescription")'); - for (const locale of ["zh-CN", "zh-TW", "en", "es", "it", "ja", "ko", "pt-BR"]) { + for (const locale of ["zh-CN", "zh-TW", "en", "es", "it", "ja", "ko", "pt-BR", "tr"]) { const source = readFileSync(new URL(`../../../i18n/locales/${locale}.ts`, import.meta.url), "utf8"); for (const key of ["completionTriggerModeManualDescription", "completionTriggerModeRequirePrefixDescription", "completionTriggerModePositionalDescription"]) { expect(source, `${locale}:${key}`).toContain(`${key}:`); @@ -174,7 +174,7 @@ describe("EditorSettingsDialog live preview placement", () => { expect(dataSection.match(/editDataGridFilterEditorView = '(quick|conditions|text)'/g)).toHaveLength(3); expect(dataSection).not.toContain(' { expect(editorPreview.indexOf('t("settings.previewSyntaxErrorHint")')).toBeGreaterThan(preview); }); - it.each(["en", "zh-CN", "zh-TW", "es", "pt-BR", "it", "ja", "ko"])("locale %s translates settings.previewSyntaxErrorHint", (locale) => { + it.each(["en", "zh-CN", "zh-TW", "es", "pt-BR", "it", "ja", "ko", "tr"])("locale %s translates settings.previewSyntaxErrorHint", (locale) => { const localeSource = readFileSync(new URL(`../../../i18n/locales/${locale}.ts`, import.meta.url), "utf8"); expect(localeSource).toMatch(/previewSyntaxErrorHint: ".+"/); }); diff --git a/apps/desktop/src/components/meilisearch/MeilisearchIndexView.vue b/apps/desktop/src/components/meilisearch/MeilisearchIndexView.vue index 5262e2546a..533c97a1c6 100644 --- a/apps/desktop/src/components/meilisearch/MeilisearchIndexView.vue +++ b/apps/desktop/src/components/meilisearch/MeilisearchIndexView.vue @@ -10,6 +10,7 @@ import "dayjs/locale/it"; import "dayjs/locale/ja"; import "dayjs/locale/ko"; import "dayjs/locale/pt-br"; +import "dayjs/locale/tr"; import { Copy, FileText, ListChecks, Settings } from "@lucide/vue"; import * as api from "@/lib/backend/api"; import type { MeilisearchIndexOverview } from "@/lib/backend/tauri"; @@ -29,6 +30,7 @@ const DAYJS_LOCALES: Record = { it: "it", ja: "ja", ko: "ko", + tr: "tr", }; const props = defineProps<{ diff --git a/apps/desktop/src/i18n/__tests__/agentOfflineExportParity.spec.ts b/apps/desktop/src/i18n/__tests__/agentOfflineExportParity.spec.ts index 8a0ca1a9a7..daf42b6510 100644 --- a/apps/desktop/src/i18n/__tests__/agentOfflineExportParity.spec.ts +++ b/apps/desktop/src/i18n/__tests__/agentOfflineExportParity.spec.ts @@ -5,6 +5,7 @@ import itLocale from "../locales/it"; import ja from "../locales/ja"; import ko from "../locales/ko"; import ptBR from "../locales/pt-BR"; +import tr from "../locales/tr"; import zhCN from "../locales/zh-CN"; import zhTW from "../locales/zh-TW"; @@ -16,6 +17,7 @@ const locales: Array<[string, Messages]> = [ ["ja", ja], ["ko", ko], ["pt-BR", ptBR], + ["tr", tr], ["zh-CN", zhCN], ["zh-TW", zhTW], ]; diff --git a/apps/desktop/src/i18n/__tests__/backendErrors.spec.ts b/apps/desktop/src/i18n/__tests__/backendErrors.spec.ts index 2a3c416053..5a1cc198f0 100644 --- a/apps/desktop/src/i18n/__tests__/backendErrors.spec.ts +++ b/apps/desktop/src/i18n/__tests__/backendErrors.spec.ts @@ -9,6 +9,7 @@ import it from "@/i18n/locales/it"; import ja from "@/i18n/locales/ja"; import ko from "@/i18n/locales/ko"; import ptBR from "@/i18n/locales/pt-BR"; +import tr from "@/i18n/locales/tr"; import zhCN from "@/i18n/locales/zh-CN"; import zhTW from "@/i18n/locales/zh-TW"; import { PHOENIX_DRIVER_NOT_INSTALLED_ERROR, PHOENIX_JDBC_PLUGIN_NOT_INSTALLED_ERROR } from "@/lib/database/phoenixConnection"; @@ -20,6 +21,7 @@ const LOCALES = { ja, ko, "pt-BR": ptBR, + tr, "zh-CN": zhCN, "zh-TW": zhTW, } as const; diff --git a/apps/desktop/src/i18n/__tests__/cachedResultMessages.spec.ts b/apps/desktop/src/i18n/__tests__/cachedResultMessages.spec.ts index a839710aaa..8bb609f938 100644 --- a/apps/desktop/src/i18n/__tests__/cachedResultMessages.spec.ts +++ b/apps/desktop/src/i18n/__tests__/cachedResultMessages.spec.ts @@ -6,6 +6,7 @@ import it from "@/i18n/locales/it"; import ja from "@/i18n/locales/ja"; import ko from "@/i18n/locales/ko"; import ptBR from "@/i18n/locales/pt-BR"; +import tr from "@/i18n/locales/tr"; import zhCN from "@/i18n/locales/zh-CN"; import zhTW from "@/i18n/locales/zh-TW"; @@ -23,6 +24,7 @@ describe("cached result messages", () => { ["Japanese", ja], ["Korean", ko], ["Brazilian Portuguese", ptBR], + ["Turkish", tr], ["Simplified Chinese", zhCN], ["Traditional Chinese", zhTW], ])("provides the missing-result actions in %s", (_locale, messages) => { diff --git a/apps/desktop/src/i18n/__tests__/consulUiParity.spec.ts b/apps/desktop/src/i18n/__tests__/consulUiParity.spec.ts index 395b66a1a8..cf53220a3b 100644 --- a/apps/desktop/src/i18n/__tests__/consulUiParity.spec.ts +++ b/apps/desktop/src/i18n/__tests__/consulUiParity.spec.ts @@ -6,6 +6,7 @@ import it_ from "../locales/it"; import ja from "../locales/ja"; import ko from "../locales/ko"; import ptBR from "../locales/pt-BR"; +import tr from "../locales/tr"; import zhCN from "../locales/zh-CN"; import zhTW from "../locales/zh-TW"; @@ -16,6 +17,7 @@ const locales: Array<[string, Record]> = [ ["ja", ja], ["ko", ko], ["pt-BR", ptBR], + ["tr", tr], ["zh-CN", zhCN], ["zh-TW", zhTW], ]; diff --git a/apps/desktop/src/i18n/__tests__/customTypeMessages.spec.ts b/apps/desktop/src/i18n/__tests__/customTypeMessages.spec.ts index 3ffc34e238..c58b6f6e29 100644 --- a/apps/desktop/src/i18n/__tests__/customTypeMessages.spec.ts +++ b/apps/desktop/src/i18n/__tests__/customTypeMessages.spec.ts @@ -5,6 +5,7 @@ import itLocale from "@/i18n/locales/it"; import ja from "@/i18n/locales/ja"; import ko from "@/i18n/locales/ko"; import ptBR from "@/i18n/locales/pt-BR"; +import tr from "@/i18n/locales/tr"; import zhCN from "@/i18n/locales/zh-CN"; import zhTW from "@/i18n/locales/zh-TW"; @@ -13,7 +14,7 @@ type Messages = { contextMenu: typeof en.contextMenu; }; -const locales = { es, it: itLocale, ja, ko, "pt-BR": ptBR, "zh-CN": zhCN, "zh-TW": zhTW } as unknown as Record; +const locales = { es, it: itLocale, ja, ko, "pt-BR": ptBR, tr, "zh-CN": zhCN, "zh-TW": zhTW } as unknown as Record; describe("custom type translations", () => { it("provides localized labels in every supported non-English locale", () => { diff --git a/apps/desktop/src/i18n/__tests__/docsNamespaceParity.spec.ts b/apps/desktop/src/i18n/__tests__/docsNamespaceParity.spec.ts index 76a5db3a64..69b7dbcad0 100644 --- a/apps/desktop/src/i18n/__tests__/docsNamespaceParity.spec.ts +++ b/apps/desktop/src/i18n/__tests__/docsNamespaceParity.spec.ts @@ -5,6 +5,7 @@ import it_ from "../locales/docs/it"; import ja from "../locales/docs/ja"; import ko from "../locales/docs/ko"; import ptBR from "../locales/docs/pt-BR"; +import tr from "../locales/docs/tr"; import zhCN from "../locales/docs/zh-CN"; import zhTW from "../locales/docs/zh-TW"; @@ -21,6 +22,7 @@ const locales: Array<[string, Record]> = [ ["ja", ja], ["ko", ko], ["pt-BR", ptBR], + ["tr", tr], ["zh-CN", zhCN], ["zh-TW", zhTW], ]; diff --git a/apps/desktop/src/i18n/__tests__/executionNamespaceParity.spec.ts b/apps/desktop/src/i18n/__tests__/executionNamespaceParity.spec.ts index d9141c9cae..3d616037f1 100644 --- a/apps/desktop/src/i18n/__tests__/executionNamespaceParity.spec.ts +++ b/apps/desktop/src/i18n/__tests__/executionNamespaceParity.spec.ts @@ -5,6 +5,7 @@ import it_ from "../locales/it"; import ja from "../locales/ja"; import ko from "../locales/ko"; import ptBR from "../locales/pt-BR"; +import tr from "../locales/tr"; import zhCN from "../locales/zh-CN"; import zhTW from "../locales/zh-TW"; @@ -16,6 +17,7 @@ const locales: Array<[string, Messages]> = [ ["ja", ja], ["ko", ko], ["pt-BR", ptBR], + ["tr", tr], ["zh-CN", zhCN], ["zh-TW", zhTW], ]; diff --git a/apps/desktop/src/i18n/__tests__/sqliteRebuildNotice.spec.ts b/apps/desktop/src/i18n/__tests__/sqliteRebuildNotice.spec.ts index a81dd18792..4f8054da5b 100644 --- a/apps/desktop/src/i18n/__tests__/sqliteRebuildNotice.spec.ts +++ b/apps/desktop/src/i18n/__tests__/sqliteRebuildNotice.spec.ts @@ -5,6 +5,7 @@ import it from "@/i18n/locales/it"; import ja from "@/i18n/locales/ja"; import ko from "@/i18n/locales/ko"; import ptBR from "@/i18n/locales/pt-BR"; +import tr from "@/i18n/locales/tr"; import zhCN from "@/i18n/locales/zh-CN"; import zhTW from "@/i18n/locales/zh-TW"; @@ -21,6 +22,7 @@ describe("SQLite rebuild notice", () => { ["Japanese", ja], ["Korean", ko], ["Brazilian Portuguese", ptBR], + ["Turkish", tr], ["Simplified Chinese", zhCN], ["Traditional Chinese", zhTW], ])("warns about retained backup, forced CAST conversion, lossy values, and rollback in %s", (_locale, messages) => { diff --git a/apps/desktop/src/i18n/__tests__/userAdminHostMessages.spec.ts b/apps/desktop/src/i18n/__tests__/userAdminHostMessages.spec.ts index f17ccdd130..133d76548e 100644 --- a/apps/desktop/src/i18n/__tests__/userAdminHostMessages.spec.ts +++ b/apps/desktop/src/i18n/__tests__/userAdminHostMessages.spec.ts @@ -5,6 +5,7 @@ import itLocale from "@/i18n/locales/it"; import ja from "@/i18n/locales/ja"; import ko from "@/i18n/locales/ko"; import ptBR from "@/i18n/locales/pt-BR"; +import tr from "@/i18n/locales/tr"; import zhCN from "@/i18n/locales/zh-CN"; import zhTW from "@/i18n/locales/zh-TW"; @@ -15,7 +16,7 @@ describe("user administration Host translations", () => { }); it("provides localized Host-change labels in every non-English locale", () => { - const locales = { es, it: itLocale, ja, ko, "pt-BR": ptBR, "zh-CN": zhCN, "zh-TW": zhTW }; + const locales = { es, it: itLocale, ja, ko, "pt-BR": ptBR, tr, "zh-CN": zhCN, "zh-TW": zhTW }; for (const [locale, messages] of Object.entries(locales)) { expect(messages.userAdmin.changeHost, locale).not.toBe(en.userAdmin.changeHost); expect(messages.userAdmin.newHost, locale).not.toBe(en.userAdmin.newHost); diff --git a/apps/desktop/src/i18n/index.ts b/apps/desktop/src/i18n/index.ts index f144494323..1e47b7491a 100644 --- a/apps/desktop/src/i18n/index.ts +++ b/apps/desktop/src/i18n/index.ts @@ -3,14 +3,14 @@ import en from "./locales/en"; import { safeLocalStorageGet, safeLocalStorageSet } from "@/lib/backend/safeStorage"; import { isTauriRuntime } from "@/lib/backend/tauriRuntime"; -export type Locale = "en" | "es" | "it" | "ja" | "ko" | "pt-BR" | "zh-CN" | "zh-TW"; +export type Locale = "en" | "es" | "it" | "ja" | "ko" | "pt-BR" | "tr" | "zh-CN" | "zh-TW"; type LocaleMessages = Record; type I18nGlobal = { locale: { value: Locale }; setLocaleMessage: (locale: Locale, messages: LocaleMessages) => void; }; -const supportedLocales: Locale[] = ["en", "es", "it", "ja", "ko", "pt-BR", "zh-CN", "zh-TW"]; +const supportedLocales: Locale[] = ["en", "es", "it", "ja", "ko", "pt-BR", "tr", "zh-CN", "zh-TW"]; const defaultLocale: Locale = "en"; const loadedLocales = new Set([defaultLocale]); const localeLoaders: Record, () => Promise<{ default: LocaleMessages }>> = { @@ -19,6 +19,7 @@ const localeLoaders: Record, () => Promise<{ default: Loca ja: () => import("./locales/ja"), ko: () => import("./locales/ko"), "pt-BR": () => import("./locales/pt-BR"), + tr: () => import("./locales/tr"), "zh-CN": () => import("./locales/zh-CN"), "zh-TW": () => import("./locales/zh-TW"), }; @@ -45,6 +46,7 @@ export function localeFromLanguageTag(value: string | null | undefined): Locale if (normalized === "ja" || normalized.startsWith("ja-")) return "ja"; if (normalized === "ko" || normalized.startsWith("ko-")) return "ko"; if (normalized === "pt" || normalized.startsWith("pt-")) return "pt-BR"; + if (normalized === "tr" || normalized.startsWith("tr-")) return "tr"; return null; } diff --git a/apps/desktop/src/i18n/locales/docs/tr.ts b/apps/desktop/src/i18n/locales/docs/tr.ts new file mode 100644 index 0000000000..623c2ebcc4 --- /dev/null +++ b/apps/desktop/src/i18n/locales/docs/tr.ts @@ -0,0 +1,69 @@ +export default { + title: "Dokümantasyon", + groupBySchema: "Şemalar", + groupByTableGroup: "Tablo Grupları", + noGroup: "(grup yok)", + noSchema: "(şema yok)", + search: "Tablo, sütun, grup ara…", + columns: "Sütunlar", + indexes: "Dizinler", + references: "Başvurular", + referencedBy: "Başvuranlar", + localNote: "YEREL", + shadowedComment: "Veritabanı açıklaması: {comment}", + addNote: "Not ekle", + editNote: "Notu düzenle", + newGroup: "Yeni grup…", + groupName: "Grup adı", + groupColour: "Renk", + deleteGroup: "Grubu sil", + enumValues: "Değerler", + usedBy: "Kullananlar", + openDiagram: "Şema diyagramını aç", + saving: "Kaydediliyor…", + saved: "Kaydedildi", + saveFailed: "Notlar kaydedilemedi: {error}", + overview: "Genel Bakış", + groupBy: "Gruplama ölçütü", + searchLabel: "Ara", + groups: "Gruplar", + relationships: "İlişkiler", + columnHeader: "Sütun", + typeHeader: "Tür", + settingsHeader: "Ayarlar", + noteHeader: "Not", + nameHeader: "Ad", + definitionHeader: "Tanım", + noOutgoingRelationships: "Bu tablo başka bir tabloya başvurmuyor.", + noIncomingRelationships: "Hiçbir tablo buna başvurmuyor.", + diagram: "Diyagram", + language: "Dil", + theme: "Tema", + themeLight: "Açık", + themeDark: "Koyu", + exportHtml: "HTML olarak dışa aktar…", + exporting: "Dışa aktarılıyor…", + exportFailed: "Dışa aktarılamadı: {error}", + warnings: { + tableSkipped: { + title: "Bir tablo belgelenemedi", + detail: "{table} atlandı: {reason}. Bu dokümantasyonda yer almıyor.", + }, + noForeignKeyMetadata: { + title: "İlişki bilgisi yok", + detail: "{engine} yabancı anahtar meta verisi bildirmediği için ilişki bağlantıları türetilemedi. Diyagram, bu motor için eksiksizdir.", + }, + commentsUnsupported: { + title: "Veritabanı açıklamaları kullanılamıyor", + detail: "{engine} tablo veya sütun açıklamalarını desteklemiyor, bu yüzden buradaki her açıklama bu projenin kendi notlarından gelir.", + }, + orphanedNotes: { + title: "Bazı notlar artık hiçbir şeyle eşleşmiyor", + detail: "{count} not, artık var olmayan bir tabloya veya sütuna başvuruyor. Hiçbir şey silinmedi — notlar dosyasında yeniden eşleyin ya da kaldırın.", + }, + dbmlOmitted: { + title: "DBML'de gösterilemiyor", + detail: "{table} üzerindeki {item} burada belgeleniyor ancak dışa aktarılan DBML'de yer almıyor: {reason}.", + }, + }, +}; diff --git a/apps/desktop/src/i18n/locales/meilisearchManagement.ts b/apps/desktop/src/i18n/locales/meilisearchManagement.ts index 5426d47a00..c2215d34f3 100644 --- a/apps/desktop/src/i18n/locales/meilisearchManagement.ts +++ b/apps/desktop/src/i18n/locales/meilisearchManagement.ts @@ -385,6 +385,34 @@ export const meilisearchManagementMessages = { deleteTaskHistory: "Excluir histórico", readOnlyDisabled: "As ações ficam desativadas em conexões somente leitura.", }, + tr: { + ...en, + systemManagement: "Sistem yönetimi", + overview: "Genel bakış", + apiKeys: "API Anahtarları", + tasks: "Görevler", + health: "Sağlık", + version: "Sürüm", + indexCount: "Dizinler", + totalDocuments: "Toplam belge", + keyCount: "Anahtarlar", + refresh: "Yenile", + rowActions: "İşlemler", + previous: "Önceki", + next: "Sonraki", + createKey: "Anahtar oluştur", + editKey: "Anahtarı düzenle", + deleteKey: "Anahtarı sil", + noKeys: "API anahtarı yok", + filters: "Filtreler", + applyFilters: "Filtreleri uygula", + receivedDocuments: "Alınan belgeler", + indexedDocuments: "Dizinlenen belgeler", + noTasks: "Görev yok", + cancelTask: "Görevi iptal et", + deleteTaskHistory: "Geçmişi sil", + readOnlyDisabled: "Salt okunur bağlantılarda işlemler devre dışıdır.", + }, } as const; export const meilisearchManagementEn = meilisearchManagementMessages.en; @@ -395,3 +423,4 @@ export const meilisearchManagementKo = meilisearchManagementMessages.ko; export const meilisearchManagementEs = meilisearchManagementMessages.es; export const meilisearchManagementIt = meilisearchManagementMessages.it; export const meilisearchManagementPtBR = meilisearchManagementMessages["pt-BR"]; +export const meilisearchManagementTr = meilisearchManagementMessages.tr; diff --git a/apps/desktop/src/i18n/locales/tr.ts b/apps/desktop/src/i18n/locales/tr.ts new file mode 100644 index 0000000000..b320e39df1 --- /dev/null +++ b/apps/desktop/src/i18n/locales/tr.ts @@ -0,0 +1,9391 @@ +import { withEnglishFallback } from "./fallback"; +import docs from "./docs/tr"; +import { consulUiMessages } from "./consulUi"; +import { sqlServerTraceMessages as sqlServerTrace } from "./sqlServerTraceMessages"; +import { meilisearchManagementTr } from "./meilisearchManagement"; + +const consul = { + ...consulUiMessages, + prefixPlaceholder: "Anahtar öneki, örn. app/ veya services/", + newKey: "Yeni Anahtar", + loadingKeys: "Anahtarlar yükleniyor...", + empty: "Anahtar bulunamadı", + loadMore: "Daha fazla yükle", + selectKey: "Değerini görmek için bir anahtar seçin", + loadingValue: "Değer yükleniyor...", + notFound: "Anahtar bulunamadı", + edit: "Düzenle", + editKey: "Anahtarı Düzenle", + delete: "Sil", + deleteTitle: "Consul KV anahtarını sil", + keyLabel: "Anahtar", + keyPlaceholder: "path/to/key", + keyRequired: "Anahtar zorunludur", + rootReadonly: "Kök önek değiştirilemez. Bir anahtar yolu girin.", + saved: "Anahtar kaydedildi", + deleted: "Anahtar silindi", + base64Readonly: "İkili değerleri Base64 modunda düzenleyin.", + rename: "Yeniden Adlandır", + clone: "Çoğalt", + copyKey: "Anahtarı Kopyala", + export: "Dışa Aktar", + value: "Değer", + valueContent: "Değer", + format: "Biçim", + metadata: "KV meta verisi", + prettyJson: "Düzenli", + invalidJson: "Geçersiz JSON", + summarySize: "Boyut", + conflict: "Bu anahtar yüklendikten sonra değişti. Yenileyip tekrar deneyin.", + keyAlreadyExists: "Bu ada sahip bir anahtar zaten var. Başka bir ad seçin veya mevcut anahtarı düzenleyin.", + aclFiltered: "Bazı Consul KV anahtarları ACL politikaları tarafından gizlendi.", + locked: "Bu anahtar bir Consul oturumu tarafından tutuluyor; düzenlenemez veya silinemez.", + valueTooLarge: "Consul KV değerleri 512 KiB'ı aşamaz.", + watchKey: "İzle", + stopWatching: "Durdur", + workspace: { + overview: "Genel Bakış", + kv: "KV", + services: "Servisler", + health: "Sağlık", + sessions: "Oturumlar", + scope: "Kapsam", + mesh: "Service Mesh", + tools: "Araçlar", + operator: "Operator", + refresh: "Yetenekleri yenile", + loading: "Consul yetenekleri yükleniyor...", + agentIdentity: "Agent kimliği", + capabilities: "Yetenekler", + version: "Sürüm", + edition: "Sürüm türü", + datacenter: "Veri merkezi", + node: "Agent düğümü", + mode: "Agent modu", + agent: "Agent API", + acl: "ACL", + namespaces: "Ad alanları", + partitions: "Yönetim Bölümleri", + enterprise: "Enterprise", + community: "Community", + serverMode: "Sunucu", + clientMode: "İstemci", + capability: { + supported: "Destekleniyor", + unsupported: "Desteklenmiyor", + forbidden: "Yetki yok", + unknown: "Bilinmiyor", + }, + }, +}; + +export default withEnglishFallback({ + customType: { + kinds: { + base: "Temel", + composite: "Bileşik", + domain: "Etki alanı", + enum: "Enum", + range: "Aralık", + multirange: "Çoklu aralık", + }, + tabs: { + members: "Üyeler", + properties: "Özellikler", + ddl: "DDL", + }, + members: { + empty: "Bu türün üyesi yok.", + name: "Ad", + type: "Tür", + nullable: "Boş olabilir", + default: "Varsayılan", + comment: "Açıklama", + }, + properties: { + empty: "Kullanılabilir öznitelik yok.", + baseType: "Temel tür", + notNull: "Boş olamaz", + default: "Varsayılan", + collation: "Karşılaştırma (collation)", + domainConstraint: "Kısıt", + rangeSubtype: "Aralık alt türü", + rangeMultirange: "Çoklu aralık türü", + }, + ddl: { + empty: "Bu tür için DDL kullanılamıyor.", + incomplete: "Üretilen DDL eksik olduğu için kopyalanmadı. Uyarılarını incelemek için tür ayrıntılarını açın.", + }, + }, + app: { + name: "DBX", + }, + docs, + auth: { + rateLimited: "Lütfen {seconds} sn sonra tekrar deneyin", + setupTitle: "Erişim parolası oluştur", + setupDescription: "Örneğinizi korumak için bir parola belirleyin", + loginDescription: "Veritabanı yönetim aracı", + newPassword: "Yeni parolayı girin", + confirmPassword: "Parolayı doğrulayın", + enterPassword: "Erişim parolasını girin", + passwordMismatch: "Parolalar eşleşmiyor", + setPassword: "Parolayı Belirle", + login: "Giriş", + processing: "İşleniyor...", + loginFailed: "Parola hatalı", + connectFailed: "Bağlantı başarısız", + changePassword: "Parolayı Değiştir", + oldPassword: "Mevcut parola", + oldPasswordWrong: "Mevcut parola hatalı", + passwordChanged: "Parola başarıyla değiştirildi", + changePasswordFailed: "Parola değiştirilemedi", + changePasswordDescription: "Mevcut parolanızı girin ve yeni bir parola seçin", + }, + toolbar: { + newConnection: "Yeni Bağlantı", + newQuery: "Yeni Sorgu", + execute: "Çalıştır", + executeShortcut: "Seçimi/sorguyu çalıştır ({shortcut})", + stopQuery: "Sorguyu durdur", + explainPlan: "Yürütme planı", + stopExplain: "Planı durdur", + autotrace: "Autotrace (sorguyu çalıştırır)", + explainAnalyze: "EXPLAIN ANALYZE (sorguyu çalıştırır)", + actualPlan: "Gerçek yürütme planı (SET STATISTICS XML)", + formatSql: "SQL'i Biçimlendir", + formatSqlFailed: "SQL biçimlendirilemedi", + formatAutoDetectFailed: "Seçilen içerik tanınamıyor veya biçimlendirilemiyor", + compressSql: "SQL'i Sıkıştır", + keywordCaseLower: "SQL anahtar sözcüklerini küçük harf yap", + keywordCaseUpper: "SQL anahtar sözcüklerini büyük harf yap", + sqlSemanticDiagnosticsToggleOn: "SQL anlamsal tanılama: Açık (kapatmak için tıklayın)", + sqlSemanticDiagnosticsToggleOff: "SQL anlamsal tanılama: Kapalı (açmak için tıklayın)", + insertValueHintsToggleOn: "INSERT sütun ipuçları: Açık (kapatmak için tıklayın)", + insertValueHintsToggleOff: "INSERT sütun ipuçları: Kapalı (açmak için tıklayın)", + autoCommit: "Otomatik Commit", + manualTransaction: "Manuel İşlem", + autoCommitAgent: "Otomatik Commit (Agent arka ucuna bağlıdır)", + manualTransactionAgent: "Manuel İşlem (Agent arka ucuna bağlıdır)", + commit: "Commit", + rollback: "Rollback", + txnAutoRolledBack: "İşlem, 5 dakikalık hareketsizlik sonrası otomatik olarak geri alındı", + previewSql: "SQL Önizleme", + previewQuery: "Sorguyu önizle", + hidePreviewSql: "SQL Önizlemesini Gizle", + saveSql: "SQL Kitaplığına Kaydet", + saveSqlFile: "Özgün Dosyaya Kaydet", + openSql: "SQL dosyası aç", + exPasteSqlInCondition: "ExPaste: IN koşulu olarak yapıştır", + theme: "Tema", + themeLight: "Açık", + themeDark: "Koyu", + themeSystem: "Sistemi İzle", + sqlSaved: "SQL kaydedildi", + sqlOpenFailed: "Dosya açılamadı: {message}", + sqlSaveFailed: "Dosya kaydedilemedi: {message}", + driverManager: "Sürücü Yöneticisi", + updatableDriverCount: "Güncellenebilir sürücü sayısı", + mcpUpdateAvailable: "MCP sunucusu güncellemesi mevcut", + blockDangerousRedisCommands: "Tehlikeli komutları engelle", + multiDbExecute: "Çoklu veritabanı yürütme", + }, + multiDbExecute: { + title: "Çoklu veritabanı yürütme", + progress: "Yürütme ilerlemesi ({completed}/{total})", + sqlPreview: "SQL önizlemesi", + databaseType: "Veritabanı türü", + searchTargets: "Bağlantı, veritabanı, şema ara...", + selectedCount: "{count} seçildi", + selectedTargets: "Seçilen hedefler", + selectGroup: "Yürütme hedef grubu", + noGroupSelected: "Bir hedef grubu seçin", + manageGroups: "Grupları yönet", + manageGroupsDescription: "Hedef grupları yeniden kullanılabilir SQL yürütme hedefleridir ve bağlantı gruplarını değiştirmez.", + noGroups: "Hedef grubu yok", + loadGroup: "Grubu yükle", + available: "Kullanılabilir", + typeMismatch: "Tür uyuşmazlığı", + targets: "hedef", + saveAsGroup: "Grup olarak kaydet", + saveChanges: "Değişiklikleri kaydet", + saveAsNewGroup: "Yeni grup olarak kaydet", + renameGroup: "Grubu yeniden adlandır", + deleteGroup: "Grubu sil", + deleteGroupConfirm: "“{name}” hedef grubu silinsin mi? Bağlantılar ve veritabanları etkilenmez.", + groupName: "Grup adı", + groupNameRequired: "Bir grup adı girin.", + groupNameExists: "Bu ada sahip bir grup zaten var.", + groupSaved: "Hedef grubu kaydedildi", + groupSaveFailed: "Hedef grubu kaydedilemedi: {message}", + groupLoadFailed: "Hedef grubu yüklenemedi: {message}", + groupModified: "Hedef seçimi değiştirildi", + unsavedChangesConfirm: "Geçerli hedef seçiminde kaydedilmemiş değişiklikler var. Devam etmeden önce kaydedilsin mi?", + cancelOperation: "İşlemi iptal et", + discardChanges: "Değişiklikleri at", + internalCatalog: "dahili", + defaultDatabase: "varsayılan veritabanı", + noDatabase: "bağlantı kapsamı", + clearTargets: "Temizle", + noTargets: "Çalıştırılabilir hedef yok.", + removeTarget: "Hedefi kaldır", + validTarget: "Hedef geçerli", + needsRecheck: "Hedef doğrulaması bekleniyor", + needsRecheckCount: "{count} hedefin doğrulanması gerekiyor", + invalidTargetCount: "{count} geçersiz hedef", + invalidTarget: "Geçersiz hedef", + connectionOnlyTarget: "Bağlantı düzeyinde hedef", + targetMissingConnection: "Bağlantı artık mevcut değil", + targetTypeMismatch: "Bağlantının veritabanı türü artık eşleşmiyor", + targetCatalogMissing: "Katalog artık mevcut değil", + targetDatabaseMissing: "Veritabanı artık mevcut değil veya erişilemiyor", + targetSchemaMissing: "Şema artık mevcut değil veya erişilemiyor", + targetPermissionDenied: "Hedef doğrulanırken izin reddedildi", + targetValidationFailed: "Hedef doğrulaması başarısız", + retryValidation: "Doğrulamayı yeniden dene", + serialContinueOnError: "Sıralı yürütme; hatalardan sonra devam et", + parallelContinueOnError: "Paralel yürütme; hatalardan sonra devam et", + serial: "Sıralı", + parallel: "Paralel", + switchToParallel: "Paralele geç", + switchToSerial: "Sıralıya geç", + elapsed: "Geçen süre: {duration}", + pending: "Bekliyor", + running: "Çalışıyor", + success: "Başarılı", + failed: "Başarısız", + skipped: "Atlandı", + cancelled: "İptal edildi", + notExecuted: "Çalıştırılmadı", + execute: "Çalıştır", + cancelBatch: "Toplu işlemi iptal et", + dangerTitle: "Hedefte yürütmeyi onayla", + dangerConfirm: "Bu hedefte çalıştır", + resultTabPrefix: "Çoklu veritabanı", + }, + externalSqlFile: { + modifiedTitle: "Dosya DBX dışında değişti", + modifiedDescription: "{path} başka bir program tarafından değiştirildi. Hangi sürümün korunacağını seçin.", + deletedTitle: "Dosya artık mevcut değil", + deletedDescription: "{path} DBX dışında silindi veya taşındı. Düzenleyici içeriği hâlâ kullanılabilir.", + unsavedWarning: "Bu düzenleyicide kaydedilmemiş değişiklikler de var. Dış sürümü yüklemek bunları siler.", + deletedUnsavedWarning: "Bu düzenleyicide kaydedilmemiş değişiklikler var. Sekmeyi kapatmak bunları siler.", + keepEditor: "Düzenleyici içeriğini koru", + loadLatest: "En sonu yükle", + cancelSave: "Kaydetmeyi iptal et", + loadExternal: "Dış sürümü yükle", + overwriteSave: "Dosyanın üzerine yaz", + keepEditing: "Düzenlemeye devam et", + saveAs: "Farklı kaydet...", + recreate: "Dosyayı yeniden oluştur", + closeTab: "Sekmeyi kapat", + loadFailed: "En son dosya içeriği yüklenemedi: {message}", + checkFailed: "Dış SQL dosyası denetlenemedi: {message}", + changedAgain: "Dosya kaydedilirken yeniden değişti. Tekrar deneyin.", + }, + updates: { + title: "Güncellemeler", + check: "Güncellemeleri denetle", + updateReadyTooltip: "Güncelleme hazır — kurmak için tıklayın", + restartRequiredTooltip: "Güncelleme kuruldu — bitirmek için yeniden başlatın", + availableTitle: "Güncelleme mevcut", + availableMessage: "DBX {latest} yayınlandı. Şu anda {current} sürümünü kullanıyorsunuz.", + upToDate: "DBX güncel ({version}).", + failed: "Güncellemeler denetlenemedi: {error}", + rateLimited: "GitHub güncelleme denetimleri geçici olarak hız sınırına takıldı. Yine de sürüm sayfasını açıp elle denetleyebilirsiniz.", + openRelease: "Sürümü Aç", + ignoreVersion: "Bu sürümü yoksay", + versionIgnored: "{version} sürümü yoksayıldı. Bir sonraki sürüm çıktığında hatırlatılacak.", + ignoreVersionFailed: "Yoksayılan sürüm kaydedilemedi: {error}", + downloadInBackground: "Arka Planda İndir", + cancelDownload: "İndirmeyi İptal Et", + downloadStarted: "DBX {version} arka planda indiriliyor.", + activeTasksBlockUpdate: "{count} görev hâlâ çalışıyor. DBX'i güncellemeden önce bitmelerini bekleyin.", + portableAutomaticUpdate: "DBX imzalı taşınabilir ZIP dosyasını indirecek, çıkıştan sonra yalnızca DBX.exe dosyasını değiştirecek ve otomatik olarak yeniden başlayacak. portable.dbx ve veriler korunur.", + windows7ManualUpdate: "Windows 7 için özel WebView2 109 çevrimdışı yükleyicisi gerekir. Güncellemek için sürüm sayfasını açıp Windows 7 paketini indirin.", + downloading: "İndiriliyor %{progress}", + downloadFailed: "Güncelleme indirilemedi: {error}", + downloadCanceled: "Güncelleme indirmesi iptal edildi.", + readyToInstall: "DBX {version} kuruluma hazır.", + installNow: "Şimdi Kur", + installedReadyToRestart: "DBX güncellendi. Bitirmek için yeniden başlatın.", + networkOrMirrorFailed: "Ağ bağlantısı zaman aşımına uğradı veya indirme aynaları şu anda erişilemez durumda. Bağlantınızı denetleyin ya da elle indirmek için 'Sürümü Aç' seçeneğine tıklayın.", + source: "Güncelleme kaynağı", + sourceOfficial: "Resmî kaynak", + sourceCnb: "CNB", + installing: "Güncelleme kuruluyor...", + installFailed: "Güncelleme kurulumu başarısız: {error}", + restart: "Çık ve Yeniden Başlat", + restartFailed: "Uygulama yeniden başlatılamadı: {error}", + exitAndUpdate: "Çık ve Güncelle", + dockerUsersRun: "Docker kullanıcıları güncellemek için", + toUpdate: "komutunu çalıştırmalı", + }, + sidebar: { + connections: "BAĞLANTILAR", + noConnections: "Henüz bağlantı yok", + importExport: "İçe / Dışa Aktar", + import: "Bağlantıları İçe Aktar", + importDbx: "DBX Yapılandırmasını İçe Aktar", + importNavicat: "Navicat NCX İçe Aktar", + importDbeaver: "DBeaver İçe Aktar", + importDatagrip: "DataGrip İçe Aktar", + export: "Bağlantıları Dışa Aktar", + collapseAll: "Tümünü daralt", + collapse: "Kenar çubuğunu daralt", + expand: "Kenar çubuğunu genişlet", + showMore: "{count} tane daha göster...", + filterByType: "Türe göre filtrele", + showActiveConnectionsOnly: "Yalnızca etkin bağlantıları göster", + activeConnectionsStatus: "Etkin bağlantılar: {count}", + disconnectAllActiveConnections: "Tüm etkin bağlantıları kes", + sortConnections: "Bağlantıları sırala", + sortConnectionsManual: "Elle sıralama", + sortConnectionsAscending: "Ad: A–Z", + sortConnectionsDescending: "Ad: Z–A", + searchScopeConnection: "Bağlantı", + searchScopeDatabase: "Veritabanı", + searchScopeSchema: "Şema", + searchScopeTable: "Tablo", + searchScopeView: "Görünüm", + searchTablesInCurrentScope: "Bu veritabanındaki tabloları ara...", + clearTableSearch: "Tablo aramasını temizle", + localTableSearch: "Yerel arama", + localTableSearchTooltip: "Uzak istek olmadan yerel tablo dizinini arayın. Uzaktan aramak için kapatın. Dizini oluşturmak veya güncellemek için yenile düğmesini kullanın.", + refreshLocalTableSearchIndex: "Yerel tablo dizinini yenile", + globalLocalSearch: "Yerel arama", + globalLocalSearchTooltip: "Uzak istek olmadan yalnızca yüklü kenar çubuğu nesnelerini arayın.", + regexSearch: "Regex araması", + regexSearchTooltip: "Kenar çubuğu adlarını, açıklamaları ve takma adları JavaScript düzenli ifadeleriyle eşleştirin.", + clearFilter: "Filtreyi temizle", + locateActiveTab: "Kenar çubuğunda bul", + }, + savedSql: { + saveToLibrary: "SQL Kitaplığına Kaydet", + saveToFile: "Yerel Olarak Kaydet", + save: "Kaydet", + saved: "SQL kaydedildi", + saveFailed: "SQL kaydedilemedi: {message}", + fileName: "Dosya adı", + folder: "Klasör", + rootFolder: "SQL Kitaplığı", + newQuery: "Yeni Sorgu", + newFolder: "Yeni SQL Klasörü", + newSubfolder: "Yeni Alt Klasör", + newFolderDefault: "Yeni Klasör", + renameFolder: "Klasörü Yeniden Adlandır", + deleteFolder: "Klasörü Sil", + deleteFolderConfirm: "“{name}” ve içindeki SQL dosyaları silinsin mi?", + open: "SQL Aç", + copyFile: "SQL Kopyala", + pasteFile: "SQL Yapıştır", + copied: "{count} SQL dosyası kopyalandı", + pasted: "{count} SQL dosyası yapıştırıldı", + nothingToPaste: "Yapıştırılacak SQL dosyası yok", + pasteFailed: "SQL yapıştırılamadı: {message}", + renameFile: "SQL'i Yeniden Adlandır", + renameFailed: "SQL yeniden adlandırılamadı: {message}", + nameConflict: 'Bu konumda "{name}" adlı bir SQL zaten var', + deleteFile: "SQL Sil", + deleteFileConfirm: "“{name}” silinsin mi?", + createFolderOption: "“{name}” klasörünü oluştur", + folderPlaceholder: "Bir klasör seçin", + searchPlaceholder: "Klasörlerde ara...", + createFolderFailed: "Klasör oluşturulamadı: {message}", + }, + sqlLibrary: { + title: "SQL Kitaplığı", + storageHelp: "SQL Kitaplığı içeriği, diskte bağımsız .sql dosyaları olarak değil, DBX uygulama verisinde saklanır.\nDosya sisteminde dosya kullanmak için SQL Kitaplığını dışa aktarın.", + unassociated: "İlişkilendirilmemiş", + deletedConnection: "Bağlantı silindi", + openInCurrentDatabase: "Geçerli Veritabanında Aç", + empty: "Henüz kayıtlı sorgu yok", + emptyFolder: "Boş klasör", + unfiled: "Sınıflandırılmamış", + exportFile: "SQL Dışa Aktar", + exportFolder: "Klasörü Dışa Aktar", + exportLibrary: "SQL Kitaplığını Dışa Aktar", + importDirectory: "Yerel Klasörü İçe Aktar", + importIntoFolder: "Klasöre İçe Aktar", + openStorageDirectory: "SQL Depolama Dizinini Aç", + chooseSyncDirectory: "Yerel Eşitleme Dizinini Ayarla", + disableSyncDirectory: "Yerel Eşitleme Dizinini Devre Dışı Bırak", + syncDirectorySaved: "SQL yerel eşitleme dizini kaydedildi", + syncDirectoryDisabled: "SQL yerel eşitlemesi devre dışı bırakıldı", + syncDirectoryFailed: "Eşitleme dizini ayarlanamadı: {message}", + openDirectoryFailed: "Dizin açılamadı: {message}", + noSyncDirectory: "Lütfen önce bir yerel eşitleme dizini ayarlayın", + exported: "Dışa aktarıldı", + exportFailed: "Dışa aktarma başarısız: {message}", + importFailed: "İçe aktarma başarısız: {message}", + importNone: "Seçilen klasörde .sql dosyası bulunamadı", + imported: "{count} SQL dosyası içe aktarıldı", + desktopOnly: "Bu özellik yalnızca masaüstünde kullanılabilir", + noConnection: "İçe aktarma için kullanılabilir bağlantı yok", + batchDelete: "Toplu Sil", + batchDeleteConfirm: "Seçilen {count} öğeyi silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + batchDeleteSuccess: "{count} öğe başarıyla silindi", + moveToFolder: "Klasöre Taşı...", + moveSelectedToFolder: "{count} SQL dosyasını Klasöre Taşı...", + moveSuccess: "{count} SQL dosyası taşındı", + moveFailed: "SQL taşınamadı: {message}", + clearSelection: "Seçimi Temizle", + sortByDate: "Değiştirilme Tarihine Göre Sırala", + sortByFolder: "Klasör Yapısına Göre Sırala", + collapseAll: "Tümünü daralt", + }, + + connection: { + title: "Yeni Bağlantı", + name: "Ad", + namePlaceholder: "Bağlantı adı, boş bırakılırsa otomatik oluşturulur", + note: "Notlar", + noteShow: "Göster", + noteShowInSidebar: "Notu bağlantı listesinde göster", + notePlaceholder: "Parolaları notlarda düz metin olarak saklamayın", + type: "Tür", + host: "Sunucu", + addHost: "Sunucu Ekle", + filePath: "Dosya Yolu", + h2FileMode: "Dosya", + h2TcpMode: "TCP", + h2FilePathRequired: "H2 dosya yolu boş olamaz", + createDuckDbFile: "DuckDB dosyası oluştur", + createSqliteFile: "SQLite veritabanı oluştur", + memoryDatabasePathHint: "Bellek içi SQLite veya DuckDB veritabanı oluşturmak için :memory: kullanın.", + sqliteCipherKey: "SQLite Şifreleme Anahtarı", + sqliteCipherKeyPlaceholder: "Şifrelenmemiş SQLite için boş bırakın", + sqliteExtensions: "SQLite Uzantıları", + sqliteExtensionsPlaceholder: "/path/to/regexp.dylib\n/path/to/text.dylib|sqlite3_text_init", + sqliteExtensionsHint: "Her satıra bir .dylib/.so/.dll yazın. Giriş noktası gerekiyorsa “yol|giriş noktası” biçimini kullanın. Bağlantıda yüklenir, ardından load_extension devre dışı bırakılır.", + initScript: "Başlangıç Betiği", + initScriptPlaceholder: "INSTALL quack;\nLOAD quack;\nATTACH 'quack:host' AS remote (TOKEN '...');", + initScriptHint: "Bağlantı her açıldığında çalıştırılan SQL ifadeleri (INSTALL/LOAD, SET, CREATE SECRET, ATTACH ...). Burada eklenen veritabanları kenar çubuğunda görünür.", + sqliteExtensionBrowse: "SQLite uzantısı seçin", + user: "Kullanıcı", + password: "Parola", + dynamodbEndpoint: "Uç nokta", + dynamodbRegion: "Bölge", + dynamodbAccessKeyId: "Access Key ID", + dynamodbSecretAccessKey: "Secret Access Key", + dynamodbSessionToken: "Oturum Belirteci", + dynamodbSessionTokenPlaceholder: "İsteğe bağlı", + dynamodbCredentialsRequired: "DynamoDB için Access Key ID ve Secret Access Key gereklidir", + savePassword: "Parolayı kaydet", + savePasswordHint: "Parola kaydedilir, böylece yeniden girmeniz gerekmez.", + savePasswordSessionHint: "Parola yalnızca bu oturum için tutulur ve uygulamadan çıkınca silinir.", + disconnectAndForgetPassword: "Bağlantıyı Kes ve Parolayı Unut", + passwordForgotten: "Parola unutuldu. Yeniden bağlanırken tekrar sorulacak.", + promptPasswordTitle: "Parolayı girin", + promptPasswordMessage: "“{connection}” bağlantısının parolasını girin. Parola boşsa doğrudan bağlanın.", + promptPasswordPlaceholder: "Parola", + promptPasswordSubmit: "Bağlan", + promptPasswordCancel: "İptal", + promptRememberPassword: "Parolayı hatırla", + rememberPasswordSaveFailed: "Bağlantı kuruldu, ancak DBX parolayı hatırlayamadı: {message}", + mysqlMissingPasswordHint: "Veritabanı parolası gönderilmedi. Parolayı girip tekrar deneyin.", + database: "Veritabanı", + databasePlaceholder: "İsteğe bağlı", + databasePlaceholderRequired: "Zorunlu, mevcut bir veritabanı girin", + databasePlaceholderWithDefault: "İsteğe bağlı, varsayılan {database}", + kingbaseDatabaseRequired: "KingbaseES bağlanmadan veya veritabanı listesini yüklemeden önce mevcut bir veritabanı ister.", + defaultDatabase: "Varsayılan VT", + authDatabase: "Kimlik Doğrulama VT", + authDatabasePlaceholder: "İsteğe bağlı, genellikle admin", + authMechanism: "Kimlik Doğrulama Mekanizması", + authMechanismDefault: "Varsayılan", + oidcBrowserAuthHint: "Kimlik doğrulama sistem tarayıcınızda açılır. Veritabanı parolası gerekmez.", + driverMode: "Sürücü", + mongoDriverAuto: "Otomatik", + mongoDriverLegacy: "Eski", + serviceName: "Servis/SID", + serviceNameOnly: "Servis Adı", + oracleTnsAlias: "Ağ Takma Adı", + oracleTnsAliasPlaceholder: "tnsnames.ora dosyasındaki takma ad", + oracleTnsAdminPlaceholder: "tnsnames.ora dosyasını içeren dizin", + oracleTnsAdminBrowse: "tnsnames.ora seçin", + oracleTnsPathHint: "Bu yolu DBX arka ucu/Oracle agent'ı okur. Masaüstü yolları yereldir; Web ve Docker yolları sunucudadır.", + oracleTnsAliasRequired: "Oracle TNS modu bir ağ takma adı gerektirir.", + oracleTnsAdminRequired: "Oracle TNS modu, tnsnames.ora dosyasını içeren TNS_ADMIN dizinini gerektirir.", + oracleTnsTransportUnsupported: "Oracle TNS bağlantıları SSH, proxy veya HTTP tünel katmanlarını kullanamaz. Taşıma katmanını kaldırın ya da Servis Adı/SID modunu kullanın.", + igniteVersion: "Ignite sürümü", + elasticsearchDirectMode: "Doğrudan", + elasticsearchKibanaProxyMode: "Kibana Proxy", + elasticsearchKibanaHost: "Kibana Sunucusu", + elasticsearchKibanaBasePath: "Temel Yol", + elasticsearchConnectivityCheckPath: "Bağlantı Yolu", + elasticsearchConnectivityCheckPathPlaceholder: "/ veya /my-index/_search", + elasticsearchConnectivityCheckDisabled: "Bağlantı denetimini devre dışı bırak", + elasticsearchConnectivityCheckDisabledHint: "Açıkken bağlanma ve test işlemleri yoklama isteğini atlar ve sunucuyu erişilebilir kabul eder. Hesabın kök yol ve denetim yolu için yetkisi olmadığında ya da kümeler arasında yetkiler farklı olduğunda kullanın.", + elasticsearchIndexGroupingPattern: "Dizin gruplama regex'i", + elasticsearchIndexGroupingPatternPlaceholder: "varsayılan olarak kapalı; etkinleştirmek için bir regex girin", + elasticsearchIndexGroupingPatternHint: "Varsayılan olarak kapalı (adlandırma şemaları değişkendir). Etkinleştirmek için bir düzenli ifade girin: eşleşen rolling veya zaman serisi dizinleri tek bir sorgulanabilir joker desende toplanır ve günlük ayrıntı gizlenir.", + version: "Sürüm", + victoriametricsApiPath: "API Yolu", + victoriametricsApiPathHint: "Tek düğümlü kurulumlar için /prometheus, kümeler için /select/tenantID/prometheus kullanın.", + victoriametricsLookback: "Meta Veri Geriye Bakış Süresi", + victoriametricsLookbackHint: "Metrik keşfi ve etiket sütunları için kullanılır, örneğin 1h veya 7d. Metrik önizlemeleri 1h kullanır ve düzenlenebilir kalır.", + victoriametricsInvalidApiPath: "VictoriaMetrics API yolu boş olmalı veya / ile başlamalıdır.", + victoriametricsInvalidLookback: "Geçersiz VictoriaMetrics geriye bakış süresi. 15m, 1h veya 7d gibi bir değer kullanın.", + driverInstallHintPrefix: "Gerekli sürücüyü şuradan yükleyin: ", + driverInstallHintSuffix: " — bağlanmadan önce üst araç çubuğundan.", + driverName: "Sürücü Adı", + driverNamePlaceholder: "Sağlayıcı veya ortam adı", + urlParams: "URL Parametreleri", + localInfilePathHint: "LOAD DATA LOCAL INFILE için her dosyayı localInfilePath=/mutlak/yol/dosya.csv ile açıkça izin listesine ekleyin. Ek dosyalar için parametreyi tekrarlayın.", + d1AccountId: "Hesap Kimliği", + d1DatabaseId: "Veritabanı Kimliği", + d1ApiToken: "API Belirteci", + d1TokenHint: "Belirtecin D1 Read yetkisi olmalıdır; yazma, DDL ve içe aktarma işlemleri ayrıca D1 Write gerektirir.", + d1FieldsRequired: "Cloudflare Hesap Kimliği, D1 Veritabanı Kimliği ve API Belirteci zorunludur.", + spannerStructuredMode: "Kaynak Kimlikleri", + spannerResourcePathMode: "Kaynak yolu", + spannerProject: "Proje Kimliği", + spannerInstance: "Örnek Kimliği", + spannerDatabase: "Veritabanı Kimliği", + spannerResourcePathHint: "projects/my-project/instances/my-instance/databases/my-database", + spannerHostHint: "Google Cloud için sunucu alanını boş bırakın. Yerel öykünücü için sunucuyu localhost, portu 9010 yapın; loopback sunucular için düz metin gRPC otomatik etkinleşir.", + spannerCredentialsHint: "Kimlik doğrulama Application Default Credentials kullanır. Servis hesabı anahtar dosyası kullanmak için URL Parametrelerine credentials=/path/key.json ekleyin.", + spannerFieldsRequired: "Cloud Spanner projesi, örneği ve veritabanı zorunludur.", + hiveAuthMode: "Kimlik Doğrulama", + hiveAuthNone: "Yok", + hivePrincipal: "Principal", + hiveKerberosPrincipalRequired: "Kerberos principal zorunludur", + hiveKrb5ConfBrowse: "krb5.conf seçin", + hiveJaasConfigBrowse: "JAAS yapılandırması seçin", + hiveTicketCache: "Bilet Önbelleği", + hiveTicketCacheFallback: "useSubjectCredsOnly=false ayarla", + hiveJvmOptions: "JVM Seçenekleri", + hiveJvmOptionsPlaceholder: "-Dsun.security.krb5.debug=true", + gbaseServer: "GBASEDBTSERVER", + gbaseServerHint: "Sunucudaki DBSERVERNAME veya DBSERVERALIASES ile eşleşmelidir.", + gbaseServerMismatch: "GBase 8s bağlantısı başarısız oldu; GBASEDBTSERVER sunucunun DBSERVERNAME veya DBSERVERALIASES değeriyle eşleşmiyor. GBASEDBTSERVER alanına gerçek sunucu adını yazın.", + informixServer: "INFORMIXSERVER", + sslEnable: "Şifreli bağlantıyı etkinleştir", + caCertPath: "CA Sertifikası", + caCertPathPlaceholder: "İsteğe bağlı, örn. ~/.yandex/RootCA.crt", + caCertPathBrowse: "Sertifikaya gözat", + damengSslFilesPath: "Sertifika dizini", + damengSslFilesPathPlaceholder: "/path/to/dmcert", + damengSslFilesPathBrowse: "Sertifika dizinini seçin", + damengSslKeystorePassword: "Anahtar deposu parolası", + damengSslHint: "DM8 JDBC, SSL sertifikalarını bu dizinden okur ve iki alanı da URL parametreleriyle iletir.", + damengSslProtocol: "SSL protokolü", + damengSslProtocolPlaceholder: "İsteğe bağlı, örn. TLSv1.2", + damengSslVerificationHint: "Sertifika doğrulaması DM8 sunucusundaki ENABLE_ENCRYPT ayarıyla denetlenir. Mod 5 sunucu sertifikasını doğrular; mod 4 sertifika doğrulaması yapmadan şifreler.", + damengJvmOptions: "JVM sistem özellikleri", + damengJvmOptionsPlaceholder: "-Djava.net.preferIPv4Stack=true", + damengJvmOptionsHint: "Her satıra bir -Danahtar veya -Danahtar=değer yazın. Boşluk içeren değerler için kabuk tırnağı gerekmez.", + damengJvmOptionsInvalid: "{line}. satır, kabuk tırnağı içermeyen bir -Danahtar veya -Danahtar=değer sistem özelliği olmalıdır.", + damengBuiltinDriver: "Paketle gelen DM8", + damengCustomDriver: "DM6 / Özel JAR", + damengDriverModeHint: "DM8 için pakete gömülü sürücüyü kullanın. DM6 veya başka bir uyumlu sürüm için resmî JDBC JAR dosyasını seçin.", + damengCustomDriverHint: "Lisanslı bir kaynaktan Dameng JDBC JAR dosyası seçin. Özel sürücü Dameng agent'ı içinde yalıtılır ve genel JDBC eklentisini gerektirmez.", + damengCustomDriverRequired: "Bir Dameng JDBC sürücü JAR dosyası seçin.", + redisTlsInsecure: "Sertifika doğrulamasını atla", + redisTlsInsecureHint: "redis-cli --tls --insecure ile eşdeğerdir; kendinden imzalı sertifikalar veya özel CA'lar içindir.", + mysqlTlsMode: "TLS Modu", + mysqlTlsModePreferred: "Tercih edilen", + mysqlTlsModeDisabled: "Devre dışı", + mysqlTlsModeRequired: "Zorunlu", + mysqlTlsModeVerifyCa: "CA Doğrula", + mysqlTlsModeVerifyIdentity: "Kimlik Doğrula", + mysqlCleartextPasswordAuth: "Düz Metin Parola Kimlik Doğrulaması", + mysqlCleartextPasswordAuthHint: "Yalnızca MySQL sunucusu düz metin parola kimlik doğrulama eklentisini gerektiriyorsa etkinleştirin.", + mysqlCaCertHint: "Sunucu sertifikası özel bir CA kullanıyorsa CA Doğrula ve Kimlik Doğrula modlarında zorunludur.", + mysqlClientCert: "İstemci Kimlik Doğrulaması", + mysqlClientCertPlaceholder: "/path/to/client.crt", + mysqlClientKeyPlaceholder: "/path/to/client.key", + mysqlClientCertHint: "MySQL mTLS gerektirdiğinde istemci sertifikası ve özel anahtarı birlikte verilmelidir.", + mysqlTlsConnectionFailureHint: "MySQL sunucusu TLS gerektirmiyorsa bağlantıyı düzenleyin, TLS Modunu Devre dışı yapın ve tekrar deneyin.", + mysqlUnsupportedCertVersionHint: "Katı doğrulama bu sunucu sertifikası sürümünü desteklemiyor. Sertifikayı X.509 v3 ile değiştirin veya Zorunlu modu yalnızca güvenilir bir ağda kullanın.", + mysqlClientCertBrowse: "İstemci sertifikası seçin", + mysqlClientKeyBrowse: "İstemci özel anahtarı seçin", + postgresSslMode: "TLS Modu", + postgresSslModeDisable: "Devre dışı bırak", + postgresSslModePrefer: "Tercih et", + postgresSslModeRequire: "Zorunlu kıl", + postgresSslModeVerifyCa: "CA Doğrula", + postgresSslModeVerifyFull: "Tam Doğrula", + postgresLegacyTls: "Eski TLS uyumluluğu", + postgresLegacyTlsHint: "TLS 1.2 statik RSA anahtar değişimiyle sınırlı sunucuları destekler. Varsayılan moddan daha az güvenlidir; yalnızca sunucunun TLS yapılandırması yükseltilemiyorsa etkinleştirin.", + postgresServerCert: "Sunucu CA", + postgresRootCertPlaceholder: "/path/to/ca.crt", + postgresRootCertHint: "Sunucu sertifikası özel bir CA tarafından imzalandığında verify-ca veya verify-full için bunu kullanın.", + postgresRootCertBrowse: "CA sertifikası seçin", + postgresClientCert: "İstemci Kimlik Doğrulaması", + postgresClientCertPlaceholder: "/path/to/client.crt", + postgresClientKeyPlaceholder: "/path/to/client.key", + postgresClientCertHint: "PostgreSQL mTLS gerektirdiğinde istemci sertifikası ve özel anahtarı birlikte verilmelidir.", + postgresClientCertBrowse: "İstemci sertifikası seçin", + postgresClientKeyBrowse: "İstemci özel anahtarı seçin", + connectionUrlOptional: "URL (isteğe bağlı)", + connectionUrlPlaceholder: "postgresql://user:pass{'@'}host:5432/db?sslmode=require", + parseConnectionUrl: "Bağlantı URL'sini ayrıştır", + parseConnectionUrlApplied: "Bağlantı URL'si uygulandı", + parseConnectionUrlFailed: "Bağlantı URL'si ayrıştırılamadı: {message}", + mode: "Bağlantı Modu", + modeForm: "Form", + redisStandaloneMode: "Tek düğüm", + redisSentinelMode: "Sentinel", + redisClusterMode: "Küme", + oceanbaseMySQLMode: "MySQL Modu", + oceanbaseOracleMode: "Oracle Modu", + redisFirstSentinel: "İlk Sentinel", + redisFirstClusterNode: "İlk Tohum Düğüm", + redisSentinelNodes: "Sentinel Düğümleri", + redisClusterNodes: "Küme Tohum Düğümleri", + redisSentinelMaster: "Master Adı", + redisSentinelUser: "Sentinel Kullanıcısı", + redisSentinelPassword: "Sentinel Parolası", + redisSentinelTls: "Sentinel TLS", + redisSentinelTlsHint: "Sentinel düğümlerine bağlanırken TLS kullan", + redisKeySeparator: "Anahtar Ad Alanı Ayırıcısı", + redisKeyTemplates: "Anahtar arama şablonları", + redisKeyTemplatesPlaceholder: "Örnek:\nuser:{'{'}$userId{'}'}\nv3:adui:{'{'}$positionID{'}'}", + redisKeyTemplatesHint: "Her satıra bir şablon yazın. Ayarlandığında bu bağlantı için genel Redis anahtar şablonlarının yerini alır.", + etcdEndpoints: "Uç noktalar", + etcdEndpointsHint: "Her satıra bir uç nokta yazın. Yukarıdaki sunucu ve portu kullanmak için boş bırakın.", + etcdV2ApiHint: "v2 API'si yalnızca etcd 2.x sürümünde veya --enable-v2 ile başlatılan etcd 3.0–3.5 sürümlerinde kullanılabilir. Anahtar geçmişi, kiralar, sıkıştırma ve birleştirme kullanılamaz.", + etcdGrpcMaxInbound: "gRPC alım sınırı (MiB)", + etcdGrpcMaxInboundHint: "Tek bir etcd yanıtının en büyük boyutu. Varsayılan 32 MiB, üst sınır 256 MiB'dır.", + etcdCaCertPlaceholder: "/path/to/ca.crt", + etcdCaCertBrowse: "CA sertifikası seçin", + etcdClientAuth: "İstemci Kimlik Doğrulaması", + etcdClientCertPlaceholder: "/path/to/client.crt", + etcdClientKeyPlaceholder: "/path/to/client.key", + etcdClientCertHint: "etcd mTLS gerektirdiğinde istemci sertifikası ve özel anahtarı birlikte verilmelidir.", + etcdClientCertBrowse: "İstemci sertifikası seçin", + etcdClientKeyBrowse: "İstemci özel anahtarı seçin", + etcdClientCertPairRequired: "İstemci sertifikası ve özel anahtarı birlikte verilmelidir.", + consulAddress: "Consul API adresi", + consulAddressInvalid: "Kimlik bilgisi, sorgu parametresi veya parça içermeyen mutlak bir HTTP ya da HTTPS Consul API adresi girin.", + consulToken: "ACL Belirteci", + consulTokenPlaceholder: "İsteğe bağlı Consul ACL Belirteci", + consulDatacenter: "Veri merkezi", + consulNamespace: "Ad alanı", + consulPartition: "Yönetim Bölümü", + consulAgentTargetNode: "Agent hedef düğümü", + consulAgentTargetAddress: "Agent doğrudan adresi", + consulAgentTargetHint: "Agent yazma işlemleri için zorunludur. DNS/yük dengelemeli ve Taşıma Katmanı uç noktaları salt okunur kalır.", + consulMeshFeatures: "Service mesh", + consulMeshVisible: "Gelişmiş service mesh çalışma alanını göster", + consulMeshVisibleHint: "Yalnızca Connect, intention veya peering yönetmek için etkinleştirin. Kapalıyken çalışma alanı gizli kalır.", + consulOperatorWrites: "Operator yazma işlemleri", + consulOperatorVisible: "Deneysel Operator çalışma alanını göster", + consulOperatorSnapshotRestore: "Anlık görüntü geri yüklemeyi etkinleştir", + consulOperatorAutopilot: "Autopilot güncellemelerini etkinleştir", + consulOperatorRaft: "Raft değişikliklerini etkinleştir", + consulOperatorKeyring: "Keyring değişikliklerini etkinleştir", + consulOperatorLicense: "Lisans güncellemelerini etkinleştir", + consulAgentTargetIncomplete: "Agent hedef düğümü ve doğrudan adresi birlikte yapılandırılmalıdır.", + consulAgentTargetAddressMismatch: "Agent doğrudan adresi, Consul uç noktası sunucusuyla eşleşmelidir.", + consulConsistency: "Okuma tutarlılığı", + consulConsistencyDefault: "Varsayılan", + consulConsistencyStale: "Eski (stale)", + consulConsistencyConsistent: "Tutarlı", + consulTlsSkipVerify: "Sertifika doğrulamasını atla", + consulTlsSkipVerifyHint: "Yalnızca güvenilen, kendinden imzalı Consul uç noktaları için kullanın.", + zookeeperConnectString: "Bağlantı Dizesi", + zookeeperConnectStringHint: "Virgül veya satırla ayrılmış host:port girdileri, isteğe bağlı ortak bir /chroot ile. Yukarıdaki sunucu ve portu kullanmak için boş bırakın.", + zookeeperClusterInputHint: "Bir ZooKeeper topluluğu için tüm düğümleri ya URL'de (örneğin zookeeper://zk-1:2181,zk-2:2181/app) ya da aşağıdaki Bağlantı Dizesi alanında girin.", + zookeeperAuthMethod: "Kimlik Doğrulama", + zookeeperAuthDigest: "Digest (varsayılan)", + zookeeperAuthSaslDigest: "SASL DIGEST-MD5", + zookeeperCreateModePersistent: "Kalıcı", + zookeeperCreateModeEphemeral: "Geçici", + zookeeperCreateModePersistentSequential: "Kalıcı Sıralı", + zookeeperCreateModeEphemeralSequential: "Geçici Sıralı", + nacosConsoleUrl: "Nacos yönetim adresi", + nacosConsoleUrlHint: "Seçilen Nacos profiline uyan adresi kullanın. Tam tarayıcı ve API URL'leri kabul edilir.", + nacosConsoleUrlRequired: "Nacos yönetim adresi zorunludur", + nacosConsoleUrlAutoAdjusted: "Nacos Konsol URL'si {from} adresinden {to} adresine düzeltildi.", + nacosRNacosOpenApiAutoAdjusted: "r-nacos OpenAPI'ye geçildi: {from} → {to} (Bağlam Yolu: /nacos).", + nacosImplementation: "Servis uygulaması", + nacosVersion: "Nacos sürümü", + nacosVersionAuto: "Otomatik algıla", + nacosPrimaryAddressRNacos: "Nacos uyumlu API adresi", + nacosPrimaryAddressV2: "Servis adresi (API ve konsol ortak)", + nacosPrimaryAddressV3: "Sunucu / Yönetim API adresi", + nacosPrimaryAddressAuto: "Nacos yönetim adresi", + nacosPrimaryAddressHint: "Nacos 3 için 8080 portundaki konsolu değil, Sunucu / Yönetim API adresini kullanın (normalde http://host:8848/nacos); özel proxy önekleri korunur.", + nacosRequestsUse: "İstekler {address}/… biçiminde gönderilecek", + nacosNamespace: "Ad alanı", + nacosContextPath: "Bağlam Yolu", + nacosContextPathPlaceholder: "Boş bırakın veya /nacos yazın", + nacosContextPathRestoreAuto: "Otomatiğe döndür", + nacosConfigurationHistory: "Yapılandırma geçmişi", + nacosConfigurationHistoryEnable: "Yapılandırma geçmişini etkinleştir", + nacosConfigurationHistoryHint: + "r-nacos yapılandırma geçmişi yalnızca kendi bağımsız konsolu (normalde 10848 portu) üzerinden kullanılabilir. Konsolun, Nacos uyumlu OpenAPI'den ayrı bir oturumu vardır: OpenAPI kimlik doğrulaması istemezken konsol isteyebilir. Bilinçli olarak farklı bir hesap gerekmedikçe aynı r-nacos kullanıcı hesabını kullanın.", + nacosRNacosConsoleUrl: "r-nacos Konsol URL'si", + nacosRNacosConsoleUrlPlaceholder: "http://127.0.0.1:10848", + nacosRNacosConsoleUrlHint: "İsteğe bağlı. OpenAPI URL'sini değil, bağımsız konsol URL'sini (normalde 10848 portu) kullanın; yapılandırma geçmişini etkinleştirir ve r-nacos yapılandırma türleriyle açıklamalarını okur.", + nacosRNacosOpenApiRequired: "r-nacos birincil adresi, bağımsız konsol URL'sini değil, Nacos uyumlu API'yi kullanmalıdır.", + nacosRNacosConsoleUrlRequired: "r-nacos yapılandırma geçmişi bir konsol URL'si gerektirir.", + nacosConsoleAuthSeparateRequired: "Birincil kimlik doğrulama Yok; ayrı konsol kimlik bilgileri yapılandırın.", + nacosAuth: "Kimlik Doğrulama", + nacosAuthNone: "Yok", + nacosAuthUserPassword: "Kullanıcı / Parola", + nacosConsoleAuthentication: "Konsol kimlik doğrulaması", + nacosConsoleAuthInherit: "Birincil kimlik bilgilerini kullan", + nacosConsoleAuthSeparate: "Ayrı kimlik bilgileri", + nacosConsoleAuthPrimaryNone: "Birincil kimlik doğrulama Yok; ayrı konsol kimlik bilgilerini kullanın.", + nacosConsoleUser: "Konsol kullanıcısı", + nacosConsolePassword: "Konsol parolası", + nacosConsoleUsernameRequired: "r-nacos konsol kullanıcı adı zorunludur", + nacosUsernameRequired: "Nacos kullanıcı adı zorunludur", + nacosWebConsoleUrl: "Nacos Web Konsolu URL'si", + nacosWebConsoleUrlHint: "İsteğe bağlı. Nacos konsolunu tarayıcınızda açar. Nacos 3, ayrı web konsolu adresini gerektirir; tarayıcının doğrudan erişimi olmalıdır ve DBX tünellerini ya da API kimlik doğrulamasını kullanmaz.", + nacosWebConsoleUrlInvalid: "Nacos Web Konsolu URL'si, gömülü kimlik bilgisi içermeyen geçerli bir HTTP veya HTTPS URL'si olmalıdır.", + nacosTls: "TLS", + nacosTlsSkipVerify: "Sertifika doğrulamasını atla", + nacosPageSize: "Sayfa Boyutu", + nacosMetrics: "Prometheus metrikleri", + nacosMetricsAuto: "Otomatik algıla", + nacosMetricsDisabled: "Devre dışı", + nacosMetricsCustom: "Özel URL", + nacosMetricsAutoHint: "Sırayla denendi: {addresses}", + nacosMetricsUrl: "Metrik URL'si", + nacosMetricsUrlInvalid: "Kimlik bilgisi veya parça içermeyen mutlak bir HTTP ya da HTTPS Prometheus metrik URL'si girin.", + kafkaKerberosPrincipal: "Principal", + kafkaKerberosKeytab: "Keytab", + kafkaKerberosServiceName: "Servis Adı", + kafkaKerberosKrb5Conf: "krb5.conf", + kafkaKerberosPrincipalRequired: "Kafka Kerberos principal zorunludur", + kafkaKerberosKeytabRequired: "Kafka Kerberos keytab yolu zorunludur", + kafkaKerberosKeytabBrowse: "Keytab seçin", + kafkaKerberosKrb5ConfBrowse: "krb5.conf seçin", + kafkaKerberosKeytabPlaceholder: "DBX Agent makinesindeki yol, örn. /etc/security/keytabs/user.keytab", + kafkaKerberosKrb5ConfPlaceholder: "DBX Agent makinesindeki isteğe bağlı yol, örn. /etc/krb5.conf", + kafkaKerberosPathHint: "keytab ve krb5.conf yolları DBX Agent tarafından okunur ve DBX Agent'ın çalıştığı makinede bulunmalıdır; dosyalar bu tarayıcıdan yüklenmez.", + kafkaKerberosAuthHint: "GSSAPI + keytab girişini kullanır. Sunucu şifreli taşıma gerektiriyorsa Güvenlik ayarını SASL_SSL yapın; aksi hâlde Otomatik veya SASL_PLAINTEXT kullanılabilir.", + mqSystem: "Sistem", + mqSystemPulsar: "Apache Pulsar", + mqSystemKafka: "Apache Kafka", + mqSystemRocketMq: "Apache RocketMQ", + rocketmqNamesrvAddr: "NameServer Adresi", + rocketmqNamesrvAddrPlaceholder: "127.0.0.1:9876", + rocketmqNamesrvAddrRequired: "RocketMQ NameServer adresi zorunludur", + rocketmqNamesrvAddrInvalid: "RocketMQ NameServer adresi geçersiz", + rocketmqClusterName: "Küme Adı", + rocketmqClusterNamePlaceholder: "İsteğe bağlı, örn. DefaultCluster", + rocketmqAccessKey: "Access Key", + rocketmqSecretKey: "Secret Key", + rocketmqAclAuth: "ACL", + mqBootstrapServers: "Bootstrap Sunucuları", + mqBootstrapServersPlaceholder: "127.0.0.1:9092", + mqBootstrapServersRequired: "Kafka bootstrap sunucuları zorunludur", + mqBootstrapServersInvalid: "Kafka bootstrap sunucuları geçersiz", + mqKafkaConnectionSource: "Bağlantı Kaynağı", + mqKafkaConnectionSourceBootstrap: "Bootstrap Sunucuları", + mqKafkaConnectionSourceZooKeeper: "ZooKeeper (Kafka 1.x)", + mqKafkaZooKeeperServers: "ZooKeeper Sunucuları", + mqKafkaZooKeeperServersPlaceholder: "zk1:2181,zk2:2181/kafka", + mqSystemRabbitMq: "RabbitMQ", + mqRabbitmqAddresses: "Adresler", + mqRabbitmqAddressesPlaceholder: "127.0.0.1:5672", + mqRabbitmqAddressesRequired: "RabbitMQ adresleri zorunludur", + mqRabbitmqAddressesInvalid: "RabbitMQ adreslerini amqp:// olmadan host:port biçiminde girin (örneğin 127.0.0.1:5672)", + mqVirtualHost: "Sanal Sunucu", + mqVirtualHostPlaceholder: "/", + mqRabbitmqAdminUrl: "Yönetim URL'si", + mqRabbitmqAdminUrlPlaceholder: "http://192.168.1.1:15672", + mqRabbitmqAdminUrlHint: "Yalnızca varsayılan AMQP portu için boş bırakın; özel AMQP portları ayrıca yapılandırılmış Yönetim API URL'sini gerektirir. https://proxy/rmq gibi ters proxy yolları desteklenir", + mqRabbitmqUsernamePlaceholder: "Varsayılan guest", + mqRabbitmqPasswordPlaceholder: "Varsayılan guest", + mqSecurity: "Güvenlik", + mqSecurityAuto: "Otomatik", + mqAdminUrl: "Yönetim URL'si", + mqAdminUrlRequired: "MQ Yönetim URL'si zorunludur", + mqAdminUrlInvalid: "MQ Yönetim URL'si geçersiz", + mqAuth: "Kimlik Doğrulama", + mqAuthNone: "Yok", + mqAuthToken: "Belirteç", + mqAuthBasic: "Basic", + mqAuthKerberos: "Kerberos", + mqAuthApiKey: "API Anahtarı", + mqAuthOauth2: "OAuth2", + mqToken: "Belirteç", + mqSaslMechanism: "SASL Mekanizması", + mqApiKeyHeader: "Başlık", + mqApiKeyValue: "Değer", + mqOauthIssuerUrl: "Issuer URL'si", + mqOauthClientId: "İstemci Kimliği", + mqOauthClientSecret: "İstemci Gizli Anahtarı", + mqOauthAudience: "Audience", + mqOauthScope: "Kapsam", + mqOauthIssuerRequired: "OAuth2 kimlik doğrulaması bir issuer URL'si gerektirir", + mqOauthClientIdRequired: "OAuth2 kimlik doğrulaması bir istemci kimliği gerektirir", + mqOauthClientSecretRequired: "OAuth2 kimlik doğrulaması bir istemci gizli anahtarı gerektirir", + mqTls: "TLS", + mqTlsSkipVerify: "Sertifika doğrulamasını atla", + mqPinnedVersion: "Sabitlenmiş Sürüm", + mqTokenSigning: "Broker belirteci imzalama", + mqTokenSigningNone: "Yapılandırılmadı", + mqTokenSigningKey: "İmzalama anahtarı", + mqTokenSigningKeyRequired: "Broker belirteci imzalama anahtarı zorunludur", + mqTokenSigningKeyPlaceholderHs256: "Broker SECRET", + mqTokenSigningKeyPlaceholderRs256: "-----BEGIN PRIVATE KEY-----", + mqTokenSigningHint: "Broker'ın jwt.broker.token.mode ayarına göre seçin: SECRET HS256, PRIVATE RS256 kullanır. Anahtar, bağlantı gizli bilgileriyle birlikte saklanır.", + mqttBrokerAddress: "Broker Adresi", + mqttBrokerAddressPlaceholder: "127.0.0.1", + mqttBrokerPort: "Port", + mqttClientId: "İstemci Kimliği", + mqttClientIdPlaceholder: "Otomatik oluşturuldu", + mqttUsername: "Kullanıcı adı", + mqttUsernamePlaceholder: "İsteğe bağlı", + mqttPassword: "Parola", + mqttAuthCertificate: "İstemci sertifikası", + mqttCaCertPath: "CA sertifikası yolu", + mqttClientCertPath: "İstemci sertifikası yolu", + mqttClientKeyPath: "İstemci özel anahtar yolu", + mqttPasswordPlaceholder: "İsteğe bağlı", + mqttTls: "TLS", + mqttTlsSkipVerify: "Sertifika doğrulamasını atla", + mqttKeepAlive: "Keep Alive (saniye)", + mqttProtocolVersion: "Protokol Sürümü", + mqttTransport: "Taşıma", + mqttTransportTcp: "TCP", + mqttTransportWebSocket: "WebSocket", + mqttWsPath: "WebSocket Yolu", + mqttWsPathPlaceholder: "/mqtt", + mqttConnectTimeout: "Bağlantı Zaman Aşımı (saniye)", + mqttConsoleTitle: "MQTT Konsolu", + mqttTopics: "Konular", + mqttMessages: "Mesajlar", + mqttPublish: "Mesaj Yayınla", + mqttSubscribe: "Abone Ol", + mqttNoLocal: "No Local", + mqttUnsubscribe: "Abonelikten Çık", + mqttNoMessages: "Mesaj yok", + mqttNoTopics: "Abone olunan konu yok", + mqttQuickSubscribe: "Hızlı Abonelik", + mqttTopicPlaceholder: "Konu adı", + mqttConnected: "Bağlandı", + mqttDisconnected: "Bağlantı kesildi", + mqttRefresh: "Yenile", + mqttPublishDialogTitle: "MQTT Mesajı Yayınla", + mqttClearMessages: "Mesajları temizle", + mqttPauseMessages: "Duraklat", + mqttResumeMessages: "Sürdür", + mqttHidePublishPanel: "Yayınlama panelini gizle", + mqttShowPublishPanel: "Yayınlama panelini göster", + mqttNoTopicsHint: "Abonelik yok. Bir konuya abone olmak için aşağıdaki alanı kullanın.", + mqttSubscribePlaceholder: "Bir konu filtresi girin...", + mqttMessagesForTopic: "Mesajlar: {topic}", + mqttAllMessages: "Mesajlar (tüm konular)", + mqttSent: "Gönderildi", + mqttReceived: "Alındı", + mqttRetained: "Saklanan", + mqttTopic: "Konu", + mqttTopicExample: "örn. sensors/temperature", + mqttRetainMessage: "Mesajı sakla", + mqttPayloadEncoding: "Yük kodlaması", + mqttPayload: "Yük", + mqttResizePayload: "Mesaj girişini yeniden boyutlandırmak için sürükleyin", + mqttPayloadPlaceholderPlaintext: "Mesaj içeriğini girin...", + mqttPayloadPlaceholderJson: "JSON girin, örneğin {example}", + mqttPayloadPlaceholderBase64: "Base64 ile kodlanmış veri girin", + mqttPayloadPlaceholderHex: "Onaltılık veri girin, örneğin 48 65 6C 6C 6F", + mqttPayloadPlaceholderStructured: "Bir JSON değeri girin; {encoding} olarak kodlanacak", + mqttPublishShortcut: "Yayınlamak için Ctrl+Enter", + mqttPublishTopicRequired: "Konu zorunludur", + mqttPublishTopicWildcard: "Yayınlanan konular # veya + joker karakterlerini içeremez. Abonelik filtresini somut bir konuyla değiştirin.", + mqttPublishSuccess: "Mesaj yayınlandı", + mqttPublishing: "Yayınlanıyor...", + mqttQosAtMostOnce: "En fazla bir kez", + mqttQosAtLeastOnce: "En az bir kez", + mqttQosExactlyOnce: "Tam olarak bir kez", + mqttSubscriptionConfig: "Abonelik yapılandırması", + mqttNewSubscription: "Yeni abonelik", + mqttEditSubscription: "Aboneliği düzenle", + mqttSearchSubscriptionsPlaceholder: "Abonelik filtrelerinde ara...", + mqttNoSavedSubscriptions: 'Kayıtlı abonelik yok. Eklemek için "Yeni abonelik" düğmesine tıklayın.', + mqttTopicFilter: "Konu Filtresi", + mqttTopicFilterPlaceholder: "örn. device/+/status", + mqttTopicFilterHint: "Tek düzeyli + ve çok düzeyli # joker karakterleri desteklenir.", + mqttNoLocalMqtt5Only: "Yalnızca MQTT 5.0", + mqttEnableSubscription: "Aboneliği etkinleştir", + mqttEnableSubscriptionHint: "Kaydettikten hemen sonra abone ol ve yeniden bağlanınca geri yükle.", + mqttSaving: "Kaydediliyor...", + mqttSubscriptionTopicFilterInvalid: "Geçersiz Konu Filtresi: + tek bir düzeyi kaplamalı, # ise son düzey olmalıdır.", + mqttSubscriptionTopicFilterDuplicate: "Bu Konu Filtresi zaten var.", + mqttSubscriptionNoLocalProtocolError: "No Local, MQTT 3.x tarafından desteklenmiyor. MQTT 5.0'a geçin.", + mqttDeleteSubscriptionConfirm: '"{topic}" abonelik yapılandırması silinsin mi?', + mqttSubscriptionStatusActive: "Abone olundu", + mqttSubscriptionStatusPending: "Bekliyor", + mqttSubscriptionStatusDisabled: "Devre dışı", + mqttSubscriptionDisable: "Aboneliği devre dışı bırak", + mqttSubscriptionEnable: "Aboneliği etkinleştir", + mqttSubscriptionEdit: "Yapılandırmayı düzenle", + mqttSubscriptionDelete: "Yapılandırmayı sil", + mqttSubscriptionOperationFailed: "Abonelik işlemi başarısız: {error}. Yapılandırma korundu.", + searchDatabasePlaceholder: "Veritabanı türlerinde ara", + searchResults: "Arama sonuçları", + databaseCategories: "Kategoriler", + databaseCategorySql: "İlişkisel", + databaseCategoryAnalytics: "Analitik", + databaseCategoryDomestic: "Çin VT'leri", + databaseCategoryLightweight: "Hafif", + databaseCategoryDocument: "Doküman/Önbellek/Arama", + databaseCategoryGraphAi: "Grafik/Vektör", + databaseCategoryTimeseries: "Zaman serisi", + databaseCategoryMq: "Mesaj kuyrukları", + databaseCategoryRegistryConfig: "Kayıt/Yapılandırma", + jdbcConnection: "JDBC bağlantısı", + iconView: "Simge görünümü", + listView: "Liste görünümü", + selectedDatabase: "Seçildi", + noDatabaseMatches: "Eşleşen veritabanı yok", + next: "İleri", + back: "Geri", + basicTab: "Bağlantı", + tlsTab: "TLS/SSL", + test: "Test Et", + testing: "Test ediliyor...", + copyTestResult: "Test sonucunu kopyala", + sqlServerLegacyCompatibilityMode: "Eski uyumluluk modu", + sqlServerLegacyCompatibilityModeEnable: "Etkinleştir", + sqlServerLegacyCompatibilityModeHint: "TLS 1.0, yalnızca oturum açma şifrelemesi veya şifreleme kullanmayan SQL Server örnekleri içindir.\nBazı özellikler kısıtlı olabilir; yalnızca güvenilir ağlarda kullanın.", + sqlServerLegacyCompatibilityComponent: "SQL Server eski uyumluluk bileşeni", + gaussdbConnectionMode: "Bağlantı modu", + gaussdbConnectionModeNative: "PostgreSQL uyumlu (yerleşik sürücü)", + gaussdbConnectionModeMJdbc: "M modu (üreticinin JDBC sürücüsü)", + gaussdbConnectionModeNativeHint: "GaussDB A/PG/Oracle uyumluluk modları için DBX'in yerleşik PostgreSQL uyumlu protokolünü kullanır.", + gaussdbConnectionModeMJdbcHint: "GaussDB M modu için com.huawei.gaussdb.jdbc.Driver ile jdbc:gaussdb kullanır.", + gaussdbMJdbcDriver: "GaussDB JDBC sürücüsü", + gaussdbMJdbcDriverPlaceholder: "Sunucu sürümüyle eşleşen gaussdbjdbc.jar dosyasını seçin", + gaussdbMJdbcDriverHint: "Sürücü her GaussDB sunucu sürümüyle birlikte yayımlanır. gaussdbjdbc.jar dosyasını eşleşen GaussDB sürücü paketinden alın.", + gaussdbMJdbcDriverRequired: "GaussDB M modu üreticinin JDBC sürücüsünü gerektirir. Sunucu sürümüyle eşleşen gaussdbjdbc.jar dosyasını seçin.", + gaussdbMJdbcPluginInstalling: "JDBC çalışma zamanı kuruluyor...", + gaussdbIdentifierQuoteStyle: "Tanımlayıcı uyumluluğu", + gaussdbIdentifierQuoteAuto: "Otomatik (sürücü/varsayılan)", + gaussdbIdentifierQuoteDouble: 'Oracle/PostgreSQL (çift tırnak ")', + gaussdbIdentifierQuoteBacktick: "MySQL/M (ters tırnak `)", + gaussdbIdentifierQuoteHint: "Otomatik mod, JDBC sürücü meta verisini veya yerel GaussDB varsayılanını kullanır. Yalnızca üretilen SQL yanlış tanımlayıcı tırnakları kullanıyorsa elle bir mod seçin.", + gaussdbTargetServerType: "Hedef sunucu türü", + gaussdbTargetServerTypeMaster: "Master (birincil)", + gaussdbTargetServerTypeSlave: "Slave (yedek)", + gaussdbTargetServerTypeAny: "Herhangi biri (tercih yok)", + gaussdbTargetServerTypeHint: "JDBC sürücüsünün bir GaussDB kümesinde hangi düğüme bağlanacağını belirler. Master birincil düğümü, slave bir yedeği dener, herhangi biri ise erişilebilir olana bağlanır. Yalnızca M (JDBC) modunda geçerlidir.", + gaussdbCountQueryDop: "COUNT(*) paralelliği", + gaussdbCountQueryDopHint: "Büyük tablolardaki COUNT(*) sorguları için query_dop (paralellik derecesi) değerini ayarlar. Yüksek değerler daha çok kaynak kullanır. İyileştirici ipucunu kapatmak için 1 (varsayılan) yapın.", + saveAndConnect: "Kaydet ve Bağlan", + save: "Kaydet", + editTitle: "Bağlantıyı Düzenle", + testSuccess: "Bağlantı başarılı", + databaseInfo: { + title: "Veritabanı bilgileri", + open: "{database} için veritabanı bilgilerini aç", + copy: "Veritabanı bilgilerini kopyala", + sourceConfigured: "Geçerli yapılandırma", + sourceTested: "Test edildi", + configuredDescription: "Önce formdan bilinen bilgileri gösterir. Başarılı bir test sunucu sürümünü ve sürücü meta verisini ekler.", + testedDescription: "Bu bilgiler en son başarılı testte kullanılan bağlantıdan gelir.", + productName: "DBMS", + productVersion: "Sunucu sürümü", + currentDatabase: "Geçerli veritabanı", + serverComment: "Sunucu açıklaması", + serverCharset: "Sunucu karakter kümesi", + serverCollation: "Sunucu collation'ı", + unquotedIdentifierCase: "Tırnaksız tanımlayıcılar", + quotedIdentifierCase: "Tırnaklı tanımlayıcılar", + driverName: "Sürücü", + driverVersion: "Sürücü sürümü", + jdbcVersion: "JDBC sürümü", + identifierCase: { + lower: "Küçük harf", + upper: "Büyük harf", + mixed: "Karışık harf", + }, + }, + connecting: "{name} bağlantısı kuruluyor...", + connectSuccess: "{name} bağlantısı kuruldu", + connectFailed: "Bağlantı başarısız: {message}", + driverNotInstalled: "{driver} sürücüsü kurulu değil. Lütfen Sürücü Yöneticisi'nden kurun.", + phoenixDriverNotInstalled: "Apache Phoenix JDBC sürücüsü kurulu değil. Sürücü Yöneticisi'nden kurup tekrar deneyin.", + jreNotInstalled: "JRE {jre} çalışma zamanı kurulu değil. Lütfen Sürücü Yöneticisi'nden kurun.", + systemJavaNotFound: "Sistem Java çalışma zamanı PATH üzerinde bulunamadı. Lütfen Java kurun veya özel bir Java çalıştırılabiliri seçin.", + customJavaPathEmpty: "Özel Java çalışma zamanı yolu boş. Lütfen bir Java çalıştırılabiliri seçin.", + agentJavaTooOld: "Bu sürücü Java 21 gerektirir. DBX tarafından yönetilen JRE 21'i kullanın veya Sürücü Yöneticisi'nde bir Java 21 çalıştırılabiliri seçin.", + agentDriverUpdateConnectionHint: "Bu bağlantı için yerleşik bir sürücü güncellemesi mevcut. Bağlantı hatası, güncel olmayan yerel sürücüyle ilgili olabilir. Sürücü Yöneticisi'nde ilgili sürücüyü güncelleyip tekrar deneyin.", + jdbcPluginNotInstalled: "JDBC eklentisi kurulu değil. Bu bağlantıyı kullanmak için isteğe bağlı JDBC eklentisini kurun.", + connectFailedTitle: "Bağlantı başarısız", + fullErrorMessage: "Tam hata mesajı", + copyError: "Hatayı kopyala", + optionalSuffix: " (isteğe bağlı)", + customColorPlaceholder: "#ff0000 veya rgba(…)", + tursoHostPlaceholder: "your-database.turso.io veya libsql://your-database.turso.io", + tursoHostHint: "libsql:// ve https:// protokollerini destekler. Yalnızca sunucu adını da girebilirsiniz (otomatik olarak HTTPS kullanılır).", + tursoTokenHint: "Şununla bir belirteç oluşturun:", + tursoUrlParamsPlaceholder: "authToken=xxx (isteğe bağlı, yukarıdaki Auth Token alanı önceliklidir)", + driverInstall: { + installingTitle: "Sürücü kuruluyor", + failedTitle: "Sürücü kurulumu başarısız", + fullError: "Tam hata", + statusFailed: "Kurulum başarısız", + statusWaiting: "Kurulum bekleniyor", + statusPreparing: "Sürücü kurulumu hazırlanıyor...", + statusExtractingJre: "JRE çıkarılıyor...", + stepJre: "JRE indiriliyor", + stepDriver: "Sürücü indiriliyor", + stepDefault: "Sürücü kuruluyor", + installingButton: "Kuruluyor...", + }, + lastError: "Bağlantı hatası", + errorIndicatorHint: "Bağlantı hatası. Ayrıntılar için tıklayın", + clearError: "Bağlantı hatasını temizle", + saveFailed: "Bağlantı kaydedilemedi: {message}", + savedSettingsFailed: "Bağlantı kaydedildi, ancak görüntüleme ayarı kaydedilemedi: {message}. Ayarı kaydetmek için tekrar deneyin.", + deleted: "Bağlantı silindi", + deletedSelected: "{count} bağlantı silindi", + copied: "Kopyalandı", + disconnected: "Bağlantı kesildi", + disconnectedSelected: "{count} bağlantı kesildi", + disconnectSelectedPartial: "{succeeded} bağlantı kesildi; {failed} tanesi başarısız oldu", + databaseConnectionClosed: "Veritabanı bağlantısı kapatıldı: {name}", + duplicated: "Bağlantı çoğaltıldı", + duplicatedSelected: "{count} bağlantı çoğaltıldı", + groupDeleted: "Grup silindi", + groupsDeleted: "{count} grup silindi", + loadFailed: "Kayıtlı bağlantılar yüklenemedi: {message}", + sshTunnel: "Tünel / Proxy", + sshTunnelTest: "SSH tünelini test et", + sshTunnelTesting: "SSH tüneli test ediliyor...", + sshTunnelTestSuccess: "SSH tüneli bağlantısı başarılı", + advancedTab: "Gelişmiş", + sshEnable: "Tünel / proxy kullan", + sshHost: "SSH Sunucusu", + sshHostPlaceholder: "ssh.example.com veya ~/.ssh/config dosyasındaki bir takma ad", + sshUser: "SSH Kullanıcısı", + sshAuthMethod: "Giriş Yöntemi", + sshAuthMethodPassword: "Parola", + sshAuthMethodKey: "Özel Anahtar", + sshAuthMethodKeyPassword: "Özel Anahtar + Parola", + sshAuthMethodNone: "Yok", + sshAuthMethodNoneHint: "Kimlik bilgisi gönderilmez. Kimlik doğrulamasız bağlantı kabul eden bastion veya proxy'ler için kullanın.", + sshAuthMethodAgentLegacy: "SSH Agent (eski)", + sshPassword: "SSH Parolası", + sshPasswordPlaceholder: "Anahtar kullanmak için boş bırakın", + sshKeyPath: "Anahtar Yolu", + sshKeyPassphrase: "Anahtar Parolası", + sshKeyPassphrasePlaceholder: "Anahtar şifrelenmemişse boş bırakın", + sshKeyPathBrowse: "Gözat", + sshExposeLan: "Tüneli yerel ağa aç", + sshAllowExecChannelProxy: "SSH exec-channel yedeğini (nc) etkinleştir", + sshConnectTimeout: "SSH Zaman Aşımı (saniye)", + sshHops: "Tünel / Proxy Katmanları", + sshHopAdd: "SSH katmanı ekle", + sshHopDuplicate: "Çoğalt", + sshHopDelete: "Sil", + sshHopMoveUp: "Yukarı taşı", + sshHopMoveDown: "Aşağı taşı", + sshHopName: "Katman Adı", + sshHopNamePlaceholder: "Bastion, atlama sunucusu, üretim ağ geçidi", + sshHopDefaultName: "Katman {index}", + sshHopInvalidHost: "{hop}: SSH sunucusu zorunludur", + sshHopInvalidUser: "{hop}: SSH kullanıcısı zorunludur", + sshHopInvalidPort: "{hop}: SSH portu 1 ile 65535 arasında olmalıdır", + sshHopInvalidAuth: "{hop}: parola, anahtar yolu veya ssh-agent zorunludur", + sshUseAgent: "ssh-agent kullan", + sshAgentSockPath: "Agent Soket Yolu", + sshAgentSockPathPlaceholder: "örn. ~/.ssh/agent.sock", + sshHostKeyVerifyTitle: "Bilinmeyen SSH Sunucu Anahtarını Onayla", + sshHostKeyVerifyMessage: "'{host}:{port}' sunucusunun kimliği doğrulanamadı. Ortadaki adam saldırılarına karşı korunmak için devam etmeden önce sunucu anahtarı parmak izini sistem yöneticinizle doğrulayın.", + sshHostKeyVerifyKeyType: "Anahtar türü", + sshHostKeyVerifyFingerprint: "Parmak izi", + sshHostKeyVerifyRemember: "Bu sunucuya güven (bu anahtarı sonraki bağlantılar için hatırla)", + sshHostKeyVerifyAccept: "Kabul Et ve Bağlan", + sshHostKeyVerifyReject: "İptal", + sshInteractiveTitle: "SSH Doğrulaması Gerekli", + sshInteractiveMessage: "{host}:{port} adresindeki SSH sunucusu ek doğrulama istiyor.", + sshInteractiveDefaultPrompt: "İstenen doğrulama yanıtını girin.", + sshInteractivePlaceholder: "Doğrulama kodunu girin", + sshInteractiveSubmit: "Doğrula", + sshInteractiveCancel: "İptal", + sshHostKeyNoticeChanged: "{host}:{port} için sunucu anahtarı değişti — bu, ortadaki adam saldırısına işaret edebilir. Yalnızca bu değişikliği bekliyorsanız eski kaydı silip yeniden bağlanın.", + sshHostKeyNoticeRejected: "{host}:{port} için sunucu anahtarını reddettiniz; bağlantı iptal edildi ve hiçbir kimlik bilgisi gönderilmedi.", + sshHostKeyNoticeLearnFailed: "{host}:{port} için sunucu anahtarı kaydedilemedi — sunucuya yalnızca bu oturum için güvenilecek ve bir sonraki seferde yeniden doğrulamanız istenecek.", + sshHostKeyNoticeGeneric: "{host}:{port} için SSH sunucu anahtarı doğrulaması başarısız oldu.", + sqliteTransportSshOnly: "Uzak SQLite yalnızca SSH atlamalarını destekler. Proxy ve HTTP tünel katmanları kullanılamaz.", + sqliteRemotePathPlaceholder: "/var/lib/app/data.db", + sqliteRemotePathHint: "Son SSH atlamasındaki mutlak bir yol girin.", + sqliteWorkerPlacement: "SQLite worker'ı", + sqliteWorkerPlacementSession: "Oturum", + sqliteWorkerPlacementPersist: "Kalıcı", + sqliteWorkerPlacementPreplaced: "Önceden yerleştirilmiş", + sqliteWorkerPlacementSessionHint: "DBX worker'ı SSH üzerinden dosya sunucusuna yükler, bağlantıyı kestiğinizde uzak dosyayı siler. Geçici kullanım için uygundur.", + sqliteWorkerPlacementPersistHint: "DBX worker'ı SSH üzerinden dosya sunucusuna yükler ve bağlantı kesildikten sonra orada bırakır. Otomatik olarak silinmez.", + sqliteWorkerPlacementPreplacedHint: "Worker'ı dosya sunucusuna kendiniz yükleyip dosyanın mutlak yolunu girin. DBX dosyayı otomatik olarak yüklemez veya silmez, ancak dosyanın bu Masaüstü sürümüyle eşleştiğini doğrular.", + sqliteWorkerPlacementDefault: "Varsayılan", + sqliteWorkerPersistPathPlaceholder: "~/.cache/dbx/sqlite-worker/", + sqliteWorkerPreplacedPathPlaceholder: "/opt/dbx/dbx-sqlite-worker", + sshWorkerUploadConsentTitle: "SQLite Worker'ını Yükle", + sshWorkerUploadConsentMessage: "DBX'in {host}:{port} adresine kısa ömürlü bir SQLite worker'ı kopyalaması gerekiyor. Bu ayrıcalıklı bir işlemdir. Yüklemeye izin vermeden önce hedef yolu ve özeti inceleyin.", + sshWorkerUploadConsentPath: "Hedef yol", + sshWorkerUploadConsentDigest: "Worker özeti", + sshWorkerUploadConsentRemember: "Bu dosya sunucusunu ve özeti hatırla", + sshWorkerUploadConsentAccept: "Yükle", + sshWorkerUploadConsentReject: "İptal", + sshHopInvalidTimeout: "{hop}: SSH zaman aşımı 1 ile 300 saniye arasında olmalıdır", + connectTimeout: "Bağlantı Zaman Aşımı (saniye)", + queryTimeout: "Sorgu Zaman Aşımı (saniye)", + useGlobalQueryTimeout: "Genel", + globalConnectTimeoutHint: "Aralık: 1 ile 300 saniye", + globalQueryTimeoutHint: "Aralık: 0 ile 3600 saniye. Zaman aşımı istemiyorsanız 0 yapın.", + useConnectionQueryTimeout: "Bağlantı", + idleTimeout: "Boşta Kalma Zaman Aşımı (saniye)", + keepaliveInterval: "Keepalive Aralığı (saniye)", + readOnly: "Salt Okunur", + readOnlyHint: "Tüm yazma işlemlerini engelle (INSERT, UPDATE, DELETE vb.)", + doltShowSystemTables: "Dolt Sistem Tablolarını Göster", + doltShowSystemTablesHint: "Bu bağlantı için Dolt'un yerleşik sürüm denetimi tablolarını tablo listelerinde göster.", + showSystemSchemas: "Sistem Şemalarını Göster", + showSystemSchemasHint: "Bu bağlantı için yerleşik ve meta veri şemalarını kenar çubuğunda ve şema seçicilerinde göster.", + docsNotesPath: "Not dosyası", + docsNotesPathPlaceholder: "docs/dbx-docs.json", + docsNotesPathHint: "Dokümantasyon notlarının saklandığı yer. Uygulama veri dizininde tutmak için boş bırakın veya şema dokümantasyonunu pull request'lerde incelemek için deponuzdaki bir dosyayı gösterin.", + readOnlyBadge: "Salt okunur", + proxy: "Proxy", + proxyEnable: "Veritabanına proxy üzerinden bağlan", + proxyType: "Proxy Türü", + proxyHost: "Proxy Sunucusu", + proxyUsername: "Proxy Kullanıcısı", + proxyUsernamePlaceholder: "İsteğe bağlı", + proxyPassword: "Proxy Parolası", + proxyPasswordPlaceholder: "İsteğe bağlı", + proxyTestTarget: "Test Hedefi", + proxyTestTargetPlaceholder: "host:port — boş = uç nokta denetimi, tam tünel testi için doldurun", + tunnelProfile: "Tünel Profili", + tunnelProfileCustom: "Özel (yalnızca bu bağlantı)", + tunnelProfileManaged: "Ortak bir tünel profili tarafından yönetiliyor. Ayarlar > Tüneller bölümünden düzenleyin — değişiklikler, profili kullanan her bağlantıda bir sonraki bağlantıda geçerli olur.", + tunnelProfileMissing: "Başvurulan tünel profili artık mevcut değil. Başka bir profil seçin veya özel moda geçin.", + tunnelProfileMissingName: "Tünel profili eksik", + tunnelProfileManage: "Yönet", + httpTunnel: "HTTP Tüneli", + httpTunnelAdd: "HTTP tüneli ekle", + httpTunnelUrl: "Tünel Betiği URL'si", + httpTunnelToken: "Tünel Belirteci", + httpTunnelTokenPlaceholder: "dbx_tunnel.php içinde yapılandırılan belirteç", + httpTunnelConnectTimeout: "Tünel Zaman Aşımı (saniye)", + httpTunnelDefaultName: "HTTP Tüneli {index}", + httpTunnelInvalidOrder: "{hop}: HTTP tüneli ilk tünel / proxy katmanı olmalıdır", + httpTunnelInvalidUrl: "{hop}: tünel betiği URL'si zorunludur", + httpTunnelInvalidTimeout: "{hop}: HTTP tüneli zaman aşımı 1 ile 300 saniye arasında olmalıdır", + dremioArrowFlightSqlMode: "Arrow Flight SQL", + dremioLegacyJdbcMode: "Eski JDBC", + phoenixDirectMode: "Doğrudan", + phoenixRuntimeOption: "Apache Phoenix JDBC ({mode})", + phoenixQueryServerMode: "Sorgu Sunucusu", + phoenixDirectModeHint: "Doğrudan HBase'e bağlanır. Varsayılan çalışma zamanı, HBase 2.5 ile Phoenix 5.2.1'i hedefler; başka küme sürümleri için uyumlu bir Phoenix istemcisi seçin ve gerektiğinde hbase-site.xml ekleyin.", + phoenixQueryServerModeHint: "Ayrı olarak dağıtılmış bir Phoenix Query Server (PQS) üzerinden, Phoenix ince istemcisiyle HTTP üzerinden bağlanır.", + phoenixDriverManagerHintPrefix: "Varsayılan çalışma zamanını şuradan kurun veya kaldırın: ", + phoenixDriverManagerHintSuffix: ". Elle seçilen uyumlu sürücü yolları önceliklidir.", + phoenixDocs: "Phoenix belgelerini görüntüle", + jdbcUrl: "JDBC URL'si", + jdbcUrlPlaceholder: "jdbc:postgresql://localhost:5432/database", + jdbcDriverClass: "Sürücü Sınıfı (isteğe bağlı)", + jdbcDriverClassPlaceholder: "Çoğu sürücü kendini otomatik kaydeder; gerekirse com.vendor.jdbc.Driver kullanın", + jdbcDriverPaths: "Sürücü JAR'ları", + jdbcDriverSelectPlaceholder: "İçe aktarılan sürücüyü seç", + jdbcManualClasspath: "Elle classpath", + jdbcManualClasspathCount: "{count} yol", + jdbcDriverPathsPlaceholder: "/path/to/driver.jar\n/path/to/another-driver.jar", + jdbcDriverBrowse: "JDBC sürücü JAR dosyası seçin", + jdbcDocs: "JDBC belgelerini görüntüle", + jdbcPluginHint: "Önce DBX JDBC eklentisini kurun. Dış bağımlılıkları olan sürücüler için Sürücü Yöneticisi'nde Maven'dan kurun ya da sürücüyü ve tüm bağımlılık JAR'larını birlikte içe aktarın.", + jdbcMissingRuntimeDependencyHint: "Bu JDBC sürücüsünün çalışma zamanı bağımlılıkları eksik. Sürücü Yöneticisi'nde Maven'dan kurun ya da sürücüyü ve tüm bağımlılık JAR'larını birlikte içe aktarın.", + jdbcxExtensions: "JDBCX uzantıları", + jdbcxHighPrivilegeExtensions: "Yüksek ayrıcalıklı uzantılara izin ver", + jdbcxHighPrivilegeExtensionsWarning: "Varsayılan olarak kapalıdır. Etkinleştirmek Shell, Script, Web, MCP ve diğer uzantıların yerel komut çalıştırmasına veya ağa erişmesine izin verir.", + dmCompatHint: "Sisteminizde DM8 ODBC sürücüsünün kurulu olmasını gerektirir.", + dmDownload: "Dameng'den indir", + mongoLegacyHint: "Eski MongoDB sunucuları, özellikle 4.2 altındaki sürümler için Eski modu kullanın. Kimlik doğrulama başarısız olursa ve kullanıcı admin içinde oluşturulduysa Kimlik Doğrulama VT değerini admin yapın.", + mongoTlsAllowInvalidCertificates: "TLS sertifika doğrulamasını devre dışı bırak", + mongoTlsAllowInvalidCertificatesHint: "tlsAllowInvalidCertificates=true ayarına karşılık gelir ve yalnızca sunucu adı denetimini değil, tüm sertifika doğrulamasını kapatır. Bu, MITM riskini artırır. SSH tüneli üzerinden AWS DocumentDB için genellikle gereklidir.", + mongoRetryWrites: "Yazmaları yeniden dene", + mongoRetryWritesHint: "retryWrites ayarına karşılık gelir. Yeniden denenebilir yazmaları desteklemeyen AWS DocumentDB için kapatın.", + compatible: "Uyumlu", + mainstream: "Popüler", + color: "Renk", + colorNone: "Renk yok", + colorGreen: "Yeşil", + colorYellow: "Sarı", + colorOrange: "Turuncu", + colorRed: "Kırmızı", + colorBlue: "Mavi", + colorPurple: "Mor", + colorCustom: "Özel renk", + cancelConnecting: "Bağlanmayı iptal et", + connectCancelled: "Bağlantı iptal edildi", + sshTotpCancelled: "Tek kullanımlık kod girişi iptal edildi", + }, + editor: { + duckdbDraining: "Önceki DuckDB sorgusu hâlâ durduruluyor. Lütfen birazdan tekrar deneyin.", + statementExecutionRunning: "{count} ifade çalışıyor | {count} ifade çalışıyor", + statementExecutionSucceeded: "{count} ifade başarılı | {count} ifade başarılı", + statementExecutionFailed: "{count} ifade başarısız | {count} ifade başarısız", + pressToExecute: "Çalıştırmak için {mod}+Enter tuşlarına basın", + pressToSaveSql: "SQL'i kaydetmek için {mod}+S tuşlarına basın", + queryTimeoutError: "Sorgu zaman aşımına uğradı ({seconds} sn). Veritabanı bağlantısının sağlıklı olup olmadığını denetleyin.", + changeConnectionTimeout: "Bağlantı zaman aşımını değiştir", + changeQueryTimeout: "Sorgu zaman aşımını değiştir", + connectionMayBeLost: "Bağlantı kopmuş olabilir. Verileri yenileyip tekrar deneyin.", + showResultsPane: "Sonuçları göster", + hideResultsPane: "Sonuçları gizle", + noDatabase: "Veritabanı seçilmedi", + connectionOnlyTarget: "Bağlantı düzeyinde hedef", + unsavedChangesTitle: "Kaydedilmemiş değişiklikler", + unsavedChangesMessage: '"{title}" sekmesinde kaydedilmemiş değişiklikler var; kapatılırsa kaybolur. Kapatmadan önce kaydedilsin mi?', + unsavedChangesBatchCloseMessage: "Kapattığınız bazı sekmelerde kaydedilmemiş değişiklikler var ve kaybolacak. Devam etmeden önce kaydedilsin mi?", + unsavedChangesBatchCloseMultipleMessage: 'Kapattığınız {count} SQL sekmesinde kaydedilmemiş değişiklikler var. DBX şu anda "{title}" sekmesini gösteriyor. Devam etmeden önce kaydedilsin mi?', + unsavedChangesAppCloseMessage: '"{title}" sekmesinde kaydedilmemiş SQL değişiklikleri var; DBX\'ten çıkarsanız kaybolur. Çıkmadan önce kaydedilsin mi?', + unsavedChangesAppCloseMultipleMessage: '{count} SQL sekmesinde kaydedilmemiş değişiklikler var. DBX şu anda "{title}" sekmesini gösteriyor. Çıkmadan önce kaydedilsin mi?', + unsavedChangesViewList: "{count} sekmeyi görüntüle", + unsavedChangesListTitle: "Kaydedilmemiş sekmeler ({count})", + discardChanges: "Vazgeç", + discardAllChanges: "Tümünden vazgeç", + saveAllChanges: "Tümünü kaydet", + selectConnection: "Bağlantı seç", + searchConnection: "Bağlantılarda ara...", + selectCatalog: "Katalog seç", + searchCatalog: "Kataloglarda ara...", + selectDatabase: "Veritabanı seç", + selectDatabaseRequired: "Önce bir veritabanı seçin", + searchDatabase: "Veritabanlarında ara...", + selectSchema: "Şema seç", + searchSchema: "Şemalarda ara...", + setDefaultDatabase: "Varsayılan Yap", + defaultDatabase: "Varsayılan", + defaultSchema: "Varsayılan", + clearDatabase: "Veritabanını temizle", + exPasteNoValues: "Panoda IN koşulu için değer yok", + exPasteNotList: "Dönüştürülebilir çok değerli liste bulunamadı", + exPasteTooLarge: "Pano içeriği çok büyük. Desteklenen en fazla uzunluk {limit} karakterdir.", + exPasteTooManyValues: "Çok fazla değer. Desteklenen en fazla sayı {limit}.", + exPasteClipboardReadFailed: "Pano okunamadı: {message}", + exPastePasted: "{count} IN koşulu değeri yapıştırıldı", + completion: { + nullValue: "NULL değer", + isNull: "NULL mu diye denetle", + isNotNull: "NULL değil mi diye denetle", + stringLiteral: "Dize sabiti", + numericLiteral: "Sayısal sabit", + booleanValue: "Boole değeri", + starExpansionColumns: "{count} sütun", + insertSelectedColumns: "Seçili sütunları ekle ({count})", + insertSelectedColumnsDetail: "Onay kutularıyla sütunları seçip birlikte ekleyin", + selectColumnsBeforeInsert: "Önce en az bir sütun seçin", + tableAlias: "Tablo takma adı", + functionDescriptions: { + COUNT: "Satır sayısını döndürür", + SUM: "Sayısal bir sütunun toplamını döndürür", + AVG: "Sayısal bir sütunun ortalamasını döndürür", + MIN: "En küçük değeri döndürür", + MAX: "En büyük değeri döndürür", + GROUP_CONCAT: "Grup değerlerini bir dizede birleştirir", + STRING_AGG: "Grup dizelerini birleştirir", + CONCAT: "Birden çok dizeyi birleştirir", + CONCAT_WS: "Dizeleri ayırıcıyla birleştirir", + SUBSTRING: "Bir alt dize çıkarır", + REPLACE: "Dizedeki içeriği değiştirir", + TRIM: "Baştaki ve sondaki boşlukları kırpar", + UPPER: "Büyük harfe dönüştürür", + LOWER: "Küçük harfe dönüştürür", + LENGTH: "Dize uzunluğunu döndürür", + REGEXP_REPLACE: "Düzenli ifade kullanarak değiştirir", + DATE_FORMAT: "Bir tarihi verilen biçimde biçimlendirir", + DATEDIFF: "İki tarih arasındaki farkı hesaplar", + DATE_ADD: "Bir tarihe aralık ekler", + DATE_SUB: "Bir tarihten aralık çıkarır", + EXTRACT: "Bir tarih parçası çıkarır", + NOW: "Geçerli tarih ve saati döndürür", + CURRENT_DATE: "Geçerli tarihi döndürür", + CURRENT_TIME: "Geçerli saati döndürür", + CURRENT_TIMESTAMP: "Geçerli tarih ve saati döndürür", + CURDATE: "Geçerli tarihi döndürür", + CURTIME: "Geçerli saati döndürür", + LOCALTIME: "Geçerli yerel saati döndürür", + LOCALTIMESTAMP: "Geçerli yerel tarih ve saati döndürür", + UTC_DATE: "Geçerli UTC tarihini döndürür", + UTC_TIME: "Geçerli UTC saatini döndürür", + UTC_TIMESTAMP: "Geçerli UTC tarih ve saatini döndürür", + SYSDATE: "Geçerli tarih ve saati döndürür", + DATE: "Tarih kısmını çıkarır", + TIME: "Saat kısmını çıkarır", + TIMESTAMPDIFF: "İki tarih-saat arasındaki farkı döndürür", + YEAR: "Yılı çıkarır", + MONTH: "Ayı çıkarır", + DAY: "Günü çıkarır", + HOUR: "Saati çıkarır", + MINUTE: "Dakikayı çıkarır", + SECOND: "Saniyeyi çıkarır", + DAYOFWEEK: "Haftanın gün numarasını döndürür", + DAYOFYEAR: "Yılın gününü döndürür", + LAST_DAY: "Ayın son gününü döndürür", + STR_TO_DATE: "Bir dizeyi tarihe dönüştürür", + IF: "Bir koşula göre değer döndürür", + LEFT: "En soldaki karakterleri döndürür", + RIGHT: "En sağdaki karakterleri döndürür", + SUBSTRING_INDEX: "Belirtilen ayırıcı sayısından önceki alt dizeyi döndürür", + CHAR_LENGTH: "Karakter uzunluğunu döndürür", + INSTR: "Bir alt dizenin konumunu döndürür", + LOCATE: "Bir alt dizenin konumunu döndürür", + LPAD: "Dizeyi soldan belirli uzunluğa tamamlar", + RPAD: "Dizeyi sağdan belirli uzunluğa tamamlar", + FIND_IN_SET: "Virgülle ayrılmış listedeki dizini döndürür", + RAND: "Rastgele bir kayan noktalı değer döndürür", + MD5: "MD5 özetini döndürür", + SHA1: "SHA1 özetini döndürür", + SHA2: "SHA2 özetini döndürür", + ROUND: "Belirtilen ondalık basamağa yuvarlar", + FLOOR: "Aşağı yuvarlar", + CEIL: "Yukarı yuvarlar", + ABS: "Mutlak değeri döndürür", + MOD: "Bölme kalanını döndürür", + COALESCE: "NULL olmayan ilk argümanı döndürür", + IFNULL: "NULL ise yerine geçecek değeri döndürür", + NULLIF: "Argümanlar eşitse NULL döndürür", + CAST: "Bir ifadeyi hedef türe dönüştürür", + JSON_EXTRACT: "JSON'dan bir değer çıkarır", + JSON_VALUE: "JSON'dan skaler bir değer çıkarır", + JSON_OBJECT: "Bir JSON nesnesi oluşturur", + JSON_ARRAY: "Bir JSON dizisi oluşturur", + }, + }, + previewChanges: "Değişiklikleri önizle", + previewChangesComment: "{operation} ifadesi için değişiklik önizlemesi (deneme çalıştırması)", + previewChangesFailed: "Değişiklik önizlemesi başarısız.", + previewChangesNoStatement: "Değişikliklerini önizlemek için bir UPDATE / INSERT / DELETE ifadesini seçin ya da imleci üzerine getirin.", + contextMenu: { + executeSelection: "Seçimi çalıştır", + executeCurrent: "SQL'i çalıştır", + export: "Dışa Aktar", + exportQueryResultTo: "Geçerli sorgu sonucunu {format} olarak dışa aktar", + copySelection: "Seçimi kopyala", + screenshotSelection: "Seçili Kodun Ekran Görüntüsü", + commentSelection: "Seçimi yorum satırı yap", + blockCommentSelection: "Seçimi blok yorum yap", + formatSelectionSql: "Seçili SQL'i biçimlendir", + compressSelectionSql: "Seçili SQL'i sıkıştır", + cutSelection: "Seçimi kes", + pasteFromClipboard: "Yapıştır", + pasteClipboardReadFailed: "Pano okunamadı: {message}", + sendToAi: "Yapay Zekâya Gönder", + uppercaseSelection: "Büyük harfe dönüştür", + lowercaseSelection: "Küçük harfe dönüştür", + delimitedList: "Ayırıcılı listeye dönüştür", + addNextSelectionOccurrence: "Sonraki eşleşmeyi ekle", + selectAllSelectionOccurrences: "Tüm eşleşmeleri seç", + expandSelectStar: "* ifadesini sütunlara genişlet", + expandSelectStarUnavailable: "Bu tablonun sütunları yüklenemedi", + findReplace: "Bul/Değiştir", + deleteEmptyLines: "Boş satırları sil", + selectAll: "Tümünü seç", + }, + delimitedList: { + title: "Ayırıcılı Listeye Dönüştür", + columnDelimiter: "Sütun ayırıcısı", + resultDelimiter: "Sonuç ayırıcısı", + quoteChar: "Tırnak karakteri", + wrapColumn: "Şu sütunda kaydır", + prefixText: "Ön ek metni", + suffixText: "Son ek metni", + preview: "Önizleme", + emptyPreview: "Önizlenecek bir şey yok", + confirm: "Onayla", + selectFirst: "Lütfen liste metnini seçin", + }, + search: { + find: "Bul", + replace: "Değiştir", + replaceAll: "Tümünü Değiştir", + caseSensitive: "Büyük/küçük harfe duyarlı", + regex: "Düzenli ifade", + collapseReplace: "Değiştirmeyi daralt", + expandReplace: "Değiştirmeyi genişlet", + prevMatch: "Önceki (Shift+Enter)", + nextMatch: "Sonraki (Enter)", + selectAll: "Tüm eşleşmeleri seç", + selectAllLimit: "Tüm eşleşmeleri seç (en fazla {limit})", + selectionTruncated: "{total} eşleşme bulundu; ilk {limit} tanesi seçildi.", + selectionLimitSummary: "{limit}/{total} seçildi", + close: "Kapat (Esc)", + noResults: "Sonuç yok", + inSelection: "Seçim içinde", + }, + noExecutableStatementAtCursor: "İmlecin bulunduğu yerde çalıştırılabilir bir ifade yok.", + executionPicker: { + title: "Yürütme Hedefi", + currentStatement: "Geçerli SQL", + allStatements: "Tüm SQL", + currentCommand: "Geçerli komut", + allCommands: "Tüm komutlar", + }, + }, + tabs: { + sql: "SQL", + table: "Tablo", + tableData: "Tablo Verisi", + redis: "Redis", + etcd: "etcd", + etcdDashboard: "etcd Panosu", + etcdAccessControl: "etcd Erişim Denetimi", + nacosAccessControl: "Nacos Erişim Denetimi", + zookeeper: "ZooKeeper", + consul: "Consul", + mongo: "Mongo", + gridfs: "GridFS", + vector: "Vektör", + databases: "Veritabanları", + objects: "Nesneler", + users: "Kullanıcılar ve Yetkiler", + executionSummary: "Özet", + messages: "Mesajlar", + tooltipTitle: "Başlık:", + tooltipFilePath: "Dosya Yolu:", + tooltipFileStatus: "Dosya Durumu:", + externalFileMissing: "DBX dışında silindi veya taşındı", + tooltipConnection: "Bağlantı:", + tooltipGroup: "Grup:", + tooltipDatabase: "Veritabanı:", + tooltipTable: "Tablo:", + tooltipCollection: "Koleksiyon:", + tooltipSchema: "Şema:", + resultN: "Sonuç {n}", + runN: "Çalıştırma {n}", + resultRuns: "Sonuç çalıştırmaları", + resultSets: "Sonuç kümeleri", + removeRun: "{n} numaralı çalıştırmayı kaldır", + pinResultRun: "Sonuç sekmesini sabitle", + unpinResultRun: "Sonuç sekmesinin sabitlemesini kaldır", + unpinAllResultRuns: "Tüm sonuç sekmelerinin sabitlemesini kaldır", + closeOtherResultRuns: "Diğer sonuç sekmelerini kapat", + closeResultRunsToLeft: "Soldaki sonuç sekmelerini kapat", + closeResultRunsToRight: "Sağdaki sonuç sekmelerini kapat", + closeResult: "Sonucu kapat", + autoKeepResults: "Sorgu sonuçlarını otomatik sakla", + autoKeepResultsEnabled: "Sonuçları otomatik saklama açık", + autoKeepResultsDisabled: "Sonuçları otomatik saklama kapalı", + autoRefresh: "Sonuçları otomatik yenile", + autoRefreshShort: "Otomatik", + autoRefreshEvery: "Her {seconds} sn'de bir yenile", + startAutoRefresh: "Otomatik yenilemeyi başlat", + stopAutoRefresh: "Otomatik yenilemeyi durdur", + missingResultRun: "Bu sonuç artık kullanılamıyor", + exportResultArchive: "Sonuç Arşivini Kaydet", + importResultArchive: "Sonuç Arşivini İçe Aktar", + importedResultArchive: "İçe aktarılan sonuçlar", + resultArchiveExported: "Sonuçlar dışa aktarıldı", + resultArchiveImported: "Sonuçlar içe aktarıldı", + resultArchiveUnavailable: "Dışa aktarılacak kayıtlı sonuç yok", + resultArchiveImportInvalid: "Bu sonuç arşivi açılamadı", + resultArchiveExportFailed: "Sonuçlar dışa aktarılamadı: {message}", + resultArchiveImportFailed: "Sonuçlar içe aktarılamadı: {message}", + scrollLeft: "Sekmeleri sola kaydır", + scrollRight: "Sekmeleri sağa kaydır", + openTabs: "Açık sekmeler", + openInNewWindow: "Yeni pencerede aç", + returnToMainWindow: "Ana pencereye dön", + dragBackToMain: "Bu tutamacı ana pencereye sürükleyin", + detachedCloseTitle: "Ayrılmış pencereyi kapat", + detachedCloseMessage: "Bu SQL sekmesinde kaydedilmemiş değişiklikler var. Ayrılmış sekmeyi kapatıp silmeden önce kaydedilsin mi?", + detachedTabUnavailable: "Ayrılmış sekme artık kullanılamıyor.", + openInNewWindowFailed: "Ayrılmış pencere açılamadı.", + minimizeWindow: "Simge durumuna küçült", + maximizeWindow: "Ekranı kapla", + closeWindow: "Kapat", + searchOpenTabs: "Açık sekmelerde ara...", + collapseTabBar: "Sekme çubuğunu daralt", + expandTabBar: "Sekme çubuğunu genişlet", + switcherTitle: "Sekme Değiştir", + switcherHint: "hareket etmek için basılı tutun, geçmek için bırakın", + noMatchingTabs: "Eşleşen sekme yok", + fixedTabs: "Sabit sekmeler", + openDataTabs: "Açık tablolar", + editGroupTitle: "Grubu düzenle: {name}", + groupName: "Grup adı", + groupColor: "Grup rengi", + groupColorAuto: "Varsayılan rengi kullan", + groupColorCustom: "Özel bir renk seçin", + resetGroup: "Sıfırla", + settingsSaveFailed: "Sekme ayarları kaydedilemedi: {message}", + }, + databaseBrowser: { + search: "Veritabanlarında ara...", + empty: "Veritabanı bulunamadı", + loadFailed: "Veritabanları yüklenemedi: {message}", + defaultCharset: "Karakter kümesi", + defaultCollation: "Karşılaştırma (collation)", + }, + gridfsBrowser: { + bucketCount: "bucket", + fileCount: "dosya", + name: "Ad", + totalSize: "Boyut", + chunkSize: "Parça Boyutu", + uploadDate: "Yükleme Tarihi", + contentType: "İçerik Türü", + metadata: "Meta Veri", + selectBucket: "İncelemek veya açmak için bir GridFS bucket'ı seçin.", + selectFile: "İncelemek veya yönetmek için bir GridFS dosyası seçin.", + emptyBuckets: "GridFS bucket'ı bulunamadı. Dosya saklamaya başlamak için bir tane oluşturun.", + emptyFiles: "Bu bucket'ta henüz dosya yok. Başlamak için bir dosya yükleyin.", + createBucket: "Yeni Bucket", + openBucket: "Bucket Aç", + deleteBucket: "Bucket Sil", + createTitle: "GridFS Bucket Oluştur", + deleteTitle: "GridFS Bucket Sil", + deleteMessage: "Seçili GridFS bucket'ı ve içindeki tüm dosyalar silinsin mi?", + bucketName: "Bucket Adı", + bucketNamePlaceholder: "example_bucket", + bucketCreated: "{bucket} bucket'ı oluşturuldu.", + bucketDeleted: "{bucket} bucket'ı silindi.", + uploadFile: "Dosya Yükle", + downloadFile: "Dosya İndir", + downloadSelected: "Seçilenleri İndir", + deleteFile: "Dosyayı Sil", + selectedCount: "{count} seçildi", + deleteFileTitle: "GridFS Dosyasını Sil", + deleteFileMessage: "Seçili dosya bu GridFS bucket'ından silinsin mi?", + fileUploaded: "{fileName} yüklendi.", + fileDeleted: "{fileName} silindi.", + }, + executionSummary: { + empty: "Özet yok", + executing: "Çalıştırılıyor...", + finished: "Çalıştırma tamamlandı", + statement: "İfade", + sql: "SQL", + status: "Durum", + type: "Tür", + rows: "Satır", + affected: "Etkilenen", + time: "Süre", + success: "Başarılı", + error: "Hata", + returnedTable: "{count} sütunlu bir sonuç tablosu döndürdü", + noTable: "Sonuç tablosu döndürülmedi", + noSql: "SQL kullanılamıyor", + navigationHint: "SQL'ini önizlemek için bir satıra tıklayın; düzenleyicide odaklamak için çift tıklayın.", + recoveryPrompt: "#{statement} numaralı ifade başarısız oldu; {count} ifade çalıştırılmadı.", + stop: "Durdur", + retry: "Yeniden dene", + skipAndContinue: "Atla ve devam et", + skipAll: "Tüm hataları atla", + skipAllHint: "Devam et ve bu toplu işteki sonraki hataları otomatik atla", + statuses: { + pending: "Bekliyor", + running: "Çalışıyor", + success: "Başarılı", + error: "Hata", + skipped: "Çalıştırılmadı", + cancelled: "İptal edildi", + }, + }, + queryMessages: { + empty: "Mesaj yok", + code: "Kod: {code}", + }, + chart: { + title: "Grafik", + type: "Tür", + line: "Çizgi", + bar: "Sütun", + pie: "Pasta", + noNumericData: "Grafik için sayısal veri yok", + }, + grid: { + rows: "{count} satır", + totalRows: "Toplam {count} satır", + loadedRows: "{count} satır yüklendi", + totalRowCount: "(toplam {count})", + totalRowCountWithAction: "({button}toplam {count})", + totalRowCountAtLeast: "(en az {count} toplam)", + totalRowCountEstimated: "(~{count})", + totalRowCountLoading: "(sayılıyor...)", + loadingMore: "Daha fazla veri yükleniyor...", + pageJumpLoading: "{page}. sayfaya geçiliyor", + pageJumpProgress: "Tamamlanan istekler {current}/{total}", + esDeepPageJumpConfirmTitle: "Derin Elasticsearch sayfa atlamasını onayla", + esDeepPageJumpConfirmMessage: + "Elasticsearch search_after doğrudan bir sayfaya atlayamaz. DBX eksik imleçleri sırayla getirmelidir ve geri gitme 1. sayfadan yeniden başlar. {page}. sayfaya atlamak için {requests} sorgu gönderilmesi bekleniyor. Bu uzun sürebilir ve küme yükünü artırabilir. Devam edilsin mi?", + esDeepPageJumpContinue: "Devam et", + allLoaded: "tümü yüklendi", + calculateTotalRows: "Toplam satırları say", + calculateTotalRowsInline: "(toplam satırları say)", + calculateTotalRowsFailed: "Sayma başarısız: {message}", + rowsAffected: "{count} satır etkilendi", + querySuccess: "Sorgu başarıyla çalıştırıldı", + noRows: "Veri yok", + noRowsDescription: "Bu sonuç kümesinde kayıt yok.", + noSearchResults: "Eşleşme yok", + noSearchResultsDescription: "Farklı bir anahtar sözcük deneyin.", + noFilteredRows: "Filtreyle eşleşen satır yok", + noFilteredRowsDescription: "Arama metnini veya satır durumu filtresini değiştirin.", + copy: "Kopyala", + copyExtractorSmart: "Akıllı Kopyala", + copyExtractorRaw: "Hücre Metni", + copyExtractorWithHeaders: "Başlıklarla {format}", + copyExtractorOneRow: "Tek satır", + copyExtractorJsonArray: "JSON Dizisi", + copyExtractorSqlInList: "SQL IN Listesi", + copyExtractorSqlInserts: "SQL Insert", + copyExtractorSqlInsertsWithPrimaryKeys: "SQL Insert (Birincil Anahtarlarla)", + copyExtractorSqlInsertsWithoutPrimaryKeys: "SQL Insert (Birincil Anahtarlar Olmadan)", + copyExtractorSqlUpdates: "SQL Update", + copyExtractorSqlSelect: "SQL Select", + copyExtractorWhereClause: "Where Yan Tümcesi", + copyExtractorPipeSeparated: "Dikey çizgiyle ayrılmış", + copyExtractorPretty: "Düzenli Tablo", + copyExtractorConfigure: "Veri Çıkarıcılarını Yapılandır…", + copyExtractorDefaultFormat: "Varsayılan kopyalama davranışı", + copyExtractorFormat: "Çıkarıcı", + copyExtractorColumnSeparator: "Sütun ayırıcısı", + copyExtractorRowSeparator: "Satır ayırıcısı", + copyExtractorNullText: "NULL metni", + copyExtractorQuote: "Tırnak karakteri", + copyExtractorQuotePolicy: "Tırnaklama", + copyExtractorQuoteMinimal: "Gerektiğinde", + copyExtractorQuoteAlways: "Her zaman", + copyExtractorQuoteNever: "Asla", + copyExtractorIncludeHeader: "Sütun başlığını dâhil et", + copyExtractorIncludeRowHeader: "Satır numaralarını dâhil et", + copyExtractorSkipComputed: "Hesaplanan sütunları atla", + copyExtractorSkipGenerated: "Üretilen sütunları atla", + copyExtractorExcludePrimaryKeys: "Birincil anahtarları hariç tut", + copyExtractorInsertMode: "INSERT ifadeleri", + copyExtractorInsertMerged: "Satırları birleştir", + copyExtractorInsertRowByRow: "Her satır için bir ifade", + copyExtractorPrettyJson: "JSON'u düzenli yazdır", + copyExtractorCamelCaseJsonFields: "snake_case alanları camelCase'e dönüştür", + copyExtractorPreview: "Önizleme (geçerli seçim)", + copyExtractorEmptySelection: "Çıkarıcı çıktısını önizlemek için veri seçin.", + copyExtractorUnsupportedSelection: "Bu çıkarıcı, her satırda aynı sütunların seçilmesini gerektirir.", + copyExtractorPreviewTruncated: "Seçili {count} satırın ilk 100 satırı önizleniyor.", + copyExtractorWarningOmittedColumns: "Kopyalanan çıktıda şu sütunlar atlandı: {columns}.", + copyExtractorWarningDuplicateJsonColumns: "Veri kaybını önlemek için yinelenen JSON sütun adları yeniden adlandırıldı.", + copyExtractorValidation: { + "column-separator-empty": "Sütun ayırıcısı boş olamaz.", + "row-separator-empty": "Satır ayırıcısı boş olamaz.", + "separator-too-long": "Ayırıcılar en fazla 8 karakter içerebilir.", + "null-text-too-long": "NULL metni en fazla 64 karakter içerebilir.", + "separators-overlap": "Sütun ve satır ayırıcıları çakışmamalıdır.", + "invalid-quote": "Tırnak tam olarak bir karakter olmalıdır.", + "quote-conflicts": "Tırnak, sütun veya satır ayırıcısının parçası olamaz.", + }, + mongoJsonPreview: "JSON Önizlemesi", + mongoJsonPreviewEmpty: "Önizlemek için bir MongoDB belgesi seçin.", + copyJson: "JSON Kopyala", + copyDdl: "DDL Kopyala", + hoverSearchPlaceholder: "Sütunlarda ara…", + hoverSearchNoResult: "Eşleşen sütun yok", + copyCell: "Hücreyi Kopyala", + copyRow: "Tüm Satırı Kopyala (JSON Nesnesi)", + copyColumnJson: "Sütunu Kopyala (JSON)", + copyColumnNames: "Sütun Adlarını Kopyala", + copyColumnNamesSelected: "Seçili Sütun Adlarını Kopyala ({count})", + copyColumnNamesTitle: "Sütun Adlarını Kopyala ({count})", + copyColumnNamesSeparator: "Sütun Ayırıcısı", + copyColumnNamesQuote: "Sütun Adlarını Tırnak İçine Al", + copyColumnNamesShowComment: "Açıklamaya Göre Göster", + copyColumnNamesPreview: "Önizleme", + copyAll: "Tümünü Kopyala (TSV)", + selectionSum: "TOPLAM: {value}", + selectionAverage: "ORT: {value}", + selectionCells: "{count} hücre", + clearSelection: "Seçimi Temizle", + export: "Dışa Aktar", + exportCsv: "CSV Dışa Aktar", + exportXlsx: "XLSX Dışa Aktar", + exportXlsxWithSql: "SQL ile XLSX Dışa Aktar", + exportCurrentPageCsv: "Geçerli Sayfayı CSV Olarak Dışa Aktar", + exportCurrentPageXlsx: "Geçerli Sayfayı XLSX Olarak Dışa Aktar", + exportCurrentPageXlsxWithSql: "Geçerli Sayfayı SQL ile XLSX Olarak Dışa Aktar", + exportCurrentPageJson: "Geçerli Sayfayı JSON Olarak Dışa Aktar", + exportCurrentPageMarkdown: "Geçerli Sayfayı Markdown Olarak Dışa Aktar", + exportCurrentPageSql: "Geçerli Sayfayı SQL INSERT Olarak Dışa Aktar", + exportCurrentPageTxt: "Geçerli Sayfayı TXT Olarak Dışa Aktar", + exportCurrentResultCsv: "Geçerli Sonuç Kümesinin Tüm Verisini CSV Olarak Dışa Aktar", + exportCurrentResultXlsx: "Geçerli Sonuç Kümesinin Tüm Verisini XLSX Olarak Dışa Aktar", + exportCurrentResultXlsxWithSql: "Geçerli Sonuç Kümesinin Tüm Verisini SQL ile XLSX Olarak Dışa Aktar", + exportCurrentResultJson: "Geçerli Sonuç Kümesinin Tüm Verisini JSON Olarak Dışa Aktar", + exportCurrentResultMarkdown: "Geçerli Sonuç Kümesinin Tüm Verisini Markdown Olarak Dışa Aktar", + exportCurrentResultSql: "Geçerli Sonuç Kümesinin Tüm Verisini SQL INSERT Olarak Dışa Aktar", + exportCurrentResultTxt: "Geçerli Sonuç Kümesinin Tüm Verisini TXT Olarak Dışa Aktar", + exportAllResultsXlsx: "Bu Çalıştırmanın Tüm Sonuç Kümelerini XLSX Olarak Dışa Aktar", + exportAllResultsXlsxWithSql: "Bu Çalıştırmanın Tüm Sonuç Kümelerini SQL ile XLSX Olarak Dışa Aktar", + exportJson: "JSON Dışa Aktar", + exportMarkdown: "Markdown Dışa Aktar", + exportSql: "SQL INSERT Dışa Aktar", + exportTxt: "TXT Dışa Aktar", + exportSelectedRowsCsv: "Seçili Satırları CSV Olarak Dışa Aktar", + exportSelectedRowsXlsx: "Seçili Satırları XLSX Olarak Dışa Aktar", + exportSelectedRowsXlsxWithSql: "Seçili Satırları SQL ile XLSX Olarak Dışa Aktar", + exportSelectedRowsJson: "Seçili Satırları JSON Olarak Dışa Aktar", + exportSelectedRowsMarkdown: "Seçili Satırları Markdown Olarak Dışa Aktar", + exportSelectedRowsSql: "Seçili Satırları SQL INSERT Olarak Dışa Aktar", + exportSelectedRowsTxt: "Seçili Satırları TXT Olarak Dışa Aktar", + exported: "Dışa aktarıldı", + exportFailed: "Dışa aktarma başarısız: {message}", + xlsxHeaderTitle: "Başlık Biçimi", + xlsxExportTitle: "Dışa Aktarma Seçenekleri", + xlsxHeaderPrompt: "Dışa aktarılan Excel dosyası için başlık biçimini seçin:", + xlsxHeaderOriginal: "Başlık olarak sütun adlarını kullan", + xlsxHeaderComment: "Başlık olarak sütun açıklamalarını kullan", + xlsxHeaderNameAndComment: "Başlık olarak sütun adlarını ve açıklamalarını kullan", + xlsxFilterPrompt: "Dışa aktarılan Excel dosyasının filtre içerip içermeyeceğini seçin:", + xlsxIncludeAutoFilter: "Filtreleri dâhil et", + copied: "Kopyalandı", + copyFailed: "Kopyalama başarısız: {message}", + previewSqlEmpty: "Önizlenecek bekleyen SQL değişikliği yok", + renderMode: "Görüntüleme Modu", + domRenderMode: "DOM", + canvasRenderMode: "Canvas", + renderModeHint: "Canvas görüntüleme ile DOM yedek tablosu arasında geçiş yapın.", + tableFontFamily: "Tablo yazı tipi", + tableFontSize: "Tablo yazı tipi boyutu", + filter: "Filtre", + conditionHistoryEmpty: "Henüz geçmiş yok", + conditionHistoryNoMatches: "Eşleşen geçmiş yok", + filterBuilder: "Filtreler", + filterBuilderTitle: "Filtreler", + filterBuilderHint: "Tıklayarak koşullar oluşturun ve bunları WHERE girdisiyle birleştirin.", + filterView: "Filtre görünümü", + filterQuickView: "Hızlı görünüm", + filterConditionView: "Koşullar görünümü", + filterTextView: "Metin görünümü", + resizeFilterPanel: "Filtre panelini yeniden boyutlandır", + filterConditionPanel: "Filtre koşulları", + filterManualWhere: "Elle WHERE", + filterSqlPreview: "SQL koşulu önizlemesi", + filterSqlPreviewEmpty: "Henüz geçerli bir filtre koşulu yok", + filterSqlPreviewReady: "Koşul hazır; sonuçları yenilemek için uygulayın", + copyFilterSql: "SQL koşulunu kopyala", + filterSqlCopied: "SQL koşulu kopyalandı", + filterBuilderSummary: "{count} kural", + filterBuilderAddRule: "Kural ekle", + filterBuilderEnableRule: "Kuralı etkinleştir", + filterBuilderDisableRule: "Kuralı devre dışı bırak", + filterBuilderReorderRule: "Koşulu yeniden sıralamak için sürükleyin veya ok tuşlarını kullanın", + filterBuilderColumn: "Sütun", + filterBuilderSearchColumns: "Sütunlarda ara...", + filterBuilderNoMatchingColumns: "Eşleşen sütun yok", + filterBuilderValue: "Değer", + filterBuilderTextValue: "", + filterBuilderValueTypeAuto: "Otomatik", + filterBuilderValueTypeString: "Dize", + filterBuilderValueTypeNumber: "Sayı", + filterBuilderValueTypeBoolean: "Boole", + filterBuilderValueTypeObjectId: "ObjectId", + filterBuilderValueTypeDate: "Tarih", + filterBuilderValueTypeInt32: "Int32", + filterBuilderValueTypeInt64: "Int64", + filterBuilderValueTypeDecimal128: "Decimal128", + filterBuilderValueTypeJson: "JSON", + filterBuilderValueShortcutHint: "Shift+Enter ile kural ekleyebilirsiniz", + filterBuilderValues: "Değerler (virgül veya satır sonuyla ayrılmış)", + filterBuilderRangeStart: "Başlangıç değeri", + filterBuilderRangeEnd: "Bitiş değeri", + filterBuilderNoValue: "Değer gerekmiyor", + filterBuilderEmpty: "Satırları filtrelemeye başlamak için bir kural ekleyin.", + resetFilterBuilder: "Kuralları sıfırla", + filterBuilderEquals: "Eşittir", + filterBuilderNotEquals: "Eşit değildir", + filterBuilderContains: "İçerir", + filterBuilderNotContains: "İçermez", + filterBuilderBeginsWith: "İle başlar", + filterBuilderEndsWith: "İle biter", + filterBuilderGreaterThan: "Büyüktür", + filterBuilderGreaterThanOrEqual: "Büyük veya eşittir", + filterBuilderLessThan: "Küçüktür", + filterBuilderLessThanOrEqual: "Küçük veya eşittir", + filterBuilderIn: "Listede", + filterBuilderNotIn: "Listede değil", + filterBuilderBetween: "Aralık içinde", + filterBuilderNotBetween: "Aralık dışında", + filterBuilderIsNull: "NULL'dur", + filterBuilderIsNotNull: "NULL değildir", + filterBuilderIsBlank: "Boştur (NULL veya boş dize)", + filterBuilderIsNotBlank: "Boş değildir (NULL değil ve boş dize değil)", + columnActions: "Sütun işlemleri", + localFilter: "Yerel değer filtresi", + localFilterFor: "'{column}' İçin Yerel Değerler", + databaseValueFilter: "Veritabanı değer filtresi", + databaseValueFilterFor: "'{column}' İçin Veritabanı Değerleri", + columnFormatter: "Sütun biçimlendirici", + columnFormatterActive: "Biçimlendirilmiş görünüm etkin", + columnFormatterFor: "'{column}' için biçimlendirici", + columnFormatterHint: "Yalnızca görünümü biçimlendirir; ham değerler değişmez.", + formatterType: "Tür", + formatterDatetime: "Unix zaman damgası", + formatterJsonPath: "JSON yolu", + formatterMask: "Metni maskele", + formatterForeignKeyDisplay: "Yabancı anahtar etiketi", + formatterForeignKeyTarget: "Başvurulan anahtar", + formatterForeignKeyManualHint: "Bu sütunun tek sütunlu bir yabancı anahtarı yok. Başvurulan tabloyu ve eşleşen sütunu elle seçin.", + formatterForeignKeySchema: "Şema", + formatterForeignKeySchemaPlaceholder: "Bir şema seçin", + formatterForeignKeySearchSchema: "Şemalarda ara...", + formatterForeignKeyNoSchemas: "Kullanılabilir şema yok", + formatterForeignKeyTable: "Başvurulan tablo", + formatterForeignKeyTablePlaceholder: "Başvurulan bir tablo seçin", + formatterForeignKeySearchTable: "Başvurulan tablolarda ara...", + formatterForeignKeyNoTables: "Kullanılabilir başvurulan tablo yok", + formatterForeignKeyReferenceColumn: "Eşleşen sütun", + formatterForeignKeyReferenceColumnPlaceholder: "Bu değerle eşleşen sütunu seçin", + formatterForeignKeyReferenceMetadataUnavailable: "Eşleşen sütunun benzersizliği doğrulanamadı: {error}", + formatterForeignKeyReferenceInvalid: "Bu sütun eksik ya da benzersiz bir anahtar ve geçerli eşitlik filtresiyle benzersizliği garanti edilmiyor. Başka bir sütun seçin.", + formatterForeignKeyReferenceUnavailable: "Hedef tablonun kullanılabilir benzersiz anahtarı yok. Bileşik benzersiz anahtar için diğer sütunu bir eşitlik filtresiyle sabitleyin.", + formatterForeignKeyDisplayColumn: "Görüntülenecek sütun", + formatterForeignKeyDisplayColumnPlaceholder: "Görüntülenecek bir sütun seçin", + formatterForeignKeyFilter: "Başvurulan satırları sınırla", + formatterForeignKeyFilterColumnPlaceholder: "Bir filtre sütunu seçin", + formatterForeignKeyHint: "Geçerli sayfadaki eşleşen anahtarlar için etiketleri yükler. Düzenleme, filtreleme, sıralama, kopyalama ve dışa aktarma ham değerleri kullanmaya devam eder.", + formatterCustomTemplate: "Özel şablon", + formatterTimestampUnit: "Zaman damgası birimi", + formatterUnitAuto: "Otomatik", + formatterUnitSeconds: "Saniye", + formatterUnitMilliseconds: "Milisaniye", + formatterDatetimePattern: "Tarih-saat deseni", + formatterDatetimePatternPlaceholder: "Bir tarih-saat deseni seçin veya girin", + formatterDatetimePatternEmpty: "Varsayılan ISO8601 biçimi", + formatterDatetimeTimezone: "Saat dilimi", + formatterDatetimeTimezonePlaceholder: "Bir saat dilimi seçin", + formatterJsonPathInput: "JSON yolu", + formatterMaskPrefix: "Görünür ön ek", + formatterMaskSuffix: "Görünür son ek", + formatterSavedCustom: "Kayıtlı şablonlar", + formatterNewCustom: "Yeni şablon", + formatterDeleteCustom: "Şablonu sil", + formatterDeleteCustomMessage: '"{name}" silinsin mi? Bu şablonu kullanan her sütunda biçimlendirme temizlenecek.', + formatterCustomName: "Şablon adı", + formatterCustomNamePlaceholder: "Örnek: Kullanıcı etiketi", + formatterCustomTemplateInput: "Şablon", + formatterCustomTemplateHint: "Kullanılabilir değişkenler: ${value}, ${upper}, ${lower}, ${length}. Listeye kaydetmek için bir ad verin.", + formatterPreview: "Önizleme", + saveFormatter: "Kaydet", + clearFormatter: "Temizle", + searchValues: "Değerlerde ara...", + loadingValues: "Değerler yükleniyor...", + serverValuesLimited: "İlk {count} değer gösteriliyor", + filterTypedValue: "'{value}' kullan", + value: "Değer", + count: "Sayı", + applyFilter: "Filtreyi Uygula", + clearLocalFilters: "Yerel değer filtrelerini temizle", + clearLocalFiltersShort: "Yereli temizle", + localFiltersActive: "{count} yerel değer filtresi", + localFilterMoreValues: " +{count} tane daha", + columnVisibility: "Sütunlar", + columnVisibilityHint: "En az bir sütun görünür kalır.", + columnReorderHint: "Sütunları yeniden sıralamak için sürükleyin.", + columnReorderSearchHint: "Sütunları yeniden sıralamak için aramayı temizleyin.", + searchColumns: "Sütunlarda ara...", + dragColumnToReorder: "Yeniden sıralamak için sütun başlığını sürükleyin", + invertColumnVisibility: "Tersine çevir", + resetColumnOrder: "Sıralamayı sıfırla", + showAllColumns: "Tümünü göster", + viewOptions: "Görünüm seçenekleri", + resultRunDisplayMode: "Sonuç sekmeleri", + resultRunDisplayList: "Liste", + resultRunDisplayTabs: "Döşeli", + hideNullColumns: "NULL'ları gizle", + hideNullColumnsHint: "Geçerli sonuçta tüm değerleri NULL olan sütunları aç/kapat.", + searchMode: "Arama modu", + searchModeHint: "Ctrl+F'nin eşleşen satırları filtrelemesini mi yoksa tüm satırları görünür tutup eşleşmeleri vurgulamasını mı istediğinizi seçin.", + searchModeFilter: "Filtre", + searchModeHighlight: "Vurgula", + colorizeDataTypes: "Veri türü renkleri", + numericColumnAlign: "Sayısal Sütun Hizalaması", + numericColumnAlignLeft: "Sol", + numericColumnAlignRight: "Sağ", + booleanDisplayMode: "Boole görünümü", + booleanDisplayCheckbox: "Onay kutusu", + booleanDisplayDropdown: "Açılır liste", + moreValues: "{count} değer daha var, sonuçları daraltmak için yazmaya devam edin", + filterByValue: "Bu Değere Göre Filtrele", + filterExcludeValue: "Bu Değeri Hariç Tut", + filterLike: "Değeri İçerir", + filterNotLike: "İçermez", + filterLessThan: "Değerden Küçük", + filterGreaterThan: "Değerden Büyük", + filterIsNull: "NULL Değerleri Göster", + filterIsNotNull: "NULL Olmayan Değerleri Göster", + clearFilter: "Filtreyi Temizle", + sort: "Sırala", + sortAscending: "Artan Sırala", + sortDescending: "Azalan Sırala", + sortCurrentPageAscending: "Geçerli Sayfayı Artan Sırala", + sortCurrentPageDescending: "Geçerli Sayfayı Azalan Sırala", + sortDatabaseAscending: "Veritabanında Artan Sırala", + sortDatabaseDescending: "Veritabanında Azalan Sırala", + clearSort: "Sıralamayı Temizle", + freezeToColumn: "Bu Sütuna Kadar Dondur", + freezeSelectedColumns: "Seçili Sütunları Dondur", + unfreezeColumns: "Sütun Dondurmayı Kaldır", + pasted: "Yapıştırıldı!", + batchAppendPasteNotEditable: "Bu sonuç düzenlenemez.", + batchAppendPasteInvalidTarget: "Yapıştırmadan önce boş yeni bir satırın satır numarasını seçin.", + batchAppendPasteTargetNotEmpty: "Seçili yeni satır zaten veri içeriyor.", + batchAppendPasteEmpty: "Pano, eklenecek satır içermiyor.", + batchAppendPasteReadonlyColumn: "Yapıştırılan veri, düzenlenemeyen bir sütun içeriyor.", + search: "Ara...", + searchTruncatedValuesHint: "Bazı uzun metin/JSON değerleri görüntülenirken kısaltılır; arama yalnızca yüklenmiş hücre metnini kapsar ve bazı eşleşmeleri kaçırabilir.", + searchOrWhere: "Arayın veya bir WHERE yan tümcesi girin...", + applyWhere: "WHERE Uygula", + filterRows: "Satırları filtrele", + filterAllRows: "Tüm satırlar", + filterChangedRows: "Değişen", + page: "Sayfa {page}", + jumpToPage: "Sayfaya git", + rowsPerPage: "Sayfa başına satır", + customRowsPerPage: "Özel satır sayısı", + applyPageSize: "Uygula", + save: "Kaydet", + discard: "Vazgeç", + dismiss: "Kapat", + addRow: "Satır Ekle", + insertMultipleRows: "Birden Çok Satır Ekle…", + insertRowsTitle: "Birden Çok Satır Ekle", + insertRowsDescription: "Bu kadar kaydedilmemiş taslak satır oluşturun. Boş satırlar kaydedilirken yok sayılır; kaydettikten sonra görüntülenme sırası geçerli sorguyu izler.", + insertRowCountLabel: "Satır sayısı", + insertRowCountInvalid: "0'dan büyük bir tam sayı girin.", + insertRowsMaxHint: "En fazla {max} satır.", + insertRowsConfirm: "Ekle", + insertAboveSelected: "Seçili Satırın Üstüne Ekle", + insertBelowSelected: "Seçili Satırın Altına Ekle", + insertRowPositionLabel: "Konum", + insertPositionAbove: "Seçili satırın üstüne", + insertPositionBelow: "Seçili satırın altına", + insertPositionEnd: "Verinin sonuna", + quickEntryDraftPlaceholder: "Yeni", + cloneRow: "Yeni Satır Olarak Çoğalt", + deleteRow: "Satırı Sil", + deleteRows: "{count} Satırı Sil", + cloneRows: "{count} Satırı Yeni Satır Olarak Çoğalt", + restoreRows: "{count} Satırı Geri Yükle", + copyRows: "{count} Satırı Kopyala (JSON Dizisi)", + copyColumnsJson: "{count} Sütunu Kopyala (JSON)", + selectedRows: "{count} satır seçildi", + restoreRow: "Satırı Geri Yükle", + statusClean: "Temiz", + statusNew: "Yeni Öğeler", + statusEdited: "Güncellenen Öğeler", + statusDeleted: "Silinen Öğeler", + pendingChanges: "{count} bekliyor", + selectedCells: "{count} seçildi", + bulkEditSelection: "Seçimi Toplu Düzenle", + bulkEditTitle: "Seçimi Toplu Düzenle", + bulkEditDescription: "Seçili {count} hücreyi bu değere ayarla.", + bulkEditValuePlaceholder: "Değer veya NULL", + applyBulkEdit: "Uygula", + bulkEditSelectionScope: "Yalnızca seçili hücreler", + bulkEditSelectionScopeDescription: "Seçili {count} hücre için değişiklikleri beklemeye al.", + bulkEditConditionalScope: "Bir koşulla eşleşen tüm satırlar", + bulkEditConditionalScopeDescription: "Belirttiğiniz koşulla eşleşen her veritabanı satırında {column} sütununu güncelle.", + bulkEditConditionalConditionSource: "Eşleşme koşulu", + bulkEditConditionalUseCurrentFilter: "Geçerli tablo filtresini kullan", + bulkEditConditionalUseCurrentFilterDescription: "Bu tabloya şu anda uygulanan veritabanı koşulunu koruyun.", + bulkEditConditionalBuildFilter: "Eşleşme koşullarını belirle", + bulkEditConditionalBuildFilterDescription: "SQL yazmadan sütunları, işleçleri ve değerleri seçin.", + bulkEditConditionalAdvancedWhere: "Gelişmiş: WHERE SQL", + bulkEditConditionalAdvancedWhereDescription: "Özel bir SQL koşulu yazın.", + conditionalBulkEditPreviewCount: "Etkilenen satırları önizle", + conditionalBulkEditPreviewingCount: "Önizleniyor…", + conditionalBulkEditPreviewCountResult: "Tahminen {count} satır etkilenecek", + conditionalBulkEditPreviewCountStale: "Koşullar değişti. Yeniden önizleyin.", + conditionalBulkEditPreviewCountFailed: "Etkilenen satırlar önizlenemedi: {message}", + bulkEditConditionalWhere: "WHERE koşulu (zorunlu)", + bulkEditConditionalWherePlaceholder: "Örneğin: tenant_id = 1 AND status = 'pending'", + bulkEditConditionalWhereDescription: "Bir WHERE yan tümcesi ya da yalnızca koşulunu girin. Etkin tablo filtresi varsa önceden doldurulur.", + conditionalBulkEditUnavailable: "Koşullu toplu düzenleme bu seçim veya filtre için artık kullanılamıyor.", + conditionalBulkEditConditionRequired: "Eşleşen tüm satırları güncellemeden önce en az bir eşleşme koşulu belirleyin.", + conditionalBulkEditPrepareFailed: "Koşullu güncelleme hazırlanamadı: {message}", + conditionalBulkEditConfirmTitle: "Koşullu toplu güncellemeyi onayla", + conditionalBulkEditConfirmMessage: "Bu işlem, çalıştırma anında koşulla eşleşen her satırda hemen uygulanır. Yüklenmemiş satırlar da dâhildir ve DBX bunlar için güvenilir bir geri alma üretemez.", + conditionalBulkEditConfirm: "Güncellemeyi çalıştır", + conditionalBulkEditAppliedCount: "Eşleşen {count} satır güncellendi", + conditionalBulkEditApplied: "Eşleşen satırlar güncellendi", + conditionalBulkEditPendingChanges: "Bir koşulla eşleşen tüm satırları güncellemeden önce bekleyen değişiklikleri kaydedin veya atın.", + generateValue: "Değer Üret", + generateEmptyString: "Boş Dize", + generateNull: "NULL", + generateCurrentDatetime: "Geçerli Tarih-Saat", + generateCurrentDate: "Geçerli Tarih", + generateUuid: "UUID", + generateIncrementId: "Artan Kimlik", + generateSnowflakeId: "Snowflake Kimliği", + generateSequenceDescription: "Seçili {count} hücre için ardışık değerler üretin. Başlangıç değerini girin.", + generateStartInvalid: "Başlangıç değeri bir tam sayı olmalıdır", + generatedValuesApplied: "{count} değer üretildi", + cellDetails: "Hücre Ayrıntıları", + cellDetailLayoutBottom: "Alta Taşı", + cellDetailLayoutRight: "Sağa Taşı", + collapseCellDetailMetadata: "Hücre meta verisini daralt", + expandCellDetailMetadata: "Hücre meta verisini genişlet", + openCellDetailsDialog: "Hücre Ayrıntılarını Aç", + rowDetails: "Satır Ayrıntıları", + rowDetailsFor: "{row}. Satırın Ayrıntıları", + openRowDetailsDialog: "Satır Ayrıntılarını Aç", + openColumnDetailsDialog: "Sütun Ayrıntılarını Aç", + columnDetailsFor: "{column} Sütun Ayrıntıları", + columnsCount: "{count} sütun", + rowCount: "Satır", + rowsCount: "{count} satır", + fieldIndex: "Sıra", + cellValue: "Değer", + valueEditor: "Değer Düzenleyici", + hexViewer: "Onaltılık Görüntüleyici", + hexViewerByteCount: "{count} bayt", + hexViewerOffset: "Konum", + hexViewerHex: "Onaltılık", + hexViewerAscii: "ASCII", + hexViewerEmpty: "Görüntülenecek ikili bayt yok.", + imagePreview: "Görsel Önizlemesi", + imageLoadFailed: "Görsel yüklenemedi", + geometryPreview: "Geometri Önizlemesi", + layerPreview: "Katman Önizlemesi", + layerPreviewSkipped: "{count} öğe atlandı", + layerPreviewNoSupportedCrs: "Önizlenemiyor: koordinat sistemi eksik veya desteklenmiyor", + layerPreviewNoGeometryData: "Önizlenemiyor: geçerli geometri verisi yok", + layerPreviewLabel: "Etiket", + layerPreviewExport: "Görseli dışa aktar", + layerPreviewMaximize: "Ekranı kapla", + layerPreviewRestore: "Geri yükle", + layerPreviewLoading: "Harita yükleniyor...", + layerPreviewCustomCrs: "Özel EPSG…", + layerPreviewCustomCrsPlaceholder: "EPSG kodu", + layerPreviewUnsupportedCrs: "Desteklenmeyen koordinat sistemi: EPSG:{srid}", + layerPreviewCrsManual: "Koordinat sistemi: elle", + layerPreviewCrsDetected: "Koordinat sistemi: algılandı", + layerPreviewCrsAssumed: "Koordinat sistemi: WGS 84 varsayıldı", + layerPreviewCustomBasemap: "Özel taban harita", + layerPreviewCustomBasemapAction: "Özel taban harita…", + layerPreviewCustomBasemapTitle: "Özel taban harita", + layerPreviewCustomBasemapName: "Ad", + layerPreviewCustomBasemapNamePlaceholder: "örn. Gaode sokakları", + layerPreviewCustomBasemapHint: "{z}, {x} ve {y} kullanan bir XYZ karo URL'si girin. İsteğe bağlı bindirme URL'si, Tianditu etiketleri gibi etiketler için kullanışlıdır.", + layerPreviewCustomBasemapUrl: "Karo URL'si", + layerPreviewCustomBasemapOverlayUrl: "Bindirme URL'si", + layerPreviewCustomBasemapAttribution: "Kaynak gösterimi", + layerPreviewCustomBasemapMaxZoom: "En çok yakınlaştırma", + layerPreviewCustomBasemapOptional: "İsteğe bağlı", + layerPreviewCustomBasemapApply: "Uygula", + layerPreviewCustomBasemapInvalid: "Bir ad ve {z}, {x} ile {y} içeren geçerli bir HTTP(S) XYZ karo URL'si girin.", + insertRowsNotSupported: "Geçerli kaydetme hedefi satır eklemeyi desteklemiyor.", + zoomIn: "Yakınlaştır", + zoomOut: "Uzaklaştır", + fitImage: "Görünüme Sığdır", + openImage: "Görseli Aç", + columnName: "Sütun", + columnType: "Tür", + columnComment: "Açıklama", + rowNumber: "Satır", + valueLength: "Uzunluk", + nullValue: "NULL", + emptyStringValue: "Boş dize", + noComment: "Açıklama yok", + formattedJson: "Biçimlendirilmiş JSON", + formatted: "Biçimlendirildi", + formattedValue: "Biçimlendirilmiş Değer", + detailSearchPlaceholder: "Alan veya değer ara…", + detailSearchNoMatch: "Eşleşme yok", + rawValue: "Ham Değer", + largeValuePreviewHint: "İlk {count} karakter önizleniyor. Kopyalama yine de tam değeri kullanır.", + largeValueRowUnavailable: "Satır veritabanında bulunamadı. İşlem, önizleme değeri kullanılmadan iptal edildi.", + largeValueColumnUnavailable: "Bu büyük değerin kaynak sütunu bulunamadı.", + largeValueLoadFailed: "Büyük alanın tam değeri yüklenemedi.", + largeValueNeedsStableKey: "Bu tablonun kullanılabilir bir birincil anahtarı yok, bu yüzden büyük alanın tam değeri güvenle yüklenemez. İşlem iptal edildi.", + largeValueLoadFailedWithMessage: "Büyük alanın tam değeri yüklenemedi: {message}", + largeValueLocalSortUnavailable: "Bu sütun büyük değer önizlemeleri içeriyor ve önizleme içeriğine göre yerel olarak sıralanamaz. Bunun yerine veritabanı sıralamasını kullanın.", + copyValue: "Değeri Kopyala", + importBinaryValue: "Dosyadan İçe Aktar", + binaryImportApplied: "{count} bayt içe aktarıldı. Veritabanına yazmak için değişiklikleri kaydedin.", + binaryImportFailed: "Dosya içe aktarılamadı: {message}", + binaryImportTooLarge: "Dosya çok büyük ({size}, sınır {limit}). Büyük dosyaların tek bir hücreye aktarılması desteklenmiyor.", + downloadBinaryValue: "Değeri İndir", + downloadSaved: "{path} konumuna kaydedildi", + downloadStarted: "İndirme başladı: {fileName}", + binaryDownload: { + binary: "Ham ikili", + utf8: "Çözülmüş metin (UTF-8)", + gbk: "Çözülmüş metin (GBK)", + }, + copyRowTsv: "Satırı Kopyala (TSV)", + copyColumnValues: "Sütunu Kopyala (JSON)", + copyColumnTsv: "Sütunu Kopyala (TSV)", + editValue: "Değeri Düzenle", + formatJson: "JSON'u Biçimlendir", + compactJson: "JSON'u Sıkıştır", + compareJson: "Karşılaştır", + valueDiffTitle: "{column} JSON farkı", + valueDiffFormat: "Karşılaştırma biçimi", + valueDiffRaw: "Ham", + valueDiffOriginal: "Özgün", + valueDiffCurrent: "Geçerli", + copyOriginalValue: "Özgün değeri kopyala", + copyCurrentValue: "Geçerli değeri kopyala", + cellValueCopied: "Hücre değeri kopyalandı", + valueDiffInvalidJson: "Geçersiz JSON; ham değer gösteriliyor: {message}", + valueDiffTooLarge: "Değer {limit} karakteri aşıyor; ham değer gösteriliyor.", + formattedJsonEditWarning: "Biçimlendirilmiş JSON düzenliyorsunuz. Kaydetmek JSON olarak yazacağı için özgün biçimlendirme değişebilir.", + setNull: "NULL Yap", + restoreOriginalValue: "Özgün Değeri Geri Yükle", + copyColumnName: "Sütun Adını Kopyala", + columnDragChipMany: "{names} ({count} sütun)", + copyAlterColumnSql: "SQL ALTER Olarak Kopyala", + alterSqlCopied: "SQL ALTER panoya kopyalandı", + alterSqlCopiedWithWarnings: "SQL ALTER panoya kopyalandı ({count} uyarı)", + noAlterSqlAvailable: "Bu sütun için ALTER SQL yok", + copyAlterSqlFailed: "Kopyalama başarısız: {message}", + copySqlCondition: "SQL Koşulunu Kopyala", + transpose: "Satırı Devrik Göster", + transposeMultiRowToggle: "Çok satırlı", + transposeSingleRow: "Geçerli satır", + transposeMultiRow: "Çok satırlı", + transposeMultiRowHint: "Etkinleştirildiğinde devrik görünüm birden çok satırı gösterir. Kapatıldığında yalnızca geçerli satırı gösterir.", + rowsPerPageShort: " satır", + columnDetails: "Sütun Ayrıntıları", + tableInfo: "Tablo Bilgisi", + tableInfoColumns: "Sütunlar", + tableInfoIndexes: "Dizinler", + columnPrimaryIndex: "Birincil anahtar dizini", + columnUniqueIndex: "Benzersiz dizin", + columnRegularIndex: "Normal dizin", + tableInfoForeignKeys: "Yabancı Anahtarlar", + foreignKeyNavigate: "{table} tablosuna git", + openUrl: "URL'yi tarayıcıda aç", + tableInfoConstraints: "Kısıtlar", + tableInfoConstraintDisabled: "Devre dışı", + tableInfoConstraintNotValidated: "Doğrulanmadı", + tableInfoTriggers: "Tetikleyiciler", + tableInfoNullable: "Boş olabilir", + tableInfoEmpty: "Meta veri yok", + tableInfoSearch: "Ara...", + tableOwner: "Sahip", + tableOwnerUnavailable: "Kullanılamıyor", + tableInfoNoResults: "Sonuç yok", + goToColumn: "Sütuna git", + columnWidth: "Sütun Genişliği", + columnWidthCompact: "Sıkışık", + columnWidthStandard: "Standart", + columnWidthComfortable: "Ferah", + searchColumn: "Sütun/açıklama ara...", + noColumnsFound: "Sütun bulunamadı", + queryError: "Sorgu Hatası", + saveErrorTitle: "Değişiklikler Kaydedilemedi", + dataUnavailable: "Tablo verisinin yeniden yüklenmesi gerekiyor.", + cachedResultUnavailable: "Önbelleğe alınmış sonuç eksik veya uyumsuz.", + reexecuteQuery: "Sorguyu yeniden çalıştır", + dataUnavailableHintPrefix: "Yeniden yüklemek için ", + dataUnavailableHintSuffix: " tuşuna basın veya aşağıdaki Yenile düğmesine tıklayın.", + refresh: "Yenile", + undoChange: "Değişikliği geri al", + redoChange: "Değişikliği yinele", + commit: "Commit", + rollback: "Rollback", + transactionSaveHint: "Bekleyen {count} değişikliği bir işlem içinde uygula.", + nonTransactionalSaveHint: "Bekleyen {count} değişikliği tek tek kaydet. Biri başarısız olursa daha önce başarılı olanlar geri alınmaz.", + keylessEditWarning: "Birincil anahtar yok", + keylessEditWarningHint: "Bu tablonun birincil anahtarı yok. Güncelleme ve silme işlemleri WHERE yan tümcesinde satırın tüm özgün değerlerini kullanır; birebir aynı satırlar birlikte etkilenebilir.", + queryEditReadOnly: "Salt okunur sonuç", + queryEditUnsupported: { + "not-select": "Yalnızca SELECT sorgu sonuçları doğrudan düzenlenebilir.", + cte: "WITH/CTE içeren sorgular henüz düzenlenemiyor. Basit, tek tablolu bir SELECT kullanın.", + "set-operation": "UNION, INTERSECT veya EXCEPT sonuçları kaynak satırlara güvenli biçimde eşlenemez.", + aggregation: "DISTINCT, GROUP BY, HAVING ve toplama sonuçları doğrudan düzenlenemez.", + "external-source": "Dış dosyalar ve tablo işlevi sonuçları doğrudan geri yazılamaz. Düzenlemeden önce bir veritabanı tablosuna aktarın.", + "complex-source": "DBX bu sonuç için tek bir güvenli geri yazma hedef tablosu belirleyemedi.", + "computed-columns": "Hesaplanan ifadeler veya işlev sonuçları geri yazılamaz. Bunun yerine ham sütun adlarını seçin.", + "no-table": "Düzenlenebilir bir kaynak tablo bulunamadı.", + "no-primary-key": "Hedef tablonun birincil anahtarı yok, bu yüzden satırlar güvenle güncellenemez veya silinemez.", + "primary-key-not-returned": "Sonuçta ham birincil anahtar sütunu eksik. Sütunu özgün adıyla dâhil edin.", + "aliased-columns": "Sonuç sütunları takma ad veya ifade kullanıyor. Düzenlenebilir sütunları özgün adlarıyla seçin.", + "metadata-unavailable": "DBX tablo meta verisini yükleyemedi, bu yüzden sonuç düzenleme devre dışı.", + }, + sortUnsupported: "Bu SQL, sonucun tamamının sıralanmasını desteklemiyor. Tek bir SELECT sorgusuyla tekrar deneyin.", + truncatedHint: "{count} satır yüklendikten sonra sonuçlar kısaltıldı. Yüklenen veriye göz atmak için alt bilgideki sayfalamayı kullanın; sonucun tamamını dışa aktarmak veritabanı sorgusunu yeniden çalıştırır.", + victoriaMetricsTruncatedHint: "Sonuçlar yükleme sınırını aştı, bu yüzden yalnızca ilk {count} satır yüklendi. Sayfa başına satır yalnızca yüklenen veriyi sayfalar; eksiksiz bir sonuç için zaman aralığını daraltın veya filtre ekleyin.", + cut: "Kes", + }, + exportProgress: { + streamingUnsupported: "Bu sorgu için akış tabanlı dışa aktarma desteklenmiyor. Sorguyu basitleştirin veya desteklenen bir sürücü kullanın.", + agentSessionMissing: "Akış tabanlı dışa aktarma bir sonuç kümesi oturumu gerektirir, ancak bu sürücü session_id döndürmedi.", + title: "Tablo Verisi Dışa Aktarılıyor", + fetching: "Veritabanından veri alınıyor...", + writing: "Dosyaya yazılıyor...", + done: "Dışa aktarma tamamlandı!", + error: "Dışa aktarma başarısız", + cancelled: "Dışa aktarma iptal edildi.", + rowsCount: "{exported} / {total} satır", + rowsExported: "{count} satır dışa aktarıldı", + rowsShort: "satır", + cancel: "İptal", + minimize: "Arka plana küçült", + openFolder: "Bulunduğu klasörü aç", + openFolderFailed: "Klasör açılamadı: {message}", + close: "Kapat", + tooltip: "Arka Plan Görevleri", + failedTooltip: "{count} arka plan görevi başarısız oldu | {count} arka plan görevi başarısız oldu", + popoverTitle: "Arka Plan Görevleri", + noTasks: "Arka plan görevi yok", + clearFinished: "Bitenleri temizle", + showMore: "{count} tane daha göster", + showLess: "Daha az göster", + delete: "Kaldır", + databaseExportTitle: "Veritabanı dışa aktarma: {name}", + databaseBackupTitle: "Veritabanı yedeği: {name}", + sqlFileTitle: "SQL dosyası: {name}", + dataTransferTitle: "Veri aktarımı: {name}", + multiDbExecutionTitle: "Çoklu veritabanı yürütme: {name}", + multiDbTargets: "Hedefler {completed}/{total}, başarılı {success}, başarısız {failed}", + openTask: "Görevi aç", + objectsCount: "{current} / {total} nesne", + tablesCount: "{current} / {total} tablo", + statementsCount: "{done} başarılı, {failed} başarısız", + elapsed: "Geçen süre: {duration}", + showFailureDetails: "Hata ayrıntıları ({count})", + hideFailureDetails: "Hata ayrıntılarını gizle", + failureDetailTruncated: "Hata ayrıntıları kısaltıldı", + failureDetailsOmitted: "Gösterilmeyen {count} ek hata ayrıntısı var", + }, + welcome: { + title: "Veritabanı Çalışma Alanı", + subtitle: "Şemaya göz atmak için soldan bir bağlantı seçin ya da doğrudan bir sorgu sekmesi açın.", + connections: "Bağlantılar", + connected: "Bağlandı", + databaseTypes: "Veritabanı Türleri", + quickConnections: "Hızlı Başlangıç", + quickConnectionsHint: "Sorgu sekmesi açmak için bir bağlantıya tıklayın.", + shortcuts: "Kısayollar", + shortcutsHint: "Sonraki eylemi buradan başlatın.", + sqlHistory: "Sorgu Geçmişi", + sqlHistoryEmpty: "Henüz SQL Kitaplığı kaydı yok", + sqlHistoryOpenCount: "{count} kez açıldı", + unknownConnection: "Bilinmeyen bağlantı", + tip: "Ayrıca soldaki bağlantıları genişletip veritabanlarına veya tablolara sağ tıklayarak daha fazla işlem yapabilirsiniz.", + tipSidebar: "Verileri görmek için soldan bir tabloya tıklayın", + tipExecute: "sorguyu çalıştırmak için", + fileOpened: "{name} açıldı", + fileOpenFailed: "{name} açılamadı: {message}", + mcpTitle: "Yapay Zekâ Agent Tümleştirmesi", + mcpDescription: "Yerleşik yapay zekâ asistanının yanı sıra Claude Code, Cursor ve diğer kodlama agent'larını da MCP üzerinden veritabanlarınızı sorgulamak için kullanabilirsiniz.", + mcpLearnMore: "Daha fazla bilgi", + }, + backendErrors: { + jdbc: { + connectionFailed: "İşlem başlamadan önce veritabanı bağlantısı başarısız oldu (aşama: {stage}).", + connectionInterrupted: "İşlem çalışırken veritabanı bağlantısı kesildi (aşama: {stage}).", + operationTimedOut: "Veritabanı işlemi zaman aşımına uğradı (aşama: {stage}).", + operationCanceled: "Veritabanı işlemi iptal edildi (aşama: {stage}).", + busyRetryLater: "Veritabanı agent'ı meşgul; daha sonra tekrar deneyin (aşama: {stage}).", + runtimeReplaced: "Veritabanı agent çalışma zamanı değiştirildi (aşama: {stage}).", + sqlFailed: "Veritabanı bir SQL hatası döndürdü (aşama: {stage}).", + protocolFailed: "Veritabanı agent protokolü başarısız oldu.", + contractInvalid: "Veritabanı agent'ı geçersiz bir hata sözleşmesi döndürdü.", + legacyFailure: "Veritabanı agent'ı sınıflandırılmamış bir hata döndürdü.", + }, + transaction: { + sessionExpired: "Manuel işlem, {timeoutSecs} saniyelik hareketsizlik sonrası sona erdi ve geri alındı. Otomatik olarak yeni bir işlem başlatılacak.", + }, + legacy: "Arka uç bir hata döndürdü.", + unknown: "Beklenmeyen bir arka uç hatası oluştu.", + }, + common: { + fileNotFound: "Dosya mevcut değil: {path}", + language: "Dil", + loading: "Yükleniyor...", + stopping: "Durduruluyor...", + close: "Kapat", + cancel: "İptal", + confirm: "Onayla", + save: "Kaydet", + clear: "Temizle", + copy: "Kopyala", + import: "İçe Aktar", + remove: "Kaldır", + retry: "Yeniden dene", + more: "Daha fazla", + decrease: "Azalt", + increase: "Artır", + showPassword: "Parolayı göster", + hidePassword: "Parolayı gizle", + done: "Bitti", + connection: "Bağlantı", + database: "Veritabanı", + table: "Tablo", + view: "Görünüm", + materializedView: "Materyalleştirilmiş Görünüm", + procedure: "Yordam", + function: "İşlev", + sequence: "Dizi (Sequence)", + package: "Paket", + packageBody: "Paket Gövdesi", + noResults: "Sonuç yok", + edit: "Düzenle", + delete: "Sil", + disabled: "Devre dışı", + back: "Geri", + }, + dateTimePicker: { + open: "Tarih ve saat seçiciyi aç", + inputLabel: "Tarih ve saat", + inputPlaceholder: "YYYY-MM-DD HH:mm:ss", + previousMonth: "Önceki ay", + nextMonth: "Sonraki ay", + calendarLabel: "Takvim", + timeLabel: "Süre", + hour: "Saat", + minute: "Dakika", + second: "Saniye", + cancel: "İptal", + apply: "Uygula", + invalidDateTime: "Geçerli bir tarih ve saat girin", + outOfRange: "Tarih ve saat izin verilen aralığın dışında", + }, + quickOpen: { + placeholder: "Bağlantı, veritabanı, tablo, SQL dosyası ve diğer nesnelerde ara...", + emptyPlaceholder: "Aramak için yazmaya başlayın", + noResults: "Sonuç bulunamadı", + results: "sonuç", + navigate: "Gezin", + select: "Seç", + close: "Kapat", + sqlFile: "SQL Dosyası", + sqlLibraryFile: "SQL Kitaplığı", + }, + explain: { + title: "Yürütme Planı", + standardTable: "Tablo", + tree: "Ağaç", + summary: "Özet", + running: "Yürütme planı okunuyor...", + empty: "Yürütme planı yok", + nodeCount: "{count} düğüm", + node: "Düğüm", + relation: "Tablo", + index: "Dizin", + cost: "Maliyet", + rows: "Satır", + details: "Ayrıntılar", + canvas: "Canvas", + costShare: "Maliyet payı", + estRows: "Tahmini satır", + actualRows: "Gerçek satır", + zoomIn: "Yakınlaştır", + zoomOut: "Uzaklaştır", + zoomFit: "Sığdır", + legendHeat: "Isı = toplam maliyetin yüzdesi", + legendEdge: "Kenar kalınlığı = satır sayısı", + inspectorEmpty: "Bir düğüm seçin", + catResult: "Sonuç", + catSort: "Sırala", + catJoin: "Birleştirme (Join)", + catTscan: "Tablo taraması", + catIscan: "Dizin taraması", + catLookup: "Satır arama", + catMat: "Materyalleştir", + catAgg: "Toplama", + catXchg: "Paralellik", + catMod: "Değiştir", + catOther: "Diğer", + unsupported: "Yürütme planı bu veritabanı için henüz desteklenmiyor", + emptySql: "Açıklanacak SQL yok", + unsafe: "Bu ilk sürüm yalnızca SELECT / WITH / TABLE / VALUES ifadelerini açıklar", + }, + lineage: { + title: "Alan Soy Ağacı", + open: "Alan Soy Ağacını Görüntüle", + loading: "Meta veri okunuyor {done}/{total}", + empty: "İlgili soy ağacı bulunamadı", + noFiltered: "Geçerli filtrelerle eşleşen sonuç yok", + targetField: "Geçerli Alan", + searchPlaceholder: "Tablo, alan, görünüm veya SQL parçacığı ara...", + showing: "{shown}/{total} sonuç gösteriliyor", + all: "Tümü", + certain: "Kesin", + likely: "Olası", + possible: "Muhtemel", + queryHistory: "Sorgu Geçmişi", + openTable: "Tabloyu aç", + copy: "Adı kopyala", + copied: "Kopyalandı", + kind: { + foreignKey: "Yabancı Anahtar", + viewReference: "Görünüm", + historyReference: "SQL Geçmişi", + sameName: "Aynı Ad", + }, + description: { + foreignKeyIncoming: "{target}, geçerli alana bir yabancı anahtar üzerinden işaret ediyor. Bu doğrulanmış bir bağımlılıktır.", + foreignKeyOutgoing: "Geçerli alan, {target} öğesine bir yabancı anahtar üzerinden başvuruyor. Bu doğrulanmış bir bağımlılıktır.", + viewLikely: "Görünüm tanımı hem hedef tablodan hem de alandan söz ediyor; bu genellikle sorgu bağımlılığını gösterir.", + viewPossible: "Görünüm tanımı aynı adlı bir alandan söz ediyor ancak hedef tablodan söz etmiyor, bu yüzden doğrulanması gerekiyor.", + historyLikely: "Geçmişteki bir SQL ifadesi hem hedef tablodan hem de alandan söz ediyor. Bunu etki analizi bağlamı olarak kullanın.", + historyPossible: "Geçmişteki bir SQL ifadesi aynı adlı bir alandan söz ediyor. İlgili olabilir ancak bağlam gerektirir.", + sameName: "Başka bir tabloda aynı adlı bir alan var. İş anlamı ortak olabilir, ancak bu doğrulanmış bir veritabanı bağımlılığı değildir.", + }, + cancel: "İptal", + refresh: "Yeniden Analiz Et", + }, + connectionGroup: { + createGroup: "Yeni Grup", + group: "Grup", + groupNamePlaceholder: "Grup adı", + selectConnection: "Bağlantı seç", + deselectConnection: "Bağlantı seçimini kaldır", + selectAllConnections: "Tüm bağlantıları seç", + deselectAllConnections: "Tüm bağlantı seçimlerini kaldır", + selectedConnections: "{count} seçildi", + exitMultiSelect: "Seçimden çık", + renameGroup: "Grubu Yeniden Adlandır", + closeConnections: "Gruptaki Bağlantıları Kapat ({count})", + deleteGroup: "Grubu Sil", + deleteSelectedGroups: "Seçili {count} Grubu Sil", + moveToGroup: "Gruba Taşı", + moveToNewGroup: "Yeni Gruba Taşı", + ungrouped: "Gruplanmamış", + ungroupedLabel: "Varsayılan", + newGroup: "Yeni Grup...", + newGroupDefault: "Yeni Grup", + deleteGroupConfirmTitle: "Grubu Sil", + deleteGroupConfirmMessage: '"{name}" grubu ve tüm alt grupları silinsin mi? İçindeki bağlantıların da silinip silinmeyeceğini aşağıdan seçin.', + deleteSelectedGroupsConfirmMessage: "Seçili {count} grup ve tüm alt grupları silinsin mi? İçindeki bağlantıların da silinip silinmeyeceğini aşağıdan seçin.", + deleteConnectionsWithGroup: "Seçili gruplardaki ve alt gruplarındaki tüm bağlantıları da sil", + selectGroup: "Grubu seç", + deselectGroup: "Grup seçimini kaldır", + }, + databaseSearch: { + title: "Veritabanında Ara", + open: "Veritabanında Ara", + keyword: "Anahtar sözcük", + keywordPlaceholder: "Bir kullanıcı kimliği, e-posta, sipariş numarası girin...", + limitPerTable: "Tablo başına", + search: "Ara", + searching: "Aranıyor", + stop: "Durdur", + hint: "Geçerli veritabanı veya şemadaki normal tabloları tarar. İkili sütunlar atlanır ve bir kerede çok fazla veri yüklenmemesi için her tabloya üst sınır uygulanır.", + loadingTables: "Tablo listesi okunuyor...", + progress: "{done}/{total} tablo tarandı", + resultCount: "{count} eşleşme", + continueNextBatch: "Sonraki {count} tanesini tara", + scanAllRemaining: "Kalan {count} tanesini tara", + results: "Sonuçlar", + openResult: "Aç", + waiting: "Eşleşmeler bekleniyor...", + noResults: "Henüz eşleşme yok", + errors: "Bazı tablolar başarısız oldu", + }, + configExport: { + passphraseTitle: "Şifrele ve Dışa Aktar", + passphraseImportTitle: "Dosyanın Şifresini Çöz", + passphraseExportHint: "Dışa aktarmaya bağlantı parolalarını dâhil etmek için bir şifreleme parolası belirleyin. İçe aktarırken aynı parola gerekecek.", + passphraseImportHint: "Bu dosya şifreli. Şifresini çözmek için parolayı girin, ardından içe aktarılacak bağlantıları seçin.", + passphrase: "Parola İfadesi", + passphraseConfirm: "Parola İfadesini Doğrula", + passphrasePlaceholder: "Parola ifadesini girin", + passphraseConfirmPlaceholder: "Parola ifadesini yeniden girin", + passphraseRequired: "Parola ifadesi zorunludur", + passphraseMismatch: "Parola ifadeleri eşleşmiyor", + passphraseTooShort: "Parola ifadesi en az 4 karakter olmalıdır", + exportEncrypted: "Şifreli dışa aktar", + exportUnencrypted: "Şifresiz dışa aktar", + unencryptedWarningTitle: "Şifresiz dışa aktarılsın mı?", + unencryptedWarningDescription: "Şifresiz bir yapılandırma dosyası veritabanı parolalarını, SSH Tünel kimlik bilgilerini ve diğer hassas bilgileri içerebilir. Dosyaya erişebilen herkes bu kimlik bilgilerini okuyabilir. Bunu yalnızca güvenilir bir ortamda geçici taşıma için kullanın.", + confirmUnencryptedExport: "Şifresiz dışa aktar", + decryptImport: "Şifreyi çöz", + wrongPassphrase: "Yanlış parola ifadesi veya bozuk dosya", + cryptoUnavailable: "Şifreli yapılandırma içe aktarma bu tarayıcı bağlamında kullanılamıyor. HTTPS, localhost veya DBX Masaüstü kullanın.", + exportFailed: "Bağlantılar dışa aktarılamadı", + exportSuccess: "Bağlantılar başarıyla dışa aktarıldı", + importSuccess: "{count} bağlantı içe aktarıldı", + importNavicatSuccess: "{count} Navicat bağlantısı içe aktarıldı. Test etmeden önce parolası boş kalan bağlantıları doldurun.", + importDatagripSuccess: "{count} DataGrip bağlantısı içe aktarıldı, macOS Anahtar Zinciri'nden {filled} parola dolduruldu.", + importDatagripSelectFiles: "Lütfen dataSources.xml (zorunlu) ve isteğe bağlı olarak dataSources.local.xml / db-forest-config.xml dosyalarını seçin", + importDatagripDialogTitle: "DataGrip yapılandırma dosyalarını seçin", + importDbeaverSuccess: "{count} DBeaver bağlantısı içe aktarıldı. Test etmeden önce parolası boş kalan bağlantıları doldurun.", + importNone: "İçe aktarılacak yeni bağlantı yok", + importLayoutConfirm: "İçe aktarılan dosya bağlantı grupları içeriyor. Uygulansın mı?", + importLayoutTitle: "Grupları İçe Aktar", + importLayoutApply: "Uygula", + selectExportTitle: "Dışa aktarılacak bağlantıları seçin", + selectImportTitle: "İçe aktarılacak bağlantıları seçin", + selectAll: "Tümünü seç", + deselectAll: "Tüm seçimleri kaldır", + selectedCount: "{selected} / {total}", + next: "İleri", + importSelected: "{count} tanesini içe aktar", + noConnections: "Kullanılabilir bağlantı yok", + }, + ai: { + placeholder: "Sorgunuzu doğal dille anlatın...", + settings: "Yapay Zekâ Ayarları", + noConfig: "Yapay zekâ yapılandırılmadı. Lütfen Ayarlar > Yapay Zekâ bölümünden sağlayıcınızı ayarlayın.", + provider: "Sağlayıcı", + providerCustom: "Özel", + builtinProviders: "Yerleşik destek", + partnerProviders: "Premium sponsorlar", + jalapenoSponsored: "1 $ ücretsiz kredi", + jalapenoDescription: "🎉 Önde gelen ekiplerin güvendiği kurumsal düzeyde yapay zekâ artık sizin için de kullanılabilir! En yeni modelleri %50 indirimle deneyin ve daha çok yükleme yaptıkça daha çok bonus kredi kazanın!", + visitPartner: "İş ortağının web sitesini ziyaret et", + getApiKey: "API anahtarı al", + providerStatusActive: "Etkin", + providerStatusConfigured: "Yapılandırıldı", + switchProvider: "Sağlayıcıyı Değiştir", + model: "Model", + defaultModel: "Varsayılan Model", + browseModels: "Modellere gözat", + refreshModels: "Modelleri yenile", + loadingModels: "Modeller yükleniyor...", + modelLoadFailed: "Modeller yüklenemedi", + retry: "Yeniden dene", + searchModels: "Modellerde ara", + noModels: "Yüklenmiş model yok", + noModelMatch: "Eşleşen model yok", + selectModel: "Bir model seçin", + noModel: "Model yapılandırılmadı", + manualModel: "Model kimliğini elle girin", + manualModelPlaceholder: "Model Kimliği", + effort: "Çaba", + providerDefault: "Sağlayıcı varsayılanı", + loadingEffort: "Çaba düzeyleri yükleniyor...", + effortLoadFailed: "Çaba düzeyleri yüklenemedi", + effortEnabled: "Etkin", + effortDisabled: "Devre dışı", + customEffortPlaceholder: "Çaba değerini girin", + effortUnsupported: "Bu model yapılandırılabilir çabayı desteklemiyor", + configNameEmpty: "Yapılandırma adı boş olamaz", + configNameExists: "'{name}' adlı yapılandırma zaten var", + deepLinkInvalid: "Yapay zekâ yapılandırma bağlantısı açılamadı: {message}", + deepLinkClipboardTitle: "API Anahtarını İçe Aktar", + deepLinkClipboardPrompt: "API anahtarı panodan okunsun mu?", + deepLinkClipboardEmpty: "Panoda API anahtarı yok. Elle girin.", + deepLinkClipboardInvalid: "Panoda geçerli, tek satırlık bir API anahtarı yok. Elle girin.", + deepLinkClipboardReadFailed: "Pano okunamadı: {message}", + + configList: "Yapay Zekâ Yapılandırma Listesi", + addConfig: "Yapılandırma Ekle", + noAiConfigs: "Yapay zekâ yapılandırması yok", + setDefault: "Varsayılan Yap", + editConfig: "Yapılandırmayı Düzenle", + configName: "Yapılandırma Adı", + configNamePlaceholder: "Yapılandırma adını girin", + modelList: "Model Listesi", + modelId: "Model Kimliği", + modelDisplayName: "Görünen Ad", + add: "Ekle", + fetching: "Alınıyor...", + fetchModelList: "Modelleri API'den Al", + default: "Varsayılan", + deleteConfigTitle: "Yapılandırmayı Sil", + deleteConfigConfirm: "Bu yapılandırma silinsin mi?", + modelListHint: "Sağlayıcıdan modelleri yüklemek için yenile düğmesine tıklayın.", + modelListUnsupported: "Bu sağlayıcı model listesi almayı desteklemiyor.", + modelListEndpointRequired: "Modelleri yüklemeden önce bir uç nokta girin.", + modelListApiKeyRequired: "Modelleri yüklemeden önce bir API anahtarı girin.", + run: "Çalıştır", + readingSchema: "Şema okunuyor", + noConnection: "Bu sekme için kullanılabilir bağlantı yok", + noSql: "İşlenecek SQL yok", + sqlPreview: "SQL Önizlemesi", + copySql: "SQL Kopyala", + copyCode: "Kodu Kopyala", + executeSql: "SQL'i çalıştır", + tempRunSql: "Düzenleyiciyi değiştirmeden çalıştır", + copyAll: "Tümünü Kopyala", + copyMessage: "Mesajı kopyala", + copied: "Kopyalandı", + copyTestResult: "Test sonucunu kopyala", + testErrorAuth: "Kimlik doğrulama veya erişim başarısız oldu. API anahtarını, proje yetkilerini ve API erişilebilirliğini denetleyin.", + testErrorModelNotFound: "Model kullanılamıyor. Model kimliğini ve hesap erişiminizi denetleyin.", + testErrorRateLimit: "Hız sınırı veya kota aşıldı. Daha sonra tekrar deneyin ya da hesap kotasını denetleyin.", + testErrorTimeout: "İstek zaman aşımına uğradı. Ağı, proxy'yi ve uç noktayı denetleyin.", + testErrorTokenLimit: "Çıktı belirteci sınırı tükendiği için görünür metin üretilmedi.", + testErrorSafety: "Gemini, güvenlik politikası gereği istemi veya yanıtı engelledi.", + testErrorEmptyResponse: "Servis veya proxy, görünür metin döndürmeden akışı kapattı.", + testErrorNetwork: "Ağ bağlantısı başarısız oldu. Uç noktayı ve proxy'yi denetleyin.", + testErrorUnknown: "Test, sınıflandırılmamış bir nedenle başarısız oldu.", + replace: "Düzenleyicinin Yerine Koy", + append: "Düzenleyiciye Ekle", + apply: "Düzenleyiciye Uygula", + clear: "Sohbeti Temizle", + maximize: "Ekranı kapla", + restore: "Geri yükle", + welcome: "Ne sorgulamak istediğinizi söyleyin, SQL'i ben yazayım", + requestFailed: "Yapay zekâ isteği başarısız", + requestCancelled: "İstek iptal edildi", + backgroundRunCompleted: "Yapay zekâ yanıtı arka planda tamamlandı", + backgroundRunNeedsConfirmation: "Yapay zekânın devam etmesi için onayınız gerekiyor", + recoveredDraftBanner: "Yeniden başlatmadan önce kuyruğa alınmış bir istek kurtarıldı", + recoveredDraftHint: "Düzenleyip yeniden gönderin veya kaldırın.", + discardDraft: "Taslağı kaldır", + runStatusRunning: "Çalışıyor", + runStatusWaitingToStart: "Başlaması bekleniyor", + runStatusAwaitingConfirmation: "Onay bekleniyor", + runStatusPendingDraft: "Girdi bekleniyor", + runStatusCompleted: "Tamamlandı", + runStatusFailed: "Başarısız", + runStatusInterrupted: "Kesildi", + runStatusCancelled: "İptal edildi", + runUnread: "Bu konuşmada yeni güncellemeler var", + closeWithRunsTitle: "Yapay zekâ görevleri hâlâ çalışıyor", + closeWithRunsDescription: "DBX'ten çıkmak, çalışan veya kuyruktaki {count} yapay zekâ görevini kesecek. Bunun yerine bu iletişim kutusunu kapatıp bitmelerini bekleyebilirsiniz.", + closeWithRunsQuit: "Çık ve kes", + queueSend: "Göndermeyi kuyruğa al", + queueSendHint: "Bu konuşma için hâlâ bir görev çalışıyor; mesaj görev bitince gönderilecek", + inputQueued: "Mesaj, geçerli görevden sonra gönderilmek üzere kuyruğa alındı", + queuedInputWaiting: "Bekliyor — {text}", + queuedInputPending: "Gönderilmek üzere kuyruğa alındı — {text}", + sendQueuedInput: "Kuyruktaki mesajı gönder", + queuedInputEdit: "Kuyruktaki mesajı düzenle", + queuedInputRemove: "Kuyruktaki mesajı kaldır", + rowQueuedInput: "Kuyruktaki girdi", + retryRound: "Bu turu yeniden dene", + deleteConversation: "Konuşmayı sil", + deleteActiveConversationTitle: "Konuşmanın etkin bir görevi var", + deleteActiveConversationDescription: "Bu konuşmada hâlâ çalışan veya bekleyen bir görev var. Görevi iptal edip konuşmayı silmek mi, yoksa korumak mı istersiniz?", + cancelTaskAndDelete: "Görevi iptal et ve konuşmayı sil", + keepConversation: "Konuşmayı koru", + awayUpdatesDivider: "Siz yokken gelen güncellemeler", + jumpToLatest: "En sona git", + openPanel: "Paneli aç", + runRowPhaseTool: "{tool} çalıştırılıyor", + runRowPhaseThinking: "Çözümleniyor…", + toolbarAwaitingConfirmation: "{count} yapay zekâ görevi onayınızı bekliyor", + newChat: "Yeni Sohbet", + thinking: "Düşünülüyor...", + reasoningProcess: "Düşünme süreci", + chars: "karakter", + stopGenerating: "Üretmeyi durdur", + scrollToBottom: "En alta dön", + csvAttachmentSelect: "CSV Ekle", + csvAttachmentInvalidType: "Bir CSV dosyası seçin.", + csvAttachmentEmpty: "CSV dosyası boş.", + csvAttachmentReadFailed: "CSV dosyası okunamadı.", + csvAttachmentTruncated: "CSV, yapay zekâya gönderilmeden önce kısaltıldı.", + attachmentSelect: "Görsel veya metin dosyası ekle", + attachmentSelectHint: "Görseller veya metin dosyaları ekleyin. En fazla 4 görsel (toplam 12 MB) ve 8 metin dosyası (toplam 32.000 karakter).", + attachmentDropHint: "Ek eklemek için dosyaları buraya bırakın", + attachmentInvalidType: "PNG, JPEG, GIF veya WebP biçiminde bir görsel seçin.", + attachmentReadFailed: "Ek okunamadı.", + attachmentImageTooLarge: "Görseller en fazla 5 MB olmalıdır.", + attachmentImageLimit: "Aynı anda en fazla 4 görsel ekleyebilirsiniz.", + attachmentImageTotalLimit: "Eklenen görseller toplamda 12 MB'ı aşamaz.", + attachmentTextLimit: "Aynı anda en fazla 8 metin dosyası ekleyebilirsiniz.", + attachmentTextTotalLimit: "Eklenen metin toplamda 32.000 karakteri aşamaz.", + attachmentFileTooLarge: "Bırakılan dosyalar en fazla 5 MB olmalıdır.", + attachmentTruncatedStatus: "Kısaltıldı", + attachmentEncoding: "Metin kodlaması", + attachmentEncodingReadFailed: "Ek, bu kodlamayla çözülemedi.", + attachmentUnsupportedProvider: "Bu sağlayıcı bağlantısı görsel eki gönderemiyor. Görseli kaldırın veya görsel destekleyen bir sağlayıcı seçin.", + attachmentUnsupportedFormat: "Seçili sağlayıcı bu görsel biçimini desteklemiyor. Kaldırın ya da PNG, JPEG veya WebP kullanın.", + attachmentPreview: "Eki önizle", + attachmentUnavailableAfterReload: "Yeniden yüklemeden sonra içerik kullanılamıyor; yeniden gönderilmeyecek", + attachmentUnsupportedDocument: "Bu dosya türü henüz desteklenmiyor. Bunun yerine görsel veya metin tabanlı dosyalar ekleyin.", + tableMentionEmpty: "Eşleşen tablo veya SQL dosyası yok", + tableMentionPlaceholderHint: "Bağlam için tablolardan veya SQL dosyalarından söz etmek üzere {'@'} yazın", + tableMentionTypes: { + table: "Tablo", + view: "Görünüm", + systemTable: "Sistem tablosu", + temporaryTable: "Geçici tablo", + }, + modes: { + ask: "Sor", + agent: "Agent", + }, + modeHints: { + ask: "Otomatik çalıştırmadan SQL ve açıklama üret", + agent: "Veriyi sorgulamak ve gerçek sonuçlardan yanıtlamak için araçları kullan", + }, + fixWithAi: "Yapay Zekâ ile Düzelt", + truncated: "Bağlam kısaltıldı", + contextSummary: "{database} · {tables} tablo", + autoSqlBlocked: "Yapay zekânın ürettiği SQL, otomatik çalıştırmak için fazla riskli göründü. Çalıştırmadan önce elle inceleyin.", + writeSqlConfirmationRequired: "Bu SQL veriyi veya şemayı değiştiriyor. Çalıştırmadan önce dikkatle inceleyin.", + writeSqlConfirmationQuestion: "Bu SQL bir kez çalıştırılsın mı?", + writeSqlConfirmYes: "Çalıştırmayı onayla", + writeSqlConfirmNo: "İptal", + writeSqlConfirmationReplyYes: "Yukarıda gösterilen SQL'i bir kez çalıştır. Tekrar onay isteme.", + writeSqlConfirmationReplyNo: "Yukarıda gösterilen SQL'i çalıştırma. Konuşmaya devam et.", + productionWriteBlocked: "Yapay zekâ, üretim veritabanında veri veya şema değişikliği çalıştıramaz. Bu SQL'i inceleyip DBX'te elle çalıştırın.", + proposalConfirmReplyYes: "Yukarıda önerdiğin eylemi gerçekleştir; tekrar onay isteme.", + proposalConfirmReplyNo: "Yukarıda belirtilen eylemi gerçekleştirme; geçerli konuşmaya devam et.", + proposalConfirmYes: "Evet, devam et", + proposalConfirmNo: "Hayır, teşekkürler", + proposalConfirmTitle: "Eylem onayı gerekli", + agentSteps: { + generated: "SQL üretildi", + noSql: "SQL bulunamadı", + safe: "Güvenlik denetimi geçildi", + needsConfirm: "Onay gerekiyor", + blocked: "Engellendi", + autoExecute: "Çalıştırmaya hazır", + notRequested: "Çalıştırma istenmedi", + skipped: "Çalıştırılmadı", + callingTool: "Araç çağrılıyor...", + executing: "Çalıştırılıyor…", + toolDone: "Araç tamamlandı", + toolError: "Araç hatası", + executeSafe: "Güvenlik denetimi geçildi · Çalıştırıldı", + executeBlocked: "Güvenlik denetimi tarafından engellendi", + contextCompacted: "Bağlam sıkıştırıldı", + }, + agentStepTitles: { + riskCheck: "Risk denetimi: {action} · {category} · {environment} · {reasons}", + blocked: "Çalıştırma, risk politikası tarafından engellendi. SQL'i elle inceleyin.", + requiresConfirmation: "Bu SQL çalıştırılmadan önce onay gerektirir.", + askMode: "Sor modu SQL'i otomatik çalıştırmaz.", + unsupportedAction: "Geçerli yapay zekâ eylemi SQL'i otomatik çalıştırmaz.", + noSql: "Yanıt, çalıştırılabilir bir SQL kod bloğu içermiyordu.", + notRequested: "Kullanıcı SQL'in çalıştırılmasını istemedi.", + skipped: "Bu adım çalıştırılmadı.", + }, + status: { + waitingModel: "Model yanıtı bekleniyor · {elapsed} sn çalışıyor", + waitingModelLive: "Model yanıtı bekleniyor", + generating: "Yanıt üretiliyor · {elapsed} sn çalışıyor", + generatingLive: "Yanıt üretiliyor", + runningTool: "Tur {turn} · {tool} çalıştırılıyor · {elapsed} sn", + runningToolAction: "· Çalışıyor", + runningToolElapsed: "· {elapsed} sn", + turnBadge: "Tur {turn}", + idle: "Bu adım bekleniyor · Son etkinlik {idle} sn önce", + idleLive: "Bu adım bekleniyor", + idleWithTool: "Bu adım bekleniyor · Son etkinlik {idle} sn önce · {tool} çalıştırılıyor", + longRunningHint: "Bu beklenenden uzun sürüyor. Beklemeye devam edebilir veya durdurabilirsiniz.", + cancelling: "İptal ediliyor…", + toolLabels: { + executeQuery: "Sorgu çalıştır", + executeSql: "SQL'i çalıştır", + listTables: "Tabloları listele", + getColumns: "Sütunları al", + getCurrentTime: "Geçerli saati al", + explainQuery: "Sorgu planını açıkla", + getSampleData: "Örnek veri al", + listCollections: "Koleksiyonları listele", + browseCollection: "Koleksiyona gözat", + }, + }, + proxy: "Proxy", + proxyEnable: "Yapay zekâ isteklerini proxy üzerinden gönder", + proxyUrl: "Proxy URL'si", + customHeaders: "Özel Başlıklar", + customHeadersAdd: "Başlık ekle", + customHeadersHint: "Ek başlıklar; model keşfi, bağlantı testleri, sohbet ve Agent istekleriyle birlikte gönderilir. Başlık değerleri hassas olabilir.", + customHeadersNamePlaceholder: "X-Tenant-ID", + customHeadersValuePlaceholder: "tenant-a", + customHeadersInvalidName: "Geçersiz başlık adı: {name}", + customHeadersInvalidValue: "Şu başlık için geçersiz değer: {name}", + customHeadersDuplicate: "Yinelenen başlık adı: {name}", + customHeadersReserved: "Bu başlık DBX tarafından yönetiliyor: {name}", + enableThinking: "Düşünme", + enableThinkingOn: "Etkin", + enableThinkingOff: "Devre dışı", + enableThinkingHint: "Bu seçenek yalnızca /chat/completions API'lerinde ve desteklenen modellerde etkilidir. Kapatıldığında belirteç kullanımını belirgin biçimde azaltabilir, ancak üretilen sonuçların niteliği bir miktar düşebilir.", + anthropicMessagesHint: "Anthropic Messages uyumlu API'ler genellikle /v1/messages kullanır.", + openAiCompatibleEndpointHint: "OpenAI uyumlu API'lerin çoğu /v1 yol önekini gerektirir.", + contextWindow: "Bağlam Penceresi", + contextWindowAuto: "Otomatik (model adından algıla)", + contextWindowHint: "Belirteç. Otomatik algılamak için boş bırakın. Yerel/özel modeller için elle ayarlayın.", + maxOutputTokens: "En Fazla Çıktı Belirteci", + maxOutputTokensAuto: "Otomatik (eyleme göre)", + maxOutputTokensHint: "Sağlayıcıya gönderilen, yapılandırma başına isteğe bağlı sınır. Aralık: {min}–{max}. Düşünme istekleri yine de en az 8192 belirteç kullanır.", + maxRetries: "En Fazla Yeniden Deneme", + maxRetriesHint: "Hız sınırlarında, zaman aşımlarında ve geçici ağ hatalarında yeniden dene. 0 = asla, en fazla 10.", + maxRetriesGlobal: "En Fazla Yeniden Deneme", + maxRetriesGlobalDescription: "Geçici API hatalarında (hız sınırı, zaman aşımı, ağ kesintisi) otomatik yeniden deneme sayısı. API tabanlı tüm yapay zekâ sağlayıcıları için geçerlidir. CLI sağlayıcıları etkilenmez.", + maxRetriesRange: "{min}–{max}, varsayılan {default}", + maxRetriesSaved: "En fazla yeniden deneme kaydedildi", + codexCliPath: "Codex CLI Yolu", + codexCliPathHint: "PATH üzerindeki codex komutunu kullanmak için boş bırakın. codex login ile ayrıca oturum açın.", + codexCliPathEnvError: "Codex CLI Yolu yalnızca çalıştırılabilir dosyanın yolunu içermelidir. Ortam değişkenlerini aşağıya ekleyin.", + codexCliEnv: "Ortam değişkenleri", + codexCliEnvAdd: "Değişken ekle", + codexCliEnvHint: "Codex CLI'ye iletilen isteğe bağlı değişkenler; örneğin HTTPS_PROXY, NO_PROXY, SSL_CERT_FILE veya CODEX_CA_CERTIFICATE.", + codexCliEnvKeyPlaceholder: "HTTPS_PROXY", + codexCliEnvValuePlaceholder: "http://proxy:9800", + codexCliEnvInvalidName: "Geçersiz ortam değişkeni adı: {name}", + codexCliEnvReservedName: "{name} değişkeni MCP sunucusu için DBX tarafından yönetiliyor ve burada ayarlanamaz.", + cliMcpRequiredTitle: "DBX MCP Sunucusu gerekli", + cliMcpRequiredDescription: "{provider}, veritabanı şemasına ve sorgu araçlarına erişmek için DBX MCP Sunucusu'nu kullanır. Bu sağlayıcıyı yapay zekâ asistanında kullanmadan önce kurun.", + cliPath: "{provider} Yolu", + cliPathHint: "PATH üzerindeki {command} komutunu kullanmak için boş bırakın. {loginCommand} ile ayrıca oturum açın.", + cliPathEnvError: "{provider} yolu yalnızca çalıştırılabilir dosyanın yolunu içermelidir. Ortam değişkenlerini aşağıya ekleyin.", + cliEnv: "Ortam değişkenleri", + cliEnvAdd: "Değişken ekle", + cliEnvHint: "{provider} sağlayıcısına iletilen isteğe bağlı değişkenler; örneğin HTTPS_PROXY, NO_PROXY veya SSL_CERT_FILE.", + cliEnvKeyPlaceholder: "HTTPS_PROXY", + cliEnvValuePlaceholder: "http://proxy:9800", + cliEnvInvalidName: "Geçersiz ortam değişkeni adı: {name}", + cliEnvReservedName: "{name} değişkeni MCP sunucusu için DBX tarafından yönetiliyor ve burada ayarlanamaz.", + codexMcpRequiredTitle: "DBX MCP Sunucusu gerekli", + codexMcpRequiredDescription: "Codex CLI, veritabanı şemasına ve sorgu araçlarına erişmek için DBX MCP Sunucusu'nu kullanır. Codex'i yapay zekâ asistanında kullanmadan önce kurun.", + reasoningLevel: "Akıl yürütme düzeyi", + reasoningLevelDefault: "Varsayılan", + reasoningLevelMinimal: "En az", + reasoningLevelLow: "Düşük", + reasoningLevelMedium: "Orta", + reasoningLevelHigh: "Yüksek", + reasoningLevelXhigh: "Çok yüksek", + reasoningLevelMax: "En yüksek", + reasoningLevelHint: "Codex CLI model_reasoning_effort değerini denetler. Varsayılan, Codex yapılandırmanızı kullanır.", + claudeCodeEffortHint: "Kullanılabilir düzeyler, yerel Claude Code CLI aracılığıyla seçili model tarafından bildirilir.", + claudeCodeEffortUnavailable: "Seçili model yapılandırılabilir çaba düzeyleri bildirmiyor. Claude Code kendi varsayılanını kullanacak.", + cliErrors: { + code: "Hata kodu: {code}", + details: "Tanılama ayrıntıları:", + reportHint: "Bu sorunu bildirirken aşağıdaki hata kodunu ve tanılama ayrıntılarını ekleyin.", + claudeCodeNotInstalled: "Claude Code CLI bulunamadı. Claude Code'u kurun veya Ayarlar > Yapay Zekâ bölümünden çalıştırılabilir yolunu belirtin.", + claudeCodeCliPathInvalid: "Claude Code CLI yolu geçersiz. Yalnızca Claude çalıştırılabilirini seçin ve ortam değişkenlerini ayrıca yapılandırın.", + claudeCodeEnvInvalid: "Bir Claude Code CLI ortam değişkeni adı geçersiz. HTTPS_PROXY gibi adlar kullanın.", + claudeCodeEnvReserved: "DBX tarafından yönetilen bir MCP ortam değişkeni geçersiz kılındı. Sağlayıcı yapılandırmasından DBX_MCP_* değişkenlerini kaldırın.", + claudeCodeNotAuthenticated: "Claude Code CLI kimlik doğrulaması yapılmamış. Bir terminalde `claude auth login` çalıştırıp tekrar deneyin.", + claudeCodeMcpConfigInvalid: "Claude Code, DBX MCP yapılandırmasını okuyamadı veya ayrıştıramadı. Claude Code CLI sürümünü ve çalıştırılabilir yolunu denetleyin.", + dbxMcpMissing: "Uyumlu bir DBX MCP Sunucusu kurulumu bulunamadı. Ayarlar > MCP bölümünü denetleyin, ardından yeniden kurun veya güncelleyin.", + claudeCodeMcpStartupFailed: "Claude Code, MCP yapılandırmasını yükledi ancak DBX MCP Sunucusu'nu başlatamadı. Ayarlar > MCP bölümünü ve aşağıdaki tanılamayı denetleyin.", + claudeCodeCommandLineTooLong: "Windows, Claude Code komutunu çok uzun olduğu için reddetti. DBX'i güncelleyip üretilen MCP yapılandırma dosyasıyla tekrar deneyin.", + claudeCodeRunFailed: "Claude Code CLI beklenmedik şekilde sonlandı. Hatalı çalıştırılabiliri veya CLI çıktısını belirlemek için aşağıdaki hata kodunu ve tanılamayı kullanın.", + piAgentNotInstalled: "Pi Coding Agent bulunamadı. Pi'yi kurun veya Ayarlar > Yapay Zekâ bölümünden çalıştırılabilir yolunu belirtin.", + piAgentCliPathInvalid: "Pi Coding Agent yolu geçersiz. Yalnızca Pi çalıştırılabilirini seçin ve ortam değişkenlerini ayrıca yapılandırın.", + piAgentEnvInvalid: "Bir Pi Coding Agent ortam değişkeni adı geçersiz. HTTPS_PROXY gibi adlar kullanın.", + piAgentEnvReserved: "DBX tarafından yönetilen bir Pi veya MCP ortam değişkeni geçersiz kılındı. Sağlayıcı yapılandırmasından DBX_PI_* ve DBX_MCP_* değişkenlerini kaldırın.", + piAgentNotAuthenticated: "Pi Coding Agent'ın kimliği doğrulanmış bir model sağlayıcısı yok. Pi ile bir sağlayıcı yapılandırın ya da oturum açıp tekrar deneyin.", + piAgentMcpStartupFailed: "Pi, kapsamlı DBX MCP köprüsünü başlatamadı. Ayarlar > MCP bölümünü ve aşağıdaki tanılamayı denetleyin.", + piAgentTimeout: "Pi Coding Agent, işlem zaman aşımına uğramadan önce yanıt vermedi.", + piAgentProtocolError: "Pi Coding Agent geçersiz bir RPC yanıtı döndürdü. Pi sürümünü ve aşağıdaki tanılamayı denetleyin.", + piAgentModelInvalid: "Seçili Pi model tanımlayıcısı geçersiz. Model listesini yenileyip bir sağlayıcı/model girdisi seçin.", + piAgentRunFailed: "Pi Coding Agent beklenmedik şekilde sonlandı. Hatalı çalıştırılabiliri veya CLI çıktısını belirlemek için aşağıdaki hata kodunu ve tanılamayı kullanın.", + openCodeNotInstalled: "OpenCode CLI bulunamadı. OpenCode'u kurun veya Ayarlar > Yapay Zekâ bölümünden çalıştırılabilir yolunu belirtin.", + openCodeCliPathInvalid: "OpenCode CLI yolu geçersiz. Yalnızca OpenCode çalıştırılabilirini seçin ve ortam değişkenlerini ayrıca yapılandırın.", + openCodeEnvInvalid: "Bir OpenCode CLI ortam değişkeni adı geçersiz. HTTPS_PROXY gibi adlar kullanın.", + openCodeEnvReserved: "Bir OpenCode veya DBX tarafından yönetilen ortam değişkeni geçersiz kılındı. Sağlayıcı yapılandırmasından OPENCODE denetim değişkenlerini ve DBX_MCP_* değişkenlerini kaldırın.", + openCodeNotAuthenticated: "OpenCode'un kimliği doğrulanmış bir model sağlayıcısı yok. `opencode auth login` çalıştırın ya da OpenCode içinde bir sağlayıcı yapılandırıp tekrar deneyin.", + openCodeMcpStartupFailed: "OpenCode, kapsamlı DBX MCP sunucusunu başlatamadı. Ayarlar > MCP bölümünü ve aşağıdaki tanılamayı denetleyin.", + openCodeTimeout: "OpenCode CLI, işlem zaman aşımına uğramadan önce yanıt vermedi.", + openCodeProtocolError: "OpenCode CLI geçersiz bir JSON olay akışı döndürdü. OpenCode sürümünü ve aşağıdaki tanılamayı denetleyin.", + openCodeRunFailed: "OpenCode CLI beklenmedik şekilde sonlandı. Hatalı çalıştırılabiliri veya CLI çıktısını belirlemek için aşağıdaki hata kodunu ve tanılamayı kullanın.", + cursorNotInstalled: "Cursor CLI bulunamadı. Cursor CLI'yi kurun veya Ayarlar > Yapay Zekâ bölümünden çalıştırılabilir yolunu belirtin.", + cursorCliPathInvalid: "Cursor CLI yolu geçersiz. Yalnızca agent çalıştırılabilirini seçin ve ortam değişkenlerini ayrıca yapılandırın.", + grokCliNotInstalled: "Grok CLI bulunamadı. Grok CLI'yi kurun veya Ayarlar > Yapay Zekâ bölümünden çalıştırılabilir yolunu belirtin.", + grokCliPathInvalid: "Grok CLI yolu geçersiz. Yalnızca grok çalıştırılabilirini seçin ve ortam değişkenlerini ayrıca yapılandırın.", + grokCliEnvInvalid: "Bir Grok CLI ortam değişkeni adı geçersiz. HTTPS_PROXY gibi adlar kullanın.", + grokCliEnvReserved: "DBX tarafından yönetilen bir MCP ortam değişkeni geçersiz kılındı. Sağlayıcı yapılandırmasından DBX_MCP_* değişkenlerini kaldırın.", + grokCliNotAuthenticated: "Grok CLI kimlik doğrulaması yapılmamış. Bir terminalde `grok login` çalıştırıp tekrar deneyin.", + grokCliMcpStartupFailed: "Grok, MCP yapılandırmasını yükledi ancak DBX MCP Sunucusu'nu başlatamadı. Ayarlar > MCP bölümünü ve aşağıdaki tanılamayı denetleyin.", + grokCliCommandLineTooLong: "Windows, Grok CLI komutunu çok uzun olduğu için reddetti. DBX'i güncelleyip üretilen istem dosyasıyla tekrar deneyin.", + grokCliRunFailed: "Grok CLI beklenmedik şekilde sonlandı. Hatalı çalıştırılabiliri veya CLI çıktısını belirlemek için aşağıdaki hata kodunu ve tanılamayı kullanın.", + codeBuddyNotInstalled: "CodeBuddy Code CLI bulunamadı. CodeBuddy Code'u kurun veya Ayarlar > Yapay Zekâ bölümünden çalıştırılabilir yolunu belirtin.", + codeBuddyCliPathInvalid: "CodeBuddy Code CLI yolu geçersiz. Yalnızca codebuddy çalıştırılabilirini seçin ve ortam değişkenlerini ayrıca yapılandırın.", + codeBuddyEnvInvalid: "Bir CodeBuddy ortam değişkeni adı geçersiz. HTTPS_PROXY gibi adlar kullanın.", + codeBuddyEnvReserved: "DBX tarafından yönetilen bir MCP ortam değişkeni geçersiz kılındı. Sağlayıcı yapılandırmasından DBX_MCP_* değişkenlerini kaldırın.", + codeBuddyNotAuthenticated: "CodeBuddy Code kimlik doğrulaması yapılmamış. Bir terminalde `codebuddy` komutunu açın, oturum açın ve tekrar deneyin.", + codeBuddyTimeout: "CodeBuddy Code CLI, işlem zaman aşımına uğramadan önce yanıt vermedi.", + codeBuddyMcpConfigInvalid: "CodeBuddy Code, geçici DBX MCP yapılandırmasını okuyamadı. Aşağıdaki tanılamayı denetleyin.", + codeBuddyMcpStartupFailed: "CodeBuddy Code, MCP yapılandırmasını yükledi ancak DBX MCP Sunucusu'nu başlatamadı. Ayarlar > MCP bölümünü ve aşağıdaki tanılamayı denetleyin.", + codeBuddyProtocolError: "CodeBuddy Code geçersiz bir denetim yanıtı veya JSON olay akışı döndürdü. CodeBuddy Code sürümünü ve aşağıdaki tanılamayı denetleyin.", + codeBuddyRunFailed: "CodeBuddy Code CLI beklenmedik şekilde sonlandı. Hatalı çalıştırılabiliri veya CLI çıktısını belirlemek için aşağıdaki hata kodunu ve tanılamayı kullanın.", + qoderNotInstalled: "Qoder CLI bulunamadı. Qoder CLI'yi kurun veya Ayarlar > Yapay Zekâ bölümünden çalıştırılabilir yolunu belirtin.", + qoderCliPathInvalid: "Qoder CLI yolu geçersiz. Yalnızca qodercli çalıştırılabilirini seçin ve ortam değişkenlerini ayrıca yapılandırın.", + qoderEnvInvalid: "Bir Qoder CLI ortam değişkeni adı geçersiz. HTTPS_PROXY veya QODER_PERSONAL_ACCESS_TOKEN gibi adlar kullanın.", + qoderEnvReserved: "DBX tarafından yönetilen bir MCP ortam değişkeni geçersiz kılındı. Sağlayıcı yapılandırmasından DBX_MCP_* değişkenlerini kaldırın.", + qoderNotAuthenticated: "Qoder CLI kimlik doğrulaması yapılmamış. Bir terminalde `qodercli login` çalıştırın ya da QODER_PERSONAL_ACCESS_TOKEN değişkenini yapılandırıp tekrar deneyin.", + qoderTimeout: "Qoder CLI, işlem zaman aşımına uğramadan önce yanıt vermedi.", + qoderMcpConfigInvalid: "Qoder CLI, geçici DBX MCP yapılandırmasını okuyamadı. Qoder CLI sürümünü ve aşağıdaki tanılamayı denetleyin.", + qoderMcpStartupFailed: "Qoder CLI, MCP yapılandırmasını yükledi ancak DBX MCP Sunucusu'nu başlatamadı. Ayarlar > MCP bölümünü ve aşağıdaki tanılamayı denetleyin.", + qoderProtocolError: "Qoder CLI geçersiz bir JSON olay akışı döndürdü. Qoder CLI sürümünü ve aşağıdaki tanılamayı denetleyin.", + qoderRunFailed: "Qoder CLI beklenmedik şekilde sonlandı. Hatalı çalıştırılabiliri veya CLI çıktısını belirlemek için aşağıdaki hata kodunu ve tanılamayı kullanın.", + cursorEnvInvalid: "Bir Cursor CLI ortam değişkeni adı geçersiz. HTTPS_PROXY gibi adlar kullanın.", + cursorEnvReserved: "Bir Cursor veya DBX tarafından yönetilen ortam değişkeni geçersiz kılındı. Sağlayıcı yapılandırmasından CURSOR_CONFIG_DIR, CURSOR_DATA_DIR ve DBX_MCP_* değişkenlerini kaldırın.", + cursorNotAuthenticated: "Cursor CLI kimlik doğrulaması yapılmamış. Bir terminalde `agent login` çalıştırıp tekrar deneyin.", + cursorMcpStartupFailed: "Cursor, kapsamlı DBX MCP sunucusunu başlatamadı. Ayarlar > MCP bölümünü ve aşağıdaki tanılamayı denetleyin.", + cursorTimeout: "Cursor CLI, işlem zaman aşımına uğramadan önce yanıt vermedi.", + cursorProtocolError: "Cursor CLI geçersiz bir JSON olay akışı döndürdü. Cursor CLI sürümünü ve aşağıdaki tanılamayı denetleyin.", + cursorRunFailed: "Cursor CLI beklenmedik şekilde sonlandı. Hatalı çalıştırılabiliri veya CLI çıktısını belirlemek için aşağıdaki hata kodunu ve tanılamayı kullanın.", + }, + actions: { + general: "Genel", + generate: "SQL Üret", + explain: "SQL'i Açıkla", + optimize: "SQL'i İyileştir", + fix: "Hatayı Düzelt", + convert: "Lehçe Dönüştür", + sampleData: "Örnek Veri", + query: "Veri Sorgula", + exploreSchema: "Şemayı İncele", + executeAndExplain: "Çalıştır ve Açıkla", + generateNoExec: "Üret (çalıştırma)", + }, + placeholders: { + general: "Bana istediğinizi sorun...", + generate: "Ne sorgulamak istediğinizi anlatın, örn. son 7 gündeki kullanıcı başına siparişler", + explain: "İsteğe bağlı: neyi anlamak istediğinizi ekleyin", + optimize: "İsteğe bağlı: bir hedef ekleyin, örn. tam tablo taramalarını azaltmak", + fix: "Hatayı yapıştırın veya beklenen sonucu anlatın", + convert: "örn. PostgreSQL / MySQL / SQL Server'a dönüştür", + sampleData: "Üretilecek örnek veriyi veya test ifadelerini anlatın", + query: "Neyin sorgulanacağını veya sayılacağını anlatın, örn. bu ayki bölgeye göre sipariş toplamları", + exploreSchema: "İncelenecek tabloyu veya yapıyı anlatın, örn. orders tablosunun sütunları ve dizinleri", + executeAndExplain: "İsteğe bağlı: açıklamada neye odaklanılacağını ekleyin", + }, + editMessage: "Mesajı düzenle", + editResend: "Yeniden gönder", + editCancel: "İptal", + cannotDeleteActiveConfig: "Şu anda etkin olan yapılandırma silinemez. Önce başka bir yapılandırmaya geçin.", + globalInstructions: "Genel Özel Yönergeler", + globalInstructionsDescription: "Tüm yapay zekâ konuşmalarına otomatik olarak uygulanır.", + globalInstructionsCharCount: "{count}/{max} karakter", + globalInstructionsSaved: "Genel yönergeler kaydedildi", + globalInstructionsSave: "Kaydet", + globalInstructionsTooLong: "Genel yönergeler çok uzun (en fazla {max} karakter)", + customInstructionsLoadFailed: "Özel yapay zekâ yönergeleri yüklenemedi. Lütfen tekrar deneyin.", + maxAgentTurns: "Agent Tur Sınırı", + maxAgentTurnsDescription: "Bir API agent çalıştırmasının duraklayıp devam etmenizi istemeden önce yapabileceği en fazla araç çağrısı turu. CLI sağlayıcıları kendi çalıştırma sınırlarını kullanır.", + maxAgentTurnsRange: "{min}–{max}, varsayılan {default}", + maxAgentTurnsSaved: "Agent tur sınırı kaydedildi", + defaultAiMode: "Varsayılan Yapay Zekâ Modu", + defaultAiModeDescription: "Yeni bir yapay zekâ konuşması başlatılırken kullanılan mod. Geçerli konuşmada mod değiştirmek bu ayarı değiştirmez.", + promptTemplates: "Senaryo İstem Şablonları", + promptTemplatesDescription: "Senaryoya özgü kuralları eklemek için yapay zekâ asistanında bir veya daha fazla şablon seçin.", + promptTemplateNew: "Yeni Şablon", + promptTemplateEdit: "Şablonu Düzenle", + promptTemplateName: "Şablon Adı", + promptTemplateNamePlaceholder: "örn. Üretim VT kuralları", + promptTemplateContent: "Şablon İçeriği", + promptTemplateContentPlaceholder: "Kuralı veya yönergeyi anlatın...", + promptTemplateNameEmpty: "Şablon adı boş olamaz", + promptTemplateNameExists: "'{name}' adlı şablon zaten var", + promptTemplateContentRequired: "Şablon içeriği boş olamaz", + promptTemplateDeleteTitle: "Şablonu Sil", + promptTemplateDeleteConfirm: "'{name}' şablonu silinsin mi? Bu işlem geri alınamaz.", + promptTemplateTooLong: "Şablon içeriği çok uzun (en fazla {max} karakter)", + promptTemplateNameTooLong: "Şablon adı çok uzun (en fazla {max} karakter)", + promptTemplateSaved: "Şablon kaydedildi", + promptTemplateDeleted: "Şablon silindi", + promptTemplateNoTemplates: "Henüz şablon yok. Başlamak için bir tane oluşturun.", + promptTemplateManage: "Şablonları Yönet", + promptTemplateSavedHint: "Değişiklikler otomatik olarak kaydedilir.", + templateSelectorNone: "Seçilmedi", + templateSelectorButton: "Şablonlar", + templateSelectorLabel: "Şablonlar: {label}", + templateSelectorDeselectAll: "Tüm Seçimleri Kaldır", + templateSelectorLoading: "Yükleniyor...", + templateSelectorEmpty: "Şablon yok. Eklemek için Yönet'e tıklayın.", + templateSelectorTooLong: "Seçili şablonlar toplam içerik sınırını aşıyor ({max} karakter). Devam etmek için bazılarının seçimini kaldırın.", + templateSetDefault: "Varsayılan yap", + templateDefaultsTitle: "Veritabanı türleri için varsayılan", + templateDefaultsEmpty: "Henüz hiçbir veritabanı türü için varsayılan değil. Varsayılan şablonlar, yapay zekâ paneli eşleşen bir bağlantıda açıldığında otomatik olarak uygulanır.", + templateDefaultBadgeTitle: "{type} için varsayılan şablon", + exportMarkdown: "Markdown Olarak Dışa Aktar", + analysis: "Yapay Zekâ Analizi", + }, + contextMenu: { + openConnection: "Bağlantıyı Aç", + closeConnection: "Bağlantıyı Kapat", + closeSelectedConnections: "Seçili {count} Bağlantıyı Kapat", + closeDatabaseConnection: "Veritabanı Bağlantısını Kapat", + deleteConnection: "Bağlantıyı Sil", + deleteSelectedConnections: "Seçili {count} Bağlantıyı Sil", + confirmDeleteTitle: "Bağlantıyı Sil", + confirmDeleteMessage: '"{name}" silinsin mi? Bu işlem geri alınamaz.', + confirmDeleteSelectedMessage: "Seçili {count} bağlantıyı silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + editConnection: "Bağlantıyı Düzenle", + revealDatabaseFile: "Dosya Yöneticisinde Göster", + selectVisibleDatabases: "Görünür Veritabanlarını Seç", + configureVisibleObjects: "Görünür Nesne Filtresi", + userAdmin: "Kullanıcılar ve Yetkiler", + openUserAdmin: "Kullanıcılar ve Yetkileri Aç", + processList: "İşlem Listesi", + sqlServerTrace: "Etkinlik İzleme", + serverDashboard: "Sunucu Panosu", + damengUsers: "Dameng Kullanıcıları", + openDamengUsers: "Dameng Kullanıcı Yönetimini Aç", + damengRoles: "Dameng Rolleri", + openDamengRoles: "Dameng Rol Yönetimini Aç", + damengJobAdmin: "Dameng Agent İşleri", + openDamengJobAdmin: "Dameng Agent İşlerini Aç", + duplicateConnection: "Bağlantıyı Çoğalt", + duplicateSelectedConnections: "Seçili {count} Bağlantıyı Çoğalt", + newQuery: "Yeni Sorgu", + addToAi: "Yapay Zekâya Ekle", + addToAiMultiple: "Yapay Zekâya Ekle ({count} tablo)", + instanceInfo: "Örnek Bilgisi", + newSql: "Yeni SQL", + generateSql: "SQL Üret", + newInsert: "Yeni Insert", + newUpdate: "Yeni Update", + sqlHistory: "Sorgu Geçmişi", + noSqlHistory: "İlgili SQL yok", + openObjectBrowser: "Nesnelere Gözat", + openDatabaseBrowser: "Veritabanlarına Gözat", + viewData: "Verileri Görüntüle", + openInNewDataTab: "Yeni Sekmede Görüntüle", + editStructure: "Yapıyı Düzenle", + editColumn: "Sütunu Düzenle", + editIndex: "Dizini Düzenle", + refreshChildren: "Yenile", + expandAll: "Tümünü Genişlet", + tableNameFilters: "Filtreler...", + tableNameFiltersDescription: "Yalnızca dâhil etme listesiyle eşleşen nesne adlarını göster, ardından hariç tutma listesiyle eşleşen adları gizle. Her satıra bir SQL LIKE deseni yazın.", + tableNameFilterInclude: "Dâhil edilecek nesne adı desenleri", + tableNameFilterExclude: "Hariç tutulacak nesne adı desenleri", + tableNameFilterIncludePlaceholder: "Örnek:\nads_%\nuser_%", + tableNameFilterExcludePlaceholder: "Örnek:\n%_bak\ntmp_%", + tableNameFilterLikeHint: "SQL LIKE sözdizimini kullanın: % herhangi bir karakter dizisiyle, _ tek bir karakterle eşleşir. Eşleştirme büyük/küçük harfe duyarsızdır.", + pin: "Sabitle", + reorderPinned: "Sabitlenmiş öğeyi yeniden sırala", + unpin: "Sabitlemeyi kaldır", + fixTab: "Sekmeyi Sabitle", + unfixTab: "Sekme Sabitlemesini Kaldır", + refreshTab: "Verileri Yenile", + renameTab: "Sekmeyi Yeniden Adlandır", + duplicateTab: "Sekmeyi Çoğalt", + compactTabTitle: "Sekme Başlıklarını Kısalt", + fullTabTitle: "Tam Sekme Başlıklarını Göster", + closeTab: "Sekmeyi Kapat", + editTabGroup: "Sekme Grubunu Düzenle", + resetTabGroup: "Sekme Grubunu Sıfırla", + closeTabGroup: "Sekme Grubunu Kapat", + closeFixedTab: "Sabit Sekmeyi Kapat", + closeLeftTabs: "Soldaki Sekmeleri Kapat", + closeRightTabs: "Sağdaki Sekmeleri Kapat", + closeOtherTabs: "Diğer Sekmeleri Kapat", + closeOtherRegularTabs: "Diğer Normal Sekmeleri Kapat", + closeOtherFixedTabs: "Diğer Sabit Sekmeleri Kapat", + closeAllTabs: "Tüm Sekmeleri Kapat", + closeAllRegularTabs: "Tüm Normal Sekmeleri Kapat", + closeAllFixedTabs: "Tüm Sabit Sekmeleri Kapat", + copyName: "Adı Kopyala", + name: "Ad", + fullPath: "Tam Yol", + copyFinalProxyPort: "Son Proxy Portunu Kopyala", + finalProxyPortCopied: "Son proxy portu {port} kopyalandı", + setDefaultDatabase: "Varsayılan Veritabanı Yap", + clearDefaultDatabase: "Varsayılan Veritabanını Temizle", + setDefaultSchema: "Varsayılan Şema Yap", + clearDefaultSchema: "Varsayılan Şemayı Temizle", + exportDatabase: "Veritabanını Dışa Aktar", + exportAllDatabases: "Tüm Veritabanlarını Dışa Aktar", + exportDatabaseSuccess: "{count} tablo dışa aktarıldı, her biri en fazla {limit} satır", + exportDatabaseFailed: "Veritabanı dışa aktarılamadı: {message}", + backupSqliteDatabase: "SQLite Veritabanını Yedekle", + restoreSqliteDatabase: "SQLite Veritabanını Geri Yükle", + backupSqliteDatabaseInProgress: "SQLite veritabanı yedekleniyor...", + backupSqliteDatabaseSuccess: "SQLite veritabanı yedeklendi", + backupSqliteDatabaseFailed: "SQLite veritabanı yedeklenemedi: {message}", + restoreSqliteDatabaseInProgress: "SQLite veritabanı geri yükleniyor...", + restoreSqliteDatabaseSuccess: "SQLite veritabanı geri yüklendi", + restoreSqliteDatabaseFailed: "SQLite veritabanı geri yüklenemedi: {message}", + importData: "Veri İçe Aktar", + exportData: "Veri Dışa Aktar", + exportDataMultiple: "Veri Dışa Aktar ({count} tablo)", + exportDataSelectDirectory: "Dışa aktarma klasörünü seçin", + exportDataMultipleSuccess: "{count} tablo dışa aktarıldı", + exportStructure: "Yapıyı Dışa Aktar", + exportStructurePreviewTitle: "Yapı - {name}", + exportStructurePreviewTitleMultiple: "Yapı - {count} nesne", + exportStructureLoading: "Yapı yükleniyor...", + copyStructure: "Yapıyı Kopyala", + copyStructureAs: "Yapıyı Şu Biçimde Kopyala", + copyStructureAsTsv: "TSV (Excel için)", + copyStructureAsMarkdown: "Markdown Tablosu", + structureDocTable: "Tablo", + structureDocColumn: "Sütun", + structureDocType: "Tür", + structureDocPrimaryKey: "Birincil Anahtar", + structureDocNullable: "Boş olabilir", + structureDocDefault: "Varsayılan", + structureDocComment: "Açıklama", + structureDocYes: "Evet", + structureDocNo: "Hayır", + structureDocCopied: "Yapı kopyalandı", + structureDocCopyFallbackHint: "Otomatik kopyalama engellendi. Yeniden Kopyala'ya tıklayın ya da aşağıdaki içeriği seçin.", + saveStructure: "SQL'i Kaydet", + exportStructureCopied: "Yapı kopyalandı", + createTable: "Tablo Oluştur", + createView: "Görünüm Oluştur", + createProcedure: "Yordam Oluştur", + createFunction: "İşlev Oluştur", + createTrigger: "Tetikleyici Oluştur", + dropTable: "Tabloyu Sil", + emptyTable: "Tabloyu Boşalt", + truncateTable: "Tabloyu Truncate Et", + vacuumTable: "VACUUM Çalıştır", + vacuumTableTitle: "VACUUM Çalıştır", + vacuumTableMessage: '"{name}" üzerinde VACUUM çalıştırılsın mı?', + vacuumTableAnalyze: "ANALYZE", + vacuumTableAnalyzeHint: "İyileştirici istatistiklerini yenile. Bu, sonraki sorgu planlarını değiştirebilir ve ek CPU ile disk G/Ç yükü getirir.", + vacuumTableFull: "FULL", + vacuumTableFullHint: "Yüksek risk: tabloyu tümüyle yeniden yazar ve dışlayıcı kilit alır. Okuma ve yazma işlemleri engellenebilir, ek disk alanı gerekebilir.", + vacuumTableDefaultRisk: "Rutin bakım: ek disk G/Ç oluşabilir ve süre tablo boyutuna bağlıdır.", + vacuumTableAnalyzeRisk: "İyileştirici istatistikleri yenilenecek; bu, sonraki sorgu planlarını değiştirebilir.", + vacuumTableFullRisk: "Yüksek risk: tabloyu tümüyle yeniden yazar ve dışlayıcı kilit alır; okuma ile yazmayı engelleyebilir ve ek disk alanı gerektirebilir.", + vacuumTableFullConfirm: "VACUUM FULL Çalıştır", + vacuumTableRunning: "VACUUM çalışıyor...", + vacuumTableRunningHint: "VACUUM çalışıyor. Büyük tablolarda uzun sürebilir; bu işlemi açık tutun.", + vacuumTableSuccess: '"{name}" için VACUUM tamamlandı', + mysqlAutoIncrement: "AUTO_INCREMENT Ayarla", + mysqlAutoIncrementTitle: "MySQL AUTO_INCREMENT Ayarla", + mysqlAutoIncrementMessage: '"{name}" için istenen bir sonraki AUTO_INCREMENT değeri ayarlansın mı?', + mysqlAutoIncrementNonemptyHint: "Boş olmayan bir tabloda MySQL, kullanılmış kimlikleri yeniden kullanmaz. Geçerli sonraki değer en az MAX(id) + 1 olarak kalır.", + mysqlAutoIncrementValue: "İstenen sonraki değer", + duplicateStructure: "Yeni Tablo Olarak Çoğalt", + renameObject: "Yeniden Adlandır", + renameObjectTitle: "Nesneyi Yeniden Adlandır", + renameObjectNamePlaceholder: "Yeni ad", + renameObjectSuccess: '"{oldName}", "{newName}" olarak yeniden adlandırıldı', + renameDatabase: "Veritabanını Yeniden Adlandır", + renameDatabaseTitle: "Veritabanını Yeniden Adlandır", + renameDatabaseNotOwner: '"{name}" veritabanını yalnızca sahibi yeniden adlandırabilir.', + renameDatabasePreparedTransactions: '"{name}" veritabanında bekleyen {count} hazırlanmış işlem var. Lütfen önce bunları COMMIT veya ROLLBACK edin.', + confirmDropTableTitle: "Tabloyu Sil", + confirmDropTableMessage: '"{name}" tablosunu silmek istediğinizden emin misiniz? Bu, tabloyu ve tüm verilerini kalıcı olarak siler.', + dropTableCascade: "CASCADE kullan", + dropTableCascadeHint: "Görünümler gibi bağımlı nesneleri de sil. PostgreSQL'in varsayılan RESTRICT davranışını kullanmak için kapalı bırakın.", + truncateTableCascade: "CASCADE kullan", + truncateTableCascadeHint: "Bu tabloya yabancı anahtarla başvuran tabloları da truncate et. PostgreSQL'in varsayılan RESTRICT davranışını kullanmak için kapalı bırakın.", + confirmEmptyTableTitle: "Tabloyu Boşalt", + confirmEmptyTableMessage: '"{name}" tablosundaki tüm verileri silmek istediğinizden emin misiniz?', + confirmTruncateTableTitle: "Tabloyu Truncate Et", + confirmTruncateTableMessage: '"{name}" tablosunu truncate etmek istediğinizden emin misiniz? Bu, tüm satırları kaldırır.', + mysqlAutoIncrementSuccess: '"{name}" tablosu için AUTO_INCREMENT {value} istendi', + dropTableSuccess: '"{name}" tablosu silindi', + editView: "Görünümü Düzenle", + viewSource: "Kaynağı Görüntüle", + viewObject: "Görünüm", + changeOpenMode: "Açılış modunu değiştir", + viewDetails: "Ayrıntıları Görüntüle", + viewDdl: "DDL'i Görüntüle", + viewDdlLoading: "DDL yükleniyor...", + ddlCopied: "DDL kopyalandı", + refreshDdlOnOpen: "Her açılışta yenile", + refreshDdlOnOpenHint: "Etkinleştirildiğinde DDL her açılışta veritabanından yeniden yüklenir; kapatıldığında önbellekteki veri tercih edilir", + dropObject: "Nesneyi Sil", + dropEventSuccess: '"{name}" olayı silindi', + editObject: "Nesneyi Düzenle", + createEvent: "Olay Oluştur", + eventEditorTitle: "MySQL Olayı", + eventDefinition: "Tanım", + eventSchedule: "Zamanlama", + eventComment: "Açıklama", + eventSqlPreview: "SQL önizlemesi", + eventName: "Ad", + eventBodyPlaceholder: "Olay gövdesi, örn. CALL procedure();", + eventExecuteAt: "Şu anda çalıştır", + eventIntervalValue: "Aralık değeri", + eventIntervalUnit: "Aralık birimi", + eventStarts: "Başlangıç", + eventEnds: "Bitiş", + eventCompletion: "Tamamlanma", + eventStatus: "Durum", + eventCommentPlaceholder: "İsteğe bağlı açıklama", + eventLoading: "Yükleniyor...", + eventCancel: "İptal", + eventSave: "Kaydet", + dropView: "Görünümü Sil", + dropColumn: "Sütunu Sil", + dropIndex: "Dizini Sil", + dropAllIndexes: "Tüm Dizinleri Sil", + createMongoIndex: "Dizin Oluştur", + createMongoIndexTitle: 'Dizin Oluştur: "{collection}"', + createMongoIndexFields: "Dizin alanları", + createMongoIndexFieldRequired: "Her dizin satırı için bir alan seçin veya girin.", + mongoIndexAscending: "Artan (1)", + mongoIndexDescending: "Azalan (-1)", + createMongoIndexNamePlaceholder: "Otomatik olarak üretildi", + createMongoIndexNameHint: "Adı alanlardan ve türlerden MongoDB'nin üretmesi için boş bırakın.", + createMongoIndexSparse: "Seyrek", + createMongoIndexTtlInvalid: "Sona erme süresi tam sayı saniye olmalıdır.", + createMongoIndexFilterInvalid: 'Kısmi filtre bir nesne olmalıdır, örneğin { "status": "active" }.', + createMongoIndexBucketSizeInvalid: "Bucket boyutu tam sayı olmalıdır.", + manageMongoIndexes: "Dizinleri Yönet", + manageMongoIndexesTitle: 'Dizinler: "{collection}"', + mongoIndexKeys: "Anahtarlar", + mongoIndexEmpty: "Bu koleksiyonun henüz dizini yok.", + mongoIndexSelectHint: "Özelliklerini görmek için bir dizin seçin.", + mongoIndexReadOnlyHint: "MongoDB mevcut bir dizini değiştiremez. Özelliklerini değiştirmek için silip yenisini oluşturun.", + editMongoIndex: "Dizini Düzenle", + saveMongoIndex: "Kaydet", + mongoIndexRebuildHint: "Kaydetmek dizini yeniden oluşturur: eski dizin silinir ve yenisi oluşturulur.", + mongoEditIndexSuccess: '"{oldName}" dizini, "{collection}" üzerinde "{newName}" olarak yeniden oluşturuldu', + mongoEditIndexNotFound: '"{name}" dizini sunucuda artık yok. Liste güncel olmayabilir — yenileyip tekrar deneyin.', + mongoEditIndexStale: '"{name}" dizini, iletişim kutusu açıldıktan sonra başka bir oturum tarafından değiştirildi. Listeyi yenileyip tekrar deneyin.', + mongoEditIndexIncompleteSameName: '"{name}" dizininin eksiksiz bir sunucu tanımı yok, bu yüzden aynı adla yıkıcı biçimde yeniden oluşturulamaz.', + mongoEditIndexDropFailed: '"{name}" dizini silinemedi; yerine yenisi oluşturulmadı: {error}', + mongoEditIndexDropFailedAfterCreate: '"{newName}" dizini oluşturuldu, ancak özgün "{oldName}" dizini silinemedi: {error}', + mongoEditIndexCreateFailedRolledBack: '"{name}" dizininin yerine yenisi oluşturulamadı, bu yüzden özgün dizin geri yüklendi: {error}', + mongoEditIndexCreateAndRollbackFailed: '"{name}" dizininin yerine yenisi oluşturulamadı ({createError}) ve özgün dizini geri yükleme de başarısız oldu ({rollbackError}).', + mongoIndexExtraOptionsPreserved: "Sunucunun bildirdiği seçenekler (collation, wildcardProjection, weights, …) yeniden oluşturmada korunur.", + dropForeignKey: "Yabancı Anahtarı Sil", + dropTrigger: "Tetikleyiciyi Sil", + batchDrop: "Seçilenleri sil ({count})", + batchEmpty: "Seçilenleri boşalt ({count})", + batchTruncate: "Seçilenleri truncate et ({count})", + batchDropIndexes: "Dizinleri Sil ({count})", + executeProcedure: "Yordamı Çalıştır", + compileObject: "Derle", + compileObjectSuccess: '"{name}" başarıyla derlendi', + confirmExecuteProcedureTitle: "Yordamı Çalıştır", + confirmExecuteProcedureMessage: '"{name}" yordamı çalıştırılsın mı? Önce parametre değerlerini doldurabilir veya değiştirebilirsiniz.', + loadingProcedureParameters: "Parametreler yükleniyor...", + procedureParametersUnavailable: "Parametre meta verisi yüklenemedi. Yine de aşağıdaki SQL'i düzenleyip çalıştırabilirsiniz.", + noProcedureParameters: "Parametre bulunamadı. Geçerli SQL gösterildiği gibi çalıştırılacak.", + inputParameters: "{count} girdi parametresi", + outputParameters: "{count} çıktı parametresi", + parameterName: "Ad", + parameterType: "Tür", + parameterMode: "Mod", + parameterValue: "Değer", + parameterNull: "NULL", + parameterDefault: "DEFAULT", + parameterDefaultHint: "DEFAULT işaretlendiğinde DBX o argümanı atlar ve veritabanı yordamın varsayılanını kullanır.", + parameterValuePlaceholder: "Değer girin", + outputOnly: "Yalnızca çıktı", + sqlPreview: "SQL Önizlemesi", + resetSqlPreview: "SQL'i Sıfırla", + openInSqlEditor: "Düzenleyicide Aç", + dropProcedure: "Yordamı Sil", + dropFunction: "İşlevi Sil", + manageExtension: "Uzantıları Yönet...", + dropExtension: "Uzantıyı Sil", + confirmDropViewTitle: "Görünümü Sil", + confirmDropViewMessage: '"{name}" görünümünü silmek istediğinizden emin misiniz?', + confirmDropObjectTitle: "Nesneyi Sil", + confirmDropObjectMessage: '"{name}" nesnesini silmek istediğinizden emin misiniz?', + confirmDropColumnTitle: "Sütunu Sil", + confirmDropIndexTitle: "Dizini Sil", + confirmDropMongoIndexMessage: '"{collection}" koleksiyonundaki "{name}" dizinini silmek istediğinizden emin misiniz?', + confirmDropMongoAllIndexesMessage: '"{name}" koleksiyonundaki silinebilir tüm dizinleri silmek istediğinizden emin misiniz?', + confirmDropMongoAllIndexesDetails: 'MongoDB "_id_" dizinini korur. Parça anahtarı gerektiren bazı dizinler de kalabilir; sonuçta yalnızca gerçekten silinen dizinler listelenir.', + confirmDropForeignKeyTitle: "Yabancı Anahtarı Sil", + confirmDropTriggerTitle: "Tetikleyiciyi Sil", + confirmDropTableChildObjectMessage: '"{table}" içinden "{name}" nesnesini silmek istediğinizden emin misiniz?', + confirmDropBatchIndexesMessage: '"{table}" tablosundan seçili {count} dizini silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.', + confirmBatchDropTitle: "Seçili Nesneleri Sil", + confirmBatchDropMessage: "Seçili {count} nesneyi silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + confirmBatchEmptyTitle: "Seçili Tabloları Boşalt", + confirmBatchEmptyMessage: "Seçili {count} tablodaki tüm verileri silmek istediğinizden emin misiniz?", + confirmBatchTruncateTitle: "Seçili Tabloları Truncate Et", + confirmBatchTruncateMessage: "Seçili {count} tabloyu truncate etmek istediğinizden emin misiniz? Bu, tüm satırları kaldırır.", + confirmDropProcedureTitle: "Yordamı Sil", + confirmDropProcedureMessage: '"{name}" yordamını silmek istediğinizden emin misiniz?', + confirmDropFunctionTitle: "İşlevi Sil", + confirmDropFunctionMessage: '"{name}" işlevini silmek istediğinizden emin misiniz?', + confirmDropEventTitle: "Olayı Sil", + confirmDropEventMessage: '"{name}" olayını silmek istediğinizden emin misiniz?', + dropViewSuccess: '"{name}" görünümü silindi', + dropProcedureSuccess: '"{name}" yordamı silindi', + dropFunctionSuccess: '"{name}" işlevi silindi', + dropTableChildObjectSuccess: '"{name}" silindi', + dropAllIndexesSuccess: '"{name}" tablosundan {count} dizin silindi', + dropIndexesPartialFailure: "{success} dizin silindi; {failed} tanesi başarısız oldu.", + createMongoIndexSuccess: '"{collection}" üzerinde "{name}" dizini oluşturuldu', + mongoIndexRefreshFailed: "İşlemden sonra dizin listesi yenilenemedi: {message}", + batchDropSuccess: "{count} nesne silindi", + batchEmptySuccess: "{count} tablo boşaltıldı", + batchEmptyPartialFail: "{success} tablo boşaltıldı, {failed} tanesi başarısız oldu", + batchEmptySubmitted: "{count} tablo için boşaltma görevleri gönderildi", + batchEmptySubmittedPartial: "{success} boşaltma görevi gönderildi, {failed} tanesi başarısız oldu", + batchTruncateSuccess: "{count} tablo truncate edildi", + emptyTableSuccess: '"{name}" içindeki tüm veriler silindi', + emptyTableSubmitted: '"{name}" için boşaltma görevi gönderildi', + truncateTableSuccess: '"{name}" tablosu truncate edildi', + duplicateStructureSuccess: 'Tablo "{name}" olarak çoğaltıldı', + tableOperationFailed: "İşlem başarısız: {message}", + tableOperationTimedOut: '"{name}" üzerindeki işlem beklenenden uzun sürüyor ve iptal edilmedi — veritabanında hâlâ çalışıyor olabilir. Sonucu daha sonra denetleyin ya da durdurmak için İptal\'e tıklayın. ({message})', + tableOperationCancelled: '"{name}" üzerindeki işlem iptal edildi', + tableOperationCancelUnconfirmed: '"{name}" için iptal isteği veritabanı tarafından onaylanmadı — işlem bitmiş ya da hâlâ çalışıyor olabilir. Emin olmak için sonucu denetleyin. ({message})', + tableOperationCancelPending: '"{name}" için iptal isteği henüz onaylanmadı — işlem veritabanında hâlâ çalışıyor olabilir. Yeniden İptal\'i deneyebilir ya da birazdan tekrar bakabilirsiniz.', + dangerOperationAlreadyRunning: "Tehlikeli başka bir işlem hâlâ çalışıyor. Yenisini başlatmadan önce bitmesini bekleyin veya iptal edin.", + objectDropRefreshFailed: "Nesneler silindi, ancak kenar çubuğu yenilenemedi: {message}", + duplicateNameTitle: "Yeni Tablo Olarak Çoğalt", + duplicateNamePlaceholder: "Yeni tablo adı", + copyTable: "Tabloyu Kopyala", + pasteTable: "Tabloyu Yapıştır", + pasteOptionStructureAndData: "Yapı ve Veri", + pasteOptionStructureOnly: "Yalnızca Yapı", + pasteOptionDataOnly: "Yalnızca Veri", + pasteTableSuccess: 'Tablo "{name}" olarak yapıştırıldı', + pasteTableConfirmTitle: "Tabloyu Yapıştır", + pasteTableConfirmMessage: "Tabloyu panodan yapıştır", + batchPasteTitle: "Tabloları Yapıştır", + batchPasteSuccess: "{count} tablo başarıyla yapıştırıldı", + batchPastePartialFail: "{success} tablo yapıştırıldı, {failed} tanesi başarısız oldu", + pasteTableRefreshFailed: "Tablolar yapıştırıldı, ancak nesne listesi yenilenemedi: {message}", + pasteTableCancelledAfterPartial: "Yapıştırma iptal edildi. İptalden önce oluşturulan tablolar yenilendi; pano korundu.", + noTableToPaste: "Yapıştırılacak tablo yok", + pasteTableClipboardUpdated: "Tablo panoya kopyalandı", + createDatabase: "Veritabanı Oluştur", + createDuckDbFile: "Veritabanı Dosyası Oluştur", + attachSqliteDatabase: "SQLite Veritabanı Ekle", + dropDatabase: "Veritabanını Sil", + confirmDropDatabaseTitle: "Veritabanını Sil", + confirmDropDatabaseMessage: '"{name}" veritabanını silmek istediğinizden emin misiniz? Bu, veritabanını ve tüm verilerini kalıcı olarak siler.', + createDatabaseSuccess: '"{name}" veritabanı oluşturuldu', + mysqlCreateDatabasePermissionHint: "Geçerli MySQL hesabı bu veritabanını oluşturamıyor. root adlı bir hesabın yönetici yetkileri olması şart değildir. CREATE yetkisi vermek için GRANT OPTION yetkisine sahip bir yönetici hesabı kullanın, ardından tekrar deneyin.", + createDatabasePartial: '"{name}" veritabanı oluşturuldu, ancak bazı yetkilendirmeler başarısız oldu', + createDatabaseFailed: '"{name}" veritabanı oluşturulamadı', + createDatabaseUsers: "Kullanıcılara erişim ver", + createDatabaseUsersHint: "Seçili kullanıcılar, veritabanı oluşturulduktan sonra tam yerel erişim alır.", + createDatabaseUsersSelected: "{count} seçildi", + createDatabaseUsersLoading: "Kullanıcılar yükleniyor...", + createDatabaseUsersLoadFailed: "Kullanıcılar yüklenemedi: {message}", + previewCreateDatabaseSql: "SQL Önizleme", + createDatabaseSqlPreview: "Veritabanı Oluşturma SQL Önizlemesi", + applyCreateDatabaseSql: "Oluştur ve Yetki Ver", + closeCreateDatabaseResult: "Kapat", + createDatabaseStep: '"{database}" veritabanını oluştur', + createDatabaseGrantStep: '"{database}" veritabanında {user} kullanıcısına erişim ver', + createDatabaseGrantObjectsStep: '"{database}" veritabanında {user} kullanıcısına şema ve nesne erişimi ver', + createDatabaseStepSkipped: "Gerekli bir önceki adım başarısız olduğu için atlandı.", + editDatabaseProperties: "Veritabanı Özelliklerini Düzenle", + editDatabasePropertiesTitle: 'Veritabanı Özelliklerini Düzenle: "{name}"', + editDatabasePropertiesSaving: "Kaydediliyor...", + editDatabasePropertiesSuccess: '"{name}" veritabanının özellikleri güncellendi', + editDatabaseComment: "Veritabanı açıklaması", + editDatabaseCommentPlaceholder: "Veritabanı açıklamasını girin...", + createDuckDbFileSuccess: '"{name}" DuckDB veritabanı dosyası oluşturuldu ve eklendi', + createDuckDbFileDesktopOnly: "DuckDB veritabanı dosyası oluşturmak yalnızca masaüstü uygulamasında kullanılabilir", + attachSqliteDatabaseSuccess: '"{name}" SQLite veritabanı eklendi', + attachSqliteDatabaseDesktopOnly: "SQLite veritabanı dosyası eklemek yalnızca masaüstü uygulamasında kullanılabilir", + dropDatabaseSuccess: '"{name}" veritabanı silindi', + dropCollection: "Koleksiyonu Sil", + elasticsearchViewMapping: "Eşlemeyi Görüntüle", + elasticsearchViewSettings: "Dizin Ayarlarını Görüntüle", + elasticsearchViewStats: "Dizin İstatistiklerini Görüntüle", + elasticsearchClearIndex: "Dizin Verilerini Temizle", + elasticsearchClearIndexMessage: "Bu işlem {index} dizinindeki her belgeyi siler. Eşleme, ayarlar ve takma adlar korunur. Devam edilsin mi?", + elasticsearchClearIndexPatternMessage: "{index} tek bir dizin değil, gruplanmış bir desendir. Bu işlem, eşleşen her dizindeki her belgeyi siler. Eşlemeler, ayarlar ve takma adlar korunur. Devam edilsin mi?", + elasticsearchClearIndexTypeToConfirm: "Onaylamak için {index} yazın", + elasticsearchClearIndexDetails: "Belgeler _delete_by_query ile kaldırılır; dizinin kendisi silinmez.", + elasticsearchClearIndexConfirm: "Verileri Temizle", + elasticsearchClearIndexDone: "{index} temizlendi: {deleted} belge silindi", + elasticsearchClearIndexPartial: "{index} kısmen temizlendi: {total} belgenin {deleted} tanesi silindi. Çakışmaları veya parça hatalarını denetleyip yeniden çalıştırın.", + cloneCollection: "Koleksiyonu Çoğalt", + cloneCollectionTitle: "Yeni Koleksiyon Olarak Çoğalt", + cloneCollectionNamePlaceholder: "Yeni koleksiyon adı", + cloneCollectionSuccess: '"{name}" koleksiyonu {documents} belge ve {indexes} dizinle çoğaltıldı', + confirmDropCollectionTitle: "Koleksiyonu Sil", + confirmDropCollectionMessage: '"{name}" koleksiyonunu silmek istediğinizden emin misiniz? Bu, koleksiyonu ve tüm belgelerini kalıcı olarak siler.', + dropCollectionSuccess: '"{name}" koleksiyonu silindi', + createDatabaseNamePlaceholder: "Veritabanı adı", + createDatabaseCharset: "Karakter kümesi", + createDatabaseCharsetPlaceholder: "örn. utf8mb4", + createDatabaseCharsetSearchPlaceholder: "Bir karakter kümesi arayın veya yazın", + createDatabaseCharsetEmpty: "Karakter kümesi bulunamadı", + createDatabaseCharsetLoading: "Karakter kümeleri yükleniyor...", + createDatabaseCharsetCustomOption: '"{value}" kullan', + createDatabaseCollation: "Karşılaştırma (collation)", + createDatabaseCollationPlaceholder: "örn. utf8mb4_unicode_ci", + createDatabaseCollationSearchPlaceholder: "Bir collation arayın veya yazın", + createDatabaseCollationEmpty: "Collation bulunamadı", + createDatabaseCollationLoading: "Collation'lar yükleniyor...", + createDatabaseCollationCustomOption: '"{value}" kullan', + createSchema: "Şema Oluştur", + dropSchema: "Şemayı Sil", + confirmDropSchemaTitle: "Şemayı Sil", + confirmDropSchemaMessage: '"{name}" şemasını silmek istediğinizden emin misiniz? Bu, şemayı ve tüm nesnelerini kalıcı olarak siler.', + createSchemaSuccess: '"{name}" şeması oluşturuldu', + dropSchemaSuccess: '"{name}" şeması silindi', + dropDamengSchemaRequiresDifferentDba: "Dameng bu şemayı geçerli bağlantıdan güvenle silemiyor. Farklı bir DBA kullanıcısıyla bağlanıp tekrar deneyin.", + createSchemaNamePlaceholder: "Şema adı", + editSchemaComment: "Açıklamayı Düzenle", + editSchemaCommentTitle: 'Açıklamayı Düzenle: "{name}"', + schemaCommentPlaceholder: "Şema açıklamasını girin...", + schemaCommentSaving: "Kaydediliyor...", + editSchemaCommentSuccess: '"{name}" şemasının açıklaması güncellendi', + }, + visibleDatabases: { + title: "Görünür Veritabanları", + detailLabel: "Görünür veritabanları", + detailActionLabel: '"{connection}" için görünür veritabanlarını yapılandır', + description: '"{connection}" altında hangi veritabanlarının gösterileceğini seçin.', + searchPlaceholder: "Veritabanlarında ara...", + selectedCount: "{selected}/{total} seçildi", + patternsPlaceholder: "Joker karakterler, örn. %n1%, virgülle ayrılmış", + patternsHint: "Bu desenlerle eşleşen veritabanları her zaman gösterilir (% = herhangi bir karakter, _ = tek karakter)", + patternsMatchCount: "{count} eşleşme", + selectAll: "Tümünü seç", + selectFiltered: "Arama sonuçlarını seç", + clear: "Temizle", + showAll: "Tümünü göster", + showSystemDatabases: "Sistem veritabanlarını göster", + save: "Kaydet", + emptySelection: "En az bir veritabanı seçin ya da filtreyi temizlemek için Tümünü göster'i kullanın.", + loadFailed: "Veritabanları yüklenemedi: {message}", + }, + visibleSchemas: { + title: "Şema Filtresi", + detailLabel: "Görünür şemalar", + detailActionLabel: '"{connection}" için görünür şemaları yapılandır', + description: '"{connection}" altında hangi şemaların gösterileceğini seçin.', + searchPlaceholder: "Şemalarda ara...", + selectedCount: "{selected}/{total} seçildi", + selectAll: "Tümünü seç", + selectFiltered: "Arama sonuçlarını seç", + clear: "Temizle", + showAll: "Tümünü göster", + showSystemSchemas: "Sistem şemalarını göster", + save: "Kaydet", + emptySelection: "En az bir şema seçin ya da filtreyi temizlemek için Tümünü göster'i kullanın.", + loadFailed: "Şemalar yüklenemedi: {message}", + }, + tree: { + savedSql: "SQL Kitaplığı", + queries: "Sorgular", + userAdmin: "Kullanıcılar ve Yetkiler", + damengUsers: "Kullanıcılar", + damengRoles: "Roller", + damengJobAdmin: "Agent İşleri", + xuguTablespaces: "Depolama Alanları", + xuguDatafiles: "Dosyalar", + xuguStorage: { + name: "Ad", + nodeId: "Düğüm Kimliği", + spaceId: "Tablo alanı kimliği", + spaceType: "Tablo alanı türü", + datafileCount: "Veri dosyaları", + totalChunks: "Toplam parça", + freeChunks: "Boş parça", + usedChunks: "Kullanılan parça", + usage: "Kullanım", + mediaError: "Ortam hatası", + path: "Yol", + fileNo: "Dosya numarası", + currentSize: "Geçerli boyut", + maxSize: "En büyük boyut", + stepSize: "Büyüme adımı", + reserved: "Ayrılmış", + unlimited: "Sınırsız", + yes: "Evet", + no: "Hayır", + }, + linkedServers: "Bağlı Sunucular", + defaultDatabase: "Varsayılan VT", + columns: "Sütunlar", + attributes: "Öznitelikler", + methods: "Yöntemler", + indexes: "Dizinler", + foreignKeys: "Yabancı Anahtarlar", + triggers: "Tetikleyiciler", + events: "Olaylar", + constraints: "Kısıtlar", + tables: "Tablolar", + doltSystemTables: "Dolt Sistem Tabloları", + tableNameFilterActive: "filtrelendi", + views: "Görünümler", + materializedViews: "Materyalleştirilmiş Görünümler", + procedures: "Yordamlar", + functions: "İşlevler", + sequences: "Diziler (Sequence)", + schedulerJobs: "Zamanlanmış İşler", + synonyms: "Eş Adlar", + packages: "Paketler", + types: "Türler", + gridfs: "GridFS", + buckets: "Bucket'lar", + partitions: "Bölümler", + subpartitions: "Alt bölümler", + childTables: "Alt tablolar", + loadMore: "Daha fazla yükle...", + objectBrowser: "Nesne Gezgininde Gözat ({count})", + extensions: "Uzantılar", + }, + extension: { + manageTitle: "Uzantıları Yönet", + installTitle: "Uzantı Kur", + detailsTitle: "Uzantı Ayrıntıları", + viewDetails: "Ayrıntıları görüntüle", + name: "Uzantı adı", + namePlaceholder: "örn. pg_stat_statements", + install: "Kur", + drop: "Sil", + available: "Kullanılabilir", + installed: "Kurulu", + noAvailable: "Kullanılabilir tüm uzantılar zaten kurulu.", + noInstalled: "Kurulu uzantı yok.", + }, + processList: { + title: "İşlem Listesi", + sessionCount: "{count} oturum", + filter: "Oturumları filtrele", + autoRefresh: "Otomatik yenile", + seconds: "sn", + colId: "Kimlik", + colUser: "Kullanıcı", + colHost: "Sunucu", + colDb: "VT", + colCommand: "Komut", + colTime: "Süre", + colState: "Durum", + colInfo: "Bilgi", + colPid: "PID", + colClient: "İstemci", + colApp: "Uygulama", + colWait: "Bekleme", + colQuery: "Sorgu", + colActions: "İşlemler", + self: "siz", + kill: "Sorguyu iptal et", + cannotKillSelf: "Kendi oturumunuzdaki bir sorguyu iptal edemezsiniz", + empty: "Etkin oturum yok.", + killTitle: "Çalışan sorguyu iptal et", + killConfirm: "{id} ({user}) oturumundaki çalışan sorgu iptal edilsin mi? Oturum bağlı kalmaya devam eder.", + killSuccess: "{id} oturumundaki çalışan sorgu iptal edildi", + killFailed: "Sorgu iptal edilemedi: {message}", + previewTitle: "İfade", + copy: "Kopyala", + copied: "Kopyalandı", + }, + sqlServerTrace, + serverDashboard: { + title: "Sunucu Panosu", + autoRefresh: "Otomatik yenile", + off: "Kapalı", + qps: "Saniyede sorgu", + connections: "Bağlantılar", + running: "Çalışan iş parçacıkları", + trafficIn: "Gelen trafik", + trafficOut: "Giden trafik", + slowQueries: "Yavaş sorgular", + uptime: "Çalışma süresi", + innodbHit: "InnoDB isabet oranı", + in: "Gelen", + out: "Giden", + sessions: "Oturumlar", + qpsChart: "Saniyede sorgu", + sessionsChart: "Saniyede oturum", + trafficChart: "Ağ trafiği /sn", + commandChart: "Saniyede komut", + rawStatus: "Durum değişkenleri", + filterStatus: "Durum değişkenlerini filtrele", + tps: "Saniyede işlem", + activeQueries: "Etkin sorgular", + cacheHit: "Önbellek isabet oranı", + deadlocks: "Kilitlenmeler", + tempFiles: "Geçici dosyalar", + walRate: "WAL hızı", + commit: "Commit", + rollback: "Rollback", + total: "Toplam", + active: "Etkin", + idle: "Boşta", + fetched: "Getirilen", + returned: "Döndürülen", + read: "Okunan", + hits: "İsabet", + serverSessionsChart: "Sunucu oturumları", + transactionsChart: "Saniyede işlem", + tuplesInChart: "Gelen demetler", + tuplesOutChart: "Giden demetler", + blockIoChart: "Blok G/Ç", + }, + userAdmin: { + title: "Kullanıcılar ve Yetkiler", + unsupported: "MySQL uyumlu ve PostgreSQL uyumlu bağlantılar desteklenir. SQL Server, Oracle ve diğer yetki modelleri daha sonra eklenebilir.", + newUser: "Yeni Kullanıcı", + anonymous: "Anonim", + roleName: "Rol adı", + allowLogin: "Girişe izin ver", + searchUser: "Kullanıcı veya sunucu ara", + loadingUsers: "Kullanıcılar yükleniyor...", + loadingGrants: "Yetkiler yükleniyor...", + emptyUsers: "Kullanıcı bulunamadı ya da geçerli hesap kullanıcı listesini okuyamıyor.", + pluginUnknown: "Kimlik doğrulama eklentisi bilinmiyor", + grants: "Yetkiler", + noGrants: "Yetki bulunamadı", + privilegeEditor: "Yetki Düzenleyici", + privilegeHint: "Yetkileri, veritabanını ve tabloyu seçin, ardından uygulamadan önce SQL'i önizleyin. * genel ya da tüm tablolar anlamına gelir.", + database: "Veritabanı", + schema: "Şema", + table: "Tablo", + scope: "Yetki kapsamı", + scopeDatabase: "Veritabanı", + scopeSchema: "Şema", + scopeTable: "Tablo", + scopeRole: "Rol üyeliği", + memberRole: "Üye rol", + privileges: "Yetkiler", + grantOption: "Yetki devrine izin ver (WITH GRANT OPTION)", + adminOption: "Üyelik yönetimine izin ver (WITH ADMIN OPTION)", + grant: "Yetki ver", + revoke: "Yetkiyi geri al", + username: "Kullanıcı adı", + host: "Sunucu", + addHost: "Sunucu Ekle", + changeHost: "Sunucuyu Değiştir", + newHost: "Yeni Sunucu", + changePassword: "Parolayı Değiştir", + newPassword: "Yeni parola", + lock: "Kilitle", + unlock: "Kilidi aç", + disableLogin: "Girişi Devre Dışı Bırak", + enableLogin: "Girişi Etkinleştir", + dropUser: "Kullanıcıyı Sil", + previewSql: "SQL Önizleme", + sqlPreview: "SQL Önizlemesi", + applySql: "SQL'i Uygula", + applySuccess: "Kullanıcı yetkileri güncellendi", + applyPartial: "Kullanıcı oluşturuldu, ancak bazı yetkilendirmeler başarısız oldu", + applyFailedSummary: "İşlem başarısız oldu", + applyFailed: "Çalıştırma başarısız: {message}", + applyFailedUnknown: "Çalıştırma başarısız", + standardUser: "Standart kullanıcı", + standardUserHint: "Yalnızca aşağıda seçilen veritabanlarını ve yetkileri ver.", + adminUser: "Yönetici kullanıcı", + adminUserHint: "Örnek düzeyinde, yüksek yetkili bir hesap oluştur.", + adminUserWarning: "Bu hesap veritabanlarını ve diğer kullanıcıları yönetebilir. Uygulamadan önce SQL'in tamamını dikkatle inceleyin.", + databaseAccess: "Veritabanı erişimi", + databaseAccessHint: "Veritabanlarını seçip her biri için ayrı bir yetki düzeyi yapılandırın.", + tableScope: "Tablo kapsamı", + allTables: "Tüm tablolar", + specificTables: "Belirli tablolar", + chooseTables: "Tabloları seç", + selectedTableCount: "{count} tablo seçildi", + searchTable: "Tablolarda ara", + loadingTables: "Tablolar yükleniyor...", + emptyTables: "Tablo bulunamadı", + loadTablesFailed: "Tablolar yüklenemedi: {message}", + tableSelectionRequired: "En az bir tablo seçin.", + selectAllTables: "Tümünü seç", + clearAllTables: "Temizle", + retry: "Yeniden dene", + selectedDatabaseCount: "{count} veritabanı", + searchDatabase: "Veritabanlarında ara", + loadingDatabases: "Veritabanları yükleniyor...", + emptyDatabases: "Veritabanı bulunamadı", + loadDatabasesFailed: "Veritabanları yüklenemedi: {message}", + prepareAuthorizationFailed: "Veritabanı yetkilendirmesi hazırlanamadı: {message}", + presetReadWrite: "Okuma/Yazma", + presetReadOnly: "Salt Okunur", + presetDdl: "Yalnızca DDL", + presetDml: "Yalnızca DML", + presetCustom: "Özel", + customPrivilegeRequired: "En az bir yetki seçin.", + postgresDdlHint: "PostgreSQL, veritabanı/şema üzerinde CREATE yetkisi verir. Nesneleri değiştirmek veya silmek yine sahiplik gerektirir.", + resultSuccess: "Tüm adımlar başarıyla tamamlandı", + resultPartial: "Kısmen tamamlandı", + resultFailed: "Çalıştırma başarısız", + closeResult: "Kapat", + stepCreateUser: "Kullanıcı veya rol oluştur", + stepGrantAdmin: "{user} kullanıcısına yönetici yetkileri ver", + stepGrantDatabase: '{user} kullanıcısına "{database}" veritabanına erişim ver', + stepGrantTable: '{user} kullanıcısına "{database}.{table}" tablosuna erişim ver', + stepGrantObjects: '{user} kullanıcısına "{database}" içinde şema ve nesne yetkileri ver', + stepGrantCurrentObjects: '"{database}" içindeki "{schema}" şemasında mevcut {scope} üzerinde {user} kullanıcısına yetki ver', + stepGrantFutureObjects: '"{database}" içinde geçerli rolün ileride oluşturacağı {scope} üzerinde {user} kullanıcısına yetki ver', + stepGrantFutureObjectsForOwner: '"{database}" içinde {owner} tarafından ileride oluşturulacak {scope} üzerinde {user} kullanıcısına yetki ver', + scopeSchemas: "şemalar", + scopeTables: "tablolar", + scopeSequences: "diziler", + scopeFunctions: "işlevler", + stepSkipped: "Gerekli bir önceki adım başarısız olduğu için atlandı.", + }, + damengJobAdmin: { + title: "Dameng Agent İşleri", + unsupported: "Bu sayfa yalnızca Dameng bağlantılarını destekler.", + initEnvironment: "İş Ortamını Başlat", + environmentReady: "İş Ortamı Hazır", + newJob: "Yeni İş", + searchJob: "İşlerde ara", + loadFailed: "Yükleme başarısız", + environmentMissingTitle: "İş ortamı başlatılmadı", + environmentMissingHint: "Bu veritabanında henüz SYSJOB iş ortamı yok.", + environmentMissingDescription: "Dameng agent işleri, SYSJOB şeması altındaki sistem tablolarını ve görünümlerini gerektirir. Önce iş ortamını başlatın; bunun için genellikle yönetici yetkileri gerekir.", + emptyJobs: "İş bulunamadı ya da geçerli hesap iş listesini okuyamıyor.", + emptyDetails: "Ayrıntı satırı yok", + selectJob: "Bir iş seçin", + enabled: "Etkin", + disabled: "Devre dışı", + running: "Çalışıyor", + enable: "Etkinleştir", + disable: "Devre dışı bırak", + runAsync: "Şimdi Çalıştır", + stopRunning: "Geçerli Çalıştırmayı Durdur", + stopRunningDisabled: "Yalnızca şu anda çalışan işler durdurulabilir", + clearHistories: "Geçmişi Temizle", + dropJob: "Sil", + steps: "Adımlar", + schedules: "Zamanlamalar", + histories: "Geçmiş", + noDescription: "Açıklama yok", + jobName: "İş adı", + description: "Açıklama", + stepName: "Adım adı", + scheduleName: "Zamanlama adı", + sqlCommand: "SQL betiği", + scheduleMode: "Zamanlama türü", + daily: "Günlük", + once: "Bir kez", + startDate: "Başlangıç tarihi", + startTime: "Başlangıç saati", + endTime: "Bitiş saati", + minuteInterval: "Dakika aralığı", + previewSql: "SQL Önizleme", + sqlPreview: "SQL Önizlemesi", + applySql: "SQL'i Uygula", + applySuccess: "İş işlemi uygulandı", + applyFailed: "Çalıştırma başarısız: {message}", + }, + xuguSchedulerJob: { + enable: "Etkinleştir", + disable: "Devre dışı bırak", + run: "Şimdi çalıştır", + drop: "İşi sil", + confirmDrop: '"{name}" zamanlanmış işi silinsin mi? Bu işlem geri alınamaz.', + actionSuccess: '"{name}" için {action} tamamlandı.', + }, + damengUserAdmin: { + title: "Dameng Kullanıcıları", + unsupported: "Bu sayfa yalnızca Dameng veritabanı bağlantılarını destekler.", + newUser: "Yeni Kullanıcı", + searchUser: "Kullanıcılarda ara", + loadFailed: "Yükleme başarısız", + emptyUsers: "Kullanıcı yok ya da geçerli hesap kullanıcı listesini okuyamıyor.", + selectUser: "Bir kullanıcı seçin", + username: "Kullanıcı adı", + usernamePlaceholder: "örn. APP_USER", + password: "Parola", + passwordPolicyHint: "Parola, DM8 parola politikasına uymalıdır (varsayılan: en az 9 karakter; tercihen büyük harf, küçük harf ve rakam karışımı)", + tablespace: "Varsayılan tablo alanı", + tablespacePlaceholder: "Tablo alanı adını girin", + locked: "Oluşturduktan sonra hesabı kilitle", + changePassword: "Parolayı Değiştir", + newPassword: "Yeni parola", + confirmPassword: "Parolayı doğrulayın", + open: "Aç", + systemUser: "Sistem kullanıcısı", + systemUserAdmin: "Yönetici kullanıcı", + systemUserAuditor: "Denetim kullanıcısı", + systemUserSecurity: "Güvenlik kullanıcısı", + systemUserSystem: "Sistem kullanıcısı", + cannotChangePassword: "Bu kullanıcının parolası geçerli bağlantıyla değiştirilemez (yalnızca SYSDBA veya kullanıcının kendisi değiştirebilir)", + inheritedFrom: "{via} üzerinden devralındı", + userType: "Kullanıcı türü", + userTypeHint: "Yönetici otomatik olarak DBA, denetim DB_AUDIT_ADMIN, güvenlik ise DB_POLICY_ADMIN yetkisi verir", + groupOther: "Diğer kullanıcılar", + systemUserProtected: "Sistem kullanıcıları değiştirilemez veya silinemez", + builtinRole: "Yerleşik rol", + builtinRoleProtected: "Yerleşik roller geri alınamaz", + defaultTablespace: "Varsayılan tablo alanı", + created: "Oluşturuldu", + lock: "Kilitle", + unlock: "Kilidi aç", + dropUser: "Kullanıcıyı Sil", + roles: "Roller", + systemPrivileges: "Sistem Yetkileri", + grantedRoles: "Verilen roller", + grantedPrivileges: "Verilen yetkiler", + grantRole: "Rol Ver", + revokeRole: "Rolü Geri Al", + roleToGrant: "Verilecek rol", + selectRole: "Rol seçin", + grantRoleHint: "Rolü {user} kullanıcısına ver.", + noRolesToGrant: "Verilebilecek rol yok", + noGrantedRoles: "Bu kullanıcıya verilmiş rol yok", + grantPrivilege: "Yetki Ver", + revokePrivilege: "Yetkiyi Geri Al", + privilegeToGrant: "Verilecek yetki", + selectPrivilege: "Yetki seçin", + grantPrivilegeHint: "Sistem yetkisini {user} kullanıcısına ver.", + noPrivilegesToGrant: "Verilebilecek yetki yok", + noGrantedPrivileges: "Bu kullanıcıya verilmiş sistem yetkisi yok", + previewSql: "SQL Önizleme", + sqlPreview: "SQL Önizlemesi", + applySql: "SQL'i Uygula", + applySuccess: "Kullanıcı işlemi uygulandı", + applyFailed: "Çalıştırma başarısız: {message}", + enableDdlAnyPrivHint: + "İpucu: DM8, DDL ANY yetkilerinin verilmesini varsayılan olarak kapatır (ENABLE_DDL_ANY_PRIV=0). ANY türü yetkileri vermek için SYSDBA olarak sp_set_para_value(1,'ENABLE_DDL_ANY_PRIV',1) çalıştırın. ANY olmayan yetkiler için geçerli hesabın o yetki üzerinde ADMIN OPTION taşıdığından emin olun.", + anyPrivilegeDisabled: "ANY türü yetkiler DM8 tarafından devre dışı bırakılmış (ENABLE_DDL_ANY_PRIV=0); verilemez veya geri alınamaz", + }, + damengRoleAdmin: { + title: "Dameng Rolleri", + unsupported: "Bu sayfa yalnızca Dameng veritabanı bağlantılarını destekler.", + newRole: "Yeni Rol", + searchRole: "Rollerde ara", + loadFailed: "Yükleme başarısız", + emptyRoles: "Rol yok ya da geçerli hesap rol listesini okuyamıyor.", + selectRole: "Bir rol seçin", + roleName: "Rol adı", + roleNamePlaceholder: "örn. APP_ROLE", + members: "Üyeler", + systemPrivileges: "Sistem Yetkileri", + grantedToUsers: "Bu role sahip kullanıcılar", + grantedPrivileges: "Verilen yetkiler", + noMembers: "Bu rol hiçbir kullanıcıya verilmemiş", + grantToUser: "Kullanıcıya Ver", + userToGrant: "Yetki verilecek kullanıcı", + selectUser: "Kullanıcı seçin", + grantUserHint: "{role} rolünü kullanıcıya ver.", + noUsersToGrant: "Yetki verilebilecek kullanıcı yok", + revokeFromUser: "Yetkiyi geri al", + systemUser: "Sistem kullanıcısı", + systemUserProtected: "Sistem kullanıcılarından geri alınamaz", + builtinRole: "Yerleşik rol", + builtinRoleProtected: "Önceden tanımlı roller silinemez veya değiştirilemez", + grantPrivilege: "Yetki Ver", + revokePrivilege: "Yetkiyi Geri Al", + privilegeToGrant: "Verilecek yetki", + selectPrivilege: "Yetki seçin", + grantPrivilegeHint: "Sistem yetkisini {role} rolüne ver.", + noPrivilegesToGrant: "Verilebilecek yetki yok", + noGrantedPrivileges: "Bu role verilmiş sistem yetkisi yok", + dropRole: "Rolü Sil", + previewSql: "SQL Önizleme", + sqlPreview: "SQL Önizlemesi", + applySql: "SQL'i Uygula", + applySuccess: "Rol işlemi uygulandı", + applyFailed: "Çalıştırma başarısız: {message}", + enableDdlAnyPrivHint: + "İpucu: DM8, DDL ANY yetkilerinin verilmesini varsayılan olarak kapatır (ENABLE_DDL_ANY_PRIV=0). ANY türü yetkileri vermek için SYSDBA olarak sp_set_para_value(1,'ENABLE_DDL_ANY_PRIV',1) çalıştırın. ANY olmayan yetkiler için geçerli hesabın o yetki üzerinde ADMIN OPTION taşıdığından emin olun.", + anyPrivilegeDisabled: "ANY türü yetkiler DM8 tarafından devre dışı bırakılmış (ENABLE_DDL_ANY_PRIV=0); verilemez veya geri alınamaz", + }, + objects: { + all: "Tümü", + tables: "Tablolar", + collections: "Koleksiyonlar", + views: "Görünümler", + procedures: "Yordamlar", + functions: "İşlevler", + sequences: "Diziler (Sequence)", + packages: "Paketler", + table: "Tablo", + collection: "Koleksiyon", + partitions: "{count} bölüm", + view: "Görünüm", + timeseries: "Zaman Serisi", + procedure: "Yordam", + function: "İşlev", + trigger: "Tetikleyici", + triggerTiming: "Zamanlama", + triggerEvent: "Olay", + triggerLevel: "Düzey", + triggerStatus: "Durum", + triggerCondition: "Koşul", + triggerLanguage: "Dil", + enabled: "Etkin", + disabled: "Devre dışı", + validity: "Geçerlilik", + valid: "Geçerli", + invalid: "Geçersiz", + sequence: "Dizi (Sequence)", + package: "Paket", + packageBody: "Paket Gövdesi", + typeDefinition: "Tür", + typeBody: "Tür Gövdesi", + name: "Ad", + type: "Tür", + rows: "Satır", + series: "Seri", + size: "Boyut", + statisticsHint: "Veritabanı istatistiklerinden tahmin edilir; COUNT(*) çalıştırılmaz.", + createdAt: "Oluşturuldu", + updatedAt: "Güncellendi", + source: "Kaynak", + saveSource: "Kaydet", + cancelEdit: "İptal", + sourceSaved: "Kaynak kaydedildi", + sourceSaveFailed: "Kaynak kaydedilemedi: {message}", + postgresViewColumnChangeHint: + "PostgreSQL, mevcut görünüm sütunlarını kaldırmak, yeniden sıralamak, yeniden adlandırmak veya türünü değiştirmek için CREATE OR REPLACE VIEW kullanamaz. Mevcut sütun sayısını, sırasını, adlarını ve türlerini değiştirmeyin; yeni sütunlar yalnızca sona eklenebilir. Bir sütunu yeniden adlandırmak için ALTER VIEW ... RENAME COLUMN kullanın. Sütun kaldırmak için bağımlılıkları inceleyip görünümü elle yeniden oluşturun.", + sourceReadOnly: "Bu kaynak salt okunurdur ve düzenlenemez.", + schemaColumn: "Şema", + comment: "Açıklama", + loadingSchemas: "Şemalar yükleniyor...", + schema: "Şema", + search: "Tablo, görünüm, işlev, dizi veya yordam ara...", + searchCollections: "Koleksiyonlarda ara...", + loading: "Nesneler yükleniyor...", + empty: "Nesne bulunamadı", + selectedTables: "{count} tablo seçildi", + exportSelected: "Seçilenleri dışa aktar", + dropSelected: "Seçilenleri sil", + truncateSelected: "Seçilenleri truncate et", + clearSelection: "Seçimi temizle", + confirmBatchDropTitle: "Seçili Tabloları Sil", + confirmBatchDropMessage: "Seçili {count} tabloyu silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + confirmBatchTruncateTitle: "Seçili Tabloları Truncate Et", + confirmBatchTruncateMessage: "Seçili {count} tabloyu truncate etmek istediğinizden emin misiniz? Bu, tüm satırları kaldırır.", + batchDropSuccess: "{count} tablo silindi", + batchTruncateSuccess: "{count} tablo truncate edildi", + copyTableSelected: "Kopyala", + pasteTableSelected: "Yapıştır", + toggleCheckbox: "Çoklu seçimi aç/kapat", + viewList: "Liste görünümü", + viewGrid: "Izgara görünümü", + sortAsc: "Artan", + sortDesc: "Azalan", + sortBy: "Sıralama ölçütü", + }, + structureEditor: { + title: "Tablo Yapısını Düzenle", + createTitle: "Tablo Oluştur", + editTabTitle: "Düzenle: {tableName}", + tableName: "Tablo Adı", + refresh: "Yapıyı Yenile", + density: "Yoğunluk", + densityCompact: "Sıkışık", + densityStandard: "Standart", + densityComfortable: "Ferah", + columns: "Sütunlar", + indexes: "Dizinler", + foreignKeys: "Yabancı Anahtarlar", + constraints: "Kısıtlar", + constraintDisabled: "Devre dışı", + constraintNotValidated: "Doğrulanmadı", + triggers: "Tetikleyiciler", + ddl: "DDL", + addColumn: "Sütun Ekle", + copyColumns: "Başka Tablodan Alan Kopyala", + copyColumn: "Sütunu Kopyala", + copyColumnsTitle: "Başka Tablodan Sütun Kopyala", + copyColumnsSourceTable: "Kaynak tablo", + copyColumnsSearchSourceTables: "Kaynak tablolarda ara", + copyColumnsSelectFields: "Alanları seç", + copyColumnsSearchFields: "Alan veya tür ara", + copyColumnsSelectAll: "Tümünü seç", + copyColumnsClearSelection: "Seçimi temizle", + copyColumnsNoSourceTables: "Bu şemada başka tablo yok.", + copyColumnsNoMatchingSourceTables: "Aramayla eşleşen kaynak tablo yok.", + copyColumnsPreviousSourceTablePage: "Seçili tablonun alanı yok.", + copyColumnsNextSourceTablePage: "Aramayla eşleşen alan yok.", + copyColumnsNoFields: "Önceki kaynak tablo sayfası", + copyColumnsNoMatchingFields: "Sonraki kaynak tablo sayfası", + copyColumnsAlreadyExists: "Zaten var", + copyColumnsCancel: "İptal", + copyColumnsApply: "{count} alanı kopyala", + columnTemplates: "Hazır Alanları Ekle", + configureColumnTemplates: "Hazır Alanları Yapılandır", + presetFieldsTemplate: "Hazır Alan Kümesi", + searchColumns: "Sütun/açıklama ara", + nextColumnMatch: "Sonraki eşleşen sütuna git", + searchIndexes: "Dizin ara", + nextIndexMatch: "Sonraki eşleşen dizine git", + addIndex: "Dizin Ekle", + addForeignKey: "Yabancı Anahtar Ekle", + addTrigger: "Tetikleyici Ekle", + columnName: "Sütun", + dataType: "Tür", + typePlaceholder: "Seçin veya yazın...", + noMatchingType: "Eşleşen tür yok", + mysqlDataTypeHelp: { + tinyint: "1 baytlık tam sayı. İşaretli aralık: -128 ile 127; işaretsiz aralık: 0 ile 255.", + smallint: "2 baytlık tam sayı. İşaretli aralık: -32.768 ile 32.767; işaretsiz aralık: 0 ile 65.535.", + mediumint: "3 baytlık tam sayı. İşaretli aralık: -8.388.608 ile 8.388.607; işaretsiz aralık: 0 ile 16.777.215.", + int: "4 baytlık tam sayı. İşaretli aralık: -2.147.483.648 ile 2.147.483.647; işaretsiz aralık: 0 ile 4.294.967.295.", + bigint: "8 baytlık tam sayı. İşaretli aralık: -2^63 ile 2^63-1; işaretsiz aralık: 0 ile 2^64-1.", + decimal: "Kesin sabit noktalı sayı. MySQL 65 basamağa kadar duyarlık ve 30 basamağa kadar ölçek destekler; MariaDB sürüm sınırları farklı olabilir. Para ve diğer kesin değerler için kullanın.", + float: "Tek duyarlıklı yaklaşık sayı. Kesin ondalık değerler gerekiyorsa DECIMAL kullanın.", + double: "Çift duyarlıklı yaklaşık sayı. Kesin ondalık değerler gerekiyorsa DECIMAL kullanın.", + real: "Varsayılan olarak DOUBLE için takma addır; REAL_AS_FLOAT SQL modu bunu FLOAT takma adı yapar.", + bit: "1 ile 64 bit arasında bit alanı. Varsayılan genişlik 1 bittir.", + boolean: "TINYINT(1) için takma ad: 0 yanlış, sıfır olmayan değerler doğru anlamına gelir.", + serial: "BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE için pratik takma ad.", + date: "Takvim tarihi. Desteklenen aralık: 1000-01-01 ile 9999-12-31.", + datetime: "Saat dilimi dönüşümü olmadan tarih ve saat. Desteklenen aralık: 1000-01-01 00:00:00 ile 9999-12-31 23:59:59; kesirli saniye duyarlığı 0 ile 6 (varsayılan 0).", + timestamp: "Oturum saat dilimi ile UTC arasında dönüştürülen tarih ve saat. Desteklenen aralık: 1970-01-01 00:00:01 UTC ile 2038-01-19 03:14:07 UTC; kesirli saniye duyarlığı 0 ile 6 (varsayılan 0).", + time: "Günün saati veya geçen süre. Desteklenen aralık: -838:59:59 ile 838:59:59; kesirli saniye duyarlığı 0 ile 6 (varsayılan 0).", + year: "Yıl değeri. Dört basamaklı değerler 1901 ile 2155 arasındadır, ayrıca 0000.", + char: "Sabit uzunluklu karakter dizesi, en fazla 255 karakter. Saklanan değerler sağdan boşlukla doldurulur.", + varchar: "Değişken uzunluklu karakter dizesi. Pratik üst sınırı satır boyutu ve karakter kümesiyle sınırlıdır.", + tinytext: "Değişken uzunluklu metin, en fazla 255 bayt. Karakter kümesi, satır boyutu ve max_allowed_packet sınırları daha düşük pratik sınırlar getirebilir.", + text: "Değişken uzunluklu metin, en fazla 65.535 bayt. Karakter kümesi, satır boyutu ve max_allowed_packet sınırları daha düşük pratik sınırlar getirebilir.", + mediumtext: "Değişken uzunluklu metin, en fazla 16.777.215 bayt. Karakter kümesi, satır boyutu ve max_allowed_packet sınırları daha düşük pratik sınırlar getirebilir.", + longtext: "Değişken uzunluklu metin, en fazla 4.294.967.295 bayt (yaklaşık 4 GiB). Karakter kümesi, satır boyutu ve max_allowed_packet sınırları daha düşük pratik sınırlar getirebilir.", + binary: "Sabit uzunluklu ikili bayt dizesi, en fazla 255 bayt. Saklanan değerler 0x00 ile doldurulur.", + varbinary: "Değişken uzunluklu ikili bayt dizesi. Pratik üst sınırı satır boyutuyla sınırlıdır.", + tinyblob: "İkili büyük nesne, en fazla 255 bayt. Satır boyutu ve max_allowed_packet sınırları daha düşük pratik sınırlar getirebilir.", + blob: "İkili büyük nesne, en fazla 65.535 bayt. Satır boyutu ve max_allowed_packet sınırları daha düşük pratik sınırlar getirebilir.", + mediumblob: "İkili büyük nesne, en fazla 16.777.215 bayt. Satır boyutu ve max_allowed_packet sınırları daha düşük pratik sınırlar getirebilir.", + longblob: "İkili büyük nesne, en fazla 4.294.967.295 bayt (yaklaşık 4 GiB). Satır boyutu ve max_allowed_packet sınırları daha düşük pratik sınırlar getirebilir.", + enum: "En fazla 65.535 bildirilmiş sabit değerden seçilen tek bir değer. Sabit değerlerin sırasını değiştirmek, saklanan değerlerin anlamını değiştirebilir.", + set: "En fazla 64 bildirilmiş üyeden seçilen sıfır veya daha fazla değer.", + json: "Doğrulanmış JSON belgesi. Saklama gösterimi ve JSON özellik desteği, bağlanılan sunucu ürününe ve sürümüne bağlıdır; belge boyutu ayrıca max_allowed_packet ile sınırlıdır.", + jsonMysql: "MySQL'in JSON işlevleri ve doğrulaması olan yerel ikili JSON belge türü. Belge boyutu max_allowed_packet ile sınırlıdır.", + jsonMariaDb: "MariaDB JSON, JSON_VALID kısıtı ve utf8mb4_bin collation'ı olan LONGTEXT için takma addır; belge boyutu max_allowed_packet ile sınırlıdır.", + nationalCharacter: "Ulusal karakter dizesi takma adı. MySQL'de önceden tanımlı ulusal karakter kümesini kullanır (utf8mb3, kullanımdan kaldırıldı); yeni şemalarda açıkça utf8mb4 seçin.", + geometry: "Desteklenen herhangi bir geometri türünde uzamsal değer. MySQL InnoDB SPATIAL dizini, SRID özniteliği olan NOT NULL bir sütun gerektirir.", + point: "Tek bir koordinat çiftinden oluşan uzamsal nokta. MySQL InnoDB SPATIAL dizini, SRID özniteliği olan NOT NULL bir sütun gerektirir.", + linestring: "Bir veya daha fazla bağlı noktadan oluşan uzamsal eğri. MySQL InnoDB SPATIAL dizini, SRID özniteliği olan NOT NULL bir sütun gerektirir.", + polygon: "Bir veya daha fazla halkayla çevrelenmiş uzamsal yüzey. MySQL InnoDB SPATIAL dizini, SRID özniteliği olan NOT NULL bir sütun gerektirir.", + multipoint: "Uzamsal noktalar koleksiyonu. MySQL InnoDB SPATIAL dizini, SRID özniteliği olan NOT NULL bir sütun gerektirir.", + multilinestring: "Uzamsal eğriler koleksiyonu. MySQL InnoDB SPATIAL dizini, SRID özniteliği olan NOT NULL bir sütun gerektirir.", + multipolygon: "Uzamsal çokgenler koleksiyonu. MySQL InnoDB SPATIAL dizini, SRID özniteliği olan NOT NULL bir sütun gerektirir.", + geometrycollection: "Karışık uzamsal geometri türleri içerebilen koleksiyon. MySQL InnoDB SPATIAL dizini, SRID özniteliği olan NOT NULL bir sütun gerektirir.", + inet4: "MariaDB IPv4 adres türü (MariaDB 10.10'dan itibaren kullanılabilir); bir IPv4 adresini dört bayt olarak saklar.", + inet6: "IPv6 ve eşlenmiş IPv4 değerleri için MariaDB uyumlu adres türü.", + uuid: "Uyumlu sunucuların sağladığı 128 bitlik evrensel benzersiz tanımlayıcı türü.", + vector: "Benzerlik veya makine öğrenmesi iş yükleri için vektör veri türü; kullanılabilirlik ve boyut sunucu sürümüne bağlıdır.", + xmltype: "Uyumlu sunucuların sağladığı XML veri türü.", + integerDisplayWidth: "MySQL tam sayı görüntüleme genişliği (örneğin INT(11)) kullanımdan kaldırıldı ve saklanan aralığı sınırlamaz. Yeni MySQL 8 şemalarına eklemeyin.", + zerofill: "ZEROFILL, MySQL 8'de kullanımdan kaldırıldı. Ayrıca sütunu örtük olarak UNSIGNED yapar; bunun yerine uygulamada açık biçimlendirme kullanın.", + unsignedNumeric: "DECIMAL, FLOAT veya DOUBLE için UNSIGNED, MySQL 8'de kullanımdan kaldırıldı. Negatif olmayan bir tanım kümesi gerekiyorsa CHECK kısıtı kullanın.", + floatPrecision: "FLOAT(p) için p değeri 25 ile 53 arasındaysa FLOAT yerine DOUBLE duyarlığı seçilir. Bu isteniyorsa açıkça DOUBLE kullanın.", + floatingPointDisplay: "FLOAT(M,D) ve DOUBLE(M,D), MySQL 8'de kullanımdan kaldırıldı. Görüntüleme parametreleri olmadan FLOAT/DOUBLE ya da kesin değerler için DECIMAL(M,D) kullanın.", + }, + postgresDataTypeHelp: { + smallint: "2 baytlık işaretli tam sayı, -32.768 ile 32.767 arasında.", + integer: "4 baytlık işaretli tam sayı, -2.147.483.648 ile 2.147.483.647 arasında.", + bigint: "8 baytlık işaretli tam sayı, -2^63 ile 2^63-1 arasında.", + serial: "Bir tam sayı sütunu, dizi, NOT NULL ve nextval varsayılanı oluşturan pratik sözdizimi. Kendi başına benzersiz değildir ve dizi değerlerinde boşluklar olabilir; yeni şemalarda IDENTITY tercih edin.", + numeric: "Kullanıcının seçtiği duyarlık ve ölçekle kesin ondalık sayı. Para ve ikili kayan nokta yuvarlaması kullanmaması gereken değerler için kullanın.", + real: "4 baytlık tek duyarlıklı kayan noktalı sayı. p değeri 1 ile 24 arasında olan FLOAT(p) bu türü seçer.", + double: "8 baytlık çift duyarlıklı kayan noktalı sayı. Duyarlık belirtilmemiş FLOAT bunun takma adıdır; p değeri 25 ile 53 arasında olan FLOAT(p) bunu seçer.", + money: "Yerel ayara göre biçimlendirilmiş para tutarı. Çıktısı ve ayrıştırılması lc_monetary ayarına bağlıdır; taşınabilir finansal veriler için genellikle NUMERIC daha güvenlidir.", + boolean: "Mantıksal doğru, yanlış veya null değeri. BOOL, BOOLEAN için takma addır.", + char: "Sabit uzunluklu, boşlukla doldurulmuş karakter dizesi. CHARACTER takma addır; sondaki boşluklar önemliyse kullanmayın.", + varchar: "İsteğe bağlı karakter sınırı olan değişken uzunluklu karakter dizesi. CHARACTER VARYING takma addır.", + text: "Bildirilmiş sınırı olmayan değişken uzunluklu karakter dizesi; sınırsız VARCHAR ile aynı saklama davranışına sahiptir.", + bytea: "Değişken uzunluklu ikili dize. Büyük değerler TOAST tarafından satır dışında saklanabilir.", + date: "Günün saati veya saat dilimi olmadan takvim tarihi.", + time: "Saat dilimi olmadan günün saati, isteğe bağlı kesirli saniye duyarlığıyla.", + timetz: "Günün saati artı UTC farkı. Kullanışlılığı sınırlıdır ve genellikle önerilmez; bir zaman anı için timestamptz kullanın.", + timestamp: "Saat dilimi dönüşümü olmadan tarih ve saat. Saat dilimi verinin parçası olmayan yerel duvar saati değerleri için kullanın.", + timestamptz: "İçeride UTC olarak saklanan ve oturum saat diliminde gösterilen zaman anı. Özgün adlandırılmış saat dilimini korumaz.", + interval: "Ay, gün ve mikrosaniye cinsinden süre. Takvim birimleri sabit uzunluklu süreler değildir.", + uuid: "128 bitlik evrensel benzersiz tanımlayıcı.", + json: "Özgün girdi gösterimi korunan JSON metni. Ayrıştırma doğrulanır, ancak işleme genellikle JSONB'den daha yavaştır.", + jsonb: "İşleme ve dizinleme için iyileştirilmiş, ayrıştırılmış ikili JSON gösterimi. Önemsiz boşlukları, anahtar sırasını veya yinelenen anahtarları korumaz.", + xml: "Kullanılan XML seçeneğine göre isteğe bağlı belge veya içerik doğrulaması yapılan XML değeri.", + bit: "Sabit veya değişken uzunluklu bit dizesi. BIT VARYING ve VARBIT değişken uzunluklu takma adlardır.", + tsvector: "PostgreSQL tam metin aramasının aranabilir belge tarafı olarak kullanılan normalleştirilmiş sözcük birimleri; genellikle GIN veya GiST ile dizinlenir.", + tsquery: "Bir tsvector üzerinde değerlendirilen Boole tam metin arama sorgusu.", + cidr: "Sunucu bitleri sıfıra sabitlenmiş IPv4 veya IPv6 ağı.", + inet: "İsteğe bağlı ağ maskesiyle IPv4 veya IPv6 sunucu adresi; CIDR'den farklı olarak sunucu bitleri sıfır olmayabilir.", + macaddr: "MAC adresi. MACADDR 6 baytlık, MACADDR8 ise 8 baytlık adresleri saklar.", + geometry: "Yerleşik iki boyutlu geometrik tür. PostgreSQL geometrisi düzlemseldir ve SRID içermez; coğrafi koordinatlar, izdüşümler veya gelişmiş uzamsal işlemler için PostGIS kullanın.", + range: "Dâhil/hariç sınırları olan tek sürekli aralık. Aralık değerleri uyumlu bir alt tür gerektirir; birden çok ayrık aralık için multirange türlerini kullanın.", + oid: "İşaretsiz nesne tanımlayıcısı. Bu bir sistem tanımlayıcısıdır, kalıcı bir uygulama birincil anahtarı değildir; uygulama verileri için normal bir tam sayı ya da UUID kullanın.", + array: "Çok boyutlu diziler dâhil, herhangi bir öğe türünde PostgreSQL dizisi. Dizi boyutları bildirilen türle zorlanmaz ve diziler genellikle normalleştirilmiş alt satırlardan daha az esnektir.", + multirange: "Eşleşen aralık alt türünde, çakışmayan aralıklar kümesi. PostgreSQL, bitişik veya çakışan üyeleri alt tür kurallarına göre normalleştirir.", + jsonpath: "JSONB sorgu ve önerme işlevlerinin kullandığı SQL/JSON yol ifadesi.", + pgLsn: "Çoğaltma ve kurtarma koordinatları için kullanılan önden yazmalı günlük konumu; bir uygulama sıra numarası değildir.", + pgSnapshot: "İşlem görünürlüğü anlık görüntüsü. Metin gösterimi, genel uygulama verisi için değil, veritabanı anlık görüntü işlemleri içindir.", + }, + sqliteDataTypeHelp: { + integer: "SQLite dinamik tür ve INTEGER yakınlığı kullanır; normal bir sütun INTEGER saklama sınıfını zorlamaz. Değerler mümkün olduğunda işaretli tam sayı olarak saklanır; INTEGER PRIMARY KEY (tam yazımıyla) rowid için özel takma addır.", + real: "REAL yakınlığı IEEE 754 kayan noktalı değerleri saklar. Kesin para veya ondalık hesaplamalar için değil, yaklaşık ölçümler için uygundur.", + text: "TEXT yakınlığı metni veritabanı kodlamasında saklar. SQLite'ta VARCHAR(n) ve CHAR(n) n değerini zorlamaz; uzunluk sınırı önemliyse bir CHECK kısıtı ekleyin.", + blob: "BLOB yakınlığı baytları tür dönüşümü yapmadan verildiği gibi saklar.", + numeric: + "NUMERIC yakınlığı, düzgün biçimli sayısal metni önce INTEGER'a, sonra REAL'e dönüştürmeye çalışır; ayrı bir SQLite saklama sınıfı değildir. DATE, DATETIME ve TIME bildirimlerinin de NUMERIC yakınlığı vardır; ISO-8601 TEXT, Julian günü REAL ya da Unix zamanı INTEGER biçimlerinden birini tutarlı biçimde kullanın.", + }, + length: "Uzunluk", + lengthUnit: "Uzunluk birimi", + unitPlaceholder: "Birim", + enumValues: "Enum değerleri", + enumValueCount: "{count} değer", + addEnumValue: "Değer ekle", + removeEnumValue: "Enum değerini kaldır", + enumValuePlaceholder: "Değer (boş bırakılabilir)", + nullable: "Boş olabilir", + primaryKey: "Birincil Anahtar", + defaultValue: "Varsayılan", + defaultValuePresets: "Varsayılan değer hazır ayarları", + comment: "Açıklama", + characterSet: "Karakter kümesi", + charsetPlaceholder: "Karakter kümesi", + collation: "Karşılaştırma (collation)", + collationPlaceholder: "Karşılaştırma (collation)", + editComment: "Açıklamayı düzenle", + commentPlaceholder: "Sütun açıklamasını girin...", + tableCommentPlaceholder: "Tablo açıklamasını girin...", + mysqlTableEngine: "Depolama motoru", + mysqlTableEnginePlaceholder: "Bir depolama motoru seçin", + mysqlTableEngineSearchPlaceholder: "Depolama motorlarında ara", + mysqlTableEngineEmpty: "Kullanılabilir depolama motoru yok", + mysqlTableEngineLoadFailed: "Depolama motorları yüklenemedi: {message}", + owner: "Sahip", + ownerPlaceholder: "Rol adını girin...", + ownerSearchPlaceholder: "Bir rol adı arayın veya girin...", + ownerRolesEmpty: "Rol bulunamadı; bir rol adını elle girin", + ownerLoadFailed: "Tablo sahibi yüklenemedi: {message}", + ownerRolesLoadFailed: "Roller yüklenemedi; yine de elle girebilirsiniz: {message}", + tableCommentUnsupported: "Tablo açıklamaları bu veritabanı tarafından desteklenmiyor", + actions: "İşlemler", + indexName: "Dizin", + indexColumns: "Sütunlar", + indexColumnsPlaceholder: "Sütunları seçin...", + unique: "Benzersiz", + indexType: "Tür", + includedColumns: "Dâhil edilen", + includedColumnsPlaceholder: "Sütunları seçin...", + filter: "Filtre", + concurrent: "Eşzamanlı", + concurrentTooltip: "Yazmaları engellememek için dizini eşzamanlı oluştur. Bu genellikle daha uzun sürer ve bir işlem bloğu içinde çalıştırılamaz.", + concurrentExistingIndexTooltip: "Yalnızca yeni dizinlerde kullanılabilir. Mevcut bir dizini eşzamanlı yeniden oluşturmak (DROP INDEX CONCURRENTLY + CREATE INDEX CONCURRENTLY) henüz desteklenmiyor.", + concurrentPartitionedTooltip: "Bölümlenmiş üst tablolarda kullanılamaz. PostgreSQL, bölümlenmiş üst tablolarda eşzamanlı dizin oluşturmayı reddeder; bunun yerine alt dizinleri eşzamanlı oluşturup bağlayın.", + invalidIndexBlocksSave: 'Kaydetme engellendi: aynı adla bir INVALID dizin (iptal edilmiş eşzamanlı bir oluşturmadan kalma) zaten var: {indexNames}. Önce onu silin (örn. DROP INDEX "schema"."name"), sonra tekrar deneyin.', + concurrentUnavailableTooltip: "Tablonun bölüm durumu doğrulanamadığı sürece kullanılamaz. Eşzamanlı oluşturma yalnızca bölümlenmemiş tablolarda sunulur.", + concurrentUnavailableBlocksSave: + "Eşzamanlı dizin oluşturma artık kullanılamıyor (tablonun bölüm durumu doğrulanamadı). Seçili Eşzamanlı seçeneği temizlendi ve tablo yeniden doğrulanana kadar bu değişiklik engellendi. Yeniden denemek için yenileyin ya da diğer değişikliklerle devam etmek için dizini kaldırın.", + invalidIndexRetryHint: "Bunun nedeni, daha önce iptal edilmiş bir eşzamanlı oluşturmadan kalan aynı adlı bir INVALID dizin olabilir. Önce o dizini silip tekrar deneyin.", + foreignKeyName: "Yabancı anahtar", + referencedSchema: "Ref şema", + referencedTable: "Ref tablo", + referencedColumn: "Ref sütun", + onDelete: "Silmede", + onUpdate: "Güncellemede", + defaultAction: "Varsayılan", + triggerName: "Tetikleyici", + triggerStatement: "Tetikleyici ifadesi", + primary: "Birincil", + drop: "Sil", + restore: "Geri yükle", + remove: "Kaldır", + moveColumnUp: "Sütunu yukarı taşı", + copySelectedColumns: "Seçili alanları kopyala ({count})", + dropSelectedColumns: "Seçili alanları sil ({count})", + moveColumnDown: "Sütunu aşağı taşı", + dragColumn: "Sütunu yeniden sıralamak için sürükleyin", + localColumnOrderNotice: "Sütun sırası yerel olarak kaydedilir ve veritabanı tablo yapısını değiştirmez.", + yes: "Evet", + no: "Hayır", + emptyReadonly: "Kayıt yok", + sqlPreview: "SQL Önizlemesi", + collapseSqlPreview: "SQL Önizlemesini Daralt", + expandSqlPreview: "SQL Önizlemesini Genişlet", + noChanges: "Değişiklik yok", + apply: "Değişiklikleri Uygula", + ready: "Hazır", + saved: "Tablo yapısı güncellendi", + copySql: "SQL Kopyala", + sqliteRebuildNotice: "SQLite önce yedek olarak hareketsiz bir veri anlık görüntüsü tutar, ardından tabloyu tek bir işlemde yeniden oluşturur ve değişen sütunları zorla CAST eder. Gösterilemeyen değerler 0/0.0 olabilir; hatalar geri alınır.", + ddlEditNotice: "Düzenlenen DDL, tam olarak yazıldığı gibi bir betik olarak çalışır — geçerli yapıyla karşılaştırılmaz. Mevcut bir tablo için bunu ALTER (ya da DROP + CREATE) ifadeleri olarak yazın.", + ddlEditConflictsWithStructure: "Hem DDL betiği hem de yapı sekmeleri düzenlendi. Kaydetmeden önce birini uygulayın veya birinden vazgeçin.", + resetDdl: "Veritabanı DDL'ini geri yükle", + extendedProperties: "Genişletilmiş", + autoIncrement: "Otomatik Artan", + mysqlAutoIncrementNextValue: "Sonraki otomatik artan değer", + editMysqlAutoIncrementValue: "Sonraki otomatik artan değeri düzenle (geçerli: {value})", + onUpdateCurrentTimestamp: "Otomatik Güncelleme Zamanı", + identity: "Kimlik (Identity)", + identityGeneration: "Üretim", + identitySeed: "Başlangıç", + identityIncrement: "Artış", + sqlServerIdentityTypeHint: "SQL Server identity yalnızca tinyint, smallint, int, bigint ve ölçeği 0 olan decimal/numeric türlerini destekler", + }, + diagram: { + title: "İlişki Diyagramı", + open: "Diyagramı Görüntüle", + selectConnection: "Bağlantı seç", + selectDatabase: "Veritabanı seç", + selectSchema: "Şema seç", + searchTables: "Tablo, sütun, anahtar ara...", + refresh: "Diyagramı yenile", + refreshConfirm: "Yenilemek tablo meta verisini yeniden yükler, tuval düzenini ve geri alma geçmişini sıfırlar. Kaydedilmiş modellenen ilişkiler korunur. Devam edilsin mi?", + loading: "İlişkiler okunuyor...", + loadingProgress: "İlişkiler okunuyor... {loaded}/{total}", + partialError: "Yüklenemeyen {count} tablonun meta verisi atlandı", + selectTarget: "Bir bağlantı ve veritabanı seçin", + empty: "Görüntülenecek tablo yok", + noMatches: "Eşleşen tablo yok", + tablesCount: "{count} tablo", + relationshipsCount: "{count} ilişki", + tableMode: "Tablo Görünümü", + engineeringMode: "Mühendislik ER", + modelRelationships: "İlişkileri Modelle", + layers: "Katmanlar", + autoMatch: "Otomatik Eşleştir", + autoLayout: "Otomatik Düzen", + matchRelationshipsCount: "{count} eşleşme", + copyJoinSql: "SQL Kopyala", + customRelationshipsCount: "{count} modellendi", + relationshipName: "Ad", + relationshipNamePlaceholder: "İsteğe bağlı", + sourceTable: "Kaynak tablo", + sourceColumn: "Kaynak sütun", + targetTable: "Hedef tablo", + targetColumn: "Hedef sütun", + cardinality: "Kardinalite", + cardinalityOneToMany: "Kaynak 1 · Hedef N", + cardinalityManyToOne: "Kaynak N · Hedef 1", + cardinalityOneToOne: "Kaynak 1 · Hedef 1", + cardinalityManyToMany: "Kaynak N · Hedef N", + cardinalityDirected: "Kaynak {source} · Hedef {target}", + matchPickCardinality: "Kardinaliteyi (1:1 / 1:N / N:1 / N:N) seçtikten sonra eşleşmeyi onaylayın.", + manualAddRelationship: "Elle ekle", + confirmMatch: "Onayla", + ignoreMatch: "Yoksay", + addRelationship: "İlişki ekle", + removeRelationship: "İlişkiyi kaldır", + relationshipIncomplete: "Hem kaynak hem hedef sütunu seçin", + relationshipSelfInvalid: "Bir ilişki aynı sütunu hedefleyemez", + relationshipExists: "Bu ilişki zaten var", + relationshipAdded: "İlişki eklendi", + noJoinSql: "Kopyalanacak ilişki SQL'i yok", + allTables: "Tüm Tablolar", + relatedTables: "İlgili Tablolar", + moreColumns: "+ {count} sütun", + exportSvg: "SVG Dışa Aktar", + exportPng: "PNG Dışa Aktar", + exportJson: "JSON Dışa Aktar", + exportDbml: "DBML Dışa Aktar", + exportMermaid: "Mermaid Dışa Aktar", + export: "Dışa Aktar", + exportedSvg: "SVG dışa aktarıldı", + exportedFormat: "{format} dışa aktarıldı", + exportSvgFailed: "SVG dışa aktarılamadı: {message}", + exportFailed: "{format} dışa aktarılamadı: {message}", + zoomIn: "Yakınlaştır", + zoomOut: "Uzaklaştır", + fitView: "Görünüme sığdır", + resetZoom: "Yakınlaştırmayı sıfırla", + undo: "Geri al", + redo: "Yinele", + resetLayout: "Düzeni sıfırla", + fullscreen: "Tam ekran", + exitFullscreen: "Tam ekrandan çık", + addLayer: "Katman Ekle", + noLayersYet: "Henüz katman yok. Oluşturmak için + düğmesine tıklayın.", + layoutFree: "Serbest", + layoutAuto: "Otomatik", + layerLock: "Katmanı kilitle (içinde otomatik düzeni atla)", + layerUnlock: "Katman kilidini aç (içinde otomatik düzene izin ver)", + layerLocked: "Kilitli", + layerUnlocked: "Kilitsiz", + hideLayer: "Katmanı gizle", + showLayer: "Katmanı göster", + deleteLayer: "Katmanı sil", + layerHiddenCannotFocus: "Katman gizli — tuvale odaklanmak için gösterin", + createTable: "Yeni tablo", + createTableNotSupported: "Bu veritabanında tablo oluşturma desteklenmiyor", + create: "Oluştur", + syncToDatabase: "Veritabanına eşitle", + structureSyncNotSupported: "Bu veritabanında tablo yapısı eşitleme desteklenmiyor", + syncDraftCount: "Eşitlenecek {count} değişiklik (oluştur / değiştir / sil)", + executeSync: "Çalıştır", + syncing: "Eşitleniyor…", + buildingSql: "SQL oluşturuluyor…", + noSqlYet: "Henüz SQL yok", + copySql: "SQL Kopyala", + tableName: "Tablo adı", + tableNameRequired: "Tablo adı zorunludur", + tableNameExists: "Bu ada sahip bir tablo zaten var", + assignLayer: "Katman", + noLayer: "Katman yok", + withDefaultIdPk: "Varsayılan id birincil anahtarını dâhil et", + inspectorTable: "Tablo", + inspectorRelationship: "İlişki", + fieldComment: "Açıklama", + fields: "Alanlar", + tabFields: "Alanlar", + tabIndexes: "Dizinler", + addIndex: "Dizin ekle", + indexName: "Dizin adı", + indexUnique: "UNIQUE", + indexColumns: "Sütunlar", + noIndexesYet: "Henüz dizin yok", + indexesNotSupported: "Bu veritabanında diyagram düzenleyicisinden dizin oluşturma desteklenmiyor", + addColumnNotSupported: "Bu veritabanında sütun ekleme desteklenmiyor", + dropColumnNotSupported: "Bu veritabanında sütun silme desteklenmiyor", + dropTableNotSupported: "Bu veritabanında diyagram düzenleyicisinden tablo silme desteklenmiyor", + addField: "Alan ekle", + deleteField: "Alanı sil", + undoDropField: "Alan silmeyi geri al", + noFieldsYet: "Henüz alan yok — eşitlemek için bir tane ekleyin", + deleteDraftTable: "Taslak tabloyu sil", + deleteLiveTable: "Tabloyu sil", + deleteLiveTableHint: "Tabloyu bir sonraki eşitlemede DROP TABLE için işaretler. Gerekirse geçmişten geri alın.", + deleteLiveTableConfirm: "Veritabanına eşitlediğinizde bu tablo DROP TABLE için işaretlensin mi?", + liveTableReadOnly: "Canlı tablo — yapıyı tablo düzenleyicisinde değiştirin", + liveTableAddColumnsHint: "Sütun ekleyin (ALTER ADD) veya mevcut sütunları silinmek üzere işaretleyin (ALTER DROP), ardından eşitleyin. Mevcut sütun türlerini düzenleme işlemi tablo yapısı düzenleyicisinde kalır.", + liveTableIndexesReadOnly: "Canlı tabloların dizinlerini tablo yapısı düzenleyicisinde düzenleyin", + pendingColumnsBadge: "Bekleyen değişiklikler", + pendingDropColumnBadge: "Sil", + pendingDropTableBadge: "Tabloyu sil", + source: "Kaynak", + target: "Hedef", + emptyDesignHint: "Henüz tablo yok. Bir katman ve tablolar oluşturun, alanları inceleyicide düzenleyin, ardından veritabanına eşitleyin.", + removeFromLayer: "Katmandan kaldır", + addTables: "Tablo ekle", + tabSelectExisting: "Mevcut olanı seç", + tabCreateTable: "Yeni tablo", + multiSelect: "Çoklu seçim", + closeMultiSelect: "Kapat", + selectAll: "Tümünü seç", + clearSelection: "Temizle", + tablesInOtherLayers: "Diğer katmanlardaki tablolar", + filterTables: "Tabloları filtrele...", + noMatchingTables: "Eşleşen tablo yok", + addSelectedCount: "Seçili {count} tanesini ekle", + layerNameTooLong: "Katman adı 50 karakterden kısa olmalıdır", + layerNameInvalid: "Katman adı harf, rakam, Çince karakter, boşluk, alt çizgi, tire ve nokta içerebilir", + layerNameExists: "Katman adı zaten var", + total: "toplam", + confirmed: "onaylanmış", + pending: "bekleyen", + conflicts: "çakışma", + conflict: "Çakışma", + ignored: "yoksayılan", + confirmAll: "Tümünü onayla", + ignoreAll: "Tümünü yoksay", + clearAll: "Tümünü temizle", + confidenceHigh: "Yüksek", + confidenceMedium: "Orta", + confidenceLow: "Düşük", + noInferred: "Çıkarsanmış ilişki yok", + editRelationship: "Düzenle", + saveRelationship: "Kaydet", + deleteRelationship: "Sil", + confirmDeleteRelationship: "Bu ilişki silinsin mi?", + confirmDeleteRelationshipAction: "Sil", + confirmRelationship: "Onayla", + ignoreRelationship: "Yoksay", + relationshipKindFk: "Yabancı anahtar", + relationshipKindCustom: "Özel", + relationshipKindInferred: "Çıkarsanmış", + relationshipReadOnlyFk: "Bu ilişki bir veritabanı yabancı anahtarından gelir ve burada düzenlenemez.", + relationshipUpdated: "İlişki güncellendi", + }, + etcd: { + prefixPlaceholder: "Anahtar yolu ara, örn. /app/ veya service", + newKey: "Yeni Anahtar", + loadingKeys: "Anahtarlar yükleniyor...", + empty: "Anahtar bulunamadı", + loadMore: "Daha fazla yükle", + selectKey: "Değerini görmek için bir anahtar seçin", + loadingValue: "Değer yükleniyor...", + notFound: "Anahtar bulunamadı", + edit: "Düzenle", + editKey: "Anahtarı Düzenle", + delete: "Sil", + deleteTitle: "etcd anahtarını sil", + keyPlaceholder: "/path/to/key", + keyRequired: "Anahtar zorunludur", + ttl: "TTL (saniye)", + ttlPlaceholder: "Saniye cinsinden pozitif bir sayı girin", + ttlInvalid: "TTL pozitif bir tam sayı olmalıdır", + ttlUnavailable: "TTL yapılandırmak için etcd Agent'ı güncelleyip yeniden bağlanın.", + expiryMode: "Sona erme politikası", + expiryPermanent: "Kalıcı", + expiryPermanentHint: "Kira ekleme; anahtar otomatik olarak sona ermeyecek", + expiryTtl: "Yaşam süresi (TTL)", + expiryTtlHint: "Yapılandırılan süre sonunda sona eren geçici bir kira oluştur", + expiryLease: "Kira bağla", + expiryLeaseHint: "Anahtarı mevcut bir Kira Kimliğine bağla", + leaseId: "Kira Kimliği", + leasePlaceholder: "Mevcut bir Kira Kimliği girin", + leaseInvalid: "Kira Kimliği geçerli, pozitif bir 64 bitlik tam sayı olmalıdır", + valueContent: "Değer içeriği", + keyAlreadyExists: "Bu ada sahip bir anahtar zaten var. Başka bir ad seçin ya da bu iletişim kutusunu kapatıp mevcut anahtarı düzenleyin.", + conflict: "Bu anahtar yüklendikten sonra değişti. Yenileyip tekrar deneyin.", + saved: "Anahtar kaydedildi", + deleted: "Anahtar silindi", + base64Readonly: "Base64 değerlerini Base64 modunda düzenleyin.", + rename: "Yeniden Adlandır", + clone: "Çoğalt", + copyKey: "Anahtarı kopyala", + export: "Dışa Aktar", + exportAll: "Tümünü dışa aktar", + exportSelection: "Seçimi dışa aktar", + batchExport: "Toplu dışa aktarma", + exportAllJson: "Tümünü dışa aktar (JSON, içe aktarılabilir)", + exportAllCsv: "Tümünü dışa aktar (CSV)", + exportAllMarkdown: "Tümünü dışa aktar (Markdown)", + exportSelectionJson: "Seçimi dışa aktar (JSON)", + exportSelectionCsv: "Seçimi dışa aktar (CSV)", + exportSelectionMarkdown: "Seçimi dışa aktar (Markdown)", + import: "İçe Aktar", + sync: "Eşitle", + history: "Geçmiş", + restore: "Bu sürümü geri yükle", + compare: "Karşılaştır", + format: "Değer biçimi", + savePreview: "Değer değişikliklerini incele", + globalSearch: "Genel arama", + searchPrefix: "Önekle sınırla (isteğe bağlı)", + searchAll: "Anahtar ve değer", + searchPlaceholder: "Anahtar veya değer içeriğinde ara", + searchProgress: "{scanned} anahtar tarandı, {matched} eşleşti", + exportResults: "Sonuçları dışa aktar", + clearSearchResults: "Sonuçları temizle", + exported: "{count} anahtar dışa aktarıldı", + selectAllLoaded: "Tümünü seç", + deselectAll: "Temizle", + batchDelete: "Toplu silme", + batchDeleteTitle: "Seçili etcd anahtarlarını sil", + batchDeleteConfirm: "Seçili {count} anahtar silinsin mi? Bu işlem geri alınamaz.", + batchDeleteSuccess: "{count} anahtar silindi", + batchDeletePartial: "Toplu işlem durmadan önce {count} anahtar silindi: {error}", + importPreview: "İçe aktarma önizlemesi", + syncPreview: "Eşitleme önizlemesi", + targetConnection: "Hedef etcd bağlantısını seçin", + targetReadOnly: "Hedef bağlantı salt okunur; içe aktarma ve eşitleme işlemleri uygulanamaz.", + mirrorDelete: "Fazla hedef anahtarları sil (ayna)", + mirrorDeleteWarning: "Ayna modu, kaynakta bulunmayan hedef anahtarları siler. Uygulamadan önce her silme işlemini inceleyin.", + preparingPreview: "Sabit revizyonlu değişiklik önizlemesi hazırlanıyor...", + operation: "İşlem", + reason: "Neden", + selectedOperations: "{count} işlem seçildi", + applyOperations: "İşlemleri uygula", + transferApplied: "{count} işlem uygulandı", + operationApplied: "Başarıyla uygulandı", + transferPartiallyApplied: "Toplu işlem durmadan önce {count} işlem uygulandı: {error}. Önizleme yenilendi; yalnızca kalan seçili işlemleri yeniden deneyin.", + transferPartialRefreshFailed: "Toplu işlem durmadan önce {count} işlem uygulandı: {error}. Önizlemeyi yenileme de başarısız oldu: {previewError}. Yeniden denemeden önce önizlemeyi kapatıp yeniden açın.", + targetChangedDuringTransfer: "Toplu işlem çalışırken hedef bağlantı değişti", + watch: "İzle", + lease: "Kira", + key: "Anahtar", + keyOrPrefix: "Anahtar veya önek", + selectExistingLease: "Mevcut bir Kira seçin", + enterLeaseId: "Ya da bir Kira Kimliğini elle girin", + leasePickerHint: "Bu oturumdan bir Kira seçin ya da bir Kira Kimliğini elle girin.", + noLeasePickerHint: "Bu oturumda kullanılabilir Kira yok. Bir kimliği elle girip kaydedin.", + registryWarning: "Bu anahtar, denetim düzlemi bileşenlerinin sıkça kullandığı /registry/ ad alanı altındadır. Kaydetmeden önce sahibini ve etkisini doğrulayın.", + access: { + users: "Kullanıcılar", + roles: "Roller", + title: "Erişim denetimi", + description: "Yerel etcd kullanıcılarını, rollerini ve Anahtar yetkilerini yönetin", + readOnly: "Salt okunur bağlantı", + refresh: "Yenile", + userCount: "Kullanıcılar ({count})", + roleCount: "Roller ({count})", + createUser: "Kullanıcı oluştur", + createRole: "Rol oluştur", + noUsers: "Hiç etcd kullanıcısı oluşturulmamış", + noRoles: "Hiç etcd rolü oluşturulmamış", + selectUser: "Rolleri ve kimlik bilgisi işlemlerini görmek için soldan bir kullanıcı seçin", + selectRole: "Yetkileri görüntülemek ve yönetmek için soldan bir rol seçin", + loadingUser: "Kullanıcı ayrıntıları yükleniyor...", + loadingRole: "Rol ayrıntıları yükleniyor...", + userRolesSummary: "{count} rol atandı. Parolalar istemci tarafından hiçbir zaman okunmaz, gösterilmez veya saklanmaz.", + changePassword: "Parolayı değiştir", + deleteUser: "Kullanıcıyı sil", + roleAssignments: "Rol atamaları", + roleAssignmentHint: "Roller, bu kullanıcının okuyup yazabileceği Anahtar aralıklarını belirler.", + revokeAssociation: "İlişkilendirmeyi geri al", + noAssignedRoles: "Bu kullanıcıya atanmış rol yok.", + assignRole: "Bir rol ata", + assignRoleHint: "Bu kullanıcıya henüz atanmamış bir rol seçin.", + selectRoleOption: "Bir rol seçin", + noAssignableRoles: "Atanabilecek rol yok", + grantRole: "Rol ata", + rolePermissionHint: "Yetkiler tüm Anahtarları, bir öneki ya da tam bir Anahtarı kapsayabilir. Önekler etcd yarı açık aralıkları olarak saklanır.", + grantPermission: "Yetki ver", + deleteRole: "Rolü sil", + resource: "Kaynak", + permission: "Yetki", + allKeys: "Tüm Anahtarlar", + exactKey: "Tam Anahtar", + allKeyspace: "Tüm anahtar alanı", + edit: "Düzenle", + revoke: "Yetkiyi geri al", + noPermissions: "Bu rolün yetkisi yok.", + createEtcdUser: "etcd kullanıcısı oluştur", + username: "Kullanıcı adı", + password: "Parola", + initialRoles: "Başlangıç rolleri", + optional: "İsteğe bağlı", + initialRolesHint: "Seçili roller, oluşturmanın hemen ardından atanacak.", + selectedCount: "{count} seçildi", + noRolesForNewUser: "Henüz rol yok. Önce kullanıcıyı oluşturup ayrıntılarından rol atayabilirsiniz.", + createAndAssignRoles: "Oluştur ve {count} rol ata", + createUserAction: "Kullanıcı oluştur", + createEtcdRole: "etcd rolü oluştur", + roleName: "Rol adı", + initialPermission: "Başlangıç yetkisi", + initialPermissionHint: "Belirtilirse bu yetki, rol oluşturulurken verilir.", + keyOrPrefixPlaceholder: "Anahtar veya Önek", + allKeysHint: "Bu, tüm Anahtarlara erişim verir.", + createAndGrantPermission: "Oluştur ve yetki ver", + read: "Okunan", + write: "Yazma", + readWrite: "Okuma ve yazma", + passwordHint: "Yeni parola yalnızca bu istekle gönderilir ve gönderimden sonra arayüzden silinir.", + newPassword: "Yeni parola", + continue: "Devam et", + editPermission: "Rol yetkisini düzenle", + permissionUpdateHint: "etcd Auth atomik güncelleme sunmaz. Kaydetmek eski yetkiyi geri alır, ardından yenisini verir. Verme başarısız olursa DBX eski yetkiyi geri yüklemeye çalışır.", + saveChanges: "Değişiklikleri kaydet", + dangerousTitle: "Tehlikeli işlemi onayla", + dangerousHint: "Bu işlem etcd Auth verilerini doğrudan değiştirir. Devam etmek için aşağıya onay metnini girin.", + confirmationPlaceholder: "Onay metnini girin", + confirmExecute: "Onayla ve çalıştır", + cancel: "İptal", + preflightRequired: "Bu yetki değişikliği yeni bir onay kimlik bilgisi gerektiriyor. Değişiklikleri kaydet'i seçip yeniden onaylayın.", + preflightExpired: "Onay süresi doldu. Değişiklikleri kaydet'i seçip yeniden onaylayın.", + preflightMismatch: "Onay içeriği veya bekleyen yetki değişti. Yeniden denemeden önce tekrar onaylayın.", + confirmationMismatch: "Onay metinleri eşleşmiyor. Lütfen tekrar deneyin.", + createdUser: "{user} kullanıcısı oluşturuldu", + createdUserWithRoles: "{user} kullanıcısı oluşturuldu ve {count} rol atandı", + createdUserRolesFailed: "Kullanıcı oluşturuldu, ancak başlangıç rollerinin atanması başarısız oldu: {error}", + createdRole: "{role} rolü oluşturuldu", + createdRoleWithPermission: "{role} rolü oluşturuldu ve başlangıç yetkisi verildi", + createdRolePermissionFailed: "Rol oluşturuldu, ancak başlangıç yetkisinin verilmesi başarısız oldu: {error}", + deletedUser: "{user} kullanıcısı silindi", + deletedRole: "{role} rolü silindi", + passwordUpdated: "{user} kullanıcısının parolası güncellendi", + roleGranted: "{role} rolü {user} kullanıcısına atandı", + roleRevoked: "{role} rolü {user} kullanıcısından geri alındı", + permissionGranted: "Rol yetkisi verildi", + permissionUpdated: "Rol yetkisi güncellendi", + permissionRevoked: "Rol yetkisi geri alındı", + }, + admin: { + maintenance: "Bakım", + watch: "İzle", + lease: "Kira", + refresh: "Yenile", + maintenanceTitle: "Geçmiş ve disk bakımı", + maintenanceDescription: "Önce kullanılmayan geçmişi temizleyin, ardından arka uç disk alanını geri kazanıp kazanmayacağınıza karar verin. Bu işlemler birbirinin yerine geçmez.", + currentRevision: "Geçerli revizyon {revision}", + reachableMembers: "Erişilebilir üyeler {reachable} / {total}", + compactTitle: "Geçmişi sıkıştır", + compactDescription: "Belirtilen revizyondan önceki MVCC geçmişini siler. Geçerli Anahtar değerleri korunur, ancak daha erken başlayan geçmiş okumaları ve İzlemeler kurtarılamaz.", + compactDiskHint: "Bu işlem disk alanı boşaltmaz. Arka uç dosya boyutunu küçültmek için sıkıştırmadan sonra Birleştir'i çalıştırın.", + compactRevision: "Geçmiş saklama başlangıcı (revizyon)", + compactPlaceholder: "Örneğin {revision}", + compactRequired: "Geçmişin hangi revizyondan itibaren saklanacağını girin.", + compactDone: "Geçmiş sıkıştırma tamamlandı", + compactInputHint: "Bu revizyondan önceki geçmişi siler. Devam etmeden önce bu geçmiş sürümlerin artık gerekmediğini doğrulayın.", + compactAction: "Geçmişi sıkıştır", + defragTitle: "Disk alanını geri kazan", + defragDescription: "Birleştirme, geri kazanılabilir disk alanını işletim sistemine döndürmek için her üyenin arka ucunu yeniden yazar. İzleyiciler, geçerli lider öncesinde sırayla işlenir.", + defragWarning: "Birleştirilirken her üye kısa süreliğine kullanılamaz. Üyeler teker teker, geçerli lider en sonda işlenir; önce kümenin sağlıklı olduğunu doğrulayın.", + defragReachableMembers: "Erişilebilir {count} üyeyi işle", + leaderLast: "Lider en son: {endpoint}", + defragAction: "{count} üyede disk alanını geri kazan", + defragDone: "Birleştirme tamamlandı", + newWatch: "Yeni izleme", + editWatch: "İzlemeyi düzenle", + watchSearch: "İzlemeleri filtrele", + watchKeyPlaceholder: "Örneğin /apps/payment/config", + watchScope: "İzleme kapsamı", + prefix: "Önek", + exact: "Tam Anahtar", + watchKeyHint: "Bu Anahtar için oluşturma, güncelleme ve silme olaylarını al.", + watchPrefixHint: "Bu önekle başlayan her Anahtar için olayları al.", + watchSessionHint: "İzlemeler yalnızca bu bağlantı oturumunda çalışır ve bağlantı kapatıldığında ya da etcd sayfasından çıkıldığında durur. Bir bağlantı en fazla dört izleme çalıştırabilir.", + watchCount: "{count} oluşturuldu", + runningWatchCount: "{count} çalışıyor", + watchList: "Oluşturulan izlemeler", + itemCount: "{count} öğe", + scope: "Kapsam", + status: "Durum", + actions: "İşlemler", + createWatch: "İzlemeyi oluştur ve başlat", + saveWatch: "Yapılandırmayı kaydet", + running: "Çalışıyor", + stopped: "Durduruldu", + error: "Hata", + editWatchTitle: "İzlemeyi düzenle", + stopWatch: "İzlemeyi durdur", + startWatch: "İzlemeyi başlat", + deleteWatch: "İzlemeyi sil", + noMatchingWatches: "Eşleşen izleme yok", + noWatches: "Henüz izleme yok.", + eventStream: "Olay akışı", + eventCount: "{count} olay", + filter: "Filtre", + event: "Olay", + create: "Oluştur", + update: "Değer değişikliği", + delete: "Sil", + noFilteredEvents: "Geçerli filtreyle eşleşen olay yok", + waitingEvents: "Anahtar değişiklikleri bekleniyor...", + watchNotRunning: "Bu izleme çalışmıyor.", + selectWatch: "Olay akışını görmek için soldan bir izleme seçin", + leaseDescription: "Bir Kira sona erdiğinde, bağlı tüm Anahtarlar otomatik olarak silinir.", + grantLease: "Kira Ver", + renew: "Yenile", + revoke: "Yetkiyi geri al", + previousPage: "Geri", + nextPage: "İleri", + leasePageSize: "Sayfa başına en fazla {count} öğe", + grantedTtl: "{ttl} sn verildi", + noKnownLeases: "Bu oturumda bilinen Kira yok", + loadingLease: "Kira ayrıntıları yükleniyor...", + keepalive: "Bu sayfa açık kaldığı sürece her TTL / 3 sürede bir otomatik yenile", + attachedKeys: "Bağlı Anahtarlar", + noAttachedKeys: "Bağlı Anahtar yok", + attachedKeysTruncated: "Bağlı Anahtar sonuçları 256 girdiyle sınırlandırıldı.", + selectLease: "Ayrıntılarını görmek için bir Kira seçin", + leasePartial: "Geçerli istemci veya etcd sunucusu Kiraları listeleyemiyor. Yalnızca bu oturumda oluşturulan ya da erişilen Kiralar gösterilir; ayrıntılar ve TTL yine sunucudan gelir.", + grantNewLease: "Yeni Kira ver", + ttl: "TTL (saniye)", + ttlPlaceholder: "Örneğin 60", + ttlHint: "Kira süresi pozitif bir tam sayı olmalıdır.", + customLeaseId: "Özel Kira Kimliği", + customLeasePlaceholder: "etcd'nin atamasını istiyorsanız boş bırakın veya 0 girin", + customLeaseHint: "Ondalık bir tam sayı kullanın. etcd, zaten var olan bir kimliği reddeder.", + confirmationHint: "Bu küme bakım işlemi otomatik olarak geri alınamaz. Devam etmeden önce etkilerini inceleyin.", + confirmationCredentialHint: "Aşağıya onay metnini girin. Kimlik bilgisi yalnızca bu işlem için geçerlidir.", + confirmationPlaceholder: "Onay metnini girin", + confirmationPrompt: "Bu işlem etcd kümesini etkileyebilir. Onay metnini girin:\n{confirmationText}", + confirmExecute: "Onayla ve çalıştır", + cancel: "İptal", + noReachableMembers: "Birleştirme için erişilebilir üye yok.", + defragStopped: "Birleştirme durduruldu: {succeeded} başarılı, {failed} başarısız, {notExecuted} çalıştırılmadı", + defragCompleted: "Birleştirme tamamlandı: {succeeded}/{total} başarılı", + leaseRenewed: "{id} Kirası yenilendi", + leaseGrantCancelled: "Bekleme durduruldu. etcd kira vermeyi hâlâ işliyor olabilir; Kiranın oluşturulup oluşturulmadığını doğrulamak için yenileyin.", + leaseCreated: "{id} Kirası oluşturuldu", + }, + dashboard: { + title: "etcd Panosu", + description: "İstemcinin erişebildiği uç noktalara dayalı gözlem; bu, yetkili bir çoğunluk sağlık denetimi değildir.", + autoRefreshOff: "Otomatik yenileme kapalı", + refresh: "Yenile", + retry: "Yeniden denetle", + loadFailed: "etcd Panosu yüklenemedi", + agentUpgradeTitle: "Geçerli etcd Agent'ı ile Pano kullanılamıyor", + agentUpgradeDescription: "Bu bağlantı hâlâ küme durumunu okuyamayan eski bir Agent kullanıyor. Anahtarlara gözatma ve düzenleme kullanılabilir durumda.", + agentUpgradeSteps: "Sürücü Yöneticisi'nde etcd Agent'ı güncelleyin, ardından bu etcd bağlantısını kesip yeniden bağlanın. Bitirince “Yeniden denetle”yi seçin.", + observedHealth: "Gözlenen sağlık", + reachableMembers: "Erişilebilir üyeler", + keyCount: "Anahtar sayısı", + backendSize: "Arka uç boyutu", + fragmentation: "Parçalanma tahmini", + cluster: "küme", + revision: "revizyon", + leader: "lider", + noAlarms: "Etkin alarm gözlenmedi", + prometheusMetrics: "Prometheus çalışma zamanı metrikleri", + prometheusDescription: "etcd /metrics adresinden toplanan kararlı metrikler. Oranlar, ardışık iki örnekten hesaplanır.", + collectedAt: "Toplanma zamanı", + requests: "gRPC istek hızı", + requestFailureRate: "İstek hata oranı", + proposals: "Raft önerileri", + proposalLag: "Uygulanana kadar geciken commit farkı", + pending: "bekleyen", + diskLatency: "Disk kalıcılık gecikmesi", + walFsync: "WAL fsync ortalaması", + backendCommit: "Arka uç commit ortalaması", + networkTraffic: "İstemci ağ trafiği", + peerTraffic: "Eş trafiği", + processResources: "İşlem kaynakları", + runtime: "Go çalışma zamanı", + goroutines: "goroutine", + leaderChanges: "Toplam lider değişikliği", + failedProposals: "Toplam başarısız öneri", + failedProposalRate: "Hata oranı", + rateNeedsRefresh: "Canlı oranları hesaplamak için yeniden yenileyin", + storageQuota: "Arka uç kota kullanımı", + uptime: "İşlem çalışma süresi", + consensusReliability: "Uzlaşı ve güvenilirlik", + leadership: "Liderlik", + knownPeers: "bilinen eş", + proposalState: "Öneri durumu", + raftFailures: "Raft hataları", + revisionState: "MVCC revizyonu", + compactRevision: "Sıkıştırma revizyonu", + requestLoad: "İstek yükü", + grpcMethod: "gRPC yöntemi", + total: "Toplam", + rate: "Oran", + failures: "Hatalar", + lag: "Gecikme", + slowApply: "Yavaş uygulama", + putBytes: "Yazılan bayt", + avgLatency: "Ortalama gecikme", + storageDisk: "Depolama ve disk", + databaseState: "Veritabanı durumu", + inUse: "kullanımda", + openReadTransactions: "Açık okuma işlemleri", + backgroundTasks: "Arka plan görevleri", + watchState: "İzleme durumu", + watchers: "İzleyiciler", + watchStreams: "İzleme akışları", + events: "Olay hızı", + slowPending: "Yavaş / bekleyen", + leaseState: "Kira yaşam döngüsü", + granted: "Verilme hızı", + renewed: "Yenilenme hızı", + revokedExpired: "Geri alınan / sona eren", + averageTtl: "Ortalama TTL", + runtimeResources: "Çalışma zamanı kaynakları", + memory: "Bellek", + processNetworkGc: "İşlem ağı ve GC", + metricsUnavailable: "Prometheus metrikleri kullanılamıyor", + metricsUnavailableHint: "Küme durumu kullanılabilir durumda. DBX, /metrics adresini doğrudan geçerli etcd uç noktasından ister; oluşan URL'nin DBX uygulamasından erişilebilir olduğunu doğrulayın.", + endpointMember: "Uç nokta / üye", + role: "Rol", + version: "Sürüm", + raftTermApplied: "Raft dönemi / uygulanan", + dbSizeInUse: "VT boyutu / kullanımda", + latency: "Gecikme", + status: "Durum", + learner: "öğrenici", + follower: "izleyici", + reachable: "erişilebilir", + unreachable: "erişilemez", + loading: "Küme gözlemi yükleniyor…", + health: { + unknown: "bilinmiyor", + critical: "kritik", + warning: "uyarı", + healthy: "sağlıklı", + }, + }, + }, + consul, + zookeeper: { + prefixPlaceholder: "Yol öneki, örn. /app/", + newKey: "Yeni Znode", + loadingKeys: "Znode'lar yükleniyor...", + empty: "Znode bulunamadı", + loadMore: "Daha fazla yükle", + selectKey: "Değerini görmek için bir znode seçin", + loadingValue: "Değer yükleniyor...", + notFound: "Znode bulunamadı", + edit: "Düzenle", + editKey: "Znode'u Düzenle", + delete: "Sil", + deleteTitle: "ZooKeeper znode'unu sil", + keyPlaceholder: "/path/to/znode", + keyRequired: "Znode yolu zorunludur", + rootReadonly: "Kök znode değiştirilemez. Bir alt znode yolu girin.", + saved: "Znode kaydedildi", + deleted: "Znode silindi", + base64Readonly: "Bu sürümde Base64 değerleri salt okunurdur.", + utf8PreviewLossy: "Geçersiz UTF-8 baytları değiştirme karakteri (�) olarak gösterilir. Özgün Base64 değeri değişmez.", + utf8PreviewUnavailable: "Base64 değeri geçersiz olduğu için özgün değer gösteriliyor.", + createMode: "Oluşturma Modu", + createModePersistent: "Kalıcı", + createModeEphemeral: "Geçici", + createModePersistentSequential: "Kalıcı Sıralı", + createModeEphemeralSequential: "Geçici Sıralı", + add: "Ekle", + value: "Değer", + metadata: "Düğüm Bilgisi", + prettyJson: "Düzenli", + invalidJson: "Geçersiz JSON", + summaryRevision: "rev", + summaryVersion: "ver", + summaryLease: "kira", + summarySize: "boyut", + }, + redis: { + setDatabaseAlias: "Veritabanı Takma Adı Ayarla", + databaseAliasTitle: "db{db} için takma ad", + databaseAliasPlaceholder: "örn. orders, cache, development", + databaseAliasHint: "Takma ad yalnızca görüntüleme ve arama içindir. Redis komutları sayısal veritabanı dizinini kullanmaya devam eder.", + clearDatabaseAlias: "Takma Adı Temizle", + databaseAliasSaved: "db{db} için takma ad {alias} olarak ayarlandı", + databaseAliasCleared: "db{db} için takma ad temizlendi", + selectKey: "Değerini görmek için bir anahtar seçin", + noKeys: "Anahtar bulunamadı", + noKeysInScanHint: "Geçerli tarama aralığında anahtar bulunamadı", + pattern: "desen (örn. user:*)", + fuzzyPattern: "anahtar şunu içerir...", + keyTemplateSuggestions: "Anahtar şablonları", + fuzzyMatch: "Bulanık", + fuzzyMatchTitle: "Bulanık eşleşme: anahtarları düz metin içeriğine göre ara", + valueSearchPlaceholder: "değer şunu içerir...", + allSearchPlaceholder: "anahtar veya değer şunu içerir...", + searchByKey: "Anahtar", + searchByValue: "Değer", + searchByAll: "Tümü", + searchFields: "Alanlarda ve değerlerde ara", + searchMembers: "Üyelerde ara", + searchItems: "Öğelerde ara", + keys: "{count} anahtar", + loadedKeys: "{loaded} / {total} anahtar yüklendi", + loadingKeys: "Anahtarlar yükleniyor...", + searchingValues: "Değerler aranıyor...", + searchingAll: "Anahtarlar ve değerler aranıyor...", + loadMoreKeys: "Daha fazla anahtar yükle", + fetchAllKeys: "Tümünü getir", + stopFetchAll: "Durdur", + fetchAllProgress: "{total} anahtarın {loaded} tanesi yüklendi", + fetchAllProgressUnknown: "{loaded} anahtar yüklendi", + items: "{count} öğe", + fields: "{count} alan", + members: "{count} üye", + loadedItems: "{total} öğenin {loaded} tanesi yüklendi", + loadedFields: "{total} alanın {loaded} tanesi yüklendi", + loadedMembers: "{total} üyenin {loaded} tanesi yüklendi", + entries: "{count} girdi", + streamData: "Akış Verisi", + consumerGroups: "Tüketici Grupları", + group: "Grup", + consumers: "Tüketiciler", + pending: "Bekliyor", + lastDeliveredId: "Son Teslim Edilen Kimlik", + lastDelivered: "Son Teslim Edilen", + entriesRead: "Okunan Girdi", + lag: "Gecikme", + noConsumerGroups: "Tüketici grubu yok", + streamGroupsLoadFailed: "Tüketici grupları yüklenemedi", + backToGroups: "Gruplara dön", + streamConsumers: "Tüketiciler", + streamConsumersLoadFailed: "Tüketiciler yüklenemedi", + noStreamConsumers: "Tüketici yok", + openConsumerDetails: "Tüketici ayrıntılarını aç", + consumer: "Tüketici", + idle: "Boşta", + inactive: "Etkin değil", + pendingEntries: "Bekleyen Girdiler", + pendingEntriesLoadFailed: "Bekleyen girdiler yüklenemedi", + noPendingEntries: "Bekleyen girdi yok", + entryId: "Girdi Kimliği", + deliveries: "Teslimat", + loadMoreEntries: "Daha fazla girdi yükle", + loadMorePending: "Daha fazla bekleyen girdi yükle", + noExpiry: "sona erme yok", + noExpiryOnly: "Yalnızca sona ermeyenler", + noExpiryOnlyTitle: "Yüklenen sonuçlarda yalnızca TTL'i olmayan anahtarları göster", + noExpiryKeysEmpty: "Yüklenen sonuçlarda sona ermeyen anahtar yok", + ttlCountdownTitle: "Yükleme anındaki TTL'den yerel geri sayım", + expired: "sona erdi", + expiry: "Sona Erme", + expiryNone: "Sona erme yok", + expiryTtl: "TTL (saniye)", + expiryAt: "Sona erme zamanı (yerel)", + expiryTtlInvalid: "Saniye cinsinden pozitif bir tam sayı TTL girin", + expiryDateRequired: "Geçerli bir sona erme zamanı seçin", + expiryDatePast: "Sona erme zamanı gelecekte olmalıdır", + keyExpiredBeforeDisplay: "Anahtar görüntülenmeden önce sona erdi.", + autoRefresh: "Otomatik yenileme geri sayımı", + ttlDay: "{count}g", + ttlHour: "{count}sa", + ttlMinute: "{count}dk", + ttlSecond: "{count}sn", + columnType: "Tür", + columnKey: "Anahtar", + columnValue: "Değer", + columnSize: "Boyut", + columnTTL: "TTL", + binaryStringReadonlyHint: "İkili dize değerleri salt okunur modda kaçış karakterli metin olarak gösterilir; ham baytları düzenleme desteklenmiyor.", + largeStringPreviewHint: "Bu değer büyük. {total} değerin yalnızca ilk {loaded} tanesi yüklendi ve önizleme salt okunurdur.", + largeStringPreviewHintUnknown: "Bu değer büyük. Yalnızca ilk {loaded} tanesi yüklendi ve önizleme salt okunurdur.", + largeStringPreviewActionUnavailable: "Büyük değer önizlemeleri kopyalanamaz, çözülemez veya insert ifadeleri üretmek için kullanılamaz", + selectedKeys: "Seçili anahtarlar", + selectAllLoaded: "Tümünü seç", + selectAllLoadedTitle: "Tüm anahtarları seç (Ctrl/Cmd+A)", + deselectAll: "Temizle", + selectLoadedGroupKeys: "Bu klasörde yüklenen {count} anahtarı seç", + loadedMatchingKeys: "{count} yüklenmiş eşleşen anahtar", + loadedGroupKeysPartial: "Şu ana kadar {count} anahtar yüklendi — bu klasörde daha fazlası olabilir", + fuzzyTreeLimit: "Tarayıcının akıcı kalması için {count} bulanık eşleşme düz liste olarak gösteriliyor. Hiyerarşiyi görmek için aramayı daraltın.", + deleteGroup: "Grubu sil", + deleteKey: "Anahtarı sil", + deleteGroupDetails: "{target}\n{count} anahtar", + deleteLoadedSearchKeysDetails: "{target}\n{count} yüklenmiş eşleşen anahtar", + flushDb: "Geçerli VT'yi temizle", + flushDbMessage: "Bu işlem geçerli Redis veritabanındaki her anahtarı siler ve geri alınamaz. Devam edilsin mi?", + flushDbDetails: "Hedef: Redis db{db}\nKapsam: geçerli VT'deki tüm anahtarlar", + flushDbConfirm: "VT'yi Temizle", + flushDbSuccess: "Redis db{db} temizlendi", + keyDetail: "Anahtar ayrıntısı", + commandLine: "Komut satırı", + selectKeyForDetail: "Ayrıntıları görmek için bir anahtar seçin", + commandWelcome: "Redis komut konsoluna hoş geldiniz", + commandPlaceholder: "Redis komutu, örn. GET user:1", + commandPrefix: "CMD", + commandHint: "Bir Redis komutu girin, örn. SMEMBERS feature:flags", + executeCommand: "Komutu çalıştır", + commandEmpty: "Bir Redis komutu girin", + commandEmptyResult: "Sonucu görmek için bir Redis komutu çalıştırın", + commandBlocked: "Bu Redis komutu güvenlik nedeniyle engellendi", + createKey: "Anahtar oluştur", + createKeyName: "Anahtar", + createKeyNamePlaceholder: "user:1", + createKeyType: "Tür", + createKeyTypeHelp: { + string: "512 MB'a kadar tek, ikili güvenli değer. Önbelleğe alınmış değerler, sayaçlar, bayraklar ve basit serileştirilmiş veriler için en uygunudur.", + hash: "Düz alan-değer eşlemesi. Tek tek alanlar için verimlidir, ancak büyük bir hash'i tümüyle okumak O(N)'dir.", + list: "Sıralı dizi. Baş ve son işlemleri verimlidir; ortadaki rastgele erişim, liste uzunluğuyla doğrusaldır.", + set: "Benzersiz üyelerden oluşan sırasız koleksiyon. Tek üye işlemleri O(1)'dir; büyük kümeleri listelemek veya birleştirmek doğrusaldır.", + zset: "Kayan noktalı puanlara göre sıralanmış benzersiz üyeler. Yazmalar O(log N)'dir; puanları eşit üyeler sözlük sırasına göre sıralanır.", + stream: "Yalnızca ekleme yapılan olay günlüğü. Tüketici grupları XACK ve bekleyen girdi işlemesi gerektirir; saklamayı ve belleği denetlemek için akışı kırpın.", + json: "Yol ile adreslenebilen JSON belgesi. RedisJSON/Redis Stack JSON.* desteği gerektirir ve genellikle String ya da Hash'ten daha fazla yük getirir.", + }, + createValue: "Değer", + createMember: "Üye", + createField: "Alan", + createFieldPlaceholder: "ad", + createScore: "Puan", + createKeyTtl: "TTL (saniye)", + createKeyTtlPlaceholder: "pozitif tam saniye", + createKeyAddEntry: "Girdi ekle", + createKeyEntryId: "Girdi Kimliği", + createKeyRawMode: "Ham girdi", + createKeyEntries: "Girdiler", + createKeyPartialWrite: "Bazı girdiler yazıldı. Hatayı düzeltip kalan girdileri yazmak için yeniden oluşturun.", + createValuePlaceholder: "değer", + createKeySubmit: "Oluştur", + createKeyNameRequired: "Bir anahtar adı girin", + renameKey: "Anahtarı Yeniden Adlandır", + renameKeyName: "Anahtar adı", + renameKeyNameRequired: "Bir anahtar adı girin", + renameKeySuccess: '"{oldName}", "{newName}" olarak yeniden adlandırıldı', + createFieldRequired: "Bir hash alanı girin", + createScoreInvalid: "Geçerli bir puan girin", + jsonModuleNotAvailable: "Bu Redis sunucusunda ReJSON modülü yüklü değil", + field: "Alan", + fieldRequired: "Bir alan adı girin", + valueRequired: "Bir değer girin", + memberRequired: "Bir üye girin", + updateAppliedRefreshFailed: "Değişiklik kaydedildi, ancak değer yenilenemedi: {message}", + zsetAclCompatibilityWarning: "Değişiklik ACL uyumluluk modunda kaydedildi; eşzamanlı puan değişiklikleri denetlenemedi.", + ttlInvalid: "Saniye cinsinden geçerli bir TTL girin (sona erme yoksa -1)", + member: "Üye", + memberDetail: "Üye ayrıntısı", + viewMember: "Tam değeri görüntüle", + copyMember: "Üyeyi kopyala", + copyKeyName: "Anahtar adını kopyala", + copyKeyPath: "Anahtar yolunu kopyala", + deleteGroupKeys: "Yüklenen anahtarları sil", + copied: "Kopyalandı", + copyInsertStatement: "Insert İfadesini Kopyala", + copyInsertStatementBinary: "İkili veri için insert ifadesi üretilemiyor", + editMember: "Düzenle", + jsonView: "JSON görünümü", + jsonViewRaw: "Ham", + jsonViewDecoded: "Çözülmüş", + rawContent: "Ham içerik", + wordWrap: "Sözcük kaydırma", + codecNone: "Yok", + codecRowLabel: "Çöz", + viewRowLabel: "Görünüm", + codecBase64: "Base64 Çöz", + unicodeJsonView: "Unicode JSON", + codecMismatch: "Seçili kodekle çözülemedi; özgün içerik gösteriliyor", + decompressedView: "Sıkıştırma açıldı", + decompressedLoading: "Sıkıştırma açılıyor…", + decompressedFailed: "Seçili biçimle sıkıştırma açılamadı", + decompressedRetryAsDeflate: "DEFLATE olarak yeniden dene", + decompressedLimitExceeded: "Sıkıştırması açılan sonuç 50 MiB sınırını aşıyor", + gzipBadgeTitle: "Gzip ile sıkıştırılmış — açılmış içeriği görmek için tıklayın", + formatJson: "Biçim", + compressJson: "Sıkıştır", + jsonFormatError: "Geçersiz JSON biçimi", + clearHistory: "Komut geçmişini temizle", + historyCleared: "Redis komut geçmişi temizlendi", + blockedCommand: "{command} komutu güvenlik nedeniyle engellendi. İzin vermek için araç çubuğundaki kalkan simgesini kapatın.", + pubsub: "Pub/Sub", + pubsubConnected: "Bağlandı", + pubsubConnecting: "Bağlanıyor...", + pubsubDisconnected: "Bağlantı kesildi", + pubsubConnect: "Bağlan", + pubsubDisconnect: "Bağlantıyı kes", + pubsubChannels: "Kanallar", + pubsubChannelPlaceholder: "Kanal adı", + pubsubSubscribe: "Abone Ol", + pubsubPatterns: "Desenler", + pubsubPatternPlaceholder: "Desen (örn. news:*)", + pubsubPsubscribe: "PSubscribe", + pubsubMessages: "Mesajlar", + pubsubClear: "Temizle", + pubsubEmpty: "Henüz mesaj yok. Mesaj almak için bir kanala abone olun.", + pubsubPublish: "Yayınla", + pubsubPublishChannel: "Kanal", + pubsubPublishMessage: "Mesaj", + pubsubSend: "Gönder", + pubsubPublishFailed: "Yayınlama başarısız: {error}", + pubsubWsConnectFailed: "WebSocket bağlantısı başarısız: {error}", + slowlog: "Yavaş Günlük", + slowlogCount: "Sayı", + slowlogQuery: "Sorgu", + slowlogNode: "Düğüm", + slowlogSelectNode: "Bir düğüm seçin", + slowlogNodeRequired: "Lütfen önce bir düğüm seçin", + slowlogEmpty: "Yavaş günlük girdilerini getirmek için Sorgula'ya tıklayın", + slowlogFetchFailed: "Yavaş günlük getirilemedi: {error}", + slowlogColumnId: "Kimlik", + slowlogColumnTimestamp: "Zaman damgası", + slowlogColumnDuration: "Süre (μs)", + slowlogColumnCommand: "Komut", + slowlogColumnClientAddr: "İstemci", + slowlogColumnClientName: "İstemci Adı", + slowlogTotal: "{count} girdi", + slowlogDetailTitle: "Yavaş Günlük Girdisi #{id}", + dashboard: { + totalMemory: "Toplam Bellek", + usedMemory: "Kullanılan Bellek", + operations: "İşlemler", + hitRatio: "İsabet Oranı", + keyCount: "Anahtar Sayısı", + clients: "İstemciler", + searchIndicators: "Göstergelerde ara...", + node: "Düğüm", + off: "Kapalı", + refresh: "Yenile", + noMatchingIndicators: "Eşleşen gösterge yok", + noDataAvailable: "Kullanılabilir veri yok", + sections: { + server: "Sunucu", + clients: "İstemciler", + memory: "Bellek", + persistence: "Kalıcılık", + stats: "İstatistikler", + replication: "Çoğaltma", + cpu: "CPU", + modules: "Modüller", + commandstats: "Komut İstatistikleri", + errorstats: "Hata İstatistikleri", + latencystats: "Gecikme İstatistikleri", + cluster: "Küme", + keyspace: "Anahtar Alanı", + }, + }, + }, + mongo: { + documents: "{count} belge", + addField: "Alan Ekle", + deleteField: "Alanı Sil", + field: "Alan", + value: "Değer", + fieldPlaceholder: "Alan adı", + emptyCollection: "Boş koleksiyon", + selectDocument: "Bir belge seçin", + readonlyId: "_id salt okunurdur", + invalidJsonValue: "Bu hücre geçerli bir JSON değeri değil", + invalidJson: "Geçersiz JSON", + documentMustBeObject: "Belge JSON'u bir nesne olmalıdır", + unsupportedJsonNumber: "JSON, MongoDB int64 aralığının dışında bir sayı içeriyor", + duplicateJsonKey: "Yinelenen JSON anahtarı: {field}", + duplicateField: "Yinelenen alan adı: {field}", + indexExpireAfterSeconds: "Şu süre sonra sona erer (saniye)", + indexExpireAfterSecondsPlaceholder: "Asla", + indexExpireAfterSecondsHint: "Yalnızca tek alanlı dizinler. Dizinlenen tarih bu yaşı geçtiğinde MongoDB belgeleri kaldırır.", + indexPartialFilter: "Kısmi filtre", + indexLegacyOptions: "Uyumluluk seçenekleri", + indexLegacyOptionsHint: "Yalnızca eski sunucularda kullanışlıdır: background, MongoDB 4.2'den itibaren yoksayılır ve bucket boyutu, geoHaystack dizinleri 4.4'te kaldırıldığında geçerliliğini yitirdi.", + indexBackground: "Arka plan", + indexBucketSize: "Bucket boyutu", + indexSparse: "Seyrek", + indexHidden: "Gizli", + indexNoExpiry: "Asla", + indexOtherOptions: "Diğer seçenekler", + indexPropertiesUnavailable: "MongoDB Legacy sürücüsü sparse, sona erme, background veya bucket boyutunu bildiremez. Bunları görmek için yerel sürücüyle bağlanın.", + edit: "Düzenle", + editModeFields: "Alanlar", + editModeJson: "JSON", + jsonReplaceHint: "JSON kaydetme belgenin tamamını değiştirir. _id değerini değiştirmek yeni bir belge oluşturur ve eskisini siler.", + jsonIdRequired: "Belge kimliği değiştirilirken geçerli bir _id zorunludur.", + documentView: "Belge Görünümü", + tableView: "Tablo Görünümü", + filterPlaceholder: "Filtrele...", + sortPlaceholder: "Sırala...", + }, + meilisearch: { + ...meilisearchManagementTr, + documents: "Belgeler", + settings: "Ayarlar", + search: "Ara", + keywordPlaceholder: "Belgelerde ara...", + filter: "Filtre", + filterPlaceholder: 'status = "published"', + sort: "Sırala", + sortPlaceholder: "field:asc", + sortHint: "Birden çok sıralama ifadesini virgülle (,) ayırın", + sortNoAttributes: "Bu dizin için sıralanabilir öznitelik yapılandırılmamış", + sortAsc: "Artan", + sortDesc: "Azalan", + limit: "Sınır", + offset: "Konum", + resultSummary: "Yaklaşık {count} sonuç · {time} ms", + viewJson: "JSON", + viewTable: "Tablo", + viewGrid: "Izgara", + empty: "Belge bulunamadı", + editDocument: "Belgeyi düzenle", + deleteDocument: "Belgeyi sil", + deleteDocumentMessage: "Bu belge silinsin mi? Bu işlem geri alınamaz.", + documentDeleted: "Belge silindi", + documentSaved: "Belge kaydedildi", + settingsSaved: "Ayarlar kaydedildi", + invalidJson: "Geçersiz JSON", + settingsJson: "Ayarlar JSON'u", + dangerZone: "Tehlikeli bölge", + clearDocuments: "Tüm belgeleri temizle", + clearDocumentsConfirmMessage: "Bu işlem dizindeki her belgeyi kaldırır. Bu işlem geri alınamaz.", + documentsCleared: "Tüm belgeler temizlendi", + deleteIndex: "Dizini sil", + deleteIndexConfirmMessage: "Bu işlem dizini ve tüm belgelerini kalıcı olarak siler.", + indexDeleted: "Dizin silindi", + isIndexing: "Dizinleme", + uid: "UID", + updatedAt: "Güncellendi", + primaryKey: "Birincil anahtar", + documentCountLabel: "Belgeler", + databaseSize: "Veritabanı boyutu", + copyDocument: "JSON Kopyala", + copied: "Kopyalandı", + autoRefresh: "Otomatik yenile", + hybrid: "Karma arama", + hybridEmbedder: "Gömücü (embedder)", + hybridSemanticRatio: "Anlamsal oran", + hybridNoEmbedders: "Dizin ayarlarında yapılandırılmış gömücü yok; elle girin.", + showRankingScore: "Sıralama puanı", + rankingScoreThreshold: "Puan eşiği", + results: "Sonuçlar", + exportResults: "Sonuçları dışa aktar", + exportSearchUnsupported: "Meilisearch arama sayfalamasını sınırladığı için metin, karma veya puan eşikli aramalarda tam dışa aktarma kullanılamaz. Filtrelenen tüm belgeleri dışa aktarmak için bu seçenekleri temizleyin.", + }, + dynamodb: { + tableMetadataUnavailable: "DynamoDB tablo meta verisi yüklenmedi. Yenileyip tekrar deneyin.", + keyRequired: "DynamoDB öğeleri {key} anahtar özniteliğini gerektirir", + baseTable: "Temel tablo", + filter: "filtre", + sortKey: "sıralama anahtarı", + items: "{count} Öğe", + index: "DynamoDB dizini", + keySummary: "Bölüm anahtarı: {partitionKey}; sıralama anahtarı: {sortKey}", + none: "yok", + sortKeyOnly: "DynamoDB Query yalnızca geçerli dizinin sıralama anahtarına göre sıralayabilir: {key}", + pageCursorUnavailable: "DynamoDB sayfa imleci kullanılamıyor. İlk sayfadan yeniden yükleyin.", + repeatedCursor: "DynamoDB yinelenen bir sayfa imleci döndürdü. Dışa aktarma durduruldu.", + partialProjectionReadOnly: "Bu {projection} dizini öğenin tamamını içermiyor. İzdüşümde olmayan özniteliklerin üzerine yazılmasını önlemek için düzenleme devre dışı.", + exportLimitReached: "Bellek ve okuma kullanımını sınırlamak için DynamoDB dışa aktarımı {count} öğede durduruldu. Farklı bir sınır seçmek için bir dışa aktarma satır sınırı belirleyin.", + documentDetails: "DynamoDB tablosu: {table}\nÖğe anahtarı: {id}", + }, + vector: { + collectionFallback: "koleksiyon", + productCollection: "{product} koleksiyonu", + browse: "Gözat", + search: "Ara", + upsert: "Upsert", + delete: "Sil", + reset: "Sıfırla", + refresh: "Yenile", + run: "Çalıştır", + apply: "Uygula", + requestEditor: "Vektör istek düzenleyicisi", + operationSuccess: "İşlem tamamlandı. Koleksiyon önizlemesi yenilendi.", + vectorLabel: "Vektör", + vectorDimensionRequired: "Koleksiyon boyutları henüz kullanılamıyor. Koleksiyon boyutuyla eşleşen bir vektör girin.", + }, + hbase: { + prefix: "Önek", + exact: "Tam", + rowKeyPrefix: "Satır anahtarı öneki", + rowKey: "Satır anahtarı", + rows: "satır", + schema: "Şema", + writeRow: "Satır yaz", + loadedRows: "{count} satır yüklendi", + resultTruncated: "Daha fazla satır var", + tableSchema: "Şema: {table}", + rowSaved: "HBase satırı kaydedildi", + cellsObjectRequired: "cells bir JSON nesnesi olmalıdır", + cellRequired: "En az bir hücre gereklidir", + noColumnFamilies: "Bu HBase tablosunun sütun ailesi yok", + invalidJsonValue: "{label} için geçersiz değer; metin, ilkel bir değer ya da base64:... kullanın", + createTable: "Tablo oluştur", + create: "Oluştur", + tableCreated: "{table} HBase tablosu oluşturuldu", + tableDeleted: "{table} HBase tablosu silindi", + createTableIn: "{namespace} içinde tablo oluştur", + tableName: "Tablo adı", + columnFamiliesPlaceholder: "Sütun aileleri, virgülle ayrılmış", + deleteTable: "Tabloyu sil", + deleteTableConfirm: "{table} HBase tablosu silinsin mi? Tüm satırlar kalıcı olarak kaldırılacak.", + }, + history: { + title: "Geçmiş", + search: "Geçmişte ara...", + conversationSearch: "Konuşmalarda ara...", + empty: "Henüz geçmiş yok", + emptyConversationSearch: "Aramanızla eşleşen konuşma yok", + emptyFilteredRecent: "Son 200 yürütme geçmişi girdisinde eşleşen kayıt yok", + failed: "Başarısız", + success: "Başarılı", + restore: "Düzenleyiciye geri yükle", + copy: "SQL Kopyala", + delete: "Sil", + clear: "Geçmişi Temizle", + viewDetails: "Ayrıntıları görüntüle", + analyzeWithAi: "Yapay zekâ ile analiz et", + aiAnalyzeNoConnection: "Bu geçmiş girdisi analiz edilemiyor çünkü bağlantısı artık mevcut değil.", + aiAnalysisTab: "Geçmiş Analizi", + rollback: "Rollback", + rollbackSql: "Geri Alma SQL'i", + rollbackAvailable: "Kullanılabilir", + rollbackUnavailable: "Geri alma SQL'i yok", + rollbackConfirm: "Bu geçmiş girdisi için üretilen geri alma SQL'i çalıştırılsın mı?", + rollbackSuccess: "Geri alma çalıştırıldı", + rollbackFailed: "Geri alma başarısız: {message}", + confirmDelete: "Bu geçmiş girdisi silinsin mi?", + confirmClear: "Tüm geçmiş temizlensin mi?", + emptyFiltered: "Geçerli filtrelerle eşleşen geçmiş yok", + loadMore: "Daha fazla yükle", + scope: { + title: "Bağlantı ve veritabanı", + search: "Bağlantı veya veritabanı ara...", + reset: "Sıfırla", + allConnections: "Tüm bağlantılar", + current: "Geçerli", + connections: "Bağlantılar", + databases: "Veritabanları", + connectionCount: "{count} bağlantı", + databaseCount: "{count} veritabanı", + unknownConnection: "Bilinmeyen bağlantı", + noOptions: "Eşleşen seçenek yok", + }, + filters: { + all: "Tümü", + query: "Sorgular", + data_change: "Veri değişiklikleri", + schema_change: "Şema değişiklikleri", + failed: "Başarısız", + }, + dateRange: { + title: "Zaman aralığı", + label: "Çalıştırma zamanı:", + start: "Başlangıç tarihi", + end: "Bitiş tarihi", + apply: "Uygula", + clear: "Temizle", + invalid: "Başlangıç tarihi bitiş tarihinden sonra olamaz", + unboundedStart: "Başlangıç", + unboundedEnd: "Bitiş", + }, + kinds: { + query: "Sorgu", + data_change: "Veri değişikliği", + schema_change: "Şema değişikliği", + import: "İçe Aktar", + transfer: "Aktarım", + redis_command: "Redis Komutu", + }, + kindShort: { + query: "SQL", + data_change: "Veri", + schema_change: "DDL", + import: "İçe Aktar", + transfer: "Taşı", + redis_command: "Redis", + }, + detail: { + kind: "Tür", + operation: "İşlem", + connection: "Bağlantı", + database: "Veritabanı", + target: "Hedef", + time: "Süre", + duration: "Süre", + affectedRows: "Etkilenen satırlar", + rollback: "Rollback", + status: "Durum", + error: "Hata", + }, + }, + dangerDialog: { + title: "Tehlikeli İşlem", + message: "Bu SQL ifadesi veriyi geri döndürülemez biçimde değiştirebilir veya silebilir. Çalıştırmak istediğinizden emin misiniz?", + redisCommandMessage: "Bu Redis komutu veriyi değiştirebilir ve otomatik olarak geri alınamaz. Devam edilsin mi?", + suppressFuturePrompts: "Tehlikeli SQL için bir daha sorma", + wrapLines: "Sözcük kaydırmayı aç/kapat", + copyFullText: "Tam metni kopyala", + previewTruncated: "Önizleme kısaltıldı: {lines} satırda {characters} karakter atlandı. Kopyalama yine de tam metni içerir.", + deleteMessage: "Bu silme işlemi geri alınamayabilir. Devam edilsin mi?", + deleteConfirm: "Silmeyi Onayla", + deleteRowMessage: "Bu satır silinmek üzere işaretlenecek ve kaydettikten sonra veritabanından kaldırılacak. Devam edilsin mi?", + deleteRowsMessage: "Bu {count} satır silinmek üzere işaretlenecek ve kaydettikten sonra veritabanından kaldırılacak. Devam edilsin mi?", + deleteRowDetails: "Tablo: {table}", + deleteRowDetailsNoTable: "Geçerli sonuç satırı", + redisKeyDetails: "Redis anahtarı: {key}", + redisHashFieldDetails: "Redis hash: {key}\nAlan: {field}", + redisListItemDetails: "Redis listesi: {key}\nDizin: {index}", + redisSetMemberDetails: "Redis kümesi: {key}\nÜye: {member}", + mongoDocumentDetails: "MongoDB koleksiyonu: {collection}\nBelge _id: {id}", + mongoFieldDetails: "Alan: {field}", + mongoArrayItemDetails: "Dizi öğesi dizini: {index}", + cancel: "İptal", + cancelRunning: "Sorguyu İptal Et", + confirm: "Çalıştır", + }, + production: { + title: "Üretim ortamı", + connection: "Üretim bağlantısı", + enable: "Üretim korumalarını etkinleştir", + disabledDescription: "Her veritabanını ya da seçili veritabanlarını korumak için bunu etkinleştirin.", + namespaceDisabledDescription: "Her ad alanını ya da seçili ad alanlarını korumak için bunu etkinleştirin.", + scope: "Koruma kapsamı", + allDatabases: "Tüm veritabanları", + selectedDatabases: "Seçili veritabanları", + allNamespaces: "Tüm ad alanları", + selectedNamespaces: "Seçili ad alanları", + singleDatabaseScopeHint: "Bu veritabanı türü yalnızca bağlantı düzeyinde üretim korumalarını destekler.", + databases: "Üretim veritabanları", + namespaces: "Üretim ad alanları", + connectionDescription: "Bu bağlantıdaki her veritabanı üretim korumalarını kullanır.", + namespaceConnectionDescription: "Bu bağlantıdaki her ad alanı üretim korumalarını kullanır.", + databaseDescription: "Üretim koruması gereken veritabanlarını seçin. İlk seçim tüm veritabanlarını kapsar.", + namespaceDescription: "Üretim koruması gereken ad alanlarını seçin. İlk seçim tüm ad alanlarını kapsar.", + selectDatabases: "Üretim veritabanlarını seçin", + selectNamespaces: "Üretim ad alanlarını seçin", + noDatabasesSelected: "Veritabanı seçilmedi", + databasesConfiguredCount: "{count} seçildi", + databasesSelectedCount: "{selected}/{total} seçildi", + databasePickerTitle: "Üretim veritabanlarını seçin", + databasePickerDescription: '"{connection}" bağlantısında üretim koruması gereken veritabanlarını seçin.', + databaseSearchPlaceholder: "Veritabanlarında ara...", + databaseSelectionRequired: "En az bir veritabanı seçin.", + databaseLoadFailed: "Veritabanları yüklenemedi: {message}", + noDatabasesAvailable: "Seçilebilecek veritabanı yok.", + namespacePickerTitle: "Üretim ad alanlarını seçin", + namespacePickerDescription: '"{connection}" bağlantısında üretim koruması gereken ad alanlarını seçin.', + namespaceSearchPlaceholder: "Ad alanlarında ara...", + namespaceSelectionRequired: "En az bir ad alanı seçin.", + namespaceLoadFailed: "Ad alanları yüklenemedi: {message}", + noNamespacesAvailable: "Seçilebilecek ad alanı yok.", + retry: "Yeniden dene", + confirmTitle: "Üretim yazma işlemini onayla", + confirmMessage: "Bu işlem bir üretim veritabanını değiştirir ve açık onay gerektirir.", + confirmDetails: "Bağlantı: {connection}\nVeritabanı: {database}\nKaynak: {source}", + confirmAction: "Üretimde çalıştır", + sourceSqlEditor: "SQL düzenleyici", + sourceMultiDbSql: "Çoklu veritabanı SQL yürütme", + sourceDataGrid: "Veri düzenleyici", + sourceStructure: "Yapı düzenleyici", + sourceSqlFile: "SQL dosyası yürütme", + sourceObjectBrowser: "Nesne gezgini", + sourceSchemaDiff: "Şema farkı", + sourceDataCompare: "Veri karşılaştırma", + sourceExtension: "Uzantı yöneticisi", + sourceSidebar: "Nesne ağacı", + sourceMq: "Mesaj kuyruğu", + sourceObjectSource: "Nesne kaynak düzenleyicisi", + sourceDataGenerate: "Veri üreteci", + sourceQueryHistory: "Sorgu geçmişi geri alma", + sourceAdmin: "Veritabanı yönetimi", + aiReviewRequired: "Üretim SQL'i düzenleyiciye eklendi. İnceleyip onaylamak için elle çalıştırın.", + }, + readOnlyUnlock: { + confirmTitle: "Yazmaların kilidini aç", + confirmMessage: "Bu bağlantı salt okunurdur. Kısa bir süreliğine kilidini açmadıkça yazmalar engelli kalır. Kaydedilmiş salt okunur ayarı kapatılmaz.", + confirmDetails: "Bağlantı: {connection}\nKaynak: {source}\nYazmalara seçilen süre boyunca izin verilecek, ardından salt okunur mod otomatik olarak geri gelecek.", + confirmAction: "Yazmaların kilidini aç", + durationLabel: "Yazmalara şu süre izin ver", + durationOneMinute: "1 dakika", + durationFiveMinutes: "5 dakika", + remaining: "{time} kaldı", + unlockedBadge: "Yazmaların kilidi açıldı", + lockNow: "Yazmaları şimdi kilitle", + unlockAction: "Yazmaların kilidini aç…", + sourceImport: "Tablo içe aktarma", + sourceTransfer: "Veri aktarımı", + sourceSqlFile: "SQL dosyası yürütme", + sourceStatus: "Salt okunur denetimi", + sourceDataEditor: "Veri düzenleyici", + }, + sqlParameters: { + title: "SQL Parametreleri", + description: "SQL şablonu yer tutucuları için değerleri doldurun. DBX, SQL'i çalıştırmadan önce bunları değiştirir.", + name: "Parametre", + syntax: "Sözdizimi", + type: "Tür", + value: "Değer", + valuePlaceholder: "Değer girin", + collectionValuePlaceholder: "Bir JSON dizisi ya da virgülle ayrılmış değerler girin", + preview: "SQL Önizlemesi", + execute: "Çalıştır", + clearValues: "Değerleri Temizle", + useRawForAll: "Tümü İçin Ham SQL Kullan", + kind: { + string: "Dize", + number: "Sayı", + boolean: "Boole", + null: "NULL", + raw: "Ham SQL", + }, + }, + transfer: { + title: "Veri Aktarımı", + content: "Aktarım içeriği", + contentStructureAndData: "Yapı ve veri", + contentStructureOnly: "Yalnızca yapı", + contentDataOnly: "Yalnızca veri", + contentStructureOnlyHint: "Yalnızca tablo ve nesne yapılarını oluştur, veri aktarma", + contentDataOnlyHint: "Verileri yalnızca mevcut hedef tablolara kopyala", + objects: "Nesneler", + searchObjects: "Nesne adlarında ara...", + noObjects: "Nesne yok", + objectTypeTable: "Tablolar", + objectTypeView: "Görünümler", + objectTypeMaterializedView: "Materyalleştirilmiş görünümler", + objectTypeProcedure: "Yordamlar", + objectTypeFunction: "İşlevler", + objectTypeTrigger: "Tetikleyiciler", + objectTypeSequence: "Diziler (Sequence)", + objectTypeEvent: "Olaylar", + objectDataOnlyDisabled: "Yalnızca veri modunda tablo dışı nesneler aktarılmaz", + objectCrossFamilyDisabled: "Veritabanları arası aktarım yalnızca dizileri destekler (düz DDL; görünüm sorgu gövdeleri çevrilemez)", + crossFamilyViewHint: "Veritabanları arası görünüm aktarımı: görünümün bağlı olduğu tabloları da seçin ya da hedef veritabanında zaten var olduklarından emin olun", + objectUnsupportedDisabled: "Bu veritabanı bu nesne türünün aktarılmasını desteklemiyor", + skippedExistingObjects: "Var olan {count} nesne atlandı", + dataWriteMode: "Veri yazma modu", + source: "Kaynak", + target: "Hedef", + sourceConnection: "Kaynak Bağlantı", + sourceCatalog: "Kaynak Katalog", + targetCatalog: "Hedef Katalog", + selectCatalog: "Katalog seçin...", + searchCatalog: "Katalogda ara...", + sourceDatabase: "Kaynak Veritabanı", + sourceSchema: "Kaynak Şema", + swap: "Kaynak ile hedefi değiştir", + targetConnection: "Hedef Bağlantı", + targetDatabase: "Hedef Veritabanı", + targetSchema: "Hedef Şema", + tables: "Tablolar", + selectAll: "Tümünü Seç", + deselectAll: "Tüm Seçimleri Kaldır", + createTable: "Tablo yoksa oluştur", + transferMode: "Aktarım modu", + modeAppend: "Ekle (INSERT)", + modeOverwrite: "Üzerine yaz (TRUNCATE + INSERT)", + modeUpsert: "Upsert (PK'ye göre INSERT veya UPDATE)", + targetTableNameCase: "Hedef tablo adı harf durumu", + quoteTargetColumnNames: "Hedef sütun adlarını tırnak içine al", + tableNameCasePreserve: "Koru", + tableNameCaseLower: "Küçük harf", + tableNameCaseUpper: "Büyük harf", + batchSize: "Toplu iş boyutu", + start: "Aktarımı Başlat", + startConfirmTitle: "Aktarımı onayla", + startConfirmMessage: "Seçili {count} nesne {source} kaynağından {target} hedefine aktarılacak. Şimdi başlatılsın mı?", + cancel: "İptal", + progress: "Aktarılıyor...", + transferring: "{table} aktarılıyor...", + completed: "Aktarım tamamlandı", + completedWithErrors: "{count} tablo başarısız olarak tamamlandı | {count} tablo başarısız olarak tamamlandı", + failed: "Aktarım başarısız", + cancelled: "Aktarım iptal edildi", + rowsTransferred: "{count} satır aktarıldı", + tableProgress: "{current} / {total} tablo", + noSqlConnections: "Kullanılabilir SQL bağlantısı yok", + selectTables: "Aktarılacak tabloları seçin", + searchTables: "Tablolarda ara...", + noTables: "Tablo yok", + selectSourceFirst: "Önce kaynak bağlantıyı ve veritabanını seçin", + tableError: "{table} tablosu başarısız oldu: {error}", + overallProgress: "Genel ilerleme", + dataTransfer: "Veri Aktarımı", + runInBackground: "Arka planda çalıştır", + newTask: "Yeni aktarım", + editConfig: "Yapılandırmayı düzenle", + retry: "Yeniden dene", + targetTableBusy: "Başka bir aktarım hedef tablolara yazıyor: {tables}", + ownershipTitle: "Sahipliği onayla", + ownershipMessage: "Hedef veritabanında şu sahip kullanıcı veya roller eksik: {owners}. Özgün sahipliği uygulamak başarısız olabilir.", + ownershipSkipDetails: "Atla seçeneği, nesne sahipliği değiştirme ifadelerini çalıştırmaz. Tablo verisi ve diğer yapı eşitlemesi devam eder.", + ownershipTargetOwner: "Onayla seçeneği, sahibi eksik nesneleri hedef bağlantı kullanıcısına atar: {owner}.", + ownershipSkip: "Atla", + ownershipConfirm: "Onayla", + selectConnection: "Bağlantı seç", + selectDatabase: "Veritabanı seç", + selectSchema: "Şema seç", + searchConnection: "Bağlantılarda ara...", + searchDatabase: "Veritabanlarında ara...", + searchSchema: "Şemalarda ara...", + saveConfig: "Yapılandırmayı kaydet", + saveAsNewTask: "Görev olarak kaydet", + taskSaved: "Görev kaydedildi", + unsavedTitle: "Kaydedilmemiş değişiklikler", + unsavedMessage: "Geçerli yapılandırmada kaydedilmemiş değişiklikler var. Bunlardan vazgeçilsin mi?", + unsavedDiscard: "Vazgeç", + tasks: { + title: "Aktarım görevleri", + searchTasks: "Görevlerde ara...", + newTask: "Yeni görev", + newFolder: "Yeni klasör", + newSubfolder: "Yeni alt klasör", + rename: "Yeniden Adlandır", + duplicate: "Çoğalt", + delete: "Sil", + open: "Aç", + moveToFolder: "Klasöre taşı", + ungrouped: "Gruplanmamış", + empty: "Kayıtlı aktarım görevi yok", + newFolderDefault: "Yeni klasör", + newTaskDefault: "Yeni aktarım görevi", + deleteFolderTitle: "Klasörü sil", + deleteFolderConfirm: "“{name}” ve içindeki tüm aktarım görevleri silinsin mi?", + deleteTaskTitle: "Görevi sil", + deleteTaskConfirm: "“{name}” aktarım görevi silinsin mi?", + nameConflict: "Bu konumda “{name}” zaten var", + moveFailed: "Taşıma başarısız: {message}", + saveFailed: "Kaydetme başarısız: {message}", + deleteFailed: "Silme başarısız: {message}", + }, + }, + tableImport: { + title: "Tablo Verisi İçe Aktar", + target: "Hedef tablo", + selectFile: "Dosya Seç", + changeFile: "Dosyayı Değiştir", + noFileSelected: "Dosya seçilmedi", + sourceFile: "Kaynak dosya", + sourceFormat: "Kaynak biçim", + targetMode: "Hedef", + existingTable: "Mevcut tablo", + createTable: "Tablo oluştur", + createTableHint: "Sütunları dosyadan çıkar", + targetTableName: "Tablo adı", + noExistingTarget: "Tablo seçilmedi", + searchExistingTables: "Tablolarda ara...", + loadingTables: "Tablolar yükleniyor...", + noTables: "Kullanılabilir tablo yok", + stepSource: "Kaynak", + stepOptions: "Seçenekler", + stepMapping: "Eşleme", + stepReview: "İnceleme", + stepExecution: "Çalıştır", + formatCsv: "CSV", + formatCsvDescription: "Virgülle ayrılmış metin", + formatTsv: "TSV", + formatTsvDescription: "Sekmeyle ayrılmış metin", + formatDelimited: "Ayırıcılı", + formatDelimitedDescription: "Özel metin ayırıcısı", + formatJson: "JSON", + formatJsonDescription: "Nesne veya dizi satırları", + formatExcel: "Excel", + formatExcelDescription: "XLS, XLSX, XLSM", + formatSql: "SQL", + formatSqlDescription: "SQL betiklerindeki INSERT ifadeleri", + previewRows: "Satırları önizle", + delimiter: "Ayırıcı", + encoding: "Kodlama", + encodingAuto: "Otomatik algıla", + encodingUtf8: "UTF-8", + encodingGbk: "GBK / GB18030", + encodingUtf16Le: "UTF-16 LE", + encodingUtf16Be: "UTF-16 BE", + encodingDetected: "Algılanan: {encoding}", + hasHeader: "İlk satır başlıktır", + titleRow: "Başlık satırı (yoksa 0)", + dataStartRow: "Veri başlangıç satırı", + lastDataRow: "Son veri satırı (sona kadar için 0)", + trimValues: "Değerleri kırp", + emptyStringAsNull: "Boş dizeyi NULL say", + jsonShape: "JSON satırları", + jsonShapeAuto: "Otomatik algıla", + jsonShapeObjects: "Nesneler", + jsonShapeArrays: "Diziler", + sheet: "Sayfa", + firstSheet: "İlk sayfa", + loadPreview: "Önizlemeyi Yükle", + reloadPreview: "Önizlemeyi Yeniden Yükle", + previewReady: "{rows} satır, {columns} sütun", + previewReadyPartial: "{rows} satır, {columns} sütun önizlendi; toplam, içe aktarma sırasında doğrulanacak", + previewPartial: "{rows} satır önizlendi", + rowsImported: "satır içe aktarıldı", + file: "Dosya", + rows: "Satır", + mapped: "Eşlendi", + mapping: "Sütun Eşlemesi", + sourceColumn: "Kaynak", + targetColumn: "Hedef", + targetDataType: "Tür", + createColumns: "Oluşturulacak sütunlar", + skipColumn: "Atla", + preview: "Önizleme", + mode: "İçe aktarma modu", + append: "Veriyi ekle", + truncate: "Truncate edip içe aktar", + progress: "İlerleme", + start: "İçe Aktarmayı Başlat", + success: "{count} satır içe aktarıldı", + elapsed: "Geçen süre {duration}", + back: "Geri", + next: "İleri", + truncateWarning: "İçe aktarma başlamadan önce hedef tablodaki mevcut satırlar kaldırılacak.", + requiredUnmapped: "Zorunlu hedef sütunlar eşlenmedi: {columns}", + status_idle: "İçe aktarmaya hazır", + status_running: "Veri içe aktarılıyor", + phase_preparing: "İçe aktarma hazırlanıyor", + phase_detectingEncoding: "Metin kodlaması algılanıyor", + phase_reading: "Kaynak dosya okunuyor", + phase_writing: "Veri yazılıyor", + phase_finalizing: "İçe aktarma tamamlanıyor", + status_done: "İçe aktarma tamamlandı", + status_error: "İçe aktarma başarısız", + status_cancelled: "İçe aktarma iptal edildi", + }, + dataGenerate: { + title: "Veri Üretimi", + target: "Hedef", + rowCount: "Üretilecek satır sayısı", + columns: "Sütunlar", + column: "Sütun", + type: "Tür", + generator: "Üreteç", + columnProps: "Sütun Özellikleri", + databaseObjects: "Veritabanı Nesneleri", + selectTable: "Soldan bir tablo seçin", + saveProfile: "Profili Kaydet", + loadProfile: "Profili Yükle", + options: "Seçenekler", + generateOrder: "Üretim Sırası", + nextStep: "İleri", + insertSuccess: "{count} satır eklendi", + noData: "Henüz veri yok, lütfen önce üretim kurallarını yapılandırın", + noResult: "Çalıştırma sonucu yok", + regenerate: "Yeniden üret", + first50Rows: "İlk 50 satır gösteriliyor, toplam {count} satır", + resultTitle: "Çalıştırma Sonuçları", + successLabel: "{count} başarılı", + failLabel: "{count} başarısız", + totalLabel: "/ {count} girdi", + copyAllSql: "Tüm SQL'i Kopyala", + prevStep: "Geri", + startInsert: "Eklemeyi Başlat", + confirm: "Onayla", + back: "Geri", + reset: "Sıfırla", + selectGenerator: "Bir üreteç seçin...", + selectGeneratorHint: "Lütfen bir üreteç seçin", + preview: "Önizleme", + noValue: "(yok)", + startDate: "Başlangıç Tarihi", + endDate: "Bitiş Tarihi", + allDay: "Tüm gün", + startTime: "Başlangıç Saati", + endTime: "Bitiş Saati", + weekday: "Hafta günü", + all: "Tümü", + weekdayOnly: "Hafta günleri", + custom: "Özel", + values: "Değerler", + min: "En az", + max: "En çok", + increment: "Artış", + cycle: "Aşıldığında başa dön", + includeDefault: "DEFAULT'u dâhil et", + includeNull: "NULL'u dâhil et", + unique: "Benzersiz yap", + uniqueExhausted: "{table}.{column} için {attempts} denemede farklı bir değer üretilemedi. Kullanılabilir değer aralığını genişletin ya da daha az satır üretin.", + disableLinks: "Sütunlar arasındaki veri bağlarını devre dışı bırak", + imageMode: "Mod", + generate: "Üret", + fromFolder: "Klasörden", + imageWidth: "Görsel Genişliği", + imageHeight: "Görsel Yüksekliği", + imageFormat: "Görsel Biçimi", + folderPath: "Klasör Yolu", + filterByExtension: "Uzantılara göre filtrele", + errorContinue: "Hatada devam et", + truncateBefore: "Üretimden önce tabloyu truncate et", + useTransaction: "İşlem kullan", + extendedInsert: "Genişletilmiş INSERT kullan", + ok: "Tamam", + noTablesSelected: "Tablo seçilmedi", + orderHint: "Yeniden sıralamak için ok düğmelerini kullanın", + language: "Dil", + regionLabel: "Bölge", + formatLabel: "Biçim", + formatType: "Biçim Türü", + typeLabel: "Tür", + loading: "Yükleniyor...", + regex: "Regex", + rawPattern: "Ham desen modu", + notSet: "(ayarlanmadı)", + noMatch: "(eşleşme yok)", + invalidRegex: "(geçersiz regex)", + noDomain: "(etki alanı yok)", + schema: "Şema", + tableLabel: "Tablo", + columnLabel: "Sütun", + genMode: "Üretim Modu", + dateType: "Tarih Türü", + yearOffsetRange: "Yıl aralığı (geçerli yıla göre fark)", + numberType: "Sayı Türü", + integer: "Tam sayı", + decimal: "Ondalık", + decimalPlaces: "Ondalık basamak", + uuidFormat: "UUID Biçimi", + uuidWithHyphens: "Tireli", + uuidNoHyphens: "Tiresiz", + includeSeparators: "Ayırıcıları dâhil et", + phoneDomestic: "Yurt içi", + phoneInternational: "Uluslararası", + charCount: "Karakterler", + start: "Başlangıç", + valueList: "Değer Listesi", + domainList: "Etki alanı listesi", + subdomains: "Alt etki alanları", + tlds: "Üst düzey etki alanları", + extensionType: "Uzantı Türü", + extensionList: "Uzantı listesi:", + availableExtensions: "Kullanılabilir uzantılar:", + includeExtension: "Uzantıyı dâhil et", + includeFileName: "Dosya adını dâhil et", + pathType: "Yol Türü", + ipType: "IP Adresi Türü", + nameFormat: "Ad Biçimi", + transformTo: "Değerleri şuna dönüştür", + generateOptions: "Üretim Seçenekleri", + previewRowCount: "{count} satır", + useKeywords: "Anahtar sözcüklerden üret", + weekdayShort: { + sun: "Paz", + mon: "Pzt", + tue: "Sal", + wed: "Çar", + thu: "Per", + fri: "Cum", + sat: "Cmt", + }, + countries: { + us: "Amerika Birleşik Devletleri", + uk: "Birleşik Krallık", + cn: "Çin", + jp: "Japonya", + other: "Diğer", + cnEnglish: "Çin (İngilizce)", + jpEnglish: "Japonya (İngilizce)", + }, + cityLanguages: { + native: "Yerel dil", + english: "İngilizce", + }, + addressTypes: { + line1: "Adres satırı 1", + line2: "Adres satırı 2", + full: "Tam adres", + }, + nameFormats: { + full: "Tam ad", + last: "Yalnızca soyadı", + first: "Yalnızca ad", + }, + regionFormats: { + name: "Ad", + code: "Kod", + codeName: "Kod + Ad", + }, + transforms: { + none: "Olduğu gibi", + upper: "BÜYÜK HARF", + lower: "küçük harf", + title: "Her Sözcük Büyük Harf", + }, + extensionCategories: { + image: "Görsel", + document: "Belge", + spreadsheet: "Elektronik tablo", + presentation: "Sunum", + audio: "Ses", + video: "Video", + code: "Kod", + archive: "Arşiv", + web: "Web", + database: "Veritabanı", + }, + placeholders: { + enumValues: "Her satıra bir değer\nbirinci\nikinci\nüçüncü", + subdomains: "Her satıra bir alt etki alanı\nauth.\nwww.\napi.", + tlds: "Her satıra bir TLD\n.com\n.cn\n.io", + fileExtensions: "Her satıra bir uzantı\npng\njpg\ntxt", + paymentMethods: "Her satıra bir ödeme yöntemi\nKredi Kartı\nPayPal\nApple Pay", + keywords: "Her satıra bir anahtar sözcük\nElma\nKiraz\nPortakal", + weightUnits: "Her satıra bir birim\ng\nkg\nlb", + }, + genModes: { + random: "Rastgele", + unique: "Yinelenen yok", + repeat: "Her değeri tekrarla", + }, + gen: { + general: "Genel", + personal: "Kişisel", + payment: "Ödeme", + business: "İş", + location: "Konum", + product: "Ürün", + computer: "Bilgisayar", + number: "Sayı", + datetime: "Tarih Saat", + date: "Tarih", + time: "Süre", + sequence: "Dizi (Sequence)", + enum: "Enum", + text: "Metin", + image: "Görsel veya İkili", + foreign_key: "Yabancı Anahtar", + uuid: "UUID", + regex: "Regex", + full_name: "Tam Ad", + gender: "Cinsiyet", + title: "Unvan", + marital_status: "Medeni Durum", + phone: "Telefon", + email: "E-posta", + job_title: "İş Unvanı", + social_id: "Sosyal Kimlik", + payment_method: "Ödeme Yöntemi", + credit_card_type: "Kredi Kartı Türü", + credit_card_number: "Kredi Kartı Numarası", + credit_card_date: "Kredi Kartı Tarihi", + company_name: "Şirket Adı", + department: "Departman", + industry: "Sektör", + address: "Adres", + city: "Şehir", + region: "Bölge", + product_name: "Ürün Adı", + product_category: "Ürün Kategorisi", + color: "Renk", + size: "Boyut", + weight_unit: "Ağırlık Birimi", + barcode: "Barkod", + sku: "SKU", + ip_address: "IP Adresi", + mac_address: "MAC Adresi", + file_path: "Dosya Yolu", + file_name: "Dosya Adı", + file_extension: "Dosya Uzantısı", + url: "URL", + hostname: "Sunucu Adı", + id_number: "Kimlik Numarası", + }, + idTypes: { + title: "Kimlik Türü", + customPattern: "Özel Desen", + customPatternPlaceholder: "örn. ([A-Z]{'{'}2{'}'})-([0-9]{'{'}8{'}'})", + customPatternHint: "[A-Z] harfler, [0-9] rakamlar, {'{'}n{'}'} tekrarlar, tireler gibi basit desenleri destekler", + id_card: "Çin Kimlik Kartı", + passport: "Pasaport", + hk_macau_pass: "Hong Kong/Makao İzni", + taiwan_pass: "Tayvan İzni", + uscc: "Birleşik Sosyal Kredi Kodu", + bank_card: "Banka Kartı", + drivers_license: "Sürücü Belgesi", + custom: "Özel", + }, + }, + tableToolbox: { + title: "Veri Araçları", + generateData: "Veri Üret", + importData: "Veri İçe Aktar", + exportData: "Veri Dışa Aktar", + generateDataComingSoon: "Yakında", + }, + sqlFile: { + title: "SQL Dosyasını Çalıştır", + file: "Dosya", + selectSqlFile: "SQL dosyası seçin", + browse: "Gözat", + previewingLines: "{count} satır önizleniyor", + previewingFirstLines: "İlk {count} satır önizleniyor", + tooLargeForEditor: "Bu SQL dosyası {size} boyutunda ve düzenleyici sınırı olan {limit} değerini aşıyor. Akış olarak işlemek için SQL Dosyasını Çalıştır'ı kullanın.", + largeFileExecutionOpened: "{size} boyutundaki bu SQL dosyası düzenleyici için çok büyük. Akış işleme için SQL Dosyasını Çalıştır açıldı.", + target: "Hedef", + connection: "Bağlantı", + selectConnection: "Bağlantı seç", + database: "Veritabanı", + selectDatabase: "Veritabanı seç", + databasePlaceholder: "Veritabanı adı", + options: "Seçenekler", + continueOnError: "Hatada devam et", + runInBackground: "Arka planda çalıştır", + cancelling: "İptal ediliyor...", + cancel: "İptal", + execute: "Çalıştır", + statement: "İfade", + succeeded: "Başarılı", + failed: "Başarısız", + affectedRows: "Etkilenen satırlar", + currentStatement: "Geçerli ifade", + status: { + idle: "Boşta", + started: "Başladı", + running: "Çalışıyor", + statementDone: "İfade tamamlandı", + statementFailed: "İfade başarısız", + done: "Bitti", + error: "Hata", + cancelled: "İptal edildi", + }, + fileProgress: "Dosya {current} / {total}", + fileColumn: "Dosya", + totalFiles: "{count} dosya", + }, + sqlFileTree: { + title: "SQL Dosyaları", + openFolder: "Klasör Aç", + closePanel: "Kapat", + loading: "Yükleniyor...", + noFolder: "Açık klasör yok", + noSqlFiles: "SQL dosyası bulunamadı", + folderAlreadyOpen: "Bu klasör zaten açık", + removeFolder: "Klasörü kaldır", + openFailed: "Klasör açılamadı: {message}", + loadFailed: "SQL dosyaları yüklenemedi: {message}", + desktopOnly: "Bu özellik yalnızca masaüstünde kullanılabilir", + refreshFolder: "Klasörü yenile", + refreshAll: "Tümünü yenile", + refreshed: "Yenilendi", + revealInFileManager: "Dosya yöneticisinde göster", + revealFailed: "Dosya yöneticisi açılamadı: {message}", + copyPath: "Yolu kopyala", + pathCopied: "Yol kopyalandı", + copyFailed: "Yol kopyalanamadı", + openFile: "Aç", + executeSqlFile: "SQL dosyasını çalıştır", + newSqlFile: "Yeni SQL dosyası", + newSqlFileDescription: ".sql uzantısı otomatik olarak eklenir.", + createFile: "Oluştur", + fileCreated: "SQL dosyası oluşturuldu", + createFailed: "SQL dosyası oluşturulamadı: {message}", + renameFile: "Yeniden Adlandır", + renameFileDescription: ".sql uzantısı otomatik olarak eklenir.", + fileRenamed: "SQL dosyası yeniden adlandırıldı", + renameFailed: "SQL dosyası yeniden adlandırılamadı: {message}", + deleteFile: "Dosyayı sil", + deleteFileConfirm: "{name} silinsin mi? Bu işlem geri alınamaz.", + fileDeleted: "SQL dosyası silindi", + deleteFailed: "SQL dosyası silinemedi: {message}", + expandAll: "Tümünü genişlet", + collapseAll: "Tümünü daralt", + filterSettings: "Dosya Filtresi", + fileFilter: "Dosya adı filtresi", + fileFilterPlaceholder: "Dosya adı filtresi", + filterInvalid: "Geçersiz dosya filtresi, önceki korundu: {message}", + fileFilterHint: "*.sql ya da *.sh gibi bir glob veya {regex} gibi bir düzenli ifade kullanın.", + }, + diff: { + progress: { + loadingObjects: "Kaynak ve hedef veritabanı nesneleri okunuyor...", + loadingSourceDetails: "Kaynak veritabanı tablo yapıları okunuyor", + loadingTargetDetails: "Hedef veritabanı tablo yapıları okunuyor", + loadingExtraObjects: "Diğer veritabanı nesneleri okunuyor...", + comparing: "Şema farkları çözümleniyor...", + generating: "Karşılaştırma sonucu üretiliyor...", + next: "Sonraki: {step}", + nextSourceDetails: "Kaynak veritabanı tablo yapılarını oku", + nextTargetDetails: "Hedef veritabanı tablo yapılarını oku", + nextExtraObjects: "Diğer veritabanı nesnelerini oku", + nextComparing: "Şema farklarını çözümle", + nextGenerating: "Karşılaştırma sonucunu üret", + nextComplete: "Tamamlandı", + count: "{current} / {total}", + }, + title: "Şemaları Karşılaştır", + source: "Kaynak", + target: "Hedef", + selectConnection: "Bağlantı seç", + selectDatabase: "Veritabanı seç", + selectSchema: "Şema seç", + connection: "Bağlantı", + database: "Veritabanı", + schema: "Şema", + recentConfigs: "Son Yapılandırmalar", + selectRecentConfig: "Son yapılandırmayı seç", + ignoreComments: "Açıklama farklarını yoksay", + compare: "Karşılaştır", + comparing: "Şemalar karşılaştırılıyor...", + noDifferences: "Fark bulunamadı", + table: "Tablo", + status: "Durum", + details: "Ayrıntılar", + added: "Eklendi", + removed: "Kaldırıldı", + modified: "Değiştirildi", + indexes: "Dizinler", + foreignKeys: "Yabancı anahtarlar", + triggers: "Tetikleyiciler", + comments: "Açıklamalar", + newTable: "Yeni tablo", + dropTable: "Tabloyu sil", + generatedSql: "Eşitleme SQL'i", + copySql: "SQL Kopyala", + executeSync: "Eşitlemeyi Çalıştır", + syncSuccess: "Eşitleme başarıyla çalıştırıldı", + swap: "Kaynak ile hedefi değiştir", + syncProgress: "Çalıştırılıyor: {current}/{total}", + syncSummary: "{success} başarılı, {failed} başarısız", + configSaved: "Yapılandırma kaydedildi", + configDeleted: "Yapılandırma silindi", + tableSelection: "Tablolar", + chooseTables: "Tabloları seçin...", + compareAllTables: "Tüm tabloları karşılaştır", + tableSelectionUnrestricted: "Tüm tablolar karşılaştırılıyor (regex filtrelerinden sonra). Karşılaştırmayı sınırlamak için belirli tablolar seçin.", + sourceTables: "Kaynak tablolar", + autoMatchHint: "Hedef tablolar aynı ada göre eşleştirilir.", + matchedTables: "{matched}/{total} tablo eşleşti", + missingTargetTables: "Aynı adlı hedef tablolar eksik: {tables}", + sourceObject: "Kaynak nesne", + targetObject: "Hedef nesne", + operation: "İşlem", + selectedCount: "{total} nesnenin {selected} tanesi seçildi", + saveConfig: "Yapılandırmayı kaydet", + loadConfig: "Yapılandırmayı yükle", + options: "Seçenekler", + ddlCompare: "DDL karşılaştırma", + deployScript: "Dağıtım betiği", + deployScriptAll: "Tüm dağıtım betikleri", + deployScriptDesc: "Seçili nesne için SQL betiği", + deployScriptAllDesc: "Seçili tüm nesneler için SQL betiği", + copy: "Kopyala", + execute: "Çalıştır", + executeAll: "Tümünü çalıştır", + executeSuccess: "Başarıyla çalıştırıldı", + selectObjectToCompare: "DDL karşılaştırmasını görmek için bir nesne seçin", + noDdlAvailable: "Kullanılabilir DDL yok", + noDeployScript: "Dağıtım betiği yok", + noDeployScriptAll: "Seçili nesneler için dağıtım betiği yok", + sourceDdl: "Kaynak DDL", + targetDdl: "Hedef DDL", + objectNotExistsInSource: "Bu nesne kaynak veritabanında yok", + objectNotExistsInTarget: "Bu nesne hedef veritabanında yok", + nextStepDeploy: "İleri (Dağıtımı İncele)", + deployReview: "Dağıtım İncelemesi", + backToResult: "Sonuca Dön", + copyScript: "Betiği Kopyala", + exportSql: ".sql Dışa Aktar", + deployToServer: "Sunucuya Dağıt", + deployConfirmTitle: "Son Onay", + deployConfirmMessage: "Aşağıdaki değişiklikleri hedef veritabanına dağıtmak üzeresiniz", + destructiveSqlDetected: "{count} yıkıcı işlem algılandı; açık onay gerekiyor", + compatibilityWarnings: "Uyumluluk Uyarıları", + compatibilityWarningsDetected: "Uyumluluk uyarıları: {count}", + targetServer: "Hedef Sunucu", + dbVersion: "Veritabanı Sürümü", + targetDatabase: "Hedef Veritabanı", + targetSchema: "Hedef Şema", + useTransaction: "İşlem içinde çalıştır (hata durumunda otomatik geri alma)", + confirmDeploy: "Dağıtımı Onayla", + exportSuccess: "Dışa aktarma başarılı", + create: "Oluştur", + delete: "Sil", + modify: "Değiştir", + cancel: "İptal", + prevStep: "Geri", + recompare: "Yeniden karşılaştır", + maximize: "Ekranı kapla", + restore: "Geri yükle", + operationLabel: { + modify: "Değiştirilecek nesneler", + create: "Oluşturulacak nesneler", + delete: "Silinecek nesneler", + none: "İşlem yok", + }, + objectKindLabel: { + table: "Tablo", + view: "Görünüm", + function: "İşlev", + sequence: "Dizi (Sequence)", + rule: "Kural", + owner: "Sahip", + column: "Sütun", + index: "Dizin", + foreignKey: "Yabancı Anahtar", + trigger: "Tetikleyici", + tableOption: "Tablo seçenekleri", + }, + noObjectsSelected: "Lütfen dağıtılacak nesneleri seçin", + deploySuccess: "Dağıtım Başarılı", + deployFailed: "Dağıtım Başarısız", + deploySuccessMessage: "SQL betiği hedef veritabanında başarıyla çalıştırıldı", + deployFailedMessage: "Çalıştırma sırasında bir hata oluştu", + affectedRows: "Etkilenen Satırlar", + executedStatements: "Çalıştırılan İfadeler", + serverVersion: "Sunucu Sürümü", + info: "Bilgi", + connType: "Bağlantı türü", + connName: "Bağlantı adı", + host: "Sunucu", + addHost: "Sunucu Ekle", + port: "Port", + copied: "Panoya kopyalandı", + saveConfigPrompt: "Lütfen yapılandırma adını girin:", + defaultConfigName: "Varsayılan", + dependsOn: "şuna bağlı", + dependedBy: "şunun bağımlısı", + close: "Kapat", + searchConnection: "Bağlantılarda ara...", + searchDatabase: "Veritabanlarında ara...", + searchSchema: "Şemalarda ara...", + openFieldMapping: "Alan Eşlemesi", + fieldMapping: { + title: "Alan Türü Eşlemesi", + sameTypeHint: "Kaynak ve hedef aynı veritabanı türünde. Alan eşlemesi yalnızca farklı veritabanı türleri karşılaştırılırken gereklidir.", + preset: "Yerleşik Hazır Ayar", + selectPreset: "Bir hazır ayar seçin...", + noMappings: "Tanımlı alan eşlemesi yok", + sourceType: "Kaynak Tür", + targetType: "Hedef Tür", + paramStrategy: "Parametre Stratejisi", + strategyPreserve: "Koru", + strategyStrip: "Kaldır", + strategyCustom: "Özel", + customParamsPlaceholder: "örn. (100)", + addMapping: "Eşleme Ekle", + autoGenerate: "Otomatik Üret", + import: "İçe Aktar", + export: "Dışa Aktar", + done: "Bitti", + importTypeMismatch: "İçe aktarılan eşlemeler {src} → {tgt} için dışa aktarılmış, ancak geçerli karşılaştırma {curSrc} → {curTgt}. Tür eşlemeleri doğru olmayabilir. Yine de devam edilsin mi?", + importSuccess: "Alan eşlemeleri başarıyla içe aktarıldı", + importError: "Alan eşlemeleri içe aktarılamadı. Lütfen JSON biçimini denetleyin.", + clearMappings: "Temizle", + staleMappingWarning: "Veritabanı türü {prevSrc} → {prevTgt} durumundan {curSrc} → {curTgt} durumuna değişti. Mevcut alan eşlemeleri artık geçerli olmayabilir. Temizlensin mi?", + }, + deployMode: "Dağıt", + forwardSql: "İleri Yönlü SQL", + rollbackSql: "Geri Alma SQL'i", + rollbackMode: "Rollback", + deployMixed: "Dağıtım kısmen tamamlandı. Bazı ifadeler zaten uygulanmış olabilir ({executedCount}/{statementCount}). DDL işlem güvenli olmayabilir.", + deployRolledBack: "Tüm değişiklikler geri alındı.", + rollbackIncompleteBlocked: "Geri alma SQL'i eksik (nesneler eksik). Çalıştırma engellendi.", + rollbackIncompleteBanner: "Geri alma eksik — tetikleyici/tablo DDL'i eksik. Çalıştırmadan önce eksik nesneleri düzeltin.", + deployMixedTitle: "Kısmen Dağıtıldı", + deployRolledBackTitle: "Geri Alındı", + deployMixedWarning: "Bazı ifadeler uygulanmış, bazıları başarısız olmuş olabilir. Veritabanı tutarsız durumda olabilir. Yeniden denemeden önce işlem günlüğünü inceleyip elle düzeltme yapın.", + }, + rollbackComparison: { + title: "Geri Alma Karşılaştırması", + forwardSql: "İleri Yönlü SQL", + rollbackSql: "Geri Alma SQL'i", + }, + schemaDiff: { + optionsTitle: "Karşılaştırma Seçenekleri", + selectConfig: "Yapılandırma seçin", + newConfigName: "Yeni Yapılandırma", + newConfig: "Yeni Yapılandırma", + renameConfig: "Yapılandırmayı Yeniden Adlandır", + duplicateConfig: "Yapılandırmayı Çoğalt", + deleteConfig: "Yapılandırmayı Sil", + exportConfig: "Yapılandırmayı Dışa Aktar", + exportAllConfigs: "Tüm Yapılandırmaları Dışa Aktar", + importConfig: "Yapılandırmayı İçe Aktar", + importFromFile: "Dosyadan İçe Aktar", + importFromText: "Metinden İçe Aktar", + importPlaceholder: "JSON yapılandırmasını yapıştırın...", + importInvalidJson: "Geçersiz JSON biçimi", + configName: "Yapılandırma Adı", + tableFilter: "Tablo filtresi", + tableFilterHint: "Tam tablo adlarını regex ile eşleştirir. /.../ yazmayın. ^ ile başlar, $ ile biter, | veya anlamına gelir.", + tableFilterHintShort: "Karşılaştırmayı tablo adı regex'iyle sınırla", + tableFilterHelp: "Tablo filtresi yardımı", + tableFilterHelpRule: "Tam tablo adlarını eşleştirir. /.../ yazmayın.", + tableFilterHelpBlank: "Dâhil etme alanı boşsa tüm tablolar kapsanır. Atlama alanı boşsa hiçbir şey hariç tutulmaz.", + tableFilterHelpExample: "^user_ user_ ile başlayanları; _bak$ _bak ile bitenleri; a|b a veya b'yi eşleştirir.", + tableIncludePattern: "Yalnızca eşleşen tabloları karşılaştır", + tableIncludePatternPlaceholder: "örn. ^user_", + tableExcludePattern: "Eşleşen tabloları atla", + tableExcludePatternPlaceholder: "örn. _bak$", + tableFilterPriority: "İkisi de eşleştiğinde", + tableFilterPriorityExclude: "Hariç tutma öncelikli", + tableFilterPriorityInclude: "Dâhil etme öncelikli", + options: { + tables: "Tabloları karşılaştır", + primaryKeys: "Birincil anahtarları karşılaştır", + foreignKeys: "Yabancı anahtarları karşılaştır", + uniqueKeys: "Benzersiz anahtarları karşılaştır", + checks: "Check kısıtlarını karşılaştır", + exclusions: "Exclusion kısıtlarını karşılaştır", + views: "Görünümleri karşılaştır", + functions: "İşlevleri karşılaştır", + indexes: "Dizinleri karşılaştır", + sequences: "Dizileri karşılaştır", + triggers: "Tetikleyicileri karşılaştır", + rules: "Kuralları karşılaştır", + owners: "Sahipleri karşılaştır", + cascadeDelete: "CASCADE silme kullan", + sequenceLastValues: "Dizi son değerlerini karşılaştır", + compareColumnOrder: "Sütun sırasını karşılaştır", + detectRenames: "Yeniden adlandırmaları algıla", + detectTableRenames: "Tablo yeniden adlandırmalarını algıla", + enableRollback: "Geri almayı etkinleştir", + advancedSection: "Gelişmiş", + renameThreshold: "Yeniden adlandırma eşiği", + compatibilityThreshold: "Uyumluluk eşiği", + sourceDialect: "Kaynak lehçe", + targetDialect: "Hedef lehçe", + batchSection: "Toplu iş", + batchPatterns: "Tablo desenleri (virgülle ayrılmış)", + dialectAuto: "otomatik", + }, + }, + tableMultiSelect: { + tables: "Tablolar", + selected: "{selected}/{total} seçildi", + search: "Tablolarda ara...", + selectAll: "Tümünü seç", + deselectAll: "Tüm seçimleri kaldır", + noTables: "Kullanılabilir tablo yok", + }, + dataCompare: { + title: "Verileri Karşılaştır", + selectTable: "Tablo seçin", + searchTable: "Tablolarda ara...", + sourceTables: "Kaynak tablolar", + targetTable: "Hedef tablo", + searchTables: "Tablolarda ara...", + selectedTables: "{selected}/{total} seçildi", + selectAllTables: "Tümünü seç", + deselectAllTables: "Tüm seçimleri kaldır", + selectSourceTables: "Önce kaynak bağlantıyı ve veritabanını seçin, ardından karşılaştırılacak tabloları seçin", + noTables: "Karşılaştırma için kullanılabilir tablo yok", + autoMatchHint: "Toplu mod, hedef tabloları aynı ada göre otomatik eşleştirir", + matchedTables: "{matched}/{total} tablo eşleşti", + missingTargetTables: "Aynı adlı hedef tablolar eksik: {tables}", + keyColumns: "Anahtar Sütunlar", + keyColumnsPlaceholder: "Virgülle ayrılmış birincil veya benzersiz sütunlar", + keyColumnsAutoHint: "Tek tablo karşılaştırmasında birincil anahtarları otomatik algılamak için boş bırakın; toplu karşılaştırmada her tablo için ayrı ayrı algılanır.", + rowCounts: "Kaynak {source} satır, hedef {target} satır; tam karşılaştırma tamamlandı", + previewLimitOption: "Önizleme {count}", + compare: "Verileri Karşılaştır", + summary: "{added} eklendi, {removed} kaldırıldı, {modified} değiştirildi", + batchSummary: "{tables} tablo karşılaştırıldı: {different} farklı, {same} aynı, {failed} başarısız; {added} eklendi, {removed} kaldırıldı, {modified} değiştirildi", + comparingTable: "Karşılaştırılıyor {current}/{total}: {table}", + keyColumnsInline: "Anahtar sütunlar: {columns}", + selectedInline: "{total} içinden {selected} seçildi", + selectedSummary: "Seçilen: {added} eklendi, {removed} kaldırıldı, {modified} değiştirildi", + selectAllKind: "Tüm {kind} öğelerini seç", + clearKind: "{kind} seçimini temizle", + clearSelection: "Tüm seçimleri temizle", + showAllRows: "{count} tanesinin tümünü göster", + showLessRows: "Daha az göster", + remainingRows: "Önizlemede {count} satır daha gizli", + planningSync: "Eşitleme planı güncelleniyor...", + noSelectedDifferences: "Çalıştırma için hiçbir fark seçilmedi", + planSummary: "Plan: {inserts} ekleme, {updates} güncelleme, {deletes} silme, {statements} ifade", + statusDifferent: "Farklı", + statusSame: "Aynı", + statusError: "Başarısız", + noKeyColumns: "En az bir anahtar sütun seçin", + missingKeyColumns: "Anahtar sütunlar hem kaynak hem hedef tabloda bulunmalıdır: {columns}", + noCommonColumns: "Kaynak ve hedef tablolarda karşılaştırılacak ortak sütun yok", + targetTableMissing: "Hedef tablo bulunamadı: {table}", + noComparableTables: "Karşılaştırılabilir tablo bulunamadı. Aynı adlı hedef tabloların var olup olmadığını denetleyin.", + noDifferences: "Veriler aynı, eşitleme SQL'i gerekmiyor", + syncSuccess: "Veri eşitlemesi başarıyla çalıştırıldı", + }, + settings: { + title: "Ayarlar", + searchSettings: "Ayarlarda ara", + searchSettingsNoResults: "Eşleşen ayar yok", + searchSettingsResults: "Ayar arama sonuçları", + clearSettingsSearch: "Ayar aramasını temizle", + exitSettingsSearch: "Ayarlara dön", + editorTab: "Düzenleyici", + globalConnectTimeout: "Genel bağlantı zaman aşımı (saniye)", + globalConnectTimeoutDescription: "Genel ayarı devralan bağlantılar tarafından kullanılır.", + globalQueryTimeout: "Genel sorgu zaman aşımı (saniye)", + globalQueryTimeoutDescription: "Genel ayarı devralan bağlantılar tarafından kullanılır. Zaman aşımı istemiyorsanız 0 yapın.", + sqlFormatterTab: "SQL Biçimlendirici", + sqlFormatterImport: "Yapılandırmayı içe aktar", + sqlFormatterExport: "Yapılandırmayı dışa aktar", + sqlFormatterImportSuccess: "Biçimlendirici yapılandırması içe aktarıldı.", + sqlFormatterCopyJson: "JSON Kopyala", + sqlFormatterCopyJsonSuccess: "JSON kopyalandı.", + sqlFormatterCopyJsonFailed: "Kopyalama başarısız: {message}", + sqlFormatterJsonEditorLoadFailed: "JSON düzenleyici yüklenemedi. Basit bir girdiye geçildi: {message}", + sqlFormatterRestoreDefaults: "Varsayılanları geri yükle", + sqlFormatterFormMode: "Form", + sqlFormatterJsonMode: "JSON", + sqlFormatterKeywordCase: "Anahtar sözcük harf durumu", + sqlFormatterFunctionCase: "İşlev harf durumu", + sqlFormatterDataTypeCase: "Veri türü harf durumu", + sqlFormatterIdentifierCase: "Tanımlayıcı harf durumu", + sqlFormatterCaseUpper: "Büyük harf", + sqlFormatterCaseLower: "Küçük harf", + sqlFormatterCasePreserve: "Koru", + sqlFormatterIndent: "Girinti", + sqlFormatterIndentSpaces: "Boşluk", + sqlFormatterIndentTabs: "Sekme", + sqlFormatterTabWidth: "Sekme genişliği", + sqlFormatterIndentStyle: "Girinti biçemi", + sqlFormatterIndentStyleStandard: "Standart", + sqlFormatterIndentStyleTabularLeft: "Tablo biçiminde sola", + sqlFormatterIndentStyleTabularRight: "Tablo biçiminde sağa", + sqlFormatterLogicalOperatorNewline: "Mantıksal işleçte satır sonu", + sqlFormatterLogicalBefore: "İşleçten önce", + sqlFormatterLogicalAfter: "İşleçten sonra", + sqlFormatterLogicalSameLine: "Aynı satırda tut", + sqlFormatterFromClauseLayout: "FROM yan tümcesi düzeni", + sqlFormatterFromNewLine: "Tablo bir sonraki satırda", + sqlFormatterFromSameLine: "FROM ilk tabloyla birlikte", + sqlFormatterExpressionWidth: "İfade genişliği", + sqlFormatterLinesBetweenQueries: "Sorgular arası satır sayısı", + sqlFormatterPreserveEmptyLines: "Boş satırları koru", + sqlFormatterDenseOperators: "Sık işleçler", + sqlFormatterNewlineBeforeSemicolon: "Noktalı virgül yeni satırda", + sqlFormatterAdvancedOptions: "Gelişmiş seçenekler", + sqlFormatterParams: "Parametreler", + sqlFormatterParamTypes: "Parametre türleri", + sqlFormatterEditorShortcuts: "Kısayollar", + sqlFormatterShortcutAction: "Eylem", + sqlFormatterShortcutEnabled: "Etkin", + sqlFormatterShortcutWindows: "Windows", + sqlFormatterShortcutLinux: "Linux", + sqlFormatterShortcutMacos: "macOS", + sqlFormatterShortcutFind: "Bul", + sqlFormatterShortcutReplace: "Değiştir", + sqlFormatterShortcutIndentMore: "Girintiyi artır", + sqlFormatterShortcutIndentLess: "Girintiyi azalt", + sqlFormatterShortcutDuplicateLine: "Geçerli satırı çoğalt", + sqlFormatterShortcutDeleteLine: "Geçerli satırı sil", + sqlFormatterShortcutMoveLine: "Satırı taşı", + sqlFormatterShortcutMoveLineUp: "Satırı yukarı taşı", + sqlFormatterShortcutMoveLineDown: "Satırı aşağı taşı", + sqlFormatterShortcutCopyLine: "Satırı kopyala", + sqlFormatterShortcutCopyLineUp: "Satırı yukarı kopyala", + sqlFormatterShortcutCopyLineDown: "Satırı aşağı kopyala", + sqlFormatterShortcutUndo: "Geri al", + sqlFormatterShortcutRedo: "Yinele", + sqlFormatterShortcutSelectAll: "Tümünü seç", + sqlFormatterShortcutFormatJson: "JSON'u Biçimlendir", + sqlFormatterShortcutApply: "Yapılandırmayı uygula", + sqlFormatterConfigErrorInvalidJson: "Geçersiz JSON.", + sqlFormatterConfigErrorObject: "Yapılandırma bir JSON nesnesi olmalıdır.", + sqlFormatterConfigErrorVersion: "Desteklenmeyen yapılandırma sürümü.", + sqlFormatterConfigErrorFormatter: "Desteklenmeyen biçimlendirici.", + sqlFormatterConfigErrorUnsupportedParams: "Parametre değiştirme seçeneği desteklenmiyor. SQL biçimlendirme yer tutucuları değiştirmeyecek.", + sqlFormatterConfigErrorOptionsObject: "Yapılandırma seçenekleri bir JSON nesnesi olmalıdır.", + sqlFormatterConfigErrorEditorObject: "Düzenleyici yapılandırması bir JSON nesnesi olmalıdır.", + sqlFormatterConfigErrorEditorScope: "Desteklenmeyen düzenleyici kapsamı.", + sqlFormatterConfigErrorEditorPlatforms: "Geçersiz düzenleyici platformları.", + sqlFormatterConfigErrorEditorShortcutsArray: "Düzenleyici kısayolları bir dizi olmalıdır.", + sqlFormatterConfigErrorEditorShortcutValue: "Geçersiz düzenleyici kısayolu.", + sqlFormatterConfigErrorUnknownOption: "Bilinmeyen biçimlendirici seçeneği: {option}.", + sqlFormatterConfigErrorInvalidOptionValue: "{option} için geçersiz değer.", + sqlFormatterConfigErrorUnknownEditorShortcut: "Bilinmeyen düzenleyici kısayolu: {shortcut}.", + sqlFormatterConfigErrorInvalidEditorShortcut: "Geçersiz düzenleyici kısayolu: {shortcut}.", + sqlFormatterConfigErrorDuplicateEditorShortcut: "Yinelenen düzenleyici kısayolu: {shortcut}.", + sqlFormatterConfigErrorInvalidConfig: "Geçersiz biçimlendirici yapılandırması.", + appearanceTab: "Görünüm", + navigationTab: "Gezinme", + dataTab: "Veri", + tunnelsTab: "Tüneller", + tunnelsDescription: "Yeniden kullanılabilir SSH / proxy / HTTP tünel yapılandırmaları. Bir kez yapılandırın, sonra bağlantının tünel sekmesinden profili seçin; buradaki değişiklikler profili kullanan her bağlantıda geçerli olur.", + tunnelsEmpty: "Henüz tünel profili yok. Burada bir tane oluşturun, ardından bir bağlantının tünel ayarlarından seçin.", + tunnelsAddSsh: "SSH Ekle", + tunnelsAddProxy: "Proxy Ekle", + tunnelsAddHttp: "HTTP Tüneli Ekle", + tunnelsProfileName: "Profil Adı", + tunnelsProfileNamePlaceholder: "örn. Ofis bastion", + tunnelsDelete: "Sil", + tunnelsUnnamedProfile: "Adsız profil", + tunnelsSave: "Kaydet", + tunnelsReset: "Sıfırla", + tunnelsSaved: "Tünel profilleri kaydedildi", + tunnelsSaveFailed: "Tünel profilleri kaydedilemedi: {message}", + tunnelsUnsavedHint: "Kaydedilmemiş değişiklikler", + tunnelsTest: "Test Et", + tunnelsTesting: "Test ediliyor...", + tunnelsTestSuccess: "Tünel testi başarılı", + tunnelsTestFailed: "Tünel testi başarısız: {message}", + tunnelsHttpTestSuccess: "HTTP CONNECT proxy bağlantısı başarılı ({code})", + tunnelsSocks5TestSuccess: "SOCKS5 proxy bağlantısı başarılı", + tunnelsProxyHostRequired: "Proxy sunucusu zorunludur.", + tunnelsProxyPortRequired: "Proxy portu zorunludur.", + tunnelsSshHostRequired: "SSH sunucusu zorunludur.", + tunnelsHttpTunnelUnsupported: "HTTP tünel profilleri için tünel testi desteklenmiyor.", + tunnelsProxyTimedOut: "Proxy bağlantısı zaman aşımına uğradı ({duration})", + tunnelsProxyConnectFailed: "Proxy'ye bağlanılamadı: {error}", + tunnelsProxyHandshakeFailed: "Proxy el sıkışması başarısız: {error}", + tunnelsProxyHandshakeTimedOut: "Proxy el sıkışması zaman aşımına uğradı ({duration})", + tunnelsHttpConnectFailed: "HTTP proxy CONNECT başarısız: {detail}", + tunnelsSocksInvalidVersion: "Geçersiz SOCKS proxy sürümü: {version}", + tunnelsSocksAuthTooLong: "SOCKS kullanıcı adı veya parolası çok uzun", + tunnelsSocksAuthFailed: "SOCKS proxy kimlik doğrulaması başarısız", + tunnelsSocksAuthRejected: "SOCKS proxy, desteklenen tüm kimlik doğrulama yöntemlerini reddetti", + tunnelsSocksUnsupportedAuth: "SOCKS proxy desteklenmeyen bir kimlik doğrulama yöntemi seçti: {method}", + tunnelsSocksHostTooLong: "Proxy sunucu adı SOCKS5 etki alanı adresi için çok uzun", + tunnelsSocksConnectRejected: "SOCKS proxy bağlantısı reddedildi (kod {code})", + tunnelsSocksUnsupportedAddrType: "Desteklenmeyen SOCKS bağlı adres türü: {type}", + redisTab: "Redis", + shortcutsTab: "Kısayollar", + snippetsTab: "Parçacıklar", + syncTab: "Eşitle", + aiTab: "Yapay Zekâ", + mcpTab: "MCP", + jdbcTab: "JDBC Sürücüleri", + securityTab: "Güvenlik", + aboutTab: "Hakkında", + fontFamily: "Yazı Tipi Ailesi", + dataGridFontFamily: "Sonuç Tablosu Yazı Tipi", + dataGridFontFamilyDescription: "Sorgu sonuçları, tablo verisi, sütun başlıkları ve satır içi hücre düzenleyicileri için geçerlidir.", + uiFontFamily: "Arayüz Yazı Tipi", + uiFontAppDefault: "DBX Varsayılanı", + uiFontSystemDefault: "Sistem Varsayılanı", + uiFontFamilyDescription: "Araç çubuğu, sekmeler, kenar çubuğu, iletişim kutuları gibi düzenleyici dışı arayüz için geçerlidir.", + selectFont: "Yazı tipi seçin...", + searchFont: "Yazı tiplerinde ara...", + loadingFonts: "Yazı tipleri yükleniyor...", + noFontsFound: "Yazı tipi bulunamadı", + useCustomFont: "“{font}” kullan", + languageTitle: "Dil / 语言", + fontSize: "Yazı Tipi Boyutu", + toolbarTitle: "Araç çubuğu", + toolbarHiddenHint: 'Gizlenen veya taşan bazı düğmeler "Daha fazla" menüsünde görünür.', + exclusiveRightSidebarPanels: "Aynı anda tek bir sağ kenar paneli göster", + exclusiveRightSidebarPanelsDescription: "Bir sağ kenar paneli açıldığında diğerleri kapanır. Birden çok panele izin vermek için bunu kapatın.", + uiScale: "Arayüz Ölçeği", + uiScaleDescription: "Yüksek DPI ekranlar için tüm masaüstü arayüzünü ölçekleyin. Değişiklikler hemen uygulanır ve sonraki açılışta geri yüklenir.", + theme: "Tema", + cornerStyle: "Köşe biçemi", + cornerStyleNone: "Köşeli", + cornerStyleSmall: "Küçük", + cornerStyleLarge: "Büyük", + selectTheme: "Tema seçin...", + colorTheme: "Renk Teması", + selectColorTheme: "Renk teması seçin...", + themePalettePearl: "Beyaz", + themePaletteMist: "Sis Grisi", + themePaletteGraphite: "Titanyum Grisi", + themePaletteCobalt: "Kobalt Mavisi", + themePaletteSage: "Adaçayı Yeşili", + themePaletteAmber: "Sıcak Sarı", + themePaletteBlush: "Sakura Pembesi", + themePaletteVscode: "VS Code", + themePaletteIdea: "IDEA", + themePaletteXcode: "Xcode", + themePaletteJetbrains: "JetBrains", + themePaletteCursor: "Cursor", + themePaletteClaude: "Claude Code", + themePaletteCustom: "Özel", + customUiReset: "Varsayılanlara sıfırla", + customUiEditingLight: "Açık tema renkleri düzenleniyor", + customUiEditingDark: "Koyu tema renkleri düzenleniyor", + customUiBackground: "Arka plan", + customUiForeground: "Ön plan", + customUiPrimary: "Birincil", + customUiBorder: "Kenarlık", + customUiSidebar: "Kenar çubuğu", + followAppTheme: "Uygulama temasını izle", + appLayout: "Arayüz Düzeni", + appLayoutSeparated: "Modern ayrık", + appLayoutSeparatedDescription: "Blok biçemli sekmelerle belirgin panel ayrımı.", + appLayoutClassic: "Klasik sıkışık", + appLayoutClassicDescription: "Sıkışık panel başlıklarıyla kesintisiz sekme çubuğu.", + tabLayout: "Sekme çubuğu taşması", + tabLayoutScroll: "Tek satır kaydırma", + tabLayoutScrollDescription: "Taştığında sekmeler tek satırda yatay olarak kayar.", + tabLayoutWrap: "Çok satırlı kaydırma", + tabLayoutWrapDescription: "Sekmeler tümünü aynı anda göstermek için birden çok satıra kayar.", + tabPlacement: "Sekme çubuğu konumu", + tabPlacementTop: "Üst", + tabPlacementBottom: "Alt", + tabPlacementLeft: "Sol taraf", + tabPlacementRight: "Sağ taraf", + tabPlacementDescription: "Yan sekme çubukları dikey kayar; çok satırlı sarma yalnızca içeriğin üstünde veya altında geçerlidir.", + tabGroup: "Gruplama ölçütü", + tabGroupNone: "Gruplama yok", + tabGroupDatabaseType: "Veritabanı türüne göre grupla", + tabGroupConnection: "Bağlantıya göre grupla", + tabSort: "Sıralama ölçütü", + tabSortManual: "Elle sıralama", + tabSortCreated: "Oluşturulma zamanı", + tabSortTitle: "Sekme adı", + tabOrganizationDescription: "Gruplama ve sıralama yalnızca görüntülenen sırayı etkiler. Sürükleme, elle sıralamada kullanılabilir.", + iconTheme: "Simge ve logo biçemi", + iconThemeDefault: "Varsayılan", + iconThemeDefaultDescription: "Renkli DBX uygulama simgesini kullan.", + iconThemeBlack: "Siyah", + iconThemeBlackDescription: "Uygulamada siyah DBX logosunu kullan.", + iconThemeBlackDescriptionMac: "Uygulamada siyah logoyu kullan; Dock siyah bir plaka kullanır, menü çubuğu sistemi izler.", + showTrayIcon: "Tepsi/menü çubuğu simgesini göster", + showTrayIconDescription: "Kapatıldığında simge gösterilmez, ancak pencereyi kapatmak yine de eskisi gibi DBX'i arka planda gizler.", + quitOnClose: "Pencere kapatılınca çık", + quitOnCloseDescription: "Etkinleştirildiğinde kapatma düğmesine tıklamak DBX'i tepsiye gizlemek yerine tümüyle kapatır. Bunu daha sonra Görünüm ayarlarından değiştirebilirsiniz.", + closeActionPromptTitle: "Pencereyi kapat", + closeActionPromptDescription: "Kapatma düğmesine tıkladığınızda ne olacağını seçin. Bunu daha sonra Ayarlar > Görünüm bölümünden değiştirebilirsiniz.", + closeActionQuit: "DBX'ten çık", + closeActionMinimize: "Tepsiye küçült", + updateNotificationsEnabled: "Güncelleme anımsatıcılarını etkinleştir", + updateNotificationsEnabledDescription: "Kapatıldığında DBX, uygulama veya sürücü güncellemelerini otomatik denetlemez ve güncelleme rozetleri göstermez. Elle denetim yine kullanılabilir.", + updateDownloadSource: "Güncelleme indirme kaynağı", + updateDownloadSourceDescription: "Uygulama güncellemelerinin, veritabanı agent'larının, sürücülerin ve yönetilen JRE'lerin nereden indirileceğini seçin. Resmî kaynak önerilir; Çin anakarası ağlarında CNB daha hızlı olabilir.", + updateDownloadSourceOfficial: "Resmî kaynak (önerilen)", + updateDownloadSourceCnb: "CNB", + debugLoggingEnabled: "Hata ayıklama günlüklerini etkinleştir", + debugLoggingEnabledDescription: "Sorun bildirimlerini incelerken daha ayrıntılı yerel kullanıcı tarafı tanılama günlükleri kaydeder. Varsayılan olarak kapalıdır.", + metadataCacheMemoryLimit: "Meta veri bellek önbelleği sınırı", + metadataCacheMemoryLimitDescription: "Varsayılan 64 MB. Mümkün olduğunca 256 MB veya altında tutun; kesin sınır 512 MB'dır. DDL, sütunlar, dizinler, yabancı anahtarlar, tetikleyiciler ve açıklamaları kapsar.", + duckDbWorkerProcessIsolation: "DuckDB işlem yalıtım modu (Deneysel)", + duckDbWorkerProcessIsolationDescription: "DuckDB sorgularını ayrı bir worker işleminde çalıştırır. Uzun süren bir sorgu iptal isteğine yanıt vermezse DBX, veritabanı dosya kilidini serbest bırakmak için worker işlemini durdurabilir.", + duckDbWorkerMaxProcesses: "En fazla eşzamanlı DuckDB worker'ı", + duckDbWorkerMaxProcessesDescription: "DBX'in aynı anda kaç DuckDB worker işlemi çalıştırabileceğini sınırlar. Aralık: 1-16. Varsayılan: 4.", + duckDbWorkerProcessIsolationRestartRequired: "Bu değişikliğin etkili olması için DBX'i yeniden başlatın.", + restartDbx: "DBX'i yeniden başlat", + restartDbxFailed: "DBX yeniden başlatılamadı: {error}", + applyFailed: "Ayarlar uygulanamadı: {error}", + unsavedChangesCloseTitle: "Kaydedilmemiş değişiklikler", + unsavedChangesCloseMessage: "Kaydedilmemiş ayar değişiklikleriniz var; şimdi kapatırsanız kaybolacak. Bu değişikliklerden vazgeçilsin mi?", + unsavedChangesCloseCancel: "Düzenlemeye devam et", + unsavedChangesCloseDiscard: "Değişiklikleri at", + debugLogsCopy: "Günlükleri kopyala", + debugLogsCopied: "Kopyalandı", + debugLogsDownload: "Günlükleri indir", + debugLogsDownloaded: "İndirildi", + debugLogsClear: "Günlükleri temizle", + tableStructureSection: "Tablo Yapısı", + dataGridDisplay: "Veri tablosu görünümü", + dataGridFilterView: "Tablo filtresi görünümü", + dataGridFilterViewDescription: "Filtre açılır penceresi, sabit koşullar paneli ya da sıkışık metin koşulları paneli kullanın.", + dataGridFilterViewPreview: "Etki önizlemesi", + dataGridFilterViewPreviewExpand: "Etki önizlemesini genişlet", + dataGridFilterViewPreviewCollapse: "Etki önizlemesini daralt", + tableOpenPageSize: "Tablolar açılırken varsayılan sayfa başına satır", + tableOpenPageSizeDescription: "Yeni bir tablo açıldığında sayfa başına yüklenen satır sayısı. Bir tabloda sayfa başına satırı değiştirmek, sonraki tablo sekmeleri için bu varsayılanı günceller.", + queryPageSize: "Varsayılan sorgu sayfa başına satır", + queryPageSizeDescription: "Sorgu sonucu sayfası başına yüklenen satır sayısı. Desteklenen en büyük sayfa boyutu {max}.", + multiStatementDefaultView: "Birden çok ifade için varsayılan görünüm", + multiStatementDefaultViewDescription: "Birden çok SQL ifadesi içeren toplu işlerin sonuç tablosunda mı yoksa yürütme özetinde mi açılacağını seçin.", + queryResultMaxRows: "En fazla sorgu sonucu satırı", + queryResultMaxRowsEnabled: "Sorgu sonucu satırlarını sınırla", + queryResultMaxRowsDescription: "Sorgular, tablo verisi, saklı yordamlar ve sürekli yükleme tarafından döndürülen satırlara üst sınır koyar.", + queryResultMaxRowsTooSmall: "En az sorgu sayfa boyutu ({pageSize}) kadar olmalıdır.", + queryResultMaxRowsUnlimitedDescription: "Toplam satır veya sürekli yükleme sınırı yok. Büyük sonuçlar çok fazla bellek kullanabilir.", + showColumnCommentsInHeader: "Sütun açıklamalarını adların altında göster", + showColumnCommentsInHeaderDescription: "Tablo sütun açıklamalarını doğrudan ızgara sütun adlarının altında göster.", + showColumnTypesInHeader: "Sütun türlerini adların altında göster", + showColumnTypesInHeaderDescription: "Her sütunun veri türünü doğrudan ızgara sütun adlarının altında göster.", + dataGridShowTransposeFieldMetadata: "Devrik görünümde alan meta verisini göster", + dataGridShowTransposeFieldMetadataDescription: "Etkin sütun türlerini ve açıklamalarını devrik görünümde ayrı satırlarda göster. Bu, satır yüksekliğini artırır.", + colorizeDataGridCellTypes: "Veri tablosu değerlerini renklendir", + colorizeDataGridCellTypesDescription: "Değerleri sütun veri türüne göre ayırt etmek için temaya uyumlu, yumuşak metin renkleri kullan.", + dataGridTypeColorScheme: "Veri türü renk şeması", + dataGridTypeColorSchemeDescription: "Izgaranın değerleri veri türüne göre renklendirirken kullanacağı paleti seçin.", + dataGridTypeColorSchemeConfigure: "Özelleştir", + dataGridTypeColorSchemeTitle: "Veri türü renkleri", + dataGridTypeColorSchemeAuto: "Temayı izle", + dataGridTypeColorSchemeAutoHint: "Yerleşik renkler kullanılır; açık ve koyu paletler arasında otomatik geçiş yapılır.", + dataGridTypeColorSchemeCreateFromCurrent: "Bu renklerden şema oluştur", + dataGridTypeColorSchemeAdd: "Yeni şema", + dataGridTypeColorSchemeDuplicate: "Şemayı çoğalt", + dataGridTypeColorSchemeRename: "Şemayı yeniden adlandır", + dataGridTypeColorSchemeRenameConfirm: "Yeniden Adlandır", + dataGridTypeColorSchemeDelete: "Şemayı sil", + dataGridTypeColorSchemeReset: "Renkleri sıfırla", + dataGridTypeColorSchemeDone: "Bitti", + dataGridTypeColorSchemeDefaultName: "Renk şeması", + dataGridTypeColorSchemeCopySuffix: " Kopya", + dataGridTypeColorInteger: "Tam sayı", + dataGridTypeColorNumeric: "Ondalık", + dataGridTypeColorString: "Metin", + dataGridTypeColorBoolean: "Boole", + dataGridTypeColorTemporal: "Tarih ve saat", + dataGridTypeColorStructured: "Yapılandırılmış", + dataGridTypeColorIdentifier: "Tanımlayıcı", + dataGridTypeColorBinary: "İkili", + dataGridTypeColorSpatial: "Uzamsal", + showIndexIndicatorsInHeader: "Sütun adlarının yanında dizin göstergelerini göster", + showIndexIndicatorsInHeaderDescription: "Izgara başlığında her sütunun dizin türünü simgeyle belirt: birincil anahtar (turuncu), benzersiz dizin (kırmızı), normal dizin (yeşil).", + compactColumnHeaderActions: "Sıkışık sütun başlığı araçları", + compactColumnHeaderActionsDescription: 'Biçimlendirici ve yerel filtre araçlarını bir "daha fazla" menüsüne taşıyarak sütun adlarına öncelik verin.', + dataGridQuickEntry: "Hızlı ızgara girişi", + dataGridQuickEntryDescription: "Etkinleştirildiğinde, bir hücreyi düzenlemek ya da alttaki boş satırı doldurmak, odak ayrıldığı anda veritabanına kaydeder. Sık veri girişi için kullanışlıdır, ancak istenmeyen yazmalara yol açabilir.", + dataGridAutoTransposeSingleRow: "Tek satırlık sorgu sonuçlarını otomatik devrik göster", + dataGridAutoTransposeSingleRowDescription: "Etkinleştirildiğinde, tam olarak bir satır ve birden çok sütun içeren SQL sorgu sonuçları otomatik olarak devrik görünüme geçer.", + dataGridCellDetailButtonVisible: "Hücre ayrıntısı düğmesini göster", + dataGridCellDetailButtonVisibleDescription: "Bir hücrenin üzerine gelindiğinde hücre ayrıntısı düğmesini göster.", + dataGridCrosshairHighlight: "Artı imleç satır ve sütun vurgusu", + dataGridCrosshairHighlightDescription: "Etkinleştirildiğinde etkin hücrenin tüm satırı ve sütunu hafifçe vurgulanır (Excel gibi). Odaklanan hücre kendi seçili biçemini korur.", + infiniteScroll: "Sonsuz kaydırmayla yükleme", + autoCalculateTotalRows: "Toplam satır sayısını otomatik hesapla", + autoCalculateTotalRowsDescription: "Eşleşen toplam satırı göstermek için her sorgunun ardından otomatik olarak COUNT(*) çalıştır. Büyük sorguların hızlı kalması için varsayılan olarak kapalıdır — sonuç alt bilgisinden istediğinizde hesaplayın.", + infiniteScrollDescription: "En alta kaydırıldığında sonraki grubu otomatik yükle.", + flatteningMultiLineText: "Çok Satırlı Metni Düzleştirme", + flatteningMultiLineTextDescription: "Çok satırlı metin, satır sonları ¶ ile gösterilerek tek satırda birleştirilir.", + regexMaxMatchCount: 'En fazla "tümünü seç" eşleşmesi', + regexMaxMatchCountDescription: "Tüm Eşleşmeleri Seç işlemiyle oluşturulan seçim sayısını sınırlar; arama sayımı eksiksiz kalır (100–10000).", + tableColumnTemplateFields: "Yeni Tablo Hazır Alanları", + tableColumnTemplateFieldsDescription: "Bir veritabanı türü seçin, ardından yeni tablolar oluşturulurken kullanılan hazır alan türlerini yapılandırın.", + tableColumnTemplateAdd: "Alan Ekle", + tableColumnTemplateColumn: "Alan", + tableColumnTemplateDatabase: "Veritabanı", + tableColumnTemplateType: "Tür", + tableColumnTemplateLength: "Uzunluk", + tableColumnTemplateDefault: "Varsayılan", + tableColumnTemplateNoPresetType: "Hazır tür yok", + tableColumnTemplateRequired: "Zorunlu", + tableColumnTemplateComment: "Açıklama", + tableColumnTemplateDragHandle: "Yeniden sıralamak için sürükleyin", + sidebarActivation: "Kenar çubuğu etkinleştirme", + sidebarActivationSingle: "Tek tıklama", + sidebarActivationSingleDescription: "Eylem yapılabilen kenar çubuğu öğelerini tek tıklamayla açın.", + sidebarActivationDouble: "Çift tıklama", + sidebarActivationDoubleDescription: "Tek tıklama satırları seçer; çift tıklama öğeleri açar.", + sidebarObjectDisplay: "Kenar çubuğu nesne düzeni", + sidebarObjectDisplayGrouped: "Gelişmiş görünüm", + sidebarObjectDisplayGroupedDescription: "Daha çok nesne türü olan veritabanlarında nesneleri tablolar, görünümler, yordamlar ve işlevler olarak grupla.", + sidebarObjectDisplaySimple: "Basit görünüm", + sidebarObjectDisplaySimpleDescription: "Ara düzeyleri azaltmak için tabloları ve görünümleri doğrudan her veritabanı ya da şema altında listele.", + routineSourceOpenMode: "İşlev / yordam / görünüm açılış modu", + routineSourceOpenModeQueryTab: "Veri sekmesi", + routineSourceOpenModeQueryTabDescription: "Kaynağı, SQL sorgularını çalıştırmakla aynı şekilde yeni bir veri sekmesinde aç.", + routineSourceOpenModeDialog: "İletişim penceresi", + routineSourceOpenModeDialogDescription: "Hızlı görüntüleme ve düzenleme için kaynağı açılır bir iletişim kutusunda aç.", + autoSelectActiveSidebarNode: "Açılan öğeyi her zaman seç", + autoSelectActiveSidebarNodeDescription: "Sekmeler arasında geçiş yaparken kenar çubuğunda eşleşen görünür tabloyu, koleksiyonu veya SQL dosyasını seç.", + sidebarBrowseObjectsOnDatabaseActivation: "Veritabanı etkinleştirilirken nesnelere gözat", + sidebarBrowseObjectsOnDatabaseActivationDescription: 'Etkinleştirildiğinde, seçili tek veya çift tıklama moduyla bir veritabanı ya da şema düğümünü etkinleştirmek "Nesnelere Gözat" sekmesini de açar.', + openTabsRestoreMode: "Açılışta sekmeleri geri yükle", + openTabsRestoreModeDescription: "DBX'in en son açık olan sekmeleri nasıl geri yükleyeceğini seçin.", + openTabsRestoreModeAll: "Tüm sekmeleri koru", + openTabsRestoreModePinned: "Yalnızca sabitlenmiş sekmeleri koru", + openTabsRestoreModeNone: "Sekmeleri koruma", + openTabsRestoreModeHint: "Sabitlenmiş sekmeler sekme çubuğunun sol tarafında kalır ve sık kullanılan giriş noktaları olarak iyi çalışır.", + disconnectTabHandlingMode: "Bağlantı kesildikten sonraki sekmeler", + disconnectTabHandlingModeDescription: "Bir bağlantı veya veritabanı kapatıldıktan sonra ilgili sekmelerin nasıl ele alınacağını seçin.", + disconnectTabHandlingModeCloseTabs: "Tüm sekmeleri kapat", + disconnectTabHandlingModeCloseTabsDescription: "Bağlantı veya veritabanıyla ilgili tüm sekmeleri kapat.", + disconnectTabHandlingModeKeepTabsClearResults: "Nesne sekmelerini kapat, SQL sekmelerini koru", + disconnectTabHandlingModeKeepTabsClearResultsDescription: "Tablo verisi, nesne gezgini ve yapı sekmelerini kapatırken SQL sorgu sekmelerini ve SQL metnini koru; ayrıca yürütme durumunu ve sonuç oturumlarını temizle.", + disconnectTabHandlingModeKeepTabsKeepResults: "İlgili sekmeleri kapatma", + disconnectTabHandlingModeKeepTabsKeepResultsDescription: "İlgili sekmeleri, SQL metnini ve geçerli sonuçları ek bir temizlik yapmadan koru.", + reuseDataTab: "Veri sekmesini yeniden kullan", + reuseDataTabDescription: "Bir tablo açıldığında veri sekmelerinin nasıl kullanılacağını seçin.", + openDataTabsNextToActive: "Yeni veri sekmelerini etkin sekmenin yanında aç", + openDataTabsNextToActiveDescription: "Yeni oluşturulan tablo veri sekmelerini doğrudan etkin sekmenin ardına yerleştir.", + dataTabReuseAlwaysNew: "Her zaman yeni sekme aç", + dataTabReuseAlwaysNewDescription: "Tablo zaten açık olsa bile her seferinde yeni bir veri sekmesi oluştur.", + dataTabReuseSameTable: "Aynı tabloyu yeniden kullan", + dataTabReuseSameTableDescription: "Aynı tablo için mevcut sekmeye geç ve farklı tabloları ayrı ayrı aç.", + dataTabReuseActiveTab: "Etkin veri sekmesini yeniden kullan", + dataTabReuseActiveTabDescription: "Etkin, güvenli veri sekmesini farklı bir tablo için yeniden kullan; korumalı sekmeler ayrı açılır.", + sidebarHiddenTablePrefixes: "Gizlenecek tablo adı önekleri", + sidebarHiddenTablePrefixesDescription: "Her satıra bir önek yazın. Yalnızca kenar çubuğundaki tablo, görünüm ve koleksiyon etiketleri kısaltılır; ipuçları ve işlemler yine tam adı kullanır.", + sidebarHiddenTablePrefixesPlaceholder: "Örnek:\nODS_\nT8Y2_LONG_", + sidebarCopyTableNameSeparator: "Tablo adı kopyalama ayırıcısı", + sidebarCopyTableNameSeparatorDescription: "Birden çok kenar çubuğu tablo veya sütun adını SQL düzenleyicisine kopyalarken ya da sürüklerken kullanılan ayırıcı.", + sidebarCopyTableNameIncludeSchema: "Kopyalanan tablo adlarına şemayı dâhil et", + sidebarCopyTableNameIncludeSchemaDescription: "Etkinleştirildiğinde kopyalanan veya sürüklenen tablo adları, etkin bağlantının tanımlayıcı tırnak kurallarıyla şema nitelikli biçimde kullanılır.", + sidebarTablePageSize: "Kenar çubuğu sayfa boyutu", + sidebarTablePageSizeDescription: "Kenar çubuğu ağacında sayfa başına yüklenen en fazla tablo/nesne sayısı. Çok tablonuz varsa ve daha az sayfa istiyorsanız artırın.", + sidebarTableSearchEnabled: "Veritabanı içinde tablo aramasını etkinleştir", + sidebarTableSearchEnabledDescription: "Her kapsamın tabloları bağımsız filtreleyebilmesi için genişletilmiş veritabanları, şemalar veya tablo grupları altında yerel bir tablo arama kutusu göster.", + sidebarObjectInfoMode: "Kenar çubuğu ek bilgisi", + sidebarObjectInfoModeDescription: + "Adların ardından açıklamaları, nesne boyutlarını ya da hiçbir ek metni göstermeyi seçin. Açıklamalar ve boyutlar birbirini dışlar. Veritabanı toplamları şu anda PostgreSQL'i destekler; tablo boyutları MySQL, PostgreSQL, GaussDB, KingbaseES, GBase 8a, SQL Server, Oracle, Dameng ve ClickHouse'u destekler.", + sidebarObjectInfoModeCommentInline: "Açıklamalar (addan sonra)", + sidebarObjectInfoModeCommentAligned: "Açıklamalar (kardeşlerle hizalı)", + sidebarObjectInfoModeCommentRight: "Açıklamalar (sağa hizalı)", + sidebarObjectInfoModeSize: "Nesne boyutu", + sidebarObjectInfoModeHidden: "Yok", + sidebarAllowHorizontalScroll: "Kenar çubuğunda yatay kaydırmaya izin ver", + sidebarAllowHorizontalScrollDescription: "Yatay kenar çubuğu kaydırmasına izin vererek uzun tablo, görünüm ve koleksiyon adlarını tam göster.", + sidebarShowTooltips: "Kenar çubuğu ipuçları", + sidebarShowTooltipsDescription: "Kenar çubuğunda bağlantıların ve veritabanı nesnelerinin üzerine gelindiğinde ayrıntı ipuçlarını göster. Açılır ipuçlarını durdurmak için kapatın.", + sidebarIndent: "Kenar çubuğu girintisi", + sidebarIndentDescription: "Ağaç derinliğinin her düzeyi için piksel cinsinden eklenen yatay kaydırma.", + sidebarFontSize: "Kenar çubuğu yazı tipi boyutu", + sidebarFontSizeDescription: "Kenar çubuğu nesne ağacı için piksel cinsinden yazı tipi boyutu. Düzenleyici yazı tipi boyutundan bağımsızdır.", + snippetsDescription: "Düzenleyicide tetiklenen SQL parçacığı şablonlarını özelleştirin.", + snippetsAdd: "Parçacık Ekle", + snippetsLabel: "Etiket", + snippetsPrefix: "Önek", + snippetsStatus: "Durum", + snippetsEnabled: "Etkin", + snippetsDisabled: "Devre dışı", + snippetsToggle: "Parçacığı etkinleştir veya devre dışı bırak", + snippetsBody: "SQL Gövdesi", + snippetsLabelPlaceholder: "örn. select *", + snippetsPrefixPlaceholder: "örn. sel", + snippetsBodyPlaceholder: "SELECT *\nFROM table\nLIMIT 100;", + snippetsRestoreDefaults: "Varsayılanları Geri Yükle", + snippetsAddTitle: "Parçacık Ekle", + snippetsEditTitle: "Parçacığı Düzenle", + sqlShortcutsTitle: "SQL Hızlı İşlemleri", + sqlShortcutsDescription: "SQL düzenleyicisinde bir tablo adı seçildikten sonra çalıştırılan özel SQL şablonları. Önce bir tablo tanımlayıcısı seçin; Cmd/Ctrl içeren kısayollar önerilir.", + sqlShortcutsAdd: "Ekle", + sqlShortcutsAddTitle: "SQL Hızlı İşlemi Ekle", + sqlShortcutsEditTitle: "SQL Hızlı İşlemini Düzenle", + sqlShortcutsLabel: "Etiket", + sqlShortcutsLabelPlaceholder: "örn. Satırları say", + sqlShortcutsLabelRequired: "Etiket zorunludur.", + sqlShortcutsSql: "SQL Şablonu", + sqlShortcutsSqlPlaceholder: "SELECT COUNT(*) FROM ${table}", + sqlShortcutsVariableHint: "Seçili tablo adı için {token} kullanın.", + sqlShortcutsEmpty: "Henüz SQL hızlı işlemi yok.", + sqlShortcutsUnbound: "Atanmamış", + sqlShortcutsToggle: "SQL kısayolunu etkinleştir veya devre dışı bırak", + sqlShortcutsDeleteConfirm: '"{name}" SQL kısayolu silinsin mi?', + syncWebDavTitle: "WebDAV Eşitleme", + syncWebDavDescription: "Kayıtlı SQL kitaplığı girdileri dâhil bir DBX anlık görüntüsünü WebDAV uyumlu bir depolama servisine yükleyin ya da oradan geri yükleyin.", + syncWebDavWebDescription: "Web modunda DBX sunucusu WebDAV'a tarayıcı CORS kısıtları olmadan erişir. Kayıtlı parolalar geçerli DBX örneğinde kalır.", + syncEndpoint: "WebDAV URL'si", + syncUsername: "Kullanıcı adı", + syncPassword: "Parola", + syncPasswordPlaceholder: "Parolayı girin", + syncClearSavedPassword: "Kayıtlı parolayı temizle", + syncRememberWebDavPassword: "WebDAV uygulama parolasını hatırla", + syncSavedPassword: "(kaydedildi)", + syncRememberWebDavPasswordDescription: "Parola şifrelenir ve yalnızca geçerli DBX örneğinde saklanır. WebDAV'a eşitlenmez ve eşitleme parolasının yerine geçmez.", + syncRemotePath: "Uzak anlık görüntü yolu", + syncRemotePathDescription: "DBX, yükleme sırasında eksik üst klasörleri oluşturur.", + syncSecretNotice: "DBX varsayılan olarak yalnızca bağlantı ayrıntılarını ve ayarları eşitler. Veritabanı parolaları, SSH parolaları, proxy parolaları, HTTP tünel belirteçleri, bağlantı dizeleri ve yapay zekâ API anahtarları yerelde kalır.", + syncSecrets: "Şifreli gizli bilgileri eşitle", + syncSecretsDescription: "Etkinleştirildiğinde DBX; veritabanı parolalarını, SSH parolalarını, proxy parolalarını, HTTP tünel belirteçlerini ve yapay zekâ API anahtarlarını uzak depolamaya yüklemeden önce şifreler.", + syncSecretsSharedDescription: "WebDAV için bu parola, dâhil edilen kimlik bilgilerini şifreler. GitHub Gist ve Gitee parçacıkları bağımsız şifreleme ve kimlik bilgisi denetimleri kullanır.", + syncSecretsPassphrase: "Eşitleme parolası", + syncSecretsPassphraseDescription: "Bu parola yalnızca hassas verileri şifrelemek ve geri yüklemek için kullanılır. Geçerli DBX örneğinde şifrelenir; diğer örneklerde yeniden girin.", + syncTest: "Test Et", + syncUpload: "Yükle", + syncDownload: "İndir", + syncTestSuccess: "WebDAV hedefine erişilebiliyor.", + syncUploadSuccess: "{path} konumuna {bytes} bayt yüklendi.", + syncAutoUpload: "Anlık görüntüleri otomatik yükle", + syncAutoUploadInterval: "Her", + syncAutoUploadMinutes: "dakika", + syncAutoUploadDescription: "DBX açıkken çalışır. Yerel kayıtlı SQL'in beklenmedik biçimde değiştirilmemesi için indirmeler yine elle onay gerektirir.", + syncAutoUploadSuccess: "{path} konumuna otomatik olarak {bytes} bayt yüklendi.", + syncDownloadSuccess: "{path} konumundan {bytes} bayt indirildi ve uygulandı.", + syncSecretsApplied: "Şifreli gizli bilgiler geri yüklendi.", + syncSecretsSkipped: "Şifreli gizli bilgiler mevcuttu ancak geri yüklenmedi.", + syncDownloadConfirm: "Uzak DBX anlık görüntüsü indirilip uygulansın mı? Yerel meta veriler ve kayıtlı SQL değiştirilecek.", + syncSnippetTitle: "GitHub / Gitee Parçacık Eşitlemesi", + syncSnippetDescription: "Aynı DBX anlık görüntüsünü özel bir kod parçacığında saklayın. İlk yükleme bir parçacık oluşturur ve kimliğini kaydeder.", + syncSnippetProvider: "Sağlayıcı", + syncSnippetProviderGitee: "Gitee Parçacıkları", + syncSnippetId: "Parçacık Kimliği", + syncSnippetIdPlaceholder: "İlk yükleme için boş bırakın", + syncSnippetToken: "Erişim belirteci", + syncSnippetRememberToken: "Bu aygıtta şifreli olarak sakla", + syncSnippetTokenDescription: "GitHub belirteçleri Gists yazma yetkisi gerektirir. Belirteçler eşitleme anlık görüntüsüne hiçbir zaman dâhil edilmez.", + syncSnippetPassphrase: "Parçacık şifreleme parolası", + syncSnippetPassphraseDescription: "GitHub/Gitee anlık görüntüsünün tamamını şifreler. Kaydedilmez ve eşitlenen kimlik bilgilerinin parolasından ayrıdır.", + syncSnippetIncludeSecrets: "Yüklerken şifreli kimlik bilgilerini dâhil et", + syncSnippetRestoreSecrets: "İndirirken şifreli kimlik bilgilerini geri yükle", + syncSnippetTestSuccess: "Parçacık eşitleme hedefine erişilebiliyor.", + syncSnippetUploadSuccess: "{id} parçacığına {bytes} bayt yüklendi.", + syncSnippetDownloadSuccess: "{id} parçacığından {bytes} bayt indirildi ve uygulandı.", + syncSnippetMigrateLegacy: "Eski parçacığı taşı", + syncSnippetMigrateLegacyRequired: "Bu eski düz metin parçacığı, Eski parçacığı taşı işlemiyle taşınmalıdır.", + syncSnippetMigrateLegacyConfirm: "DBX önce şifreli bir yedek oluşturacak, ardından {id} numaralı eski düz metin parçacığını kalıcı olarak silecek. Bu işlem geri alınamaz. Devam edilsin mi?", + syncSnippetMigrateLegacySuccess: "{id} şifreli parçacığı oluşturuldu ve eski düz metin parçacığı kaldırıldı.", + syncSnippetMigrateLegacyCreated: "{id} şifreli parçacığı oluşturuldu.", + syncSnippetMigrateLegacyCleanupRequired: "Şifreli parçacık oluşturuldu, ancak {id} numaralı eski parçacık silinemedi. Bunu elle silin ve açığa çıkmış kimlik bilgilerini değiştirin.", + syncSnippetRetryLegacyCleanup: "Eski parçacık temizliğini yeniden dene", + syncSnippetLegacyCleanupSuccess: "{id} numaralı eski düz metin parçacığı kaldırıldı.", + syncSnippetGuide: "Kurulum kılavuzu", + apply: "Uygula", + applyAndClose: "Uygula ve Kapat", + reset: "Sıfırla", + resetDefaults: "Varsayılanları Sıfırla", + resetAllDefaults: "Tüm Varsayılanları Sıfırla", + save: "Kaydet", + cancel: "İptal", + executeMode: "Çalıştırma modu", + executeModeDescription: "SQL çalıştırma kısayolu: {shortcut}. Varsayılan olarak tüm SQL'i mi yoksa imleçteki ifadeyi mi çalıştıracağını belirler.", + executeModeAll: "Tüm SQL'i çalıştır", + executeModeCurrent: "İmleçteki ifadeyi çalıştır", + defaultTransactionMode: "Varsayılan işlem commit modu", + defaultTransactionModeDescription: + 'Yeni bir SQL düzenleyici açıldığında varsayılan olarak kullanılan işlem modu. "Manuel işlem" ile yeni düzenleyiciler manuel işlem modunda başlar ve elle commit ya da rollback gerektirir; "Otomatik commit" ile her ifade otomatik olarak uygulanır. Yalnızca işlemleri destekleyen veritabanları için geçerlidir (PostgreSQL, MySQL, Oracle, JDBC).', + defaultTransactionModeAuto: "Otomatik commit", + defaultTransactionModeManual: "Manuel işlem", + executeAllOnBlankLine: "Boş satırlarda tüm SQL'i çalıştır", + executeAllOnBlankLineDescription: "Geçerli ifade modunda, imleçte bir ifade yoksa tüm SQL'i çalıştır. Varsayılan olarak kapalıdır.", + showExecutionTargetPicker: "Yürütme hedefi seçicisini göster", + showExecutionTargetPickerDescription: "Etkinleştirildiğinde, seçim yapmadan çalıştırmak geçerli ifade ile tüm SQL arasında seçim yapmanızı sağlar.", + showStatementRunButtons: "Soldaki çalıştırma düğmelerini göster", + showStatementRunButtonsDescription: "SQL düzenleyici kenar çubuğunda ifade başına çalıştırma düğmelerini göster. Kapatıldığında klavye kısayolları ve bağlam menüsünden çalıştırma yine çalışır.", + showLineNumbers: "Satır numaralarını göster", + showLineNumbersDescription: "SQL düzenleyici kenar çubuğunda satır numaralarını göster", + showCurrentStatementFrame: "Geçerli ifade çerçevesini göster", + showCurrentStatementFrameDescription: "Etkinleştirildiğinde SQL düzenleyici, geçerli çalıştırılabilir ifadenin çevresine bir çerçeve çizer; kapatıldığında çerçeve gizlenir.", + showInsertValueHints: "INSERT değer sütunu ipuçlarını göster", + showInsertValueHintsDescription: "Etkinleştirildiğinde SQL düzenleyici, INSERT ... VALUES ve INSERT ... SELECT yan tümcelerinde her değerin veya SELECT izdüşümünün yanında sütun adı ipuçları gösterir.", + previewStatementRunButton: "İfade çalıştırma düğmesini önizle", + wordWrap: "Sözcük kaydırma", + wordWrapDescription: "Uzun satırları düzenleyici genişliğinde kaydır", + vimMode: "Vim modu", + vimModeDescription: "SQL düzenleyicisinde Vim biçemli kipli düzenleme kullan", + autoCloseBrackets: "Parantezleri otomatik kapat", + autoCloseBracketsDescription: "Açılış karakteri yazıldığında kapanış parantezlerini ve tırnaklarını otomatik ekle", + sqlCompletionSection: "SQL tamamlama", + insertSpaceAfterCompletion: "Tamamlamadan sonra boşluk ekle", + insertSpaceAfterCompletionDescription: "Bir anahtar sözcük, tablo veya sütun tamamlaması kabul edildikten sonra, sonraki karakter izin veriyorsa boşluk ekle", + sortCompletionColumnsAlphabetically: "Tamamlama sütunlarını alfabetik sırala", + sortCompletionColumnsAlphabeticallyDescription: "Tablo alanlarını özgün veritabanı sırasında tutmak için kapatın", + selectFirstCompletionOnOpen: "İlk tamamlamayı otomatik seç", + selectFirstCompletionOnOpenDescription: "Etkinleştirildiğinde liste açıldığında ilk aday seçilir ve Enter ya da Tab bunu kabul eder. Kapatıldığında Enter yeni satır ekler, Tab ilk adayı kabul eder.", + completionTriggerMode: "SQL tamamlama tetikleme modu", + completionTriggerModeDescription: "SQL tamamlama adaylarının nasıl gösterileceğini seçin.", + completionTriggerModeManual: "Yalnızca elle", + completionTriggerModeManualDescription: "Adayları yalnızca {shortcut} tamamlama kısayolu kullanıldığında göster.", + completionTriggerModeRequirePrefix: "Yazılan tanımlayıcı öneki", + completionTriggerModeRequirePrefixDescription: "En az bir tanımlayıcı karakteri yazıldıktan sonra adayları göster.", + completionTriggerModePositional: "Akıllı konum", + completionTriggerModePositionalDescription: "Adayları geçerli SQL sözdizimi konumuna göre otomatik göster.", + sqlSemanticDiagnosticsEnabled: "SQL anlamsal tanılama", + sqlSemanticDiagnosticsEnabledDescription: "Etkinleştirildiğinde düzenleyici, bilinmeyen tablolar ve sütunlar gibi anlamsal sorunları bildirir. Büyük SQL'lerde ayrıştırma ve meta veri denetimlerini azaltmak için kapatın.", + confirmDangerousSqlExecution: "Tehlikeli işlemlerden önce onayla", + confirmDangerousSqlExecutionDescription: "Kapatıldığında tehlikeli SQL ile tablo satırı veya belge silme işlemleri uyarı iletişim kutusu olmadan çalışır.", + continueOnErrorOnBatch: "Hatada Devam Et", + continueOnErrorOnBatchDescription: "Etkinleştirildiğinde çoklu ifade yürütmesi, ilk hatada durmak yerine hatadan sonra devam eder.", + confirmUnsavedSqlClose: "Kaydedilmemiş SQL kapatılmadan önce onayla", + confirmUnsavedSqlCloseDescription: "Kapatıldığında kaydedilmemiş değişiklik içeren SQL sekmeleri, kaydetme onayı iletişim kutusu olmadan kapanır ya da uygulamadan çıkılır.", + appCloseUnsavedTabsMode: "Çıkışta kaydedilmemiş SQL", + appCloseUnsavedTabsModeDescription: "SQL sekmelerinde kaydedilmemiş değişiklikler varken DBX'ten çıkarken ne olacağını seçin.", + appCloseUnsavedTabsModePrompt: "Kaydedilip kaydedilmeyeceğini sor", + appCloseUnsavedTabsModeKeepDrafts: "Çık ve taslakları koru", + appCloseUnsavedTabsModeHint: 'Taslaklar kaydedilmemiş sekmeler olarak korunur ve DBX\'i bir sonraki başlatışınızda geri yüklenir. Bunun için "Açılışta sekmeleri geri yükle" ayarının "Sekmeleri koruma" olmaması gerekir.', + appCloseDraftPersistFailed: "DBX açık sekme taslaklarını kaydedemedi, bu yüzden çıkış iptal edildi. Disk alanını ve dosya izinlerini denetleyip tekrar deneyin. Ayrıntılar: {message}", + savedSqlOpenTarget: "Kayıtlı SQL için varsayılan hedef", + savedSqlOpenTargetSaved: "Kayıtlı hedef", + savedSqlOpenTargetSavedDescription: "SQL dosyasıyla birlikte saklanan bağlantıyı, veritabanını ve şemayı kullan.", + savedSqlOpenTargetCurrent: "Geçerli sekme", + savedSqlOpenTargetCurrentDescription: "Varsa etkin sekmenin bağlantısını, veritabanını, şemasını ve kataloğunu kullan; yoksa kayıtlı hedefi kullan.", + prefillNewQueryWithSelect: "Yeni sorguyu SELECT * ile doldur", + prefillNewQueryWithSelectDescription: "Yeni bir sorgu oluşturulurken düzenleyiciyi, etkin tablo sekmesine ya da kenar çubuğunda seçili tabloya göre SELECT * FROM ile doldur.", + generateSqlIncludeDatabaseName: "Üretilen SQL'e veritabanı adını dâhil et", + generateSqlIncludeDatabaseNameDescription: "Veritabanı destekliyorsa üretilen tablo SQL'i yalnızca tablo adı yerine veritabanı.tablo biçimini kullanır.", + formatSqlOnSqlFileSave: "SQL dosyalarını kaydederken SQL'i biçimlendir", + formatSqlOnSqlFileSaveDescription: "Bir SQL dosyası kaydedilirken SQL'i otomatik biçimlendir; kayıtlı SQL kitaplığı dosyaları ve .sql olarak kaydedilen sorgular dâhil.", + clickTableNavigationTarget: "Ctrl+Tıklama Tabloda DDL Açar", + clickTableNavigationTargetDescription: "Etkinleştirildiğinde bir tablo adına Ctrl/Cmd+tıklamak tablo yapısı düzenleyicisini (DDL) açar. Kapatıldığında tablo veri görünümünü açar.", + showTableDdlHoverPreview: "Üzerine gelindiğinde tablo DDL'ini göster", + showTableDdlHoverPreviewDescription: "SQL düzenleyicisinde bir tablo adının üzerine gelindiğinde DDL önizlemesi göster.", + sqlVariableSyntax: "SQL değişken ve yer tutucu değiştirme", + sqlVariableSyntaxDescription: "DBX'in SQL çalıştırmadan önce hangi değişken ve yer tutucu sözdizimlerini değiştireceğini veritabanı türüne göre seçin. Varsayılan olarak tümü etkindir.", + sqlVariableSubstitutionEnabled: "Etkin", + sqlVariableSyntax_positional: "Konumsal yer tutucu", + sqlVariableSyntax_positionalDescription: "Her konumsal yer tutucuyu sırayla değiştirmek için değer sor.", + sqlVariableSyntax_named: "Adlandırılmış yer tutucu", + sqlVariableSyntax_namedDescription: "Adlandırılmış yer tutucuları değiştirmek için değer sor.", + sqlVariableSyntax_shell: "Kabuk biçemli yer tutucu", + sqlVariableSyntax_shellDescription: "Kabuk biçemli yer tutucuları değiştirmek için değer sor.", + sqlVariableSyntax_mybatis: "MyBatis biçemli yer tutucu", + sqlVariableSyntax_mybatisDescription: "MyBatis biçemli yer tutucuları değiştirmek için değer sor.", + sqlVariableSyntax_sqlserver: "SQL Server biçemli yer tutucu", + sqlVariableSyntax_sqlserverDescription: "SQL Server biçemli yer tutucuları değiştirmek için değer sor (oturum değişkenleriyle çakışabilir).", + sqlVariableSyntax_atSet: "Satır içi değişken genişletme", + sqlVariableSyntax_atSetDescription: "Satır içi değişken bildirimlerini genişlet ve çalıştırmadan önce değerlerini yerine koy.", + autoAliasTables: "Tablo takma adlarını otomatik ekle", + autoAliasTablesDescription: "FROM veya JOIN içinde bir tablo tamamlaması seçildiğinde order_items AS oi gibi üretilmiş bir takma ad ekle.", + redisKeyTemplatesSection: "Redis", + redisKeyTemplates: "Anahtar arama şablonları", + redisKeyTemplatesPlaceholder: "Örnek:\nuser:{'{'}$userId{'}'}\nv3:adui:{'{'}$positionID{'}'}", + redisKeyTemplatesDescription: "Her satıra bir şablon yazın. Bir Redis bağlantısının kendi şablonları yoksa yedek öneri olarak kullanılır.", + redisScanPageSize: "Redis tarama sayısı", + redisScanPageSizeDescription: "Anahtarlara gözatılırken her Redis SCAN sayfasında istenen anahtar sayısı.", + redisScanPageSizeOption: "{count} anahtar", + exportBatchSize: "Dışa aktarma toplu iş boyutu", + dateTimeSection: "Tarih ve saat", + globalDateTimeDisplayFormat: "Genel görüntüleme biçimi", + globalDateTimeDisplayFormatDescription: "Her veritabanında, sütuna özgü biçimlendiricisi olmayan zaman sütunları için geçerlidir.", + globalDateTimeExportFormat: "Genel dışa aktarma biçimi", + globalDateTimeExportFormatDescription: "Zaman sütunlarını CSV, Excel, JSON, Markdown ve metin dışa aktarımlarında tutarlı biçimlendirir.", + globalDateTimeImportFormat: "Genel içe aktarma biçimi", + globalDateTimeImportFormatDescription: "İçe aktarılan zaman değerlerini bu biçimle ayrıştırır. Yaygın biçimleri otomatik algılamak için boş bırakın.", + dateTimeFormatRaw: "Veritabanı değerini koru", + dateTimeFormatAuto: "Otomatik algıla", + dateTimeFormatSearchPlaceholder: "Bir biçim seçin veya girin", + dateTimeFormatEmpty: "Özel bir tarih-saat biçimi girin", + exportBatchSizeDescription: "Veri dışa aktarılırken toplu iş başına getirilen satır sayısı (100-100000).", + exportRowLimitEnabled: "Dışa aktarılan satırları sınırla", + exportRowLimitEnabledDescription: "Açıkken sorgu sonucu ve tablo verisi dışa aktarımları aşağıdaki satır sınırında durur.", + exportRowLimit: "Veri dışa aktarma satır sınırı", + exportRowLimitDescription: "Sorgu sonucu ve tablo verisi dışa aktarımları için en fazla satır sayısı.", + exportRowLimitUnlimited: "Sınırsız", + queryExportKeysetOptimizationEnabled: "Keyset iyileştirmesini dene", + queryExportKeysetOptimizationEnabledDescription: "Yalnızca güvenle tanınan tek tablolu sorgular için geçerlidir; karmaşık sorgular otomatik olarak geri döner.", + exportSection: "Dışa Aktar", + csvQuoteMode: "CSV alan tırnakları", + csvQuoteModeDescription: "CSV alanlarının çift tırnağı nasıl kullanacağını seçin.", + csvQuoteModeAll: "Tüm alanlar", + csvQuoteModeNecessary: "Yalnızca gerektiğinde", + performanceSection: "Başarım", + shortcutExecuteSql: "SQL'i çalıştır", + shortcutExecuteSqlInNewResultTab: "SQL'i yeni sonuç sekmesinde çalıştır", + shortcutFind: "Bul", + shortcutReplace: "Değiştir", + shortcutSaveSql: "SQL'i Kaydet", + shortcutAcceptCompletion: "Tamamlamayı kabul et", + shortcutTriggerCompletion: "Tamamlamayı tetikle", + shortcutFormatSql: "SQL'i Biçimlendir", + shortcutExpandSelectStar: "* ifadesini sütunlara genişlet", + shortcutToggleLineComment: "Satır yorumunu aç/kapat", + shortcutToggleBlockComment: "Blok yorumunu aç/kapat", + shortcutIndentMore: "Girintiyi artır", + shortcutIndentLess: "Girintiyi azalt", + shortcutInsertLineBelow: "Aşağıya satır ekle", + shortcutJoinLines: "Satırları birleştir", + shortcutDuplicateLine: "Geçerli satırı çoğalt", + shortcutDeleteLine: "Geçerli satırı sil", + shortcutMoveLineUp: "Satırı yukarı taşı", + shortcutMoveLineDown: "Satırı aşağı taşı", + shortcutCopyLineUp: "Satırı yukarı kopyala", + shortcutCopyLineDown: "Satırı aşağı kopyala", + shortcutUndo: "Geri al", + shortcutRedo: "Yinele", + shortcutSelectAll: "Tümünü seç", + shortcutAddNextSelectionOccurrence: "Sonraki eşleşmeyi ekle", + shortcutSelectAllSelectionOccurrences: "Tüm eşleşmeleri seç", + shortcutExtendSelection: "Seçimi genişlet", + shortcutEditTableStructure: "Tablo yapısını düzenle", + shortcutCopyCurrentRow: "Geçerli veri satırını kopyala", + shortcutDeleteCurrentRow: "Geçerli veri satırını sil", + shortcutGoToColumn: "Sütuna git", + shortcutGoToFirstPage: "İlk sayfa", + shortcutGoToPreviousPage: "Önceki sayfa", + shortcutGoToNextPage: "Sonraki sayfa", + shortcutGoToLastPage: "Son sayfa", + shortcutNewQuery: "Yeni sorgu", + shortcutOpenSettings: "Ayarları aç", + shortcutCloseTab: "Sekmeyi kapat", + shortcutFocusSearch: "Geçerli görünüm aramasına odaklan", + shortcutQuickOpen: "Hızlı aç (tüm veritabanı nesnelerinde ara)", + shortcutNavigateTabHistoryBack: "Önceki görüntülenen sekmeye dön", + shortcutTabSwitcher: "Sekme değiştirici (göstermek için basılı tutun, geçmek için bırakın)", + shortcutNavigateTabHistoryForward: "Sonraki görüntülenen sekmeye git", + shortcutSwitchToPreviousTab: "Önceki sekmeye geç", + shortcutSwitchToNextTab: "Sonraki sekmeye geç", + shortcutSwitchToTab1: "1. sekmeye geç", + shortcutSwitchToTab2: "2. sekmeye geç", + shortcutSwitchToTab3: "3. sekmeye geç", + shortcutSwitchToTab4: "4. sekmeye geç", + shortcutSwitchToTab5: "5. sekmeye geç", + shortcutSwitchToTab6: "6. sekmeye geç", + shortcutSwitchToTab7: "7. sekmeye geç", + shortcutSwitchToTab8: "8. sekmeye geç", + shortcutSwitchToTab9: "9. sekmeye geç", + shortcutZoomInUi: "Arayüzü yakınlaştır", + shortcutZoomOutUi: "Arayüzü uzaklaştır", + shortcutResetUiZoom: "Arayüz yakınlaştırmasını sıfırla", + shortcutRefreshData: "Verileri yenile", + shortcutToggleResultsPane: "Sonuç bölmesini aç/kapat", + shortcutToggleTranspose: "Devrik görünümü aç/kapat", + shortcutCancelSearch: "Aramayı iptal et", + shortcutToggleSidebar: "Kenar çubuğunu aç/kapat", + shortcutToggleZenMode: "Zen modunu aç/kapat", + shortcutCopySidebarSelection: "Kenar çubuğu seçimini kopyala", + shortcutPasteSidebarSelection: "Kenar çubuğuna yapıştır", + shortcutEditSidebarConnection: "Kenar çubuğu bağlantısını düzenle", + shortcutOpenDataInNewTab: "Verileri yeni sekmede aç (fare tıklaması)", + shortcutViewTableDdl: "Tablo DDL'ini görüntüle", + shortcutSendSelectionToAi: "Seçimi yapay zekâya gönder", + shortcutSqlIntentionActions: "SQL Amaç İşlemleri (* Genişlet / Tanımlayıcıyı Nitele)", + intentionExpandWildcard: "* İfadesini Sütun Listesine Genişlet", + intentionQualifyIdentifier: "Tanımlayıcıyı Nitele", + intentionUnqualifyIdentifier: "Tanımlayıcı Nitelemesini Kaldır", + intentionBatchQualifyIdentifiers: "Tanımlayıcıları Toplu Nitele", + shortcutToggleFold: "Katlamayı aç/kapat", + shortcutScopeGlobal: "Genel", + shortcutScopeEditor: "SQL düzenleyici", + shortcutScopeGrid: "Veri tablosu", + shortcutScopeSearch: "Alanlarda ara", + shortcutScopeSidebar: "Kenar çubuğu", + shortcutPressShortcut: "Kısayola basın", + shortcutSearchPlaceholder: "Kısayollarda ara", + shortcutSearchNoResults: "Aramanızla eşleşen kısayol yok.", + shortcutConflict: "Bu kısayol aynı kapsamdaki başka bir eylemle çakışıyor.", + shortcutClear: "Kısayolu temizle", + preview: "Canlı Önizleme", + previewSyntaxErrorHint: "Salt okunur önizleme. Örnek SQL'deki FOM yazım hatası kasıtlıdır ve sözdizimi hatası vurgulamasını gösterir.", + customTheme: "Özel Tema", + customThemeConfigure: "Özel Temayı Yapılandır", + customThemeTitle: "Özel Tema Yapılandırması", + customThemeMyThemes: "Temalarım", + customThemeNewTheme: "Yeni Tema", + customThemeVisualEdit: "Görsel Düzenleyici", + customThemeJsonConfig: "JSON Yapılandırması", + customThemeLivePreview: "Canlı Önizleme", + customThemePreviewExample: "-- Sorgu Örneği", + customThemePreset: "Hazır Tema", + customThemeSelectPreset: "Hazır tema seçin...", + customThemeApply: "Uygula", + customThemePasteImport: "Yapıştırarak İçe Aktar", + customThemeExportJson: "JSON Dışa Aktar", + customThemeSaveAndApply: "Kaydet ve Uygula", + customThemeKeyword: "Anahtar sözcük", + customThemeField: "Alan/Değişken", + customThemeFunction: "İşlev", + customThemeString: "Dize", + customThemeNumber: "Sayı", + customThemeComment: "Açıklama", + customThemeTable: "Tablo", + customThemeOperator: "Operator", + customThemeType: "Tür", + customThemeBuiltin: "Yerleşik", + customThemeBackground: "Arka plan", + customThemeForeground: "Ön plan", + customThemeDefaultName: "Özel Tema", + customThemeCopySuffix: " Kopya", + customThemeApplied: '"{name}" renk şeması uygulandı', + customThemeKeepOne: "En az bir temayı koruyun", + customThemeJsonError: "Geçersiz JSON biçimi, lütfen denetleyin", + jdbcPlugin: "DBX JDBC eklentisi", + jdbcPluginInstall: "JDBC eklentisini kur", + jdbcPluginInstallSuccess: "JDBC eklentisi kuruldu", + jdbcPluginUpdate: "Güncelle", + jdbcPluginUninstall: "Kaldır", + jdbcPluginUninstallSuccess: "JDBC eklentisi kaldırıldı", + jdbcPluginInstalled: "Kurulu: v{version}", + jdbcPluginIncompatible: "Uyumsuz protokol", + jdbcPluginNotInstalled: "Kurulu değil", + jdbcDrivers: "JDBC sürücü JAR'ları", + jdbcImport: "JAR İçe Aktar", + jdbcImportPath: "İçe Aktarma Yolu", + jdbcDriverPathPlaceholder: "/path/to/driver.jar", + jdbcImportSuccess: "{count} sürücü dosyası içe aktarıldı", + jdbcDeleteSuccess: "Sürücü kaldırıldı", + jdbcNoDrivers: "Henüz JDBC sürücüsü içe aktarılmadı.", + mcpTitle: "MCP Sunucusu", + mcpDescription: "Claude Code, Cursor ve diğer agent'ların kullandığı DBX MCP Sunucusu kurulumunu ve sürümünü denetleyin.", + mcpChecking: "Denetleniyor", + mcpStatusUnknown: "Denetlenmedi", + mcpStatusError: "Denetim başarısız", + mcpReady: "Hazır", + mcpNotInstalled: "Kurulu değil", + mcpUpdateAvailable: "Güncelleme mevcut", + mcpCurrent: "Geçerli sürüm", + mcpLatest: "En son sürüm", + mcpVersionMissing: "Genel kurulum algılanmadı", + mcpVersionUnknown: "Bilinmiyor", + mcpAvailable: "Kullanılabilir", + mcpUnavailable: "Kullanılamıyor", + mcpBinPath: "Komut yolu", + mcpInstallCommand: "Kurulum komutu", + mcpUpdateCommand: "Yükseltme komutu", + mcpUninstallCommand: "Kaldırma komutu", + mcpInstallButton: "Kur", + mcpUpdateButton: "Yükselt", + mcpUpToDate: "Güncel", + mcpInstalling: "Kuruluyor...", + mcpInstallSuccess: "Kurulum başarılı", + mcpInstallFailed: "Kurulum başarısız", + mcpUninstallButton: "Kaldır", + mcpUninstalling: "Kaldırılıyor...", + mcpUninstallConfirm: "DBX MCP Sunucusu kaldırılsın mı? Yapılandırılmış MCP istemcileri artık başlatamayacak.", + mcpUninstallFailed: "Kaldırma başarısız: {error}", + mcpConfig: "MCP yapılandırması", + mcpConfigOptionsHint: + "DBX, her MCP istemcisi için bağlantı erişimini ve yürütme yetkilerini merkezî olarak denetler. Üretilen yapılandırmalar yalnızca MCP sunucusunu başlatmak ve bu DBX örneğine bağlanmak için gereken çalışma zamanı ayarlarını içerir; yetki veya bağlantı kapsamı değişkeni içermez.", + mcpScopeConnection: "MCP için izin verilen bağlantılar", + mcpScopeConnectionDescription: "DBX, MCP'ye yalnızca seçili bağlantıları açar. Değişiklikler her MCP istemcisi için geçerlidir.", + mcpScopeMode: "Bağlantı kapsamı modu", + mcpScopeModeAll: "Tüm bağlantılar", + mcpScopeModeAllDescription: "İleride eklenecek bağlantıları da otomatik kapsar", + mcpScopeModeSelected: "Belirli bağlantılar", + mcpScopeModeSelectedDescription: "Yalnızca açıkça eklenen bağlantılar", + mcpScopeAllowedPane: "İzin verilen", + mcpScopeAvailablePane: "Kullanılabilir", + mcpScopeAddAll: "Tümünü ekle", + mcpScopeRemoveAll: "Tümünü kaldır", + mcpScopeAddMatches: "Eşleşenleri ekle ({count})", + mcpScopeRemoveMatches: "Eşleşenleri kaldır ({count})", + mcpScopeAddConnection: "{name} bağlantısına MCP erişimine izin ver", + mcpScopeRemoveConnection: "{name} bağlantısına MCP erişimini kaldır", + mcpScopeAvailableEmpty: "Eklenebilecek bağlantı yok", + mcpScopeAllowedEmpty: "Şu anda izin verilen bağlantı yok", + mcpScopeUnavailableGroup: "Kullanılamayan bağlantılar ({count})", + mcpScopeRemoveUnavailableConnection: "{id} kullanılamayan bağlantısını izin listesinden kaldır", + mcpScopeUpdatedAnnouncement: "MCP şu anda kullanılabilir {total} bağlantıdan {selected} tanesine izin veriyor", + mcpConnectionSearchPlaceholder: "Ad, tür, adres, veritabanı veya bağlantı kimliği ara", + mcpConnectionSearchEmpty: "Eşleşen bağlantı yok", + mcpConnectionListEmpty: "Kullanılabilir bağlantı yok", + mcpScopeAllAction: "Tümüne izin ver", + mcpScopeNoneAction: "Tümünü temizle", + mcpScopeAllSummary: "{count} bağlantının tümü", + mcpScopeSelectedSummary: "{selected}/{total} seçildi", + mcpScopeAllConnections: "Tüm bağlantılar", + mcpScopeNoConnections: "Bağlantı yok", + mcpScopeConnectionUnavailable: "Daha önce seçilen bağlantı (kullanılamıyor)", + mcpScopeConnectionUnavailableDescription: "Seçili {count} bağlantı artık mevcut değil. Kimlikleri izin listesinde kalır, ancak bunlar için hiçbir güncel bağlantı açılmaz.", + mcpScopeSelectedCount: "{count} bağlantı seçildi", + mcpCodexConfig: "Codex yapılandırması", + mcpCodexConfigPath: "Codex, ~/.codex/config.toml ya da proje düzeyinde bir .codex/config.toml kullanabilir.", + mcpDeepSeekHarnessConfigPath: + "dsh web için bu insert girdisini $DSH_HOME/profiles/web/cordis.patch.yml dosyasına ekleyin; farklı bir profil için web yerine onu yazın. Mevcut patch girdilerinin üzerine yazmayın. dsh web --dump-config ile doğrulayın ya da HMR'nin değişikliği yeniden yüklemesini bekleyin.", + mcpCursorConfigPath: "Cursor, projede .cursor/mcp.json ya da genel olarak ~/.cursor/mcp.json kullanabilir.", + mcpCodeBuddyConfigPath: "CodeBuddy Code, genel olarak ~/.codebuddy/.mcp.json ya da projede .mcp.json kullanabilir.", + mcpZCodeConfigPath: "ZCode: Ayarlar > MCP Sunucuları > Yeni MCP Sunucusu > Tam yapılandırma; Kullanıcı ya da Çalışma Alanı kapsamını seçip JSON yapılandırmasını yapıştırın.", + mcpTraeConfigPath: "TRAE: Ayarlar > MCP > Ekle > Elle Ekle, ardından JSON yapılandırmasını yapıştırın.", + mcpCherryStudioConfigPath: "Cherry Studio: Ayarlar > MCP Sunucuları > Sunucu Ekle > JSON İçe Aktar, ardından yapılandırmayı yapıştırın.", + mcpVsCodeConfigPath: "VS Code/Copilot, çalışma alanında .vscode/mcp.json ya da kullanıcı profilinde mcp.json kullanabilir.", + mcpWindsurfConfigPath: "Windsurf, ~/.codeium/windsurf/mcp_config.json kullanabilir.", + mcpOpenCodeConfigPath: "Genel olarak ~/.config/opencode/opencode.json ya da proje düzeyinde opencode.json.", + mcpPiConfigPath: "Önce Pi MCP bağdaştırıcı eklentisini kurun: pi install npm:pi-mcp-adapter. Ardından ~/.pi/agent/mcp.json (genel) ya da .mcp.json (proje) dosyasına kaydedin, doğrulamak için /mcp, Pi'de yüklemek için /reload çalıştırın.", + mcpExecutionMode: "MCP genel varsayılan yetkisi", + mcpExecutionModeDescription: "Bağlantı veya veritabanı yetkisi yapılandırılmadığında kullanılan varsayılanı belirler. Bağlantı varsayılanları ve veritabanı ayarları bunu kapsama göre geçersiz kılabilir.", + mcpExecutionModeReadOnly: "Salt okunur", + mcpExecutionModeSafeWrite: "Veri okuma/yazma", + mcpExecutionModeRecommended: "Önerilen", + mcpExecutionModeHighRiskWrite: "Tam erişim", + mcpExecutionModeReadOnlyDescription: "Yalnızca DBX'in okuma olarak sınıflandırdığı isteklere izin verir; tanınan veritabanı yazmalarını ve bağlantı değişikliklerini engeller. Veritabanı hesabı yetkileri son ve kesin sınır olmaya devam eder.", + mcpExecutionModeSafeWriteDescription: "Normal INSERT, filtrelenmiş UPDATE/DELETE, kapsamı doğrulanabilir MongoDB değişiklikleri ve sıradan Redis yazmaları ya da açık anahtar silmelerine izin verir; tablo genelindeki ve yapısal değişiklikleri engeller.", + mcpExecutionModeHighRiskWriteDescription: "Veri okuma/yazmaya ek olarak tablo genelinde değişikliklere, DDL'e, TRUNCATE'e, veritabanı temizlemeye ve diğer yüksek riskli işlemlere izin verir. Üretim ve bağlantı salt okunur korumaları yine geçerlidir.", + mcpExecutionModeHighRiskConfirm: "Tam erişim; tablo genelinde değişikliklere, DDL'e, TRUNCATE'e, veritabanı temizlemeye ve diğer yüksek riskli işlemlere izin verir. Etkinleştirilsin mi?", + mcpCapabilityTitle: "Yetenek karşılaştırması", + mcpCapabilityDescription: "Bunlar örnek işlemlerdir; DBX'in güvenilir biçimde sınıflandıramadığı istekler tam erişim gerektirir.", + mcpCapabilityOperation: "Yetenek", + mcpCapabilityRead: "Sorgular ve okumalar", + mcpCapabilityScopedMutation: "Kapsamlı veri değişiklikleri (INSERT, filtrelenmiş UPDATE/DELETE, açık anahtarla yazma/silme)", + mcpCapabilityBroadMutation: "Tablo genelinde güncelleme/silme ve veri temizleme", + mcpCapabilitySchemaAdmin: "DDL, yapısal değişiklikler ve yüksek riskli yönetim", + mcpCapabilityConnectionManagement: "MCP bağlantısı ekle/kaldır", + mcpCapabilityAllowed: "İzin verilen", + mcpCapabilityBlocked: "Engellendi", + mcpQueryTimeout: "Sorgu zaman aşımı (saniye)", + mcpQueryTimeoutDescription: "Bağlantının sorgu zaman aşımını devralmak için boş bırakın. 0 = sınır yok. Pozitif bir değer, her MCP sorgusu için bağlantı ayarını geçersiz kılar.", + mcpQueryTimeoutInvalid: "Saniye cinsinden negatif olmayan bir tam sayı girin ya da bağlantı ayarını devralmak için boş bırakın.", + mcpCapabilityAlwaysEnforced: "Her mod; bağlantı izin listesine, bağlantı salt okunur korumasına, üretim korumasına ve veritabanı hesabı yetkilerine tabidir.", + mcpPolicySaveFailed: "MCP erişim politikası kaydedilemedi: {error}", + mcpPolicyLoadFailed: "MCP erişim politikası yüklenemedi: {error}", + mcpDetectionTiming: "DBX bu sayfa açıldığında otomatik denetim yapar; yenilemek için Yeniden denetle'yi kullanın.", + mcpNpmBoundary: "DBX, MCP durumunu denetler; kurulum, yükseltme ve kaldırma işlemleri algılanan npm ya da pnpm çalışma zamanı üzerinden yürür.", + mcpRefresh: "Yeniden denetle", + mcpGuide: "MCP kılavuzu", + mcpAuthTitle: "MCP yetkilendirmesi", + mcpAuthDescription: "Yetkilendirmeyi sırayla tamamlayın: önce bağlantıları seçin, sonra veritabanlarını ve bağlantı istisnalarını sınırlayın, en son kullanılabilir araçları ve genel yürütme düzeyini belirleyin.", + mcpAuthStepsLabel: "MCP yetkilendirme adımları", + mcpAuthStepConnectionsTitle: "Bağlantı kapsamı", + mcpAuthStepConnectionsDescription: "MCP'nin hangi bağlantıları görebileceğini belirler", + mcpAuthStepDatabasesTitle: "Veritabanı kapsamı", + mcpAuthStepDatabasesDescription: "Her bağlantının erişebileceği veritabanlarını sınırlayın", + mcpAuthStepOverridesTitle: "Bağlantı varsayılanları", + mcpAuthStepOverridesDescription: "Her bağlantı için varsayılan yürütme yetkisini belirleyin", + mcpAuthStepCapabilitiesTitle: "Yetenekler ve yürütme", + mcpAuthStepCapabilitiesDescription: "MCP araçlarını ve genel varsayılan işlem düzeyini seçin", + mcpAuthStepRegionLabel: "Adım {step}: {title}", + mcpAuthPreviousStep: "Geri", + mcpAuthNextStep: "İleri", + mcpAuthStepProgress: "{total} adımdan {current}. adım", + mcpPerPage: "Sayfa başına", + mcpPreviousPage: "Önceki sayfa", + mcpNextPage: "Sonraki sayfa", + mcpDatabaseScopeTitle: "Bağlantılar ve veritabanı kapsamı", + mcpDatabaseScopeDescription: "Soldan MCP'ye açılan bir bağlantı seçin, ardından o bağlantının erişebileceği veritabanlarını sınırlayın. Veritabanı adları tam olarak eşleştirilir.", + mcpDatabaseScopeEmptyHint: "Önce 'Bağlantı kapsamı' bölümünde en az bir bağlantıya izin verin.", + mcpDatabaseScopeAllowedConnections: "İzin verilen bağlantılar", + mcpDatabaseScopeSummaryAll: "Tüm veritabanları", + mcpDatabaseScopeSummaryNone: "Veritabanı erişimi yok", + mcpDatabaseScopeSummarySelected: "{count} seçildi", + mcpDatabaseScopePermissionNote: "Seçili kapsam, bağlantının DBX'teki mevcut veritabanı yetkilerini değiştirmez.", + mcpDatabaseLoadButton: "Bağlantıdan yükle", + mcpDatabaseScopeAriaLabel: "Veritabanı erişim kapsamı", + mcpDatabaseScopeAllTitle: "Tüm veritabanları", + mcpDatabaseScopeAllDescription: "Geçerli erişim kapsamını koru", + mcpDatabaseScopeSelectedTitle: "Yalnızca seçili veritabanları", + mcpDatabaseScopeSelectedDescription: "Yalnızca işaretli öğeleri aç", + mcpDatabaseScopeNoneTitle: "Erişim yok", + mcpDatabaseScopeNoneDescription: "Kuralları koru ama her veritabanını reddet", + mcpDatabaseScopeSelectedSummary: "{count} veritabanına izin verildi. İşaretlenmemiş veritabanları ve veritabanları arası istekler MCP sunucusu tarafından reddedilir.", + mcpDatabasePolicyInherit: "Bağlantıdan devral", + mcpDatabasePolicySetting: "Veritabanı önceliği ayarı", + mcpDatabasePolicyEffective: "Geçerli: {mode}", + mcpPermissionPreviewTitle: "Yetki önizlemesi", + mcpPermissionPreviewDescription: "Yetkiler kapsama göre geri dönüş yapar: önce veritabanı ayarı, sonra bağlantı varsayılanı, sonra genel varsayılan.", + mcpPermissionPreviewConnection: "Bağlantı", + mcpPermissionPreviewDatabase: "Veritabanı", + mcpPermissionPreviewConnectionDefault: "Bağlantı varsayılanı", + mcpPermissionPreviewDatabaseOverride: "Veritabanı önceliği ayarı", + mcpPermissionPreviewEffective: "Geçerli", + mcpPermissionPreviewEmpty: "Önce en az bir bağlantıya izin verin ve veritabanı kapsamını yapılandırın.", + mcpPermissionPreviewSearchPlaceholder: "Bağlantı veya veritabanı ara", + mcpPermissionPreviewSearchNoResults: "Eşleşen bağlantı ya da veritabanı bulunamadı.", + mcpDatabaseSearchPlaceholder: "Yüklenen veritabanlarını filtrele", + mcpDatabaseManualPlaceholder: "Elle bir veritabanı adı ekle", + mcpDatabaseLoadFailed: "Veritabanları yüklenemedi: {error}. Veritabanı adlarını tam olarak elle ekleyebilirsiniz.", + mcpDatabaseEmptyHint: "Veritabanı listesini almak için 'Bağlantıdan yükle'ye tıklayın ya da izin verilen veritabanlarını elle ekleyin.", + mcpTransportLocalStdio: "Yerel stdio", + mcpTransportHttpService: "HTTP servisi", + mcpHttpWebServiceTitle: "Web Streamable HTTP servisi", + mcpHttpWebServiceDescription: "Web/Docker, geçerli web dinleme portunu yeniden kullanır. Dağıtım ortam değişkenleriyle etkinleştirin; ayarlar sayfası belirteci hiçbir zaman saklamaz.", + mcpHttpStatusLabelEnabled: "Etkin", + mcpHttpStatusLabelDisabled: "Etkin değil", + mcpHttpNotConfigured: "Yapılandırılmadı", + mcpHttpWebTokenSourceAndHosts: "Belirteç kaynağı: {tokenSource}; izin verilen sunucular: {hosts}", + mcpHttpWebAllowedOrigins: "İzin verilen kaynaklar: {origins}", + mcpHttpReloadStatus: "Durumu yeniden yükle", + mcpHttpServiceTitle: "Streamable HTTP servisi", + mcpHttpStatusLabelRunning: "Çalışıyor", + mcpHttpStatusLabelPending: "Yapılandırma bekliyor", + mcpHttpServiceDescription: "Varsayılan olarak kapalı. Etkinleştirildiğinde servisi DBX Masaüstü barındırır; yukarıdaki yapılandırma yalnızca kaydedildikten sonra çalışan servise uygulanır.", + mcpHttpListenerTitle: "Dinleyici yapılandırması", + mcpHttpListenerHintPrefix: "Şunu korumanızı öneririz: ", + mcpHttpListenerHintSuffix: " — böylece yalnızca aynı bilgisayardaki MCP istemcileri bağlanabilir.", + mcpHttpHostLabel: "Dinleme adresi", + mcpHttpPortLabel: "Port", + mcpHttpPathLabel: "MCP yolu", + mcpHttpRemoteTitle: "Uzaktan erişim", + mcpHttpRemoteHintPrefix: "Yalnızca dinleme adresi şu değilse gereklidir: ", + mcpHttpRemoteHintMiddle: " veya ", + mcpHttpRemoteHintSuffix: ". Etkinleştirildiğinde Host ve Origin izin listeleri zorunludur.", + mcpHttpAllowedHostsLabel: "İzin verilen sunucular", + mcpHttpHostsHint: "Her satıra bir tane ya da virgülle ayırın.", + mcpHttpAllowedOriginsLabel: "İzin verilen kaynaklar", + mcpHttpOriginsHintPrefix: "Protokolü içermelidir, örneğin ", + mcpHttpOriginsHintSuffix: ".", + mcpHttpRemoteDisabledHint: "Uzaktan erişim kapalıyken izin listelerine gerek yoktur.", + mcpHttpUnsavedChangesHint: "Yukarıdaki yapılandırma henüz kaydedilmedi; çalışan servis hemen değişmeyecek.", + mcpHttpSaveHint: "Kaydetmek servisi başlatır veya yeniden başlatır ve aşağıdaki bağlantı ayrıntılarını günceller.", + mcpHttpReload: "Yeniden yükle", + mcpHttpSaveAndStart: "Kaydet ve servisi başlat", + mcpHttpDisabledHint: "Dinleme adresini, uzaktan erişim izin listelerini ve istemci bağlantı ayrıntılarını yapılandırmak için servisi etkinleştirin.", + mcpHttpSaveAndStop: "Kaydet ve servisi durdur", + mcpHttpConnectionInfoTitle: "Etkin istemci bağlantı ayrıntıları", + mcpHttpServiceNotRunning: "Servis çalışmıyor", + mcpHttpRunningConfigBadge: "Çalışan yapılandırma", + mcpHttpLastStatusBadge: "Son durum", + mcpHttpRunningDraftDiffersHint: "Aşağıda şu anda çalışan servisin bağlantı ayrıntıları var; yukarıdaki kaydedilmemiş taslaktan farklı olabilir.", + mcpHttpEndpointLabel: "Servis adresi", + mcpHttpRotateToken: "Belirteci değiştir", + mcpHttpRotateTokenConfirm: "Belirteç değiştirildikten sonra eski belirteci kullanan MCP istemcilerinin bağlantısı hemen kesilir. Devam edilsin mi?", + mcpHttpTokenHintPrefix: "Bu değeri istemcide HTTP ", + mcpHttpTokenHintSuffix: " kimlik bilgisi olarak kullanın.", + mcpHttpClientConfigTitle: "Genel HTTP istemcisi yapılandırması", + mcpHttpClientConfigHint: "İstemci alan adları farklılık gösterir; URL ve Authorization değerlerini koruyun.", + mcpHttpLogsTitle: "Servis tanılama günlükleri", + mcpHttpValidationHostRequired: "Bir dinleme adresi girin.", + mcpHttpValidationPortRange: "Port 1 ile 65535 arasında bir tam sayı olmalıdır.", + mcpHttpValidationPathPrefix: "MCP yolu / ile başlamalıdır.", + mcpHttpValidationRemoteRequired: "Loopback olmayan bir adreste dinlemek için 'Uzaktan erişim'i etkinleştirin.", + mcpHttpValidationHostsRequired: "Uzaktan erişim en az bir izin verilen sunucu gerektirir.", + mcpHttpValidationOriginsRequired: "Uzaktan erişim en az bir izin verilen kaynak gerektirir.", + mcpHttpErrorRemoteHostsAndOrigins: "Uzaktan erişim hem izin verilen sunucuları hem de izin verilen kaynakları gerektirir.", + mcpHttpErrorRemoteBinding: "Uzaktan dinleme; uzaktan erişimin yanı sıra Host ve Origin izin listelerini gerektirir.", + mcpHttpErrorPortInUse: "Port başka bir uygulama tarafından kullanılıyor. DBX kaydederken kendi MCP servisini yeniden başlatır; portu kullanan diğer uygulamayı kapatın ya da başka bir port seçin.", + mcpConnectionPolicyTitle: "Bağlantı varsayılan yetkisi", + mcpConnectionPolicyDescription: "Açılan her bağlantıdaki her veritabanı için varsayılanı belirler; veritabanı ayarları bağlantı ve genel varsayılanlardan önceliklidir.", + mcpConnectionPolicyEmptyHint: "Bağlantı varsayılan yetkilerini belirlemeden önce 1. adımda en az bir bağlantıya izin verin.", + mcpConnectionPolicyInherit: "Genelden devral", + mcpConnectionPolicyReadOnly: "Salt okunur", + mcpConnectionPolicySafeWrite: "Güvenli yazmalara izin ver", + mcpConnectionPolicyHighRiskWrite: "Yüksek riskli işlemlere izin ver", + mcpToolPermissionsTitle: "MCP araç yetkileri", + mcpToolPermissionsDescription: "Yalnızca ihtiyacınız olan MCP araçlarını açın. Seçim kaldırıldığında, araç tanımlarını önbelleğe almış olsalar bile istemciler sunucu tarafından reddedilir.", + mcpToolListConnections: "Bağlantıları listele", + mcpToolListDatabases: "Veritabanlarını listele", + mcpToolListTables: "Tabloları listele", + mcpToolDescribeTable: "Tabloyu tanımla", + mcpToolListRoutines: "Yordamları listele", + mcpToolGetRoutineSource: "Yordam kaynağı", + mcpToolGetSchemaContext: "Şema bağlamı", + mcpToolExecuteQuery: "SQL / Mongo komutlarını çalıştır", + mcpToolOpenSession: "Sorgu oturumu aç", + mcpToolCloseSession: "Sorgu oturumunu kapat", + mcpToolExecuteRedisCommand: "Redis komutunu çalıştır", + mcpToolSendMessage: "Mesaj kuyruğu mesajı gönder", + mcpToolAddConnection: "Bağlantı ekle", + mcpToolDuplicateConnection: "Bağlantıyı çoğalt", + mcpToolRemoveConnection: "Bağlantıyı kaldır", + mcpToolOpenTable: "Tabloyu DBX'te aç", + mcpToolExecuteAndShow: "Çalıştır ve DBX'te göster", + supportInfoTitle: "Destek bilgileri", + supportInfoDescription: "Sorun bildirirken ya da yardım isterken bu ortam ayrıntılarını kopyalayın.", + supportInfoCopy: "Destek bilgilerini kopyala", + supportInfoCopied: "Kopyalandı", + supportInfoLoading: "Destek bilgileri yükleniyor...", + supportInfoLoadFailed: "Destek bilgilerinin tamamı yüklenemedi: {message}", + supportInfoAppVersion: "DBX Sürümü", + supportInfoRuntime: "Çalışma zamanı", + supportInfoRuntimeDesktop: "Masaüstü", + supportInfoRuntimeWeb: "Web", + supportInfoOperatingSystem: "İşletim Sistemi", + supportInfoArchitecture: "Mimari", + supportInfoUnknown: "Bilinmiyor", + community: "Community", + qqGroup: "QQ Grubu", + wechatGroup: "WeChat Grubu", + wechatGroupInvite: "Tencent Docs daveti", + project: "Proje", + openSource: "Açık kaynak deposu", + officialDocs: "Resmî belgeler", + changelogTitle: "Değişiklik günlüğü", + changelogDescription: "Her sürümdeki yeniliklere göz atın.", + changelogLoading: "Değişiklik günlüğü yükleniyor...", + changelogLoadFailed: "Değişiklik günlüğü yüklenemedi.", + changelogEmpty: "Henüz değişiklik günlüğü girdisi yok.", + changelogPublishedOn: "{date} tarihinde yayımlandı", + changelogNew: "YENİ", + changelogLoadMore: "Daha fazla yükle", + changelogOpenWebsite: "Web sitesinde görüntüle", + changelogOpenGitHub: "GitHub Sürümü", + changelogNoDetails: "Ayrıntılar için GitHub Sürümü'ne bakın.", + changelogRetry: "Yeniden dene", + changelogSectionAdded: "Yeni Özellikler", + changelogSectionImproved: "İyileştirmeler", + changelogSectionFixed: "Hata Düzeltmeleri", + changelogSectionChanged: "Değişiklikler", + changelogSectionRemoved: "Kaldırıldı", + shortcutUppercaseSelection: "Seçimi büyük harfe dönüştür", + shortcutLowercaseSelection: "Seçimi küçük harfe dönüştür", + shortcutExPasteSqlInCondition: "ExPaste: IN koşulu olarak yapıştır", + }, + driverStore: { + jreDirRemoveFailed: "Eski JRE dizini kaldırılamadı: {path} (özgün hata: {error})", + jreDirRemoveFailedWindows: "Eski JRE dizini kaldırılamadı: {path}\nOlası nedenler:\n - bir dbx Agent / java işlemi dizini hâlâ tutuyor\n - antivirüs yazılımı dizini tarıyor\nDizini tutabilecek işlemleri kapatın ya da dbx'i yeniden başlatıp tekrar deneyin.\n(özgün hata: {error})", + jreInUseByDrivers: "JRE {jre} şu sürücüler tarafından kullanılıyor: {drivers}. Önce onları kaldırın.", + offlinePackageRegistryMissing: "ZIP içinde agent-registry.json bulunamadı; geçerli bir çevrimdışı sürücü paketi değil.", + progressJreExtract: "JRE çıkarılıyor...", + progressDownloadJre: "JRE indiriliyor", + progressDownloadDriver: "Sürücü indiriliyor", + progressDownloadJdbcPlugin: "JDBC eklentisi indiriliyor", + progressJdbcPluginExtract: "JDBC eklentisi kuruluyor...", + usageTitle: "Depolama kullanımı", + usageTotal: "Toplam {size}", + usageTotalLabel: "Toplam", + calculating: "Hesaplanıyor...", + usageManagedJre: "Yönetilen JRE", + usageAgentDrivers: "Yerleşik sürücü agent'ları", + usageDownloadCache: "İndirme önbelleği", + usageJdbcPlugin: "JDBC eklentisi", + usageJdbcDriverJars: "JDBC sürücü JAR'ları", + clearDownloadCache: "Önbelleği temizle", + downloadCacheClearSuccess: "İndirme önbelleği temizlendi", + downloadCacheClearFailed: "İndirme önbelleği temizlenemedi: {error}", + driverCategoryAll: "Tüm Sürücüler", + driverCategoryLabel: "Kategori", + offlineDownloadHint: "İnternet erişimi olmayan ortamlar için çevrimdışı sürücü paketlerini internet bağlantısı olan bir makinede indirip buraya aktarın.", + offlineDownloadLink: "Çevrimdışı sürücü indirmeleri", + searchDrivers: "Sürücü adı, türü, sürümü ara...", + searchJdbcDrivers: "JDBC sürücü adı veya yolu ara...", + jdbcMavenCoordinatePlaceholder: "Maven koordinatı, örn. org.postgresql:postgresql:42.7.7", + jdbcMavenInstall: "Maven'dan kur", + jdbcMavenInstallSuccess: "JDBC Maven sürücüsü kuruldu", + jdbcSourceMaven: "Maven", + jdbcSourceManual: "Elle", + noMatchingDrivers: "Eşleşen sürücü yok.", + javaRuntimeSaved: "Java çalışma zamanı ayarları kaydedildi", + javaRuntimeSaveFailed: "Java çalışma zamanı ayarları kaydedilemedi: {error}", + chooseJavaExecutable: "Java çalıştırılabilirini seçin", + driverInstallSuccess: "{label} sürücüsü kuruldu", + driverInstallFailed: "{label} sürücüsü kurulamadı: {error}", + driverInstallCancelled: "{label} sürücü kurulumu iptal edildi", + driverUpdateBlocked: "Sürücüleri güncellemeden önce şu veritabanı bağlantılarını kapatın: {labels}", + upgradeAllSuccess: "{count} sürücü yükseltildi", + upgradeAllPartial: "{count} sürücü yükseltildi. Atlananlar: {failed}", + upgradeAllFailed: "Toplu yükseltme başarısız: {error}", + upgradeAllCancelled: "Yükseltme iptal edildi ({count} sürücü durduruldu)", + cancelInstall: "Kurulumu iptal et", + cancelUpgradeAll: "Toplu yükseltmeyi iptal et", + driverUninstallSuccess: "{label} sürücüsü kaldırıldı", + driverUninstallFailed: "{label} sürücüsü kaldırılamadı: {error}", + chooseOfflineDriverPackage: "Çevrimdışı sürücü paketini seçin", + offlineImportSuccess: "Çevrimdışı içe aktarma tamamlandı. {count} sürücü kuruldu.", + offlineImportFailed: "Çevrimdışı içe aktarma başarısız: {error}", + driverImportSuccess: "{label} sürücüsü içe aktarıldı", + driverImportFailed: "{label} sürücüsü içe aktarılamadı: {error}", + chooseDriverJar: "Sürücü dosyasını seçin", + jreReinstallSuccess: "JRE {jre} yeniden kuruldu", + jreReinstallFailed: "JRE {jre} yeniden kurulamadı: {error}", + jreUninstallSuccess: "JRE {jre} kaldırıldı", + chooseJdbcPluginZip: "JDBC eklentisi zip dosyasını seçin", + agentDrivers: "Yerleşik Sürücüler", + jdbcDrivers: "JDBC Sürücüleri", + importing: "İçe aktarılıyor...", + importOfflinePackage: "Çevrimdışı paketi içe aktar", + offlineExport: "Çevrimdışı paketi dışa aktar", + offlineExportTitle: "Çevrimdışı Agent paketini dışa aktar", + offlineExportDescription: "Dâhil edilecek DBX tarafından yönetilen Agent sürücülerini seçin. Paket yalnızca geçerli platformla uyumludur.", + offlineExportPlatform: "Platform", + offlineExportSelectedCount: "{total} içinden {selected} seçildi", + offlineExportSelectAll: "Tümünü seç", + offlineExportClear: "Temizle", + offlineExportNoDrivers: "Uygun, DBX tarafından yönetilen Agent sürücüsü kurulu değil.", + offlineExportArtifactJar: "Java JAR", + offlineExportArtifactNative: "Yerel (Native)", + offlineExportArtifactUnknown: "Bilinmiyor", + offlineExportPreparing: "Dışa aktarma önizlemesi hazırlanıyor...", + offlineExportJreSummary: "{count} yönetilen JRE otomatik olarak dâhil edilecek.", + offlineExportSecurityHint: "Yalnızca DBX tarafından yönetilen dosyalar ve gerekli yönetilen JRE'ler dâhil edilir. Yerel yollar, ayarlar ve dış sürücüler hariç tutulur.", + offlineExportStart: "{count} sürücüyü dışa aktar", + offlineExporting: "Dışa aktarılıyor...", + offlineExportPreviewFailed: "Dışa aktarma hazırlanamadı: {error}", + offlineExportChooseDestination: "Çevrimdışı Agent paketini kaydet", + offlineExportSuccess: "{file} dışa aktarıldı: {drivers} sürücü, {jres} JRE, {size}.", + offlineExportFailed: "Çevrimdışı paket dışa aktarma başarısız: {error}", + offlineExportUnavailable_unmanagedInstall: "Bu dosya, DBX tarafından yönetilen bir kurulum olarak izlenmiyor.", + offlineExportUnavailable_localInstall: "Yerel olarak içe aktarılmış Agent yapıları dâhil edilmez.", + offlineExportUnavailable_launchConfig: "Özel başlatma yapılandırmaları makineye özgüdür.", + offlineExportUnavailable_missingArtifact: "Kurulu Agent dosyası eksik.", + offlineExportUnavailable_invalidArtifact: "Kurulu Agent dosyası geçersiz veya bozuk.", + offlineExportUnavailable_unsafeSource: "Dosya yönetilen deponun dışında ya da sembolik bağ kullanıyor.", + offlineExportUnavailable_externalDriverRequired: "Bu Agent, kullanıcı tarafından sağlanan bir dış sürücü gerektiriyor.", + offlineExportUnavailable_missingManagedJre: "Gerekli, DBX tarafından yönetilen JRE kurulu değil.", + offlineExportUnavailable_invalidManagedJre: "Gerekli, DBX tarafından yönetilen JRE geçersiz veya güvenli değil.", + refresh: "Yenile", + javaRuntime: "Java Çalışma Zamanı", + javaRuntimeManaged: "DBX tarafından yönetilen JRE", + javaRuntimeSystem: "Sistem java'sı", + javaRuntimeCustom: "Özel yol", + saving: "Kaydediliyor...", + customJavaPathPlaceholder: "/path/to/java veya /path/to/jdk", + choose: "Seç", + systemJavaHint: "Geçerli PATH üzerindeki java'yı kullan.", + jreRuntimeTitle: "JRE {jre} Çalışma Zamanı", + notInstalled: "Kurulu değil", + reinstalling: "Yeniden kuruluyor", + installing: "Kuruluyor", + install: "Kur", + reinstall: "Yeniden kur", + uninstall: "Kaldır", + jreRuntime: "JRE Çalışma Zamanı", + jreRuntimeAutoDownloadHint: "Bir sürücü ilk kez kurulurken otomatik olarak indirilir", + driversUpdatable: "{count} sürücü güncellenebilir", + updatesAvailableTitle: "Güncellemeler Mevcut", + updatesAvailableDescription: "Aşağıdaki sürücüler için yeni sürümler var. En son özellikler ve düzeltmeler için güncelleyin.", + allDriversTitle: "Tüm Sürücüler", + upgradingProgress: "Yükseltiliyor ({current}/{total})", + upgradeAll: "Tümünü yükselt", + queued: "Kuyruğa alındı", + importLocalJar: "Yerel sürücü dosyasını içe aktar", + updating: "Güncelleniyor", + update: "Güncelle", + localInstall: "Yerel kurulum", + localInstallHint: "İnternet erişimi olmayan makineler için: internet erişimi olan başka bir bilgisayarda DBX GitHub Releases sayfasından resmî dbx-jdbc-plugin-*.zip dosyasını indirin, buraya taşıyın ve seçin — bu makinede ağ erişimi gerekmez.", + runtimeDrivers: "Çalışma zamanı", + storageTab: "Depolama", + runtimeTitle: "Sürücü çalışma zamanı", + runtimeHint: "Çalışma zamanı metrikleri yalnızca bu panel açıkken toplanır.", + runtimeRunning: "Çalışıyor", + runtimeMemory: "Bellek", + runtimeHealth: "Sağlık", + runtimeHealth_healthy: "Sağlıklı", + runtimeHealth_warning: "Uyarı", + runtimeHealth_error: "Hata", + runtimeLastError: "Son hata", + runtimeEmpty: "Henüz sürücü çalışma zamanı yok. Bir tane başlatmak için agent tabanlı bir bağlantı açın.", + runtimeKindAgent: "Agent", + runtimeKindPlugin: "Eklenti", + runtimeSourceDaemon: "Daemon", + runtimeSourceConnection: "Bağlantı", + runtimeStatus_running: "Çalışıyor", + runtimeStatus_stopped: "Durduruldu", + runtimeStatus_error: "Hata", + runtimeStatus_unknown: "Bilinmiyor", + runtimePid: "PID", + runtimeUptime: "Çalışma süresi", + runtimeActions: "İşlemler", + runtimeStop: "Durdur", + runtimeRestart: "Yeniden başlat", + runtimeControlConnectionOwned: "Bu çalışma zamanını durdurmak için veritabanı bağlantısını kapatın.", + runtimeStopSuccess: "{label} çalışma zamanı durduruldu", + runtimeStopFailed: "{label} durdurulamadı: {error}", + runtimeRestartSuccess: "{label} çalışma zamanı yeniden başlatıldı", + runtimeRestartFailed: "{label} yeniden başlatılamadı: {error}", + driverStoreDir: "Sürücü Deposu Yolu", + driverStoreDirDescription: "JDBC eklentisi ile Agent/JRE verileri için ayrı depolama konumları belirleyin. Taşımadan sonra uygulama otomatik olarak yeniden başlar.", + pluginStoreDir: "JDBC eklenti dizini", + pluginStoreDirDescription: "JDBC eklentisini, Maven çözücüyü ve JDBC sürücü jar'larını saklar.", + agentStoreDir: "Agent / JRE dizini", + agentStoreDirDescription: "Agent sürücü paketlerini, yönetilen JRE'leri ve çalışma zamanı önbelleğini saklar.", + driverStoreDirDefault: "Varsayılan (kurulum dizini)", + driverStoreDirChange: "Değiştir", + driverStoreDirReset: "Varsayılana Sıfırla", + driverStoreDirMigrating: "{target} taşınıyor…", + driverStoreDirConfirm: "{target} değiştirildiğinde ilgili sürücü verileri yeni konuma taşınacak. Taşıma sırasında ilgili sürücü bağlantılarının bağlantısı kesilebilir. Taşımadan sonra uygulama otomatik olarak yeniden başlar. Devam edilsin mi?", + driverStoreDirMigrationFailed: "Sürücü deposu taşıması başarısız: {error}", + driverStoreDirDialogTitle: "{target} seçin", + driverStoreDirSuccess: "{target} değiştirildi, yeniden başlatılıyor…", + }, + databaseExport: { + title: "Veritabanını Dışa Aktar", + options: "Seçenekler", + includeStructure: "Tablo yapısı (DDL)", + includeCreateDatabase: "Veritabanı kurulumunu dâhil et (CREATE DATABASE / USE)", + dropTableIfExists: "DDL'den önce DROP TABLE IF EXISTS ekle", + omitAutoIncrement: "AUTO_INCREMENT'i atla (sıfırdan kurulum betikleri için)", + includeData: "Tablo verisi (INSERT)", + includeObjects: "Görünümler / Yordamlar / İşlevler / Diziler", + databaseSelection: "Veritabanları", + selectedDatabases: "{selected}/{total} seçildi", + selectAllDatabases: "Tümünü seç", + filterDatabases: "Veritabanlarında ara...", + clearDatabases: "Temizle", + tableSelection: "Tablolar", + selectedTables: "{selected}/{total} seçildi", + selectAllTables: "Tümünü seç", + filterTables: "Tablolarda ara...", + clearTables: "Temizle", + loadingTables: "Tablolar yükleniyor...", + tableLoadError: "Tablolar yüklenemedi: {error}", + noTables: "Tablo bulunamadı", + export: "Dışa Aktar", + exportAllDatabases: "Tüm Veritabanlarını Dışa Aktar", + exporting: "Dışa aktarılıyor...", + preparing: "Dışa aktarma hazırlanıyor (tablolar ve meta veri okunuyor)...", + preparingObject: "Hazırlanıyor: {object}", + selectExportDirectory: "Dışa aktarma dizinini seçin", + currentDatabase: "Veritabanı {current}/{total}", + currentTable: "Geçerli: {table} ({current}/{total})", + rowsExported: "{current}/{total} nesne işlendi, {count} satır dışa aktarıldı", + allRowsExported: "Dışa aktarılan toplam satır: {count}", + exportSuccess: "Veritabanı başarıyla dışa aktarıldı", + exportAllSuccess: "{count} veritabanı başarıyla dışa aktarıldı", + allDatabasesTask: "Tüm veritabanları ({count})", + exportError: "Dışa aktarma başarısız: {error}", + exportCancelled: "Dışa aktarma iptal edildi", + runInBackground: "Arka planda çalıştır", + }, + databaseBackup: { + title: "Veritabanı Yedekleri", + schedules: "Yedekleme zamanlamaları", + runtimeRequirement: "Zamanlanmış yedeklemeler, DBX açıkken (tepsiye küçültülmüş olsa bile) çalışır.", + addSchedule: "Zamanlama ekle", + oneShotBackup: "Şimdi yedekle", + oneShotDescription: "Tek seferlik bir veritabanı yedeklemesi çalıştırın. Tamamlandığında yedekleme geçmişinde görünecek.", + startBackup: "Yedeklemeyi başlat", + noSupportedConnections: "Yedekleme zamanlaması eklemeden önce bir MySQL veya PostgreSQL bağlantısı oluşturun.", + editSchedule: "Zamanlamayı düzenle", + defaultScheduleName: "Veritabanı yedeği", + oneShotName: "Tek seferlik yedekleme", + noSchedules: "Yedekleme zamanlaması yok", + noSchedulesHint: "Yinelenen bir yedekleme zamanlaması oluşturun ya da şimdi tek seferlik bir yedekleme çalıştırın.", + scheduleName: "Zamanlama adı", + connection: "Bağlantı", + missingConnection: "Bağlantı eksik", + destination: "Hedef dizin", + selectDestination: "Yedekleme dizinini seçin", + compression: "Sıkıştırma", + compressionNone: "Sıkıştırma yok (.sql)", + compressionGzip: "Gzip (.sql.gz)", + searchConnections: "Bağlantılarda ara…", + noMatchingConnections: "Eşleşen bağlantı yok", + searchDatabases: "Veritabanlarında ara…", + noMatchingDatabases: "Eşleşen veritabanı yok", + databases: "Veritabanları", + allDatabases: "Tüm veritabanları", + databaseCount: "{count} veritabanı", + tableScope: "Tablo kapsamı", + allTables: "Tüm tablolar ve görünümler", + includeTables: "Yalnızca eşleşenleri dâhil et", + excludeTables: "Eşleşenleri hariç tut", + tablePatterns: "Tablo adı kuralları", + tablePatternsPlaceholder: "orders, audit_*, public.users", + tablePatternsHint: "Kuralları virgülle ayırın. * ve ? joker karakterleri ile schema.table biçimi desteklenir.", + includedTablePatterns: "{count} dâhil etme kuralı", + excludedTablePatterns: "{count} hariç tutma kuralı", + frequency: "Sıklık", + frequencyHourly: "Birkaç saatte bir", + frequencyDaily: "Günlük", + frequencyWeekly: "Haftalık", + intervalHours: "Aralık (saat)", + time: "Süre", + weekday: "Haftanın günü", + retention: "Saklanacak son çalıştırma", + contents: "Yedekleme içeriği", + enabled: "Zamanlama etkin", + enabledHint: "Sonraki çalıştırma yerel saat diliminize göre hesaplanır.", + nextRun: "Sonraki: {time}", + nextRunPreview: "Sonraki çalıştırma: {time}", + keepRuns: "{count} tanesini sakla", + everyHours: "Her {count} saatte bir", + dailyAt: "Her gün {time}", + weeklyAt: "{weekday} günü {time}", + never: "Asla", + enable: "Zamanlamayı etkinleştir", + disable: "Zamanlamayı devre dışı bırak", + runNow: "Şimdi yedekle", + cancel: "Yedeklemeyi iptal et", + cancelling: "İptal ediliyor…", + cancelRequested: "İptal istendi. Geçerli işlem durduruluyor.", + edit: "Düzenle", + delete: "Sil", + scheduleCreated: "Yedekleme zamanlaması oluşturuldu", + scheduleUpdated: "Yedekleme zamanlaması güncellendi", + deleteSchedule: "Zamanlamayı sil", + deleteScheduleConfirm: '"{name}" zamanlaması silinsin mi? Mevcut yedekleme dosyaları geçmişte kalır.', + cannotDeleteRunningSchedule: "Çalışan bir yedekleme zamanlaması silinemez", + history: "Yedekleme geçmişi", + noHistory: "Henüz yedek yok", + allConnections: "Tüm bağlantılar", + searchHistoryConnections: "Bağlantılarda ara…", + backupMethod: "Yedekleme yöntemi", + allBackupMethods: "Tüm yöntemler", + backupStatus: "Yedekleme durumu", + allStatuses: "Tüm durumlar", + noFilteredHistory: "Eşleşen yedekleme kaydı yok", + showFiles: "Yedekleme dosyalarını göster", + scheduledTrigger: "Zamanlanmış", + manualTrigger: "Elle", + oneShotTrigger: "Tek seferlik", + fileCount: "{count} dosya", + progress: "Yedekleme ilerlemesi", + renameBackup: "Yedeği yeniden adlandır", + backupName: "Yedek adı", + backupRenamed: "Yedek yeniden adlandırıldı", + revealFile: "Dosya yöneticisinde göster", + restore: "Geri yükle", + deleteBackup: "Yedeği sil", + deleteBackupConfirm: "Bu yedek ve {count} SQL dosyası silinsin mi? Bu işlem geri alınamaz.", + backupDeleted: "Yedek silindi", + runSuccess: "Yedekleme {count} dosyayla tamamlandı", + runCancelled: "Yedekleme iptal edildi", + runFailed: "Yedekleme başarısız: {error}", + unknownError: "Bilinmeyen hata", + status: { + running: "Çalışıyor", + success: "Tamamlandı", + failed: "Başarısız", + cancelled: "İptal edildi", + }, + weekdays: { + sunday: "Pazar", + monday: "Pazartesi", + tuesday: "Salı", + wednesday: "Çarşamba", + thursday: "Perşembe", + friday: "Cuma", + saturday: "Cumartesi", + }, + }, + mqTopics: { + title: "Konular", + searchPlaceholder: "Konularda ara", + includeNonPersistent: "Kalıcı olmayan konuları dâhil et", + refresh: "Yenile", + refreshing: "Yenileniyor...", + createTopic: "Konu Oluştur", + selectTenantNamespace: "Önce bir kiracı ve ad alanı seçin", + loading: "Yükleniyor...", + noTopics: "Bu ad alanında konu yok", + noMatches: "Eşleşen konu yok", + name: "Ad", + type: "Tür", + partitions: "Bölümler", + actions: "İşlemler", + nonPersistent: "Kalıcı değil", + partitionedTopic: "Bölümlenmiş konu", + normalTopic: "Normal konu", + systemTopic: "Sistem konusu", + includeSystemTopics: "Sistem konularını dâhil et", + noUserTopics: "Kullanıcı konusu yok. Dâhili, yeniden deneme veya DLQ konularını incelemek için tür filtrelerini etkinleştirin.", + typeFilter: "Tür filtreleri", + messageType: "Mesaj türü", + messageTypeHint: "RocketMQ message.type değerini broker konu yapılandırmasında kalıcı kılar; RocketMQ Dashboard ile uyumludur.", + rocketmqType: { + normal: "Normal", + delay: "Gecikmeli", + fifo: "Sıralı", + transaction: "İşlem", + unspecified: "Belirtilmemiş", + retry: "Yeniden dene", + dlq: "Ölü mektup", + system: "Sistem", + }, + partitionCount: "{count} bölüm", + partitionsUnknown: "Bilinmeyen bölümler", + adjustPartitions: "Bölümleri ayarla", + delete: "Sil", + tenantNamespace: "Kiracı / Ad alanı", + topicName: "Konu adı", + topicNamePlaceholder: "örn. my-topic", + persistentRecommended: "Kalıcı konu (önerilir)", + persistentHint: "Kalıcı konular mesajları diskte saklar; kalıcı olmayan konular yalnızca bellekte tutar.", + enablePartitions: "Bölümleri etkinleştir", + partitionQuantity: "Bölüm sayısı", + partitionHint: "Bölümler eşzamanlılığı artırabilir ancak kaynak kullanımını yükseltir.", + cancel: "İptal", + create: "Oluştur", + updatePartitionsTitle: "Bölümleri ayarla: {name}", + currentPartitions: "Geçerli bölümler", + newPartitions: "Yeni bölümler", + partitionMinHint: "Bölümler yalnızca artırılabilir, azaltılamaz. En az: {min}", + update: "Güncelle", + readOnly: "Bu bağlantı salt okunurdur ve yazma işlemleri yapamaz.", + topicNameRequired: "Konu adı zorunludur", + currentPartitionsUnknown: "Geçerli bölüm sayısı bilinmiyor, bu yüzden bölümler güvenle ayarlanamaz.", + partitionMustIncrease: "Yeni bölüm sayısı, geçerli bölüm sayısından büyük olmalıdır.", + confirmDelete: '"{name}" konusu silinsin mi? Bu işlem geri alınamaz.', + queues: "Kuyruklar", + tabQueues: "Kuyruklar", + tabExchanges: "Değiş tokuşlar (Exchange)", + queueCount: "{count} kuyruk", + clusterName: "Küme", + brokerName: "Broker", + allBrokers: "Tüm master broker'lar", + readQueues: "Okuma kuyrukları", + writeQueues: "Yazma kuyrukları", + perm: "Yetki", + permReadWrite: "Okuma + Yazma (6)", + permRead: "Yalnızca okuma (4)", + permWrite: "Yalnızca yazma (2)", + actionStatus: "Durum", + actionRoute: "Rota", + actionConsumers: "Tüketiciler", + actionConfig: "Yapılandırma", + actionSend: "Gönder", + actionMessageQuery: "Mesajları sorgula", + actionReset: "Konumu sıfırla", + actionSkip: "Birikimi atla", + topicStatusTitle: "Konu durumu: {name}", + topicRouteTitle: "Konu rotası: {name}", + topicConsumersTitle: "Tüketiciler: {name}", + topicConfigTitle: "Konu yapılandırması: {name}", + topicConfigHint: "RocketMQ Dashboard ile aynı: yalnızca okuma/yazma kuyruk sayıları ve yetkiler düzenlenebilir. Mesaj türü, konu oluşturulurken belirlenir.", + topicResetTitle: "Konumu sıfırla: {name}", + topicSkipTitle: "Birikimi atla: {name}", + confirmSkip: '"{name}" konusundaki tüm tüketici grupları için birikim atlansın mı?', + skipHint: "Bu konuya abone tüm tüketici gruplarını en son konuma sıfırlar.", + saveConfig: "Yapılandırmayı kaydet", + resetPosition: "Konumu sıfırla", + positionEarliest: "En eski", + positionLatest: "En yeni", + positionTimestamp: "Zamana göre", + timestamp: "Süre", + invalidTimestamp: "Geçerli bir zaman girin", + resetTimePreview: "Seçilen zaman: {time}", + noConsumerGroups: "Tüketici grubu yok", + noConsumers: "Bu konuya abone tüketici grubu yok", + manageConsumers: "Yönet", + routeQueues: "Kuyruk verisi", + routeBrokers: "Broker verisi", + brokerAddrs: "Broker adresleri", + noRouteData: "Rota verisi yok", + noQueueStats: "Kuyruk istatistiği yok", + noConfig: "Konu yapılandırması döndürülmedi", + queueId: "Kuyruk", + beginOffset: "En küçük konum", + endOffset: "En büyük konum", + messageCount: "Mesajlar", + // RabbitMQ queue table columns (issue #6600) + rabbitmqQueueType: "Tür", + rabbitmqQueueTypeHint: "Yönetim API'sinin bildirdiği kuyruk türü (type veya x-queue-type); classic / quorum / stream", + rabbitmqQueueTypeUnknown: "Kuyruk", + rabbitmqFeatures: "Özellikler", + rabbitmqState: "Durum", + rabbitmqArguments: "Argümanlar", + consumers: "Tüketiciler", + rabbitmqRates: "Oranlar", + rabbitmqPublishRate: "Yayınla", + rabbitmqDeliverRate: "Teslim/Alma", + rabbitmqAckRate: "Ack", + }, + mqExchanges: { + searchPlaceholder: "Değiş tokuşlarda ara", + refresh: "Yenile", + refreshing: "Yenileniyor...", + createExchange: "Değiş Tokuş Oluştur", + selectNamespace: "Önce bir sanal sunucu seçin", + loading: "Yükleniyor...", + noExchanges: "Bu sanal sunucuda değiş tokuş yok", + noMatches: "Eşleşen değiş tokuş yok", + name: "Ad", + type: "Tür", + durable: "Kalıcı", + autoDelete: "Otomatik sil", + actions: "İşlemler", + builtin: "Yerleşik", + viewBindings: "Bağlamalar", + delete: "Sil", + yes: "Evet", + no: "Hayır", + bindingsTitle: "{name} kaynağından bağlamalar", + bindDestination: "Bağla", + noBindings: "Bu değiş tokuştan bağlama yok", + bindingSource: "Kaynak", + bindingDestination: "Hedef", + bindingType: "Tür", + routingKey: "Yönlendirme anahtarı", + arguments: "Argümanlar", + unbind: "Bağlamayı kaldır", + destinationTypeQueue: "Kuyruk", + destinationTypeExchange: "Değiş tokuş", + virtualHost: "Sanal sunucu", + namePlaceholder: "örn. dbx-events", + cancel: "İptal", + create: "Oluştur", + bind: "Bağla", + bindDialogTitle: "{name} öğesine bağla", + queueNamePlaceholder: "örn. dbx-queue", + exchangeNamePlaceholder: "örn. dbx-events", + routingKeyPlaceholder: "örn. orders.*", + argumentsPlaceholder: "İsteğe bağlı JSON nesnesi, örn. {'{'}\"x-match\": \"all\"{'}'}", + nameRequired: "Değiş tokuş adı zorunludur", + destinationRequired: "Hedef zorunludur", + argumentsMustBeObject: "Argümanlar bir JSON nesnesi olmalıdır", + readOnly: "Bu bağlantı salt okunurdur ve yazma işlemleri yapamaz.", + confirmDelete: '"{name}" değiş tokuşu silinsin mi? Bu işlem geri alınamaz.', + confirmUnbind: '"{source}" kaynağından "{destination}" hedefine bağlama kaldırılsın mı?', + }, + mqClientConnections: { + searchPlaceholder: "Bağlantılarda ara", + refresh: "Yenile", + refreshing: "Yenileniyor...", + loading: "Yükleniyor...", + noConnections: "İstemci bağlantısı yok", + noMatches: "Eşleşen bağlantı yok", + name: "Ad", + user: "Kullanıcı", + peerAddress: "Eş Adresi", + state: "Durum", + channels: "Kanallar", + recvRate: "Alma Hızı", + sendRate: "Gönderme Hızı", + connectedAt: "Bağlanma Zamanı", + actions: "İşlemler", + closeConnection: "Bağlantıyı Kapat", + confirmClose: '"{name}" bağlantısı kapatılsın mı? Tüm kanalları kapanacak ve bu işlem geri alınamaz.', + readOnly: "Bu bağlantı salt okunurdur; yazma işlemleri devre dışıdır.", + noChannels: "Bu bağlantıda kanal yok", + channelName: "Kanal", + prefetch: "Ön alma (prefetch)", + unacked: "Onaylanmamış", + consumers: "Tüketiciler", + }, + mqUserPermissions: { + usersTitle: "Kullanıcılar", + permissionsTitle: "Yetkiler", + refresh: "Yenile", + refreshing: "Yenileniyor...", + loading: "Yükleniyor...", + createUser: "Kullanıcı Oluştur", + grantPermission: "Yetki Ver", + searchUsers: "Kullanıcılarda ara", + noUsers: "Kullanıcı yok", + noUserMatches: "Eşleşen kullanıcı yok", + name: "Ad", + tags: "Etiketler", + actions: "İşlemler", + delete: "Sil", + confirmDeleteUser: '"{name}" kullanıcısı silinsin mi? Bu işlem geri alınamaz.', + password: "Parola", + tagsPlaceholder: "Virgülle ayrılmış, örn. administrator, monitoring", + nameRequired: "Kullanıcı adı zorunludur", + passwordRequired: "Parola zorunludur", + cancel: "İptal", + create: "Oluştur", + user: "Kullanıcı", + vhost: "Sanal sunucu", + configure: "Yapılandır", + write: "Yazma", + read: "Okunan", + noPermissions: "Yetki yok", + revoke: "Yetkiyi geri al", + confirmRevoke: '"{user}" kullanıcısının "{vhost}" sanal sunucusundaki yetkisi geri alınsın mı?', + grant: "Yetki ver", + selectUser: "Bir kullanıcı seçin", + selectVhost: "Bir sanal sunucu seçin", + patternHint: "Kaynak adlarıyla eşleştirilen düzenli ifade; boş bırakılırsa varsayılan .* (tümü) olur.", + userRequired: "Bir kullanıcı seçin", + vhostRequired: "Bir sanal sunucu seçin", + readOnly: "Bu bağlantı salt okunurdur; yazma işlemleri devre dışıdır.", + }, + mqRabbitMqPolicies: { + title: "Politikalar", + refresh: "Yenile", + refreshing: "Yenileniyor...", + loading: "Yükleniyor...", + createPolicy: "Politika Oluştur", + editPolicy: "Politikayı Düzenle", + noPolicies: "Politika yok", + name: "Ad", + vhost: "Sanal sunucu", + pattern: "Desen", + applyTo: "Şuna uygula", + priority: "Öncelik", + definition: "Tanım", + actions: "İşlemler", + edit: "Düzenle", + delete: "Sil", + confirmDelete: '"{vhost}" sanal sunucusundaki "{name}" politikası silinsin mi?', + cancel: "İptal", + save: "Kaydet", + selectVhost: "Bir sanal sunucu seçin", + definitionKey: "Anahtar", + definitionValue: "Değer", + addDefinition: "Tanım girdisi ekle", + patternHint: "Kuyruk/değiş tokuş adlarıyla eşleştirilen düzenli ifade.", + nameRequired: "Politika adı zorunludur", + vhostRequired: "Bir sanal sunucu seçin", + patternRequired: "Desen zorunludur", + readOnly: "Bu bağlantı salt okunurdur; yazma işlemleri devre dışıdır.", + }, + mqRabbitMqMonitoring: { + title: "Küme İzleme", + loading: "Yükleniyor...", + overviewTitle: "Genel Bakış", + messagesReady: "Hazır mesajlar", + messagesUnacked: "Onaylanmamış mesajlar", + publishRate: "Yayınlama hızı", + deliverRate: "Teslim hızı", + ackRate: "Ack hızı", + totalQueues: "Kuyruklar", + totalExchanges: "Değiş tokuşlar (Exchange)", + totalConnections: "Bağlantılar", + totalChannels: "Kanallar", + totalConsumers: "Tüketiciler", + nodesTitle: "Düğümler", + nodeName: "Düğüm", + status: "Durum", + running: "Çalışıyor", + stopped: "Durduruldu", + memory: "Bellek", + diskFree: "Boş disk", + fileDescriptors: "Dosya tanıtıcıları", + sockets: "Soketler", + uptime: "Çalışma süresi", + noNodes: "Düğüm yok", + }, + mqRocketmq: { + consumerGroupTitle: "Tüketici grupları", + searchConsumerGroup: "Tüketici grubu ara", + connectionNotReady: "Bağlantı hazır değil. Küme bilgilerini yenileyin.", + tabSend: "Mesaj gönder", + tabQuery: "Mesaj sorgusu", + noDlqTopics: "DLQ konusu bulunamadı. Konular sekmesinde DLQ tür filtresini etkinleştirip yenileyin.", + topicFilterAll: "Tümü", + topicFilterBusiness: "İş", + topicFilterDlq: "DLQ", + actionProduce: "Üret", + actionConsume: "Tüket", + aclTitle: "Erişim denetimi", + actionMessageQuery: "Mesajları sorgula", + actionSendMessage: "Mesaj gönder", + actionMore: "Daha fazla", + actionDetailGroup: "Ayrıntılar", + actionResetOffset: "Konumu sıfırla", + dlqConsumerGroup: "Tüketici grubu", + dlqConsumerGroupPlaceholder: "Tüketici grubu (isteğe bağlı)", + dlqQueryByKey: "Anahtara göre sorgula", + viewDlqMessages: "DLQ mesajlarını görüntüle", + namesrvAddr: "NameServer", + }, + mqAdmin: { + viewTenant: "Kiracıyı görüntüle", + viewNamespace: "Ad alanını görüntüle", + viewTopic: "Konuyu görüntüle", + connectionMissing: "Bağlantı bulunamadı. Yeniden bağlanıp tekrar deneyin.", + writeDeniedReadOnly: "Bu bağlantı salt okunurdur ve yazma işlemleri yapamaz.", + readOnly: "Salt okunur", + allNamespaces: "Tüm ad alanları", + newNamespace: "Yeni ad alanı", + namespace: "Ad alanı", + selectNamespaceToCreate: "Oluşturmak için belirli bir ad alanı seçin", + selectNamespaceToWrite: "Bu işlemi yapmak için belirli bir ad alanı seçin", + tabTenants: "Kiracılar", + tabNamespaces: "Ad alanları", + tabTopics: "Konular", + tabSubscriptions: "Abonelikler", + tabConsumerGroups: "Tüketici Grupları", + tabMonitoring: "İzleme", + tabClients: "İstemciler", + tabMessages: "Mesajlar", + tabBroker: "Broker", + tabCluster: "Küme", + tabConsumers: "Tüketiciler", + tabProducers: "Üreticiler", + tabDlq: "DLQ", + tabTrace: "İz", + tabAcl: "ACL", + tabPolicies: "Politikalar", + tabPermissions: "Yetkiler", + tabRawApi: "Ham API", + }, + mqMessages: { + title: "Mesaj Gönder", + clear: "Temizle", + selectNamespaceOrTopicFirst: "Önce bir ad alanı veya konu seçin", + readOnlyCannotSend: "Bu bağlantı salt okunurdur ve mesaj gönderemez", + selectTargetTopic: "Bir hedef konu seçin", + messageContentRequired: "Mesaj içeriği zorunludur", + sendSuccess: "Mesaj gönderildi — bölüm: {partition}, konum: {offset}", + targetTopic: "Hedef konu", + topicLoading: "Yükleniyor...", + topicSearchPlaceholder: "Bir konu seçin", + refreshTopicList: "Konu listesini yenile", + topicOptionWithPartitions: "{label} ({partitions} bölüm)", + noTopicsAvailable: "Kullanılabilir konu yok", + topicSearchHint: "Listeyi filtrelemek için yazın. Bir konu seçmek sorguyu çalıştırır. Gri gösterilen geçerli konuyla aramak için yeniden tıklayın.", + messageKey: "Mesaj anahtarı", + messageTag: "Mesaj etiketi", + exchange: "Değiş tokuş", + exchangePlaceholder: "Boş = varsayılan değiş tokuş", + exchangeHint: "Ayarlandığında mesaj, doğrudan kuyruğa değil bu değiş tokuşa yayınlanır.", + routingKey: "Yönlendirme anahtarı", + optional: "İsteğe bağlı", + messageContent: "Mesaj içeriği", + formatJson: "JSON'u Biçimlendir", + messageHeaders: "Başlıklar", + headersPlaceholder: "anahtar: değer (her satıra bir tane)", + sending: "Gönderiliyor...", + sendMessage: "Mesaj gönder", + messageList: "Mesajlar", + loadMessages: "Mesajları yükle", + loading: "Yükleniyor...", + peekDefaultHint: "Bölüm belirtilmezse tüm bölümler en baştan okunur.", + count: "Sayı", + advancedFilter: "Gelişmiş (bölüm / konum)", + partition: "Bölüm", + partitionPlaceholderAll: "Boş = tümü", + offset: "Konum", + offsetPlaceholderEarliest: "Boş = en eski", + offsetPlaceholderRequired: "Zorunlu", + startPosition: "Başlangıç konumu", + kafkaLatest: "Son N mesaj (varsayılan)", + kafkaEarliest: "En eski mesajlar", + kafkaOffset: "Konumdan itibaren", + timeOrder: "Zaman sırası", + newestFirst: "Önce en yeni", + oldestFirst: "Önce en eski", + kafkaLatestHint: "Her bölümden en fazla N aday okur, ardından konu genelinde zaman damgasına göre en yeni N tanesini seçer.", + kafkaEarliestHint: "Seçili her bölümde kullanılabilir en eski mesajdan itibaren okur.", + kafkaOffsetHint: "Seçili bölümde belirtilen konumdan itibaren, boş bırakılırsa her bölümden okur.", + messagesLoading: "Mesajlar yükleniyor...", + noMessages: "Mesaj yok", + filterLoadedPlaceholder: "Yüklenen mesajları filtrele", + filterLoadedCount: "{matched} / {loaded}", + noMatchingMessages: "Bu filtreyle eşleşen yüklenmiş mesaj yok", + peekIncomplete: "Broker anlık görüntüyü tamamlamadığı için mesaj sonuçları eksik.", + selectTopicBeforeLoad: "Mesajları yüklemeden önce bir konu seçin", + partitionMustBeNonNegativeInt: "Bölüm 0 veya daha büyük bir tam sayı olmalıdır; tüm bölümler için boş bırakın", + offsetMustBeNonNegativeInt: "Konum 0 veya daha büyük bir tam sayı olmalıdır; en eski için boş bırakın", + offsetMustBeNonNegativeIntRequired: "Konum 0 veya daha büyük bir tam sayı olmalıdır", + offsetRequiredForOffset: "Belirli bir konumdan okurken konum zorunludur", + metaPartition: "bölüm {partition}", + metaOffset: "konum {offset}", + metaKey: "anahtar {key}", + jsonBodyPlaceholder: "{'{'}\"key\": \"value\"{'}'}", + queryTitle: "Mesaj sorgusu", + queryTabTopic: "Konu", + queryTabKey: "Mesaj Anahtarı", + queryTabMsgId: "Mesaj Kimliği", + queryTopicLabel: "Konu", + selectTopicPlaceholder: "Bir konu seçin", + noQueryResults: "Ölçütlerle eşleşen sonuç bulunamadı", + tableMessageId: "Mesaj Kimliği", + tableTag: "Etiket", + tableKey: "Anahtar", + tableStoreTime: "SaklamaZamanı", + tableOperation: "İşlem", + viewDetails: "Görünüm", + messageDetails: "Mesaj ayrıntıları", + search: "Ara", + messageQuery: "Mesaj sorgusu", + queryByMsgId: "Mesaj kimliğine göre", + queryByKey: "Anahtara göre", + queryByTopic: "Konu ve zamana göre", + msgId: "Mesaj Kimliği", + msgIdPlaceholder: "örn. 7F000001...", + msgIdRequired: "Mesaj kimliği zorunludur", + queryKey: "Mesaj anahtarı", + queryKeyPlaceholder: "İş anahtarı", + queryKeyRequired: "Mesaj anahtarı zorunludur", + beginTime: "Başlangıç zamanı", + endTime: "Bitiş saati", + maxNum: "En fazla mesaj", + invalidTimeRange: "Başlangıç ya da bitiş zamanı geçersiz", + endTimeMustBeAfterBegin: "Bitiş zamanı, başlangıç zamanından sonra olmalıdır", + query: "Sorgu", + querying: "Sorgulanıyor...", + messageOverview: "Genel Bakış", + messageBody: "Gövde", + resendMessage: "Yeniden gönder", + payloadCopied: "Kopyalandı", + dlqConsumerGroupPlaceholder: "Tüketici grubu (isteğe bağlı)", + }, + mqMonitoring: { + title: "İzleme", + autoRefresh: "Otomatik yenile", + refreshInterval5s: "5 sn", + refreshInterval10s: "10 sn", + refreshInterval30s: "30 sn", + refreshInterval60s: "60 sn", + refreshing: "Yenileniyor...", + refreshNow: "Yenile", + selectTopicFirst: "Önce bir konu seçin", + loadingStats: "İzleme verileri yükleniyor...", + kafkaTopicOverview: "Kafka konu genel bakışı", + partitionCount: "Bölümler", + replicationFactor: "Çoğaltma katsayısı", + messageCount: "Mesajlar", + logEndOffset: "Günlük son konumu", + offsetAndReplicaStatus: "Konumlar ve kopyalar", + beginOffset: "Başlangıç konumu", + leaderCount: "Liderler", + isrHealthyPartitions: "ISR sağlıklı", + noLeaderPartitions: "Lider yok", + kafkaPartitionDetails: "Kafka bölümleri", + noKafkaPartitionMetrics: "Kafka yanıtında bölüm metriği yok", + tablePartition: "Bölüm", + tableBeginOffset: "Başlangıç konumu", + tableLogEndOffset: "Günlük son konumu", + tableMessageCount: "Mesajlar", + tableLeader: "Lider", + tableReplicas: "Kopyalar", + tableIsr: "ISR", + tableStatus: "Durum", + statusNoLeader: "Lider yok", + statusIsrIncomplete: "ISR eksik", + statusHealthy: "Sağlıklı", + messagesLoading: "Mesajlar yükleniyor...", + noMessages: "Mesaj yok", + messageRate: "Mesaj hızı", + inboundRate: "Gelen hız", + outboundRate: "Giden hız", + inboundThroughput: "Gelen veri hacmi", + outboundThroughput: "Giden veri hacmi", + rateTrend: "Hız eğilimi", + backlogTrend: "Birikim eğilimi", + consumerLag: "Tüketici gecikmesi", + storageAndBacklog: "Depolama ve birikim", + storageSize: "Depolama boyutu", + backlogSize: "Birikim boyutu", + backlogMessageCount: "Birikmiş mesajlar", + messageCounters: "Mesaj sayaçları", + publishedMessages: "Yayınlanan", + consumedMessages: "Tüketilen", + connectionStats: "Bağlantılar", + subscriptionCount: "Abonelikler", + producerCount: "Üreticiler", + partitionDetails: "Bölümler", + tableInbound: "Gelen", + tableOutbound: "Giden", + tableInboundThroughput: "Gelen hacim", + tableOutboundThroughput: "Giden hacim", + tableBacklogMessages: "Birikmiş mesaj", + tableBacklogSize: "Birikim boyutu", + tableProducers: "Üreticiler", + tableSubscriptions: "Abonelikler", + producers: "Üreticiler", + subscriptions: "Abonelikler", + tableName: "Ad", + tableRate: "Oran", + tableAddress: "Adres", + tableType: "Tür", + tableBacklog: "Birikim", + tableConsumers: "Tüketiciler", + noProducers: "Üretici yok", + noSubscriptions: "Abonelik yok", + noPartitionMetricsFromBroker: "Broker'dan bölüm metriği yok", + nonPartitionedTopicNoDetails: "Bölümlenmemiş konuların bölüm ayrıntısı olmaz", + healthIndicators: "Sağlık", + messageFlow: "Mesaj akışı", + backlogStatus: "Birikim", + producersLabel: "Üreticiler", + subscriptionsLabel: "Abonelikler", + flowActive: "Etkin", + flowIdle: "Boşta", + backlogNormal: "Normal", + backlogHigh: "Yüksek", + producerConnected: "Bağlandı", + producerDisconnected: "Yok", + subscriptionActive: "Etkin", + subscriptionNone: "Yok", + chartLegendIn: "Gelen", + chartLegendOut: "Giden", + chartLegendMessages: "Mesajlar", + chartLegendBytes: "Bayt", + chartLegendConsumerLag: "Tüketici gecikmesi", + chartAxisMsgPerSec: "mesaj/sn", + chartAxisMsg: "mesaj", + chartAxisBytes: "bayt", + chartAxisMs: "ms", + metaPartition: "bölüm {partition}", + metaOffset: "konum {offset}", + metaKey: "anahtar {key}", + rocketmqTopicOverview: "RocketMQ konu genel bakışı", + rocketmqQueueDetails: "Kuyruk konumu ayrıntıları", + queueCount: "Kuyruklar", + brokerCount: "Broker'lar", + tableQueue: "Kuyruk", + tableBroker: "Broker", + noRocketMqQueueMetrics: "Kuyruk metriği döndürülmedi", + }, + mqTenants: { + title: "Kiracı Yönetimi", + createTenant: "Kiracı Oluştur", + notSupported: "Bu mesajlaşma sistemi için kiracı yönetimi desteklenmiyor", + readOnly: "Bu bağlantı salt okunurdur ve yazma işlemleri yapamaz.", + loading: "Yükleniyor...", + name: "Ad", + adminRoles: "Yönetici Rolleri", + allowedClusters: "İzin Verilen Kümeler*", + actions: "İşlemler", + none: "Yok", + edit: "Düzenle", + delete: "Sil", + createDialogTitle: "Kiracı Oluştur", + editDialogTitle: "Kiracıyı Düzenle: {name}", + tenantName: "Kiracı adı*", + tenantNamePlaceholder: "örn. my-tenant", + addRolePlaceholder: "Rol ekle", + add: "Ekle", + selectClustersPlaceholder: "İzin verilen kümeleri seçin", + noClustersDetectedPlaceholder: "Küme algılanmadı; elle ekleyin", + clustersNotReturned: "Bağlantı bir küme listesi döndürmedi", + addClusterPlaceholder: "Kümeyi elle ekle", + clustersRequiredHint: "En az bir izin verilen küme seçin veya ekleyin", + cancel: "İptal", + create: "Oluştur", + save: "Kaydet", + confirmDelete: '"{name}" kiracısı silinsin mi? Bu işlem geri alınamaz.', + tenantNameRequired: "Kiracı adı zorunludur", + allowedClustersRequired: "İzin verilen kümeler zorunludur", + }, + mqNamespaces: { + title: "Ad Alanı Yönetimi", + createNamespace: "Ad Alanı Oluştur", + notSupported: "Bu mesajlaşma sistemi için ad alanı yönetimi desteklenmiyor", + selectTenantFirst: "Önce bir kiracı seçin", + readOnly: "Bu bağlantı salt okunurdur ve yazma işlemleri yapamaz.", + loading: "Yükleniyor...", + name: "Ad", + tenant: "Kiracı", + adminRoles: "Yönetici Rolleri", + actions: "İşlemler", + none: "Yok", + editRoles: "Rolleri Düzenle", + delete: "Sil", + createDialogTitle: "Ad Alanı Oluştur", + namespaceName: "Ad alanı adı*", + namespaceNamePlaceholder: "örn. my-namespace", + cancel: "İptal", + create: "Oluştur", + confirmDelete: '"{name}" ad alanı silinsin mi? Bu işlem geri alınamaz.', + namespaceNameRequired: "Ad alanı adı zorunludur", + }, + mqSubscriptions: { + title: "Abonelik Yönetimi", + createSubscription: "Abonelik Oluştur", + selectTopicFirst: "Önce bir konu seçin", + searchPlaceholder: "Abonelik adı ara", + subscribedTopics: "Abone olunan konular", + readOnly: "Bu bağlantı salt okunurdur ve yazma işlemleri yapamaz.", + loading: "Yükleniyor...", + refresh: "Yenile", + refreshing: "Yenileniyor...", + enriching: "Çevrimiçi ayrıntılar yükleniyor...", + truncatedHint: "İlk {count} tüketici grubu gösteriliyor (liste sınırlandı). Diğerlerini bulmak için aramayı daraltın.", + enrichFailedHint: "Çevrimiçi üye/konu ayrıntıları yüklenemedi ({error}). Yalnızca hızlı liste gösteriliyor.", + noSubscriptions: "Bu konu için abonelik yok", + noConsumerGroups: "Tüketici grubu yok", + noMatches: "Eşleşen tüketici grubu yok", + backlogPartialFailed: "{count} konu için birikim yüklenemedi: {error}", + viewDetail: "Ayrıntılar", + editConfig: "Yapılandırma", + save: "Kaydet", + consumerDetailTitle: "Tüketici grubu ayrıntıları: {name}", + consumerConfigTitle: "Tüketici grubu yapılandırması: {name}", + consumerOverview: "Genel Bakış", + consumerTerminals: "Çevrimiçi terminaller", + consumerConsumeDetail: "Tüketim ayrıntıları", + noOnlineConsumers: "Çevrimiçi tüketici yok", + noConsumeDetail: "Tüketim ayrıntısı yok", + noQueueConsumeProgress: "Kuyruk tüketim ilerlemesi yok", + operationTopic: "Konu", + consumeDelay: "Birikim", + invalidTopicScope: "Geçersiz konu kapsamı", + lastConsumeTime: "Son tüketim zamanı", + broker: "broker", + queue: "kuyruk", + consumerClient: "consumerClient", + brokerOffset: "brokerOffset", + consumerOffset: "consumerOffset", + diffTotal: "diffTotal", + lastTimestamp: "lastTimestamp", + consumeEnable: "Tüketim etkin", + consumeBroadcastEnable: "Yayın tüketimi etkin", + consumeFromMinEnable: "En küçük konumdan tüket", + consumeMessageOrderly: "Sıralı tüketim", + retryQueueNums: "Yeniden deneme kuyruğu sayısı", + retryMaxTimes: "En fazla yeniden deneme", + brokerId: "Broker Kimliği", + whichBrokerWhenConsumeSlowly: "Yavaş tüketen broker kimliği", + subscriptionName: "Abonelik adı", + type: "Tür", + mode: "Mod", + typeFilter: "Tür filtresi", + rocketmqGroupType: { + normal: "Normal", + fifo: "Sıralı", + system: "Sistem", + unknown: "Bilinmiyor", + }, + rocketmqGroupMode: { + clustering: "Küme", + broadcasting: "Yayın", + }, + backlog: "Birikim", + consumeRate: "Tüketim hızı", + consumers: "Tüketiciler", + actions: "İşlemler", + consumerCount: "{count} tüketici", + msgRate: "{rate} mesaj/sn", + resetCursor: "İmleci sıfırla", + skipMessages: "Mesajları atla", + clearBacklog: "Birikimi temizle", + peek: "Mesajları görüntüle", + expireMessages: "Mesajları sona erdir", + delete: "Sil", + createDialogTitle: "Abonelik Oluştur", + topic: "Konu", + subscriptionNameLabel: "Abonelik adı*", + subscriptionNamePlaceholder: "örn. my-subscription", + startPosition: "Başlangıç konumu", + startFromEarliest: "En eski mesajdan (Earliest)", + startFromLatest: "En yeni mesajdan (Latest)", + resetDialogTitle: "İmleci sıfırla: {name}", + resetTo: "Şuna sıfırla", + earliest: "En eski mesaj (Earliest)", + latest: "En yeni mesaj (Latest)", + timestamp: "Belirli bir zaman damgası", + timestampMs: "Zaman damgası (ms)", + partitionOffset: "Bölüm ve mutlak konum", + partition: "Bölüm", + offset: "Konum", + nonNegativeIntegerRequired: "Bölüm ve konum negatif olmayan tam sayılar olmalıdır", + currentTime: "Geçerli zaman: {time}", + reset: "Sıfırla", + skipDialogTitle: "Mesajları atla: {name}", + skipMode: "Atlama modu", + skipCount: "Belirtilen sayıda atla", + skipAll: "Tüm birikimi atla", + skipCountLabel: "Atlama sayısı", + skip: "Atla", + peekDialogTitle: "Mesajlara göz at: {name}", + count: "Sayı", + noPeekMessages: "Görüntülenecek mesaj yok", + close: "Kapat", + expireDialogTitle: "Mesajları sona erdir: {name}", + expireSeconds: "Sona erme süresi (saniye)", + expireHint: "{seconds} saniyeden eski tüm mesajlar silinecek", + expire: "Sona erdir", + cancel: "İptal", + create: "Oluştur", + confirmDelete: '"{name}" aboneliği silinsin mi? Bu işlem geri alınamaz.', + confirmClearBacklog: '"{name}" aboneliği için birikmiş tüm mesajlar temizlensin mi?', + subscriptionNameRequired: "Abonelik adı zorunludur", + peekMessageKey: "anahtar={key}", + }, + mqKafkaConsumerGroups: { + title: "Tüketici Grupları", + searchPlaceholder: "Grup veya konu ara", + refresh: "Yenile", + refreshing: "Yenileniyor...", + loading: "Tüketici grupları yükleniyor...", + empty: "Tüketici grubu yok", + noMatches: "Eşleşen tüketici grubu yok", + groupId: "Grup Kimliği", + state: "Durum", + members: "Üyeler", + topics: "Konular", + totalLag: "Toplam gecikme", + partialData: "Bazı metrikler kullanılamıyor", + partitionDetail: "Bölüm gecikmesi ayrıntıları", + noCommittedOffsets: "İşlenmiş konum ya da atanmış bölüm yok", + topic: "Konu", + openTopicSubscriptions: "{topic} için abonelikleri aç", + partition: "Bölüm", + committedOffset: "İşlenmiş konum", + logEndOffset: "Günlük son konumu", + lag: "Gecikme", + }, + mqClients: { + unloadTopicUnsupportedKafka: "Kafka, konuların yükten çıkarılmasını desteklemiyor", + title: "Üreticiler / Tüketiciler", + unloadTopic: "Konuyu yükten çıkar", + unloading: "Yükten çıkarılıyor...", + refresh: "Yenile", + refreshing: "Yenileniyor...", + selectTopicFirst: "Önce bir konu seçin", + rocketmqClusterHint: "Broker üzerindeki tüm çevrimiçi üreticileri ve tüketici grubu terminallerini gösterir. Konuya özgü istemci ayrıntıları için bir konu seçin.", + confirmUnload: "Bu konu yükten çıkarılsın mı? Etkin üreticiler ve tüketiciler yeniden bağlanacak.", + aggregateTopic: "Toplu konu", + kafkaPartitionStatus: "Kafka bölüm durumu", + partitionCount: "{count} bölüm", + partition: "Bölüm", + beginOffset: "Başlangıç konumu", + latestOffset: "En son konum", + messageCount: "Mesajlar", + leader: "Lider", + replicas: "Kopyalar", + isr: "ISR", + partitionClients: "Bölüm istemcileri", + inboundRate: "Gelen hız", + outboundRate: "Giden hız", + producers: "Üreticiler", + subscriptions: "Abonelikler", + consumers: "Tüketiciler", + activeProducers: "Etkin üreticiler", + noActiveProducers: "Etkin üretici yok", + name: "Ad", + id: "Kimlik", + address: "Adres", + version: "Sürüm", + rate: "Oran", + throughput: "Veri hacmi", + rateValue: "{value} mesaj/sn", + activeConsumers: "Etkin tüketiciler", + noSubscriptions: "Bu konunun aboneliği yok", + noConsumersOnPartition: "Bu bölüm aboneliğinde etkin tüketici yok", + noConsumersOnSubscription: "Bu abonelikte etkin tüketici yok", + permits: "İzinler (permits)", + }, + mqPolicies: { + title: "Politika yönetimi", + refresh: "Yenile", + refreshing: "Yenileniyor...", + selectTopicFirst: "Önce bir konu seçin", + selectNamespaceOrTopic: "Bir ad alanı veya konu seçin", + readOnly: "Bu bağlantı salt okunurdur ve yazma işlemleri yapamaz.", + readonlyHint: "Bu bağlantı salt okunurdur; politika düzenleme devre dışıdır.", + publishRate: "Yayınlama hız sınırı", + msgsPerSecond: "Mesaj / saniye", + bytesPerSecond: "Bayt / saniye", + save: "Kaydet", + dispatchRate: "Dağıtım hız sınırı", + msgsPerPeriod: "Mesaj / dönem", + bytesPerPeriod: "Bayt / dönem", + periodSeconds: "Dönem (saniye)", + subscribeRate: "Abonelik hız sınırı", + msgsPerConsumerPerPeriod: "Tüketici başına mesaj / dönem", + backlogQuota: "Birikim kotası", + sizeLimitBytes: "Boyut sınırı (bayt)", + timeLimitSeconds: "Süre sınırı (saniye)", + policy: "Politika", + type: "Tür", + backlogPolicyProducerRequestHold: "Üretici isteklerini beklet", + backlogPolicyProducerException: "Özel durumla reddet", + backlogPolicyConsumerBacklogEviction: "Tüketici birikimini tahliye et", + retention: "Mesaj saklama", + retentionTimeMinutes: "Saklama süresi (dakika)", + retentionSizeMb: "Saklama boyutu (MB)", + effectivePolicies: "Geçerli politikalar", + savedNotice: "{policy} kaydedildi", + }, + mqPermissions: { + title: "Yetkiler", + refresh: "Yenile", + refreshing: "Yenileniyor...", + selectNamespaceOrTopic: "Önce bir ad alanı veya konu seçin", + readOnly: "Bu bağlantı salt okunurdur ve yazma işlemleri yapamaz.", + readonlyHint: "Bu bağlantı salt okunurdur; yetki verme ve geri alma devre dışıdır.", + grantRole: "Rol ver", + roleName: "Rol adı", + roleNamePlaceholder: "örn. app-producer", + actions: "İşlemler", + grant: "Yetki ver", + currentPermissions: "Geçerli yetkiler", + role: "Rol", + operations: "İşlemler", + token: "Belirteç", + revoke: "Yetkiyi geri al", + noPermissions: "Yetki kaydı yok", + clientTokenTitle: "İstemci belirteci: {role}", + missingSigningKeyTitle: "Belirteç imzalama anahtarı yapılandırılmadı", + missingSigningKeyMessage: "Bu MQ bağlantısında broker belirteci imzalama anahtarı yapılandırılmadığı için istemci belirteçleri verilemez.", + missingSigningKeyDetail: 'Bağlantıyı düzenleyip "Broker belirteci imzalama" ayarını HS256 SECRET veya RS256 PRIVATE yapın, ardından belirteç üretmeden önce imzalama anahtarını girin.', + tokenShowOnceWarning: "Belirteç yalnızca bir kez gösterilir. Hemen kopyalayıp saklayın.", + copyToken: "Belirteci kopyala", + issueNewToken: "Yeni belirteç ver", + neverExpires: "Hiç sona ermez", + expiryDays: "Sona erme (gün)", + note: "Not", + notePlaceholder: "örn. rt-erp-server için", + issuing: "Veriliyor...", + generateToken: "Belirteç üret", + tokenRevokeHint: "Rol yetkilerini geri almak, verilmiş JWT'leri hemen geçersiz kılmaz; sona ermelerini bekleyin ya da broker imzalama anahtarını değiştirin.", + issueRecords: "Verme kayıtları", + time: "Süre", + algorithm: "Algoritma", + expires: "Sona erer", + fingerprint: "Parmak izi", + noteColumn: "Not", + unlimited: "Kalıcı", + loading: "Yükleniyor...", + noIssueRecords: "Verme kaydı yok", + close: "Kapat", + kafkaAuthorizerNotConfigured: "Bu Kafka kümesinde yapılandırılmış yetkilendirici yok. ACL desteği için broker yapılandırmasına authorizer.class.name ekleyin.", + kafkaAuthorizerDisabled: "Bu Kafka kümesinde etkin yetkilendirici yok. Yetki verebilmek için broker yapılandırmasında bir yetkilendirici etkinleştirin.", + roleNameRequired: "Rol adı zorunludur", + selectAtLeastOneAction: "En az bir eylem seçin", + grantedRole: "{role} yetkilendirildi", + confirmRevoke: '"{role}" rolünün yetkileri geri alınsın mı?', + revokedRole: "{role} geri alındı", + roleNameEmpty: "Rol adı boş olamaz", + expiryMustBePositive: "Sona erme 0 günden büyük olmalıdır", + }, + mqBroker: { + title: "Broker kümesi", + autoRefresh: "Otomatik yenile", + refreshInterval5s: "5 sn", + refreshInterval10s: "10 sn", + refreshInterval30s: "30 sn", + refreshInterval60s: "60 sn", + refreshing: "Yenileniyor...", + refreshNow: "Şimdi yenile", + loading: "Yükleniyor...", + clusterOverview: "Küme genel bakışı", + clusterId: "Küme Kimliği", + unknown: "Bilinmiyor", + brokerCount: "Broker'lar", + controller: "Denetleyici", + controllerNode: "Düğüm {id} · {host}", + brokerNodes: "Broker düğümleri", + brokerName: "Broker adı", + brokerEndpoints: "Broker uç noktaları", + nodeId: "Düğüm Kimliği", + host: "Sunucu", + addHost: "Sunucu Ekle", + port: "Port", + rack: "Rack", + role: "Rol", + roleController: "Denetleyici", + roleFollower: "İzleyici", + roleMaster: "Master", + roleSlave: "Slave", + noBrokerNodes: "Broker düğümü bilgisi yok", + clusterTitle: "Küme", + }, + mqDlq: { + title: "Ölü mektup kuyruğu", + refresh: "Yenile", + refreshing: "Yenileniyor...", + loading: "Yükleniyor...", + selectContext: "Önce bir ad alanı bağlamı seçin", + selectTopic: "Bir DLQ konusu seçin", + topic: "DLQ konusu", + consumerGroup: "Tüketici grubu", + groupPlaceholder: "İsteğe bağlı gözatma grubu", + queryByKey: "Mesaj anahtarına göre sorgula", + queryKey: "Mesaj anahtarı", + queryKeyPlaceholder: "Aranacak anahtar", + loadMessages: "Mesajları yükle", + loadingMessages: "Mesajlar yükleniyor...", + noDlqTopics: "DLQ konusu bulunamadı. Listelemek için Konular sekmesinde DLQ tür filtresini etkinleştirin.", + noMessages: "Mesaj yok", + }, + mqTrace: { + title: "Mesaj izi", + msgId: "Mesaj Kimliği", + msgIdPlaceholder: "Özgün mesaj kimliği", + msgIdRequired: "Mesaj kimliği zorunludur", + queryKeyRequired: "Mesaj anahtarı zorunludur", + selectTopicBeforeQuery: "İzleri sorgulamadan önce bir konu seçin", + traceTopic: "İz konusu", + traceTopicPlaceholder: "RMQ_SYS_TRACE_TOPIC", + query: "İzi sorgula", + querying: "Sorgulanıyor...", + noTrace: "İz kaydı bulunamadı", + searchHint: "Önce mesajları arayın, ardından İzi görüntüle'ye tıklayın", + viewTrace: "İzi görüntüle", + detailTitle: "Mesaj izi ayrıntıları", + typePub: "Pub", + typeSubBefore: "SubBefore", + typeSubAfter: "SubAfter", + typeEndTransaction: "EndTransaction", + typeUnknown: "Bilinmiyor", + statusSuccess: "Başarılı", + statusFail: "Başarısız", + fieldRegionId: "Bölge", + fieldGroup: "Grup", + fieldTopic: "Konu", + fieldMsgId: "MsgId", + fieldTags: "Etiketler", + fieldKeys: "Anahtarlar", + fieldStoreHost: "Saklama sunucusu", + fieldClientHost: "İstemci sunucusu", + fieldBodyLength: "Gövde uzunluğu", + fieldCostTime: "Maliyet", + fieldMsgType: "Mesaj türü", + fieldOffsetMsgId: "Konum MsgId", + fieldRequestId: "İstek Kimliği", + fieldRetryTimes: "Yeniden dene", + fieldContextCode: "Bağlam kodu", + rawPayload: "Ham iz", + traceTopicRouteMissing: + "İz konusunun NameServer üzerinde rotası yok (KOD: 17).\n\nYaygın nedenler:\n1. Broker izi kapalı: broker.conf içinde traceTopicEnable=true ayarlayıp broker'ı yeniden başlatın\n2. Üretici/Tüketici izi kapalı: setEnableTrace(true) çağırın\n3. Özel bir iz konusu kullanılıyor: yukarıdan doğru iz konusunu seçin", + }, + mqRaw: { + title: "Ham API", + sending: "Gönderiliyor...", + sendRequest: "İsteği gönder", + readOnlyHint: "Bu bağlantı salt okunurdur; yalnızca GET, HEAD ve OPTIONS isteklerine izin verilir.", + commonEndpoints: "Yaygın uç noktalar", + fillFromSelection: "İsteği geçerli seçimden doldur", + expand: "Genişlet", + collapse: "Daralt", + method: "Yöntem", + path: "Yol", + pathPlaceholder: "/admin/v2/...", + queryParams: "Sorgu parametreleri", + queryPlaceholder: "anahtar=değer, her satıra bir tane", + jsonBody: "JSON Gövdesi", + format: "Biçim", + bodyPlaceholder: "örn. {'{'}\"key\":\"value\"{'}'}", + response: "Yanıt", + textResponse: "Metin yanıtı", + noRequestYet: "Henüz istek gönderilmedi", + readOnly: "Bu bağlantı salt okunurdur ve yazma işlemleri yapamaz.", + pathRequired: "İstek yolu zorunludur", + jsonBodyInvalid: "Geçersiz JSON gövdesi: {error}", + presetBrokerVersion: "Broker sürümü", + presetBrokerVersionDesc: "Broker sürüm dizesi", + presetClusters: "Küme listesi", + presetClustersDesc: "Yapılandırılmış Pulsar kümelerini listele", + presetTenant: "Kiracı ayrıntıları", + presetTenantDesc: "adminRoles / allowedClusters değerlerini görüntüle", + presetNamespacePolicies: "Ad alanı politikaları", + presetNamespacePoliciesDesc: "Ham ad alanı politikaları yapısı", + presetBundles: "Bundle listesi", + presetBundlesDesc: "Ad alanı bundle dağılımı", + presetTopicInternalStats: "Konu iç istatistikleri", + presetTopicInternalStatsDesc: "Ledger / imleç / birikim ayrıntıları", + presetPartitionedStats: "Bölüm metrikleri", + presetPartitionedStatsDesc: "Bölüm başına hızlar, üreticiler ve tüketiciler", + presetSchema: "En son şema", + presetSchemaDesc: "Geçerli konu şema tanımı", + }, + nacos: { + openConsole: "Konsolu Aç", + consoleUrlMissing: "Tarayıcıda açmak için bir Nacos Web Konsolu URL'si yapılandırın.", + consoleOpenFailed: "Nacos konsolu açılamadı.", + enterZenMode: "Çalışma alanını genişlet", + exitZenMode: "Genişletilmiş çalışma alanından çık", + dashboard: "Pano", + dashboardTitle: "İşletim Panosu", + dashboardUpdatedAt: "{time} tarihinde güncellendi", + dashboardAutoRefresh: "Otomatik yenile", + dashboardOff: "Kapalı", + dashboardNamespaces: "Ad alanları", + dashboardConfigs: "Yapılandırmalar", + dashboardServices: "Servisler", + dashboardInstances: "Örnekler", + dashboardClients: "İstemciler", + dashboardConnections: "{count} bağlantı", + dashboardNodes: "Sağlıklı düğümler", + dashboardCpu: "CPU", + dashboardMemory: "Bellek", + dashboardLoad: "Yük {value}", + dashboardCountsChart: "Servis keşfi", + dashboardResourcesChart: "Kaynak kullanımı", + dashboardClusterNodes: "Küme düğümleri", + dashboardSite: "Site", + dashboardLastRefresh: "Son yenileme", + dashboardNoNodes: "Küme düğümü ayrıntıları kullanılamıyor", + dashboardPartial: "{count} pano kaynağı kullanılamıyor", + dashboardMemoryUsed: "Kullanılan heap / bellek", + dashboardMemoryMax: "En fazla {value}", + dashboardRss: "RSS belleği", + dashboardVms: "Sanal bellek", + dashboardJvmThreads: "JVM daemon iş parçacıkları", + dashboardGcPauses: "GC duraklamaları", + dashboardTrafficSection: "İstek trafiği", + dashboardRequestRateChart: "Saniyede HTTP / gRPC isteği", + dashboardLatencyChart: "İstek gecikmesi", + dashboardHttpQps: "HTTP QPS", + dashboardGrpcQps: "gRPC QPS", + dashboardHttpAverage: "HTTP ortalaması", + dashboardHttpP50: "HTTP P50", + dashboardHttpP95: "HTTP P95", + dashboardHttpP99: "HTTP P99", + dashboardGrpcAverage: "gRPC ortalaması", + dashboardGrpcP50: "gRPC P50", + dashboardGrpcP95: "gRPC P95", + dashboardGrpcP99: "gRPC P99", + dashboardReliabilitySection: "Güvenilirlik", + dashboardErrorRateChart: "İstek hata oranı", + dashboardExecutorChart: "gRPC yürütücüsü", + dashboardHttpErrors: "HTTP hataları", + dashboardGrpcErrors: "gRPC hataları", + dashboardExecutorPool: "Havuz boyutu", + dashboardExecutorActive: "Etkin", + dashboardExecutorQueue: "Kuyruğa alındı", + dashboardConfigSection: "Yapılandırma merkezi", + dashboardConfigRateChart: "Saniyede yapılandırma işlemi", + dashboardConfigStateChart: "Dinleyiciler ve bekleyen iş", + dashboardConfigGets: "Okumalar", + dashboardConfigPublishes: "Yayınlar", + dashboardLongPolling: "Uzun yoklama", + dashboardListenerClients: "Dinleyici istemcileri", + dashboardListenerKeys: "Dinleyici anahtarları", + dashboardNotifyTasks: "Bildirim görevleri", + dashboardNotifyClientTasks: "İstemci bildirim görevleri", + dashboardDumpTasks: "Döküm görevleri", + dashboardNamingSection: "Servis keşfi", + dashboardNamingStateChart: "Servisler, örnekler ve istemciler", + dashboardPushRateChart: "Saniyede gönderim", + dashboardPushDetailChart: "Gönderim gecikmesi ve bekleyen iş", + dashboardPushAverage: "Ortalama gecikme", + dashboardPushMaximum: "En büyük gecikme", + dashboardPushPending: "Bekleyen görevler", + dashboardSubscribers: "Aboneler", + dashboardPushes: "Gönderimler", + dashboardFailedPushes: "Başarısız gönderimler", + dashboardEmptyPushes: "Boş gönderimler", + configs: "Yapılandırmalar", + services: "Servisler", + loading: "Yükleniyor...", + accessControlSidebarLabel: "Kullanıcılar ve Roller", + accessControlTitle: "Erişim denetimi", + accessControlDescription: "Nacos kullanıcılarını ve rol atamalarını yönetin", + users: "Kullanıcılar", + roleBindings: "Roller", + accessControlUnavailable: "Bu bağlantı için kullanıcı ve rol yönetimi kullanılamıyor.", + accessPermissionEndpointUnavailable: "Ad alanı yetkileri geçerli hesap için kullanılamıyor. Kullanıcı ve rol bağları uyumluluk modunda görünür kalır.", + searchUsers: "Kullanıcılarda ara", + filterUsername: "Kullanıcı adını filtrele", + filterRole: "Rolü filtrele", + username: "Kullanıcı adı", + password: "Parola", + passwordUnchanged: "Geçerli parolayı korumak için boş bırakın", + nickname: "Takma ad", + roles: "Roller", + role: "Rol", + disabled: "Devre dışı", + createUser: "Kullanıcı oluştur", + editUser: "Kullanıcıyı düzenle", + resetUserPassword: "Parolayı sıfırla", + passwordResetSucceeded: "{username} için parolayı sıfırla", + passwordResetFailed: "Parola sıfırlanamadı: {message}", + currentPasswordSaved: "Kayıtlı bağlantı kimlik bilgisi güncellendi ve bağlantı yeni parolayı kullanacak.", + currentSessionPasswordUpdated: "Bellekteki bağlantı kimlik bilgisi bu oturum için güncellendi ve diske kaydedilmedi.", + currentPasswordNotSaved: "Bu bağlantı parolaları kaydetmiyor. Yeniden bağlanırken yeni parolayı girin.", + deleteUser: "Kullanıcıyı sil", + noUsers: "Kullanıcı bulunamadı", + noRoleBindings: "Rol bağı bulunamadı", + createUserTitle: "Nacos kullanıcısı oluştur", + createUserDescription: "Bu Nacos servisi için bir kullanıcı oluşturun.", + editUserTitle: "r-nacos kullanıcısını düzenle", + editUserDescription: "Kullanıcı profilini, rollerini ve ad alanı yetkilerini güncelleyin.", + resetUserTitle: "Nacos kullanıcı parolasını sıfırla", + resetUserDescription: "Bu kullanıcı için yeni bir parola belirleyin.", + userCredentialsRequired: "Kullanıcı adı ve parola zorunludur.", + deleteUserTitle: "Nacos kullanıcısını sil", + deleteUserDescription: "{username} kullanıcısı silinsin mi? Bu işlem geri alınamaz.", + rnacosUserEnabledHint: "Devre dışı bırakılan kullanıcılar r-nacos'a giriş yapamaz.", + rnacosRole0: "Yönetici", + rnacosRole0Hint: "Tam konsol yönetimi erişimi", + rnacosRole1: "Geliştirici", + rnacosRole1Hint: "Yapılandırma ve servis geliştirme erişimi", + rnacosRole2: "Ziyaretçi", + rnacosRole2Hint: "Salt okunur konsol erişimi", + namespacePrivileges: "Ad alanı yetkileri", + namespaceWhitelist: "Ad alanı izin listesi", + namespaceBlacklist: "Ad alanı yasak listesi", + namespaceListPlaceholder: "Her satıra bir ad alanı ya da virgülle ayrılmış", + namespaceSelectPlaceholder: "Ad alanlarını seçin", + namespaceSearchPlaceholder: "Ad alanlarında ara", + namespaceSelectedCount: "{count} seçildi", + namespaceRemoveSelection: "{namespace} öğesini kaldır", + noNamespacesAvailable: "Kullanılabilir ad alanı yok", + retryNamespaceList: "Tekrar dene", + assignRole: "Rol ata", + assignRoleTitle: "Nacos rolü ata", + assignRoleDescription: "Bir Nacos kullanıcısına rol bağlayın.", + roleBindingRequired: "Kullanıcı adı ve rol zorunludur.", + removeRole: "Rolü kaldır", + removeRoleTitle: "Nacos rolünü kaldır", + removeRoleDescription: "{username} kullanıcısından {role} rolü kaldırılsın mı?", + protectedRole: "Yerleşik yönetici rolü DBX üzerinden kaldırılamaz.", + close: "Kapat", + accessSearchRoles: "Rollerde ara", + accessRoleCounts: "{members} üye · {permissions} yetki", + accessNoRoles: "Rol bulunamadı", + accessUserSubtitle: "Roller ve geçerli ad alanı erişimi", + accessAssociatedRoles: "İlişkili roller", + accessAssociatedRolesHint: "Yetkiler, ilişkili her rolden devralınır.", + accessNoAssociatedRoles: "İlişkili rol yok", + accessEffectivePermissions: "Geçerli yetkiler", + accessEffectivePermissionsHint: "Her yetkiyi veren rolle birlikte birleşik erişim.", + accessAction: "Eylem", + accessSourceRole: "Kaynak rol", + accessNoEffectivePermissions: "Bu kullanıcının geçerli yetkisi yok", + accessGlobalAdministrator: "Genel yönetici", + accessNeedsRepair: "Onarım gerekiyor", + accessRoleSubtitle: "{members} ilişkili üye", + accessIncompleteRoleHint: "Bu rolün üyesi ya da ad alanı yetkisi yok. Kaydetmeden önce ad alanı yetkileri ekleyin; üyeler boş kalabilir.", + accessPermissionScope: "Yetki kapsamı", + accessPermissionScopeHint: "Bu rolün yönettiği ad alanı kuralları.", + accessAllResources: "Tüm kaynaklar", + accessAdminBypassHint: "ROLE_ADMIN, sıradan ad alanı yetki denetimlerini atlar.", + accessNoRolePermissions: "Yapılandırılmış ad alanı yetkisi yok", + accessMembers: "Üyeler", + accessMembersHint: "Şu anda bu rolle ilişkili kullanıcılar.", + accessNoMembers: "İlişkili üye yok", + accessOpenUser: "{username} kullanıcısını görüntüle", + accessOpenRole: "{role} rolünü görüntüle", + accessAdvancedPermissions: "Gelişmiş yetkiler", + accessAdvancedPermissionsHint: "Ham kurallar aynen korunur ve ad alanı düzenlemesiyle üzerine yazılmaz.", + accessRevokeRawPermission: "Ham yetkiyi geri al", + accessRevokeRawPermissionHint: "Bu, tam olarak gösterilen rol, kaynak ve eylem üçlüsünü kaldırır.", + accessSelectItem: "Dizinden bir öğe seçin", + accessCreateRole: "Rol oluştur", + accessDeleteRole: "Rolü sil", + accessReadOnly: "Salt okunur", + accessWriteOnly: "Yalnızca yazma", + accessReadWrite: "Okuma ve yazma", + accessDeletedNamespace: "silinmiş ad alanı", + accessPasswordRequired: "Yeni bir parola girin.", + accessCredentialsRequired: "Kullanıcı adı ve parola zorunludur.", + accessRoleMemberRequired: "Bir rol en az bir üye gerektirir.", + accessRolePermissionRequired: "Bir rol en az bir ad alanı yetkisi gerektirir.", + accessInlineUserRequired: "Her yeni kullanıcı bir kullanıcı adı ve parola gerektirir.", + accessNoAssignableRoles: "Eksiksiz rol yok", + accessTypeUsername: "Bu yüksek riskli hesap değişikliğini onaylamak için {value} yazın", + accessDeleteUserConfirmationLabel: "Silmeyi onaylamak için kullanıcı adının tamamını girin", + accessDeleteUserConfirmationHint: "Bu metni tam olarak girin (büyük/küçük harfe duyarlı):", + accessDeleteUserConfirmationPlaceholder: "Kullanıcı adının tamamı", + accessMembersRequiredHint: "Mevcut kullanıcıları seçin ya da buradan kullanıcı oluşturun. En az bir tane gereklidir.", + accessMembersOptionalHint: "Mevcut sıradan bir rol, ilişkili üyesi olmadan da yetkilerini koruyabilir.", + accessInlineCreateUser: "Buradan kullanıcı oluştur", + accessAdminPermissionImmutable: "Genel yönetici yetkisi Nacos'a gömülüdür ve ad alanı kuralları olarak düzenlenemez.", + accessPermissionRequiredHint: "Ad alanlarını seçin, ardından her biri için eylemi belirleyin.", + accessUnassignedNamespaces: "Atanmamış ad alanları", + accessGrantedNamespaces: "Yetki verilen ad alanları", + accessSearchNamespaces: "Ad alanı adına veya kimliğine göre ara", + accessNoUnassignedNamespaces: "Eklenebilecek ad alanı yok", + accessNoGrantedNamespaces: "Erişim vermek için ad alanlarını seçin", + accessGrantNamespaces: "Seçili ad alanlarına yetki ver", + accessRevokeNamespaces: "Seçili ad alanlarını kaldır", + accessDeleteRoleHint: "{role} rolünü silmek tüm yetkileri ve üye bağlarını kaldırır. Kısmi bir hatadan sonra başarılı silmeler geri alınmaz.", + accessTypeRole: "Rol silmeyi onaylamak için {value} yazın", + accessDeleteRoleConfirmationLabel: "Silmeyi onaylamak için rol adının tamamını girin", + accessDeleteRoleConfirmationHint: "Bu metni tam olarak girin (büyük/küçük harfe duyarlı):", + accessDeleteRoleConfirmationPlaceholder: "Rol adının tamamı", + accessOperationResult: "İşlem sonucu", + accessReenterPassword: "Yeniden denemek için parolayı tekrar girin", + accessUndoCreated: "Oluşturulan öğeleri geri al", + accessRetryFailed: "Başarısız adımları yeniden dene", + accessUserDialog: { + create: "Kullanıcı oluştur", + createHint: "Bir hesap oluşturun ve isteğe bağlı olarak mevcut rolleri ilişkilendirin.", + roles: "Kullanıcı rollerini düzenle", + rolesHint: "{username} ile ilişkili rolleri güncelleyin.", + password: "Parolayı sıfırla", + passwordHint: "{username} için yeni bir parola belirleyin.", + delete: "Kullanıcıyı sil", + deleteHint: "{username} kullanıcısını silmeden önce rol bütünlüğünü inceleyin.", + }, + accessRoleDialog: { + create: "Rol oluştur", + createHint: "Üyeleri ve ad alanı yetkilerini birlikte yapılandırın.", + edit: "Rolü düzenle", + editHint: "Değişiklikler, uzlaştırılmış bir üye ve yetki işlemleri kümesi olarak uygulanır.", + delete: "Rolü sil", + deleteHint: "Bu işlem kısmen başarılı olabilir ve otomatik olarak geri alınamaz.", + }, + accessOperationStatus: { + running: "İşlem hâlâ çalışıyor.", + partial: "Bazı adımlar başarılı oldu, bazıları ilgilenmenizi gerektiriyor.", + succeeded: "Her adım başarıyla tamamlandı.", + failed: "İşlem tamamlanmadı.", + undoing: "Oluşturulan öğeler kaldırılıyor.", + undone: "Oluşturulan öğeler kaldırıldı.", + }, + accessStep: { + createUser: "Kullanıcı oluştur", + deleteUser: "Kullanıcıyı sil", + assignRole: "Rol ilişkilendir", + removeRole: "Rol ilişkisini kaldır", + grantPermission: "Yetki ver", + revokePermission: "Yetkiyi geri al", + }, + rnacosAccessControlAuthDescription: "Kullanıcıları ve rolleri yönetmek için r-nacos konsol doğrulama kodunu girin.", + raw: "Ham", + namespace: "Ad alanı", + createNamespace: "Ad Alanı Oluştur", + editNamespace: "Ad Alanını Düzenle", + deleteNamespace: "Ad Alanını Sil", + deleteNamespaceDescription: "{name} ({id}) ad alanı silinsin mi? Yapılandırmaları ve servisleri erişilemez duruma gelebilir. Bu işlem geri alınamaz.", + creatingNamespace: "Oluşturuluyor...", + updatingNamespace: "Güncelleniyor...", + deletingNamespace: "Siliniyor...", + namespaceCreated: '"{name}" ad alanı oluşturuldu', + namespaceUpdated: '"{name}" ad alanı güncellendi', + namespaceDeleted: '"{name}" ad alanı silindi', + namespaceId: "Ad Alanı Kimliği", + namespaceIdPlaceholder: "DBX'in bir UUID üretmesi için boş bırakın", + namespaceName: "Ad Alanı Adı", + namespaceNamePlaceholder: "Bir ad alanı adı girin", + namespaceDesc: "Açıklama", + namespaceDescPlaceholder: "Varsayılan olarak ad alanı adı", + dataId: "Data ID", + group: "Grup", + format: "Biçim", + content: "İçerik", + tags: "Etiketler", + application: "Uygulama", + description: "Açıklama", + advanced: "Gelişmiş", + collapse: "Daralt", + configIdentity: "Yapılandırma kimliği", + newConfigDraft: "Yeni yapılandırma", + draft: "Taslak", + unsaved: "Kaydedilmemiş", + published: "Yayınlanan", + readOnlyState: "Salt okunur", + load: "Yükle", + save: "Kaydet", + saveAs: "Farklı kaydet", + saving: "Kaydediliyor...", + saved: "Yapılandırma kaydedildi", + createdAndLoaded: "{dataId} oluşturuldu ve yüklendi", + savedAndLoaded: "{dataId} kaydedildi ve yenilendi", + deleted: "Yapılandırma silindi", + delete: "Sil", + copy: "Kopyala", + copied: "Kopyalandı", + copyVerifyFailed: "Yazdıktan sonra pano doğrulaması başarısız oldu", + export: "Dışa Aktar", + exported: "Dışa aktarıldı", + exportedTo: "{path} konumuna dışa aktarıldı", + exportFailed: "Dışa aktarma başarısız: {message}", + contentSearch: "Tam metin arama", + contentSearchTitle: "Nacos yapılandırmalarında tam metin arama", + contentSearchDescription: "Yayımlanmış geçerli yapılandırma içeriğinde büyük/küçük harfe duyarlı, birebir arama çalıştırın. Geçmiş sürümler aranmaz.", + contentSearchPlaceholder: "Veritabanı URL'si, hesap ya da herhangi bir yapılandırma parçası", + search: "Ara", + cancel: "İptal", + currentNamespace: "Geçerli ad alanı", + allNamespaces: "Bu bağlantıdaki tüm ad alanları", + allNamespacesSearchWarning: "Tüm ad alanlarında arama yapmak çok sayıda yapılandırmayı tarayabilir. Nacos 2.x ve r-nacos üzerinde yavaş olabilir ve sunucu yükünü artırır.", + scannedCount: "{count} tarandı", + matchCount: "{count} eşleşme", + incompleteResult: "Sonuçlar eksik olabilir", + lineNumber: "Satır {line}", + noContentMatches: "Bu içeriği barındıran yapılandırma yok", + contentSearchEmptyHint: "Aramak için bir anahtar sözcük girin. Anahtar sözcükler, içerik ve alıntılar diske ya da günlüklere yazılmaz.", + searchResults: "Arama sonuçları", + searchResultsRetainedHint: "Bir sonucu içerik alanında açın. Bu sonuç kümesi, üst araç çubuğundaki Arama sonuçlarından erişilebilir kalır.", + openedSearchResult: "Açıldı", + exportSearchResults: "Sonuçları dışa aktar", + clearSearchResults: "Arama sonuçlarını temizle", + searchResultsExported: "Arama sonuçları dışa aktarıldı", + searchResultsExportedTo: "Arama sonuçları {path} konumuna dışa aktarıldı", + batchExport: "Toplu dışa aktarma", + batchImport: "Toplu içe aktarma", + copyToNamespace: "Yapılandırma eşitlemesi", + batchDelete: "Toplu silme", + batchDeleteTitle: "Seçili Nacos yapılandırmalarını sil", + batchDeleteConfirm: "Seçili {count} yapılandırma silinsin mi? Bu işlem geri alınamaz.", + batchDeleteSuccess: "{count} yapılandırma silindi", + batchDeletePartial: "{deleted} yapılandırma silindi; {failed} tanesi başarısız oldu.", + batchDeleteInterrupted: "Toplu silme, {deleted} yapılandırma silindikten sonra durdu.", + configPageSize: "Sayfa başına", + selectedCount: "{count} seçildi", + retryConnectionInfo: "Bağlantı bilgisi yoklamasını yeniden dene", + resizeColumn: "Sütunu yeniden boyutlandırmak için sürükleyin", + visibleColumns: "Görünür sütunlar", + configListGroup: "Grup", + configListApplication: "Uygulama", + configListFormat: "Biçim", + selectCurrentPage: "Geçerli sayfayı seç", + selectConfigForBatch: "{dataId} yapılandırmasını seç", + batchExportTitle: "Nacos yapılandırmalarını toplu dışa aktar", + batchExportDescription: "Nacos konsoluyla uyumlu bir ZIP oluşturun. Şifresi çözülmüş düz metin yapılandırma içerir ve güvenli biçimde saklanmalıdır.", + batchImportTitle: "Nacos yapılandırmalarını toplu içe aktar", + batchImportDescription: "Arşivi güvenle ayrıştırın ve her öğeyi geçerli ad alanına yayımlamadan önce çakışmaları önizleyin.", + batchCopyTitle: "Yapılandırmaları başka bir ad alanına eşitle", + batchCopyDescription: "Eşitleme tek yönlü kopyalama kullanır ve kaynak yapılandırmaları asla silmez ya da değiştirmez. Hedefteki çakışmalar seçili politikayı kullanır.", + exportScope: "Yapılandırma kapsamı", + selectedConfigs: "Seçili yapılandırmalar ({count})", + filteredConfigs: "Geçerli filtreyle eşleşenlerin tümü (tahminen {count})", + namespaceAllConfigs: "Bu ad alanındaki tüm yapılandırmalar", + importArchive: "Nacos ZIP arşivi", + noArchiveSelected: "ZIP seçilmedi", + chooseZip: "ZIP seç", + importSensitiveWarning: "Uyumlu bir ZIP; düz metin veritabanı parolaları, anahtarlar ve başka gizli bilgiler içerebilir. Yalnızca güvendiğiniz arşivleri içe aktarın.", + targetConnection: "Hedef bağlantı", + chooseTargetConnection: "Bir hedef Nacos bağlantısı seçin", + noTargetConnections: "Yazılabilir Nacos bağlantısı yok. Bir tane ekleyin ya da hedef bağlantının salt okunur ayarını kaldırın.", + targetNamespace: "Hedef ad alanı", + chooseTargetNamespace: "Başka bir ad alanı seçin", + targetGroup: "Hedef grup (isteğe bağlı)", + targetGroupPlaceholder: "Kaynak grupla aynı", + targetDataIds: "Hedef Data ID'ler (isteğe bağlı)", + targetDataIdsHint: "Seçili yapılandırmalar tek tek yeniden adlandırılabilir. Kaynak Data ID'yi korumak için alanı boş bırakın.", + copyKeepsSource: "Eşitleme tek yönlü kopyalama kullanır. Kaynak ad alanındaki yapılandırmalar değişmez.", + conflictPolicy: "Çakışma politikası", + policyABORT: "Çakışmada durdur", + policyABORTHint: "Önizleme bir çakışma bulursa hiçbir şey yazma", + policySKIP: "Çakışmaları atla", + policySKIPHint: "Yalnızca hedefte bulunmayan yapılandırmaları oluştur", + policyOVERWRITE: "Hedefin üzerine yaz", + policyOVERWRITEHint: "Aynı anahtarlı hedef yapılandırmaları kaynakla değiştir", + overwriteWarning: "Üzerine yazmak, yayımlanmış hedef yapılandırmaları değiştirir ve bir onay daha gerektirir.", + overwriteConfirm: "Hedef ad alanındaki çakışan tüm yapılandırmaların üzerine yazılsın mı? Bu otomatik olarak geri alınamaz.", + preview: "Önizleme", + apply: "Uygula", + exportZip: "ZIP dışa aktar", + previewTotal: "toplam {count}", + previewCreated: "{count} yeni", + previewConflicts: "{count} çakışma", + previewInvalid: "{count} geçersiz", + previewExpired: "Önizleme güncel değil. Önizlemeyi yeniden çalıştırın.", + batchFinished: "Eşitleme tamamlandı: {written} yazıldı", + batchAborted: "Eşitleme çalıştırılmadı: bir çakışma tüm yazmaları engelledi", + batchPartial: "Toplu işlem kısmen tamamlandı; başarısız öğeleri inceleyin", + batchCancelled: "İptal edildi", + batchCancelledSummary: "Eşitleme iptal edildi: {processed}/{total} işlendi", + batchFailedSummary: "Eşitleme kısmen tamamlandı: {written} yazıldı, {failed} başarısız", + batchPartialSummary: "Eşitleme eksik: {processed}/{total} işlendi", + batchFinishedWithSkipped: "Eşitleme tamamlandı: {written} yazıldı, {skipped} atlandı", + batchStatusCreate: "Oluşturulacak", + batchStatusConflict: "Çakışma", + batchStatusInvalid: "Geçersiz", + batchStatusCreated: "Oluşturuldu", + batchStatusOverwritten: "Üzerine yazıldı", + batchStatusSkipped: "Atlandı", + batchStatusFailed: "Başarısız", + batchStatusAborted: "Çalıştırılmadı", + batchStatusExported: "Dışa aktarıldı", + batchStatusUnknown: "{status}", + reportWritten: "{count} yazıldı", + reportCreated: "{count} oluşturuldu", + reportOverwritten: "{count} üzerine yazıldı", + reportSkipped: "{count} atlandı", + reportFailed: "{count} başarısız", + reportItems: "Yapılandırma ayrıntıları ({count})", + history: "Geçmiş", + configHistory: "Yapılandırma geçmişi", + historyUnavailable: "Bu bağlantı için yapılandırma geçmişi kullanılamıyor. Etkinleştirmek için r-nacos konsol URL'sini yapılandırıp yeniden bağlanın.", + historyDisabled: "Bu bağlantı için yapılandırma geçmişi devre dışı.", + historyConsoleUrlMissing: "Yapılandırma geçmişi bir r-nacos konsol adresi gerektiriyor.", + historyConsoleCredentialsMissing: "Yapılandırma geçmişi r-nacos konsol kimlik bilgileri gerektiriyor.", + rnacosConsoleAuthTitle: "r-nacos konsol doğrulaması", + rnacosConsoleAuthDescription: "Yapılandırma türlerini, açıklamalarını ve geçmişini okumak için r-nacos konsol doğrulama kodunu girin.", + rnacosCaptchaLabel: "Doğrulama kodu", + rnacosCaptchaPlaceholder: "Yukarıda gösterilen kodu girin", + rnacosCaptchaRequired: "Doğrulama kodu zorunludur.", + rnacosCaptchaUnavailable: "r-nacos bir doğrulama görseli döndürmedi.", + rnacosRefreshCaptcha: "Kodu yenile", + rnacosConsoleAuthSubmit: "Doğrula ve devam et", + historyDetail: "Geçmiş ayrıntısı", + historyCompareTitle: "Geçmiş Sürüm Karşılaştırması", + currentPublishedContent: "Geçerli yayımlanmış içerik:", + historyVersionContent: "Geçmiş sürüm içeriği:", + updatedAt: "Güncellenme zamanı", + operationType: "İşlem", + operator: "Operator", + view: "Görünüm", + compare: "Karşılaştır", + rollback: "Rollback", + loadingHistory: "Geçmiş yükleniyor...", + noHistory: "Geçmiş sürüm yok", + noHistoryHint: "Bu yapılandırma yeni yayımlandıysa yenileyin. Bazı Nacos sürümleri geçmiş API'lerini sunmayabilir.", + historyCreate: "Oluştur", + historyUpdate: "Güncelle", + historyDelete: "Sil", + historyRollback: "Rollback", + confirmRollbackTitle: "Nacos yapılandırmasını geri al", + confirmRollbackMessage: "Bu, geçerli yapılandırmayı seçili geçmiş sürüme geri alacak.", + rollbackSuccess: "Yapılandırma geri alındı", + publish: "Yayınla", + validate: "Doğrula", + validationPassed: "Yapılandırma sözdizimi geçerli", + validationErrorTitle: "Yapılandırma sözdizimi hatası", + validationErrorDescription: "Bu yapılandırmayı yayımlamadan önce sözdizimi hatalarını düzeltin.", + validationLine: "Satır: {line}", + validationColumn: "Sütun: {column}", + validationLocate: "Hatayı bul", + dataIdRequired: "Data ID zorunludur", + allGroups: "Tüm gruplar", + noConfigs: "Yapılandırma yok", + selectConfig: "Bir yapılandırma seçin veya oluşturun", + noServices: "Servis yok", + selectService: "Bir servis seçin", + service: "Servis", + instances: "Örnekler", + instanceCount: "{count} örnek", + refresh: "Yenile", + address: "Adres", + cluster: "Küme", + weight: "Ağırlık", + state: "Durum", + actions: "İşlemler", + query: "Sorgu", + body: "Gövde", + response: "Yanıt", + template: "Şablon", + configDiffTitle: "Yapılandırma İçeriği Karşılaştırması", + inlineCompare: "Satır içi karşılaştırma", + currentVersionContent: "Geçerli resmî sürüm:", + publishVersionContent: "Bu yayının içeriği:", + confirmSaveTitle: "Nacos yapılandırma değişikliklerini incele", + confirmSaveMessage: "Bu yapılandırma değişikliği kaydedilsin mi? +{added} / -{removed} satır değişti.", + confirmDeleteTitle: "Nacos yapılandırmasını sil", + confirmDeleteMessage: "Bu, seçili yapılandırmayı Nacos'tan kaldırır.", + confirmInstanceTitle: "Nacos örneğini güncelle", + confirmInstanceMessage: "Hedef servis örneğinin durumunu onaylayın.", + confirmRawTitle: "Değişiklik yapan Ham API isteği gönder", + confirmRawMessage: "Bu Ham API isteği Nacos durumunu değiştirebilir.", + rawTemplate: { + serverState: "Sunucu durumu", + namespaceList: "Ad alanı listesi", + configDetail: "Yapılandırma ayrıntısı", + serviceList: "Servis listesi", + instanceList: "Örnek listesi", + }, + healthy: "Sağlıklı", + unhealthy: "Sağlıksız", + enabled: "Etkin", + offline: "Çevrimdışı", + ephemeral: "Geçici", + persistent: "Kalıcı", + enable: "Etkinleştir", + disable: "Devre dışı bırak", + markHealthy: "Sağlıklı", + markUnhealthy: "Sağlıksız", + send: "Gönder", + total: "toplam {count}", + prev: "Önceki", + next: "İleri", + test: "Test Et", + readOnly: "Salt okunur", + nacosConnectionPlan: "Bağlantı planı", + nacosConnectionPlanDescription: "Servis uygulamasını ve API sürümünü seçin.", + nacosApiPlane: "Nacos 3 API", + nacosApiPlaneAdmin: "Admin API", + nacosApiPlaneAdminHint: "Önerilen · tam yönetim", + nacosApiPlaneConsole: "Console API", + nacosApiPlaneConsoleHint: "Kısıtlı · yalnızca konsol erişimiyle çalışır", + nacosServiceAddress: "Servis adresi", + nacosServiceAddressHint: "Servis adresini girin. Varsayılan port 8848'dir, örneğin http://host:8848/nacos.", + nacosConsoleServiceAddressHint: "Console API adresini girin. Varsayılan port 8080'dir, örneğin http://host:8080.", + nacosManagedNamespaces: "Yönetilen ad alanı kimlikleri", + nacosManagedNamespacesNameOrId: "Yönetilen ad alanı adları veya kimlikleri", + nacosManagedNamespacesPlaceholder: "Örneğin: public, team-a", + nacosManagedNamespacesIdPlaceholder: "Örneğin: public, f8b8c4e2-8195-4041-adb2-683a8259384b", + nacosManagedNamespacesHint: "Bu sıradan kullanıcının erişebileceği ad alanı kimliklerini virgülle ya da satır sonuyla ayırarak girin. Bağlantı testi her kimlik için yapılandırma ve servis okuma erişimini doğrular.", + nacosOrdinaryAccount: "Sıradan kullanıcı", + nacosOrdinaryAccountHint: "Yukarıdaki hesap sıradan bir kullanıcıysa bu seçeneği etkinleştirip yetkili olduğu ad alanlarını seçin; aksi hâlde bağlantı düzgün çalışmaz.", + nacosManagedNamespacesSeparator: "Virgül veya satır sonuyla ayrılmış", + nacosOrdinaryNamespacesRequired: "Bu sıradan kullanıcının yönetmesine izin verilen en az bir ad alanı kimliği girin.", + nacosManagedNamespacesRequired: "Bu Nacos sıradan kullanıcısı ad alanlarını veya yetkilendirme verilerini listeleyemiyor. Yönetmesine izin verilen en az bir ad alanı kimliği girip tekrar deneyin.", + nacosManagedNamespaceAccessDenied: "Şu ad alanları yapılandırma veya servis okuma erişimi denetimini geçemedi: {detail}", + nacosNamespaceAccessScope: "Ad alanı erişim kapsamı", + nacosNamespaceAccessScopeHint: "Önce erişilebilir ad alanlarını algılayın. Listeleme kullanılamıyorsa doğrulanmış ad alanı kimliklerini elle girin.", + nacosNamespaceAccessAutomatic: "Otomatik algıla", + nacosNamespaceAccessManual: "Elle gir", + nacosDetectAccessibleNamespaces: "Erişilebilir ad alanlarını algıla ve seç", + nacosDetectAccessibleNamespacesHint: "DBX, {name} için ad alanlarını sunmadan önce yapılandırma ve servis okuma erişimini doğrular.", + nacosV3AdminNamespaceScopeHint: "Nacos 3 Admin API'leri normalde bir yönetici hesabı gerektirir. Kısıtlı bir hesap ve ad alanı erişim kapsamı için Console API düzlemini kullanın.", + nacosV3AdminManagedNamespacesHint: "Bu, Nacos 3 Admin API'sini kullanır (normalde 8848 portu). Sıradan bir kullanıcı görünen adları değil, ad alanı kimliklerini girmelidir. Kimliği Nacos Konsolu'ndaki ad alanı ayrıntılarından ya da rol-yetki kaynaklarından kopyalayın.", + nacosV3ConsoleManagedNamespacesHint: "Bu, Nacos 3 Console API'sini kullanır (normalde 8080 portu). Bir ad alanı adı ya da kimliği girin; DBX dizini okuyabildiğinde adı gerçek kimliğine dönüştürür.", + rnacosNamespaceAccessScopeHint: "r-nacos, konsol profili kullanılabilir olduğunda ad alanı erişimini geçerli kullanıcının ad alanı yetkilerinden türetir.", + nacosAuth: "Kimlik Doğrulama", + nacosAuthHint: "Bu kimlik bilgileri bağlantı testleri ve günlük yönetim için kullanılır.", + nacosUsernamePassword: "Kullanıcı adı / parola", + nacosAdvancedHint: "Gelişmiş sekmesinde daha fazla bağlantı seçeneği bulunur.", + nacosAdvancedHintDescription: "Prometheus metriklerini, sayfa boyutunu, TLS doğrulamasını ve r-nacos uzantılarını orada yapılandırın.", + nacosGoAdvanced: "Gelişmiş'e git", + nacosV3ConsolePortWarning: "8080, varsayılan Nacos 3 Web Konsolu portudur. Servis yönetimi için 8848 portundaki Sunucu / Yönetim API adresini kullanın, örneğin http://127.0.0.1:8848/nacos.", + nacosV3AdminPortWarning: "8848 normalde Admin API portudur. Console API modu için konsol adresini kullanın, normalde http://127.0.0.1:8080.", + nacosAdvancedTitle: "Nacos gelişmiş bağlantı seçenekleri", + nacosAdvancedDescription: "Bu ayarların güvenli varsayılanları vardır ve genellikle yalnızca özel dağıtımlar, metrikler ya da r-nacos uzantıları için değiştirilmesi gerekir.", + nacosContextPathHint: "Seçili profilin varsayılanını kullanmak için boş bırakın. Sunucu kökünü açıkça kullanmak için / girin ya da /nacos gibi bir ters proxy öneki verin.", + nacosPageSizeHint: "Yapılandırma ve servis listeleri için kullanılır; sayfa başına 1–500 öğe.", + nacosMetricsHint: "Metrikleri servis adresinden otomatik sorgula; metrik uç noktası farklıysa özel bir URL seçin.", + nacosRnacosExtension: "r-nacos konsol özellikleri", + nacosRnacosExtensionHint: "Konsol adresi ve kimlik bilgileri; kullanıcı yönetimini, yapılandırma ayrıntılarını ve devre dışı örnek yönetimini etkinleştirir. Yapılandırma geçmişi aşağıda ayrıca denetlenir.", + nacosEnabled: "Etkin", + nacosRnacosConsoleUrlHint: "Genellikle http://host:10848. r-nacos kullanıcı yönetimi ve diğer konsol özellikleri için gereklidir.", + nacosRnacosDisabledHint: "Yapılandırma geçmişi devre dışı. Konsol adresi ve kimlik bilgileri yapılandırıldığında kullanıcı yönetimi kullanılabilir kalır.", + nacosTlsHint: "Yalnızca güvendiğiniz, kendinden imzalı bir HTTPS sertifikası için etkinleştirin.", + nacosVisibleNamespacesTitle: "Görünür ad alanlarını seçin", + nacosVisibleNamespacesDetailLabel: "Görünür ad alanları", + nacosVisibleNamespacesDetailActionLabel: '"{connection}" için görünür ad alanlarını yapılandır', + nacosVisibleNamespacesDescription: "{name} için kenar çubuğunda gösterilecek ad alanlarını seçin.", + nacosSearchNamespaces: "Ad alanlarında ara...", + nacosSelectedNamespaces: "{selected}/{total} seçildi", + nacosSelectAll: "Tümünü seç", + nacosClearSelection: "Temizle", + nacosShowAll: "Tümünü göster", + nacosNamespaceSelectionRequired: "En az bir ad alanı seçin ya da filtreyi temizlemek için “Tümünü göster”i kullanın.", + nacosLoadNamespacesFailed: "Ad alanları yüklenemedi: {message}", + capabilityReadOnly: "Bu bağlantı salt okunurdur.", + capabilityReadOnlyWrite: "Bu uygulama şu anda yalnızca okuma işlemlerini sunar; yazma uyumluluğu doğrulanmadı.", + capabilityVersionUnsupported: "Bu Nacos sürümü bu işlemi desteklemiyor.", + capabilityEndpointUnavailable: "Bu bağlantı yönetim uç noktasını sağlamıyor.", + capabilityNotVerified: "Bu işlem, geçerli uygulama için doğrulanmadı.", + capabilityHeaderReadOnly: "Bu bağlantı salt okunurdur; servis ve örnek yazma işlemleri devre dışıdır.", + protectionTriggeredDescription: "Sağlıklı örnek oranı yapılandırılan eşiğin altında olduğu için koruma modu devreye girdi. Nacos, boş liste yerine sağlıksız örnekleri de döndürebilir.", + instanceEphemeral: "Geçici örnek", + instancePersistent: "Kalıcı örnek", + instanceUnknown: "Bilinmeyen örnek türü", + instanceConfirmDetails: "Ad alanı: {namespace}\nServis: {service}\nAdres: {ip}:{port}\nKüme: {cluster}\nTür: {type}", + serviceUpdateUnconfirmed: "Servis güncellemesi gönderildi, ancak Nacos hedef durumu döndürmedi. Doğrulamak için servis ayrıntılarını yenileyin.", + invalidWeight: "Ağırlık, 0'dan büyük veya 0'a eşit sonlu bir sayı olmalıdır.", + invalidWeightInput: "0'dan büyük veya 0'a eşit sonlu bir ağırlık girin.", + metadataLabel: "Meta Veri", + viewMetadataTable: "Tabloyu görüntüle", + instanceMetadataTitle: "Örnek meta verisi", + metadataKey: "Anahtar", + metadataValue: "Değer", + selectorLabel: "Seçici", + instanceUpdateUnconfirmed: "Örnek güncellemesi gönderildi, ancak Nacos yeni durumu döndürmedi. Sunucu durumunu denetlemek için yenileyin.", + instanceRegisterUnconfirmed: "Örnek kaydı gönderildi, ancak Nacos örneği döndürmedi. Doğrulamak için yenileyin.", + instanceDeregisterUnconfirmed: "Örnek kaydı silme gönderildi, ancak Nacos örneği hâlâ döndürüyor. Doğrulamak için yenileyin.", + serviceValidation: "Servis adı ve grup zorunludur; koruma eşiği 0 ile 1 arasında olmalıdır.", + serviceHasInstances: "Servis hâlâ örnek içeriyor ve silinemez.", + serviceDeleteUnconfirmed: "Servis silme gönderildi, ancak Nacos servisi hâlâ döndürüyor. Yeniden yükleyip doğrulayın.", + instanceValidation: "Geçerli bir IP, port ve negatif olmayan bir ağırlık girin.", + protectionTriggered: "Koruma modu devreye girdi", + loadedInstances: "{count} yüklenmiş örnek", + filterInstanceCluster: "Örnek kümesini filtrele", + filter: "Filtre", + clear: "Temizle", + serviceSettings: "Servis ayarları", + serviceDetails: "Servis ayrıntıları", + expand: "Genişlet", + instanceStat: "Örnekler", + healthyInstances: "Sağlıklı örnekler", + clusterCount: "Kümeler", + protectThreshold: "Koruma eşiği", + itemCount: "{count} öğe", + temporaryService: "Geçici servis", + loadingServiceDetail: "Servis ayrıntıları yükleniyor…", + refreshDetail: "Ayrıntıları yenile", + noMetadata: "Meta veri yok", + noInstances: "Örnek yok", + createNacosService: "Nacos servisi oluştur", + editNacosService: "Nacos servisini düzenle", + manageServiceMetadata: "Servis meta verisini ve koruma eşiğini yönetin.", + serviceName: "Servis adı", + groupName: "Grup", + thresholdExample: "Örneğin 0.5", + jsonObject: "JSON nesnesi", + optionalJsonObject: "JSON nesnesi, isteğe bağlı", + jsonObjectValidation: " bir JSON nesnesi olmalıdır.", + registerPersistentInstance: "Kalıcı örnek kaydet", + persistentInstanceHint: "DBX geçici örneklerin kalp atışını sürdüremediği için bunları kaydetmez.", + ipAddress: "IP adresi", + port: "Port", + instanceEditorTitle: "Örneği düzenle", + deleteNacosService: "Nacos servisini sil", + confirmEmptyServiceDelete: "Bu boş servis silinsin mi? Bu işlem geri alınamaz.", + deregisterNacosInstance: "Nacos örnek kaydını sil", + confirmInstanceDeregister: "Bu örnek geçerli servisten çıkarılsın mı?", + edit: "Düzenle", + restore: "Geri yükle", + registerInstance: "Örnek kaydet", + deregister: "Kaydı sil", + }, + doltVersionControl: { + title: "Dolt Sürüm Denetimi", + open: "Sürüm Denetimi", + branches: "Dallar", + branchTreeView: "Ağaç görünümü", + branchFlatView: "Düz görünüm", + expandBranch: "Dal grubunu genişlet", + collapseBranch: "Dal grubunu daralt", + tags: "Etiketler", + filterRefs: "Dalları ve etiketleri filtrele", + noBranches: "Dal yok", + noTags: "Etiket yok", + unknownBranch: "Bilinmeyen dal", + switchDatabase: "Veritabanını değiştir", + switchBranch: "Dalı değiştir", + workingTree: "Çalışma ağacı", + stagedChanges: "Hazırlanan {count}", + unstagedChanges: "Hazırlanmayan {count}", + uncommitted: "Uygulanmamış", + stageAllChanges: "Tüm değişiklikleri hazırla", + commitWorkingTree: "Çalışma ağacını uygula", + commitWorkingTreeDescription: "Çalışma ağacı değişikliklerini hazırlayıp uygulamak için bir commit mesajı girin.", + commitMessage: "Commit mesajı", + commitMessagePlaceholder: "Örneğin: Sipariş durumunu düzelt", + commitMessageRequired: "Bir commit mesajı girin.", + changesStaged: "Çalışma ağacı değişiklikleri hazırlandı", + workingTreeCommitted: "Çalışma ağacı değişiklikleri uygulandı", + comparison: "Geçerli karşılaştırma", + swapComparison: "Karşılaştırma taraflarını değiştir", + noRevision: "Revizyon yok", + compareCurrent: "Geçerli dalla karşılaştır", + checkoutBranch: "Dala geç", + branchCheckedOut: "{name} dalına geçildi", + graph: "Grafik", + commit: "Commit", + author: "Yazar", + date: "Tarih", + loadingGraph: "Commit grafiği yükleniyor...", + noCommits: "Commit bulunamadı", + noMessage: "Commit mesajı yok", + changedTables: "Değişen tablolar", + loadingDiff: "Revizyon farkları yükleniyor...", + noChanges: "Bu revizyonlar arasında tablo değişikliği bulunamadı.", + rowDiff: "Satır farkları", + rows: "{count} satır", + loadingRows: "Satır farkları yükleniyor...", + selectTable: "Değişen bir tablo seçin", + noRowChanges: "Satır değişikliği döndürülmedi. Değişiklik yalnızca şemayla ilgili olabilir.", + createBranch: "Dal oluştur", + createTag: "Etiket oluştur", + mergeBranch: "Dalı birleştir", + deleteBranch: "Dalı sil", + deleteTag: "Etiketi sil", + createBranchDescription: "Seçili revizyondan ya da geçerli daldan bir dal oluşturun.", + createTagDescription: "Seçili revizyondan ya da geçerli daldan bir etiket oluşturun.", + mergeBranchDescription: "{name} dalını etkin dalla birleştir.", + deleteBranchDescription: "{name} dalını sil. Bu işlem geri alınamaz.", + deleteTagDescription: "{name} etiketini sil. Bu işlem geri alınamaz.", + branchName: "Dal adı", + branchNamePlaceholder: "feature/my-branch", + tagName: "Etiket adı", + tagNamePlaceholder: "v1.0.0", + branchSource: "Kaynak revizyon: {revision}", + branchNameRequired: "Bir dal adı girin.", + tagNameRequired: "Bir etiket adı girin.", + branchCreated: "{name} dalı oluşturuldu", + branchMerged: "{name} dalı birleştirildi", + branchDeleted: "{name} dalı silindi", + tagCreated: "{name} etiketi oluşturuldu", + tagDeleted: "{name} etiketi silindi", + copyHash: "Commit hash'ini kopyala", + revertCommit: "Bu commit'i geri al", + hardResetToCommit: "Geçerli dalı bu commit'e hard reset yap", + revertCommitTitle: "Commit'i geri al", + hardResetTitle: "Geçerli dala hard reset uygula", + revertCommitDescription: "{hash} commit'inin getirdiği değişiklikleri tersine çeviren yeni bir commit oluştur.", + hardResetDescription: "{branch} dalını {hash} commit'ine hard reset yap. Sonraki commit'ler ile hazırlanmış veya hazırlanmamış tüm çalışma ağacı değişiklikleri geçerli durumdan kaldırılacak.", + highRiskConfirmation: "Bu yüksek riskli bir işlemdir. Devam etmeden önce hedef commit'i doğrulayın.", + revertCommitComplete: "{hash} commit'i geri alındı", + hardResetComplete: "Geçerli dal {hash} commit'ine hard reset yapıldı", + discardWorkingTree: "Çalışma ağacı değişikliklerinden vazgeç", + discardWorkingTreeDescription: "Hazırlanmış ve hazırlanmamış tüm çalışma ağacı değişikliklerinden vazgeç. Bu işlem geri alınamaz.", + discardWorkingTreeComplete: "Çalışma ağacı değişikliklerinden vazgeçildi", + sqlPreview: "SQL önizlemesi", + hashCopied: "Commit hash'i kopyalandı", + copyCurrentValue: "Geçerli değeri kopyala", + copyBeforeValue: "Önceki değeri kopyala", + copyAfterValue: "Sonraki değeri kopyala", + cellValueCopied: "Hücre değeri kopyalandı", + viewCellDiff: "Fark ayrıntılarını görüntüle", + cellDiffTitle: "{table}.{column} farkı", + cellDiffFormat: "Karşılaştırma biçimi", + cellDiffFormatAuto: "Otomatik", + cellDiffFormatRaw: "Ham", + cellDiffDetectedFormat: "Algılanan: {format}", + cellDiffFormatFailed: "Biçimlendirme başarısız; ham değer gösteriliyor: {message}", + cellNullValue: "NULL", + cellRowMissing: "Satır mevcut değil", + cellColumnMissing: "Sütun mevcut değil", + }, + codeSnapshot: { + title: "Kod Anlık Görüntüsü", + close: "Kapat", + copy: "Panoya Kopyala", + save: "PNG Kaydet", + copied: "Kopyalandı", + saved: "Kaydedildi", + failed: "Başarısız: {message}", + take: "Kodun Anlık Görüntüsü", + theme: "Tema", + themeLight: "Açık", + themeDark: "Koyu", + windowControls: "Pencere Denetimleri", + lineNumbers: "Satır Numaraları", + titleLabel: "Başlık (isteğe bağlı)", + titlePlaceholder: "örn. Sorgu örneği", + }, + gridSnapshot: { + open: "Seçili hücrelerin ekran görüntüsü", + openRows: "Seçili satırların ekran görüntüsü", + openColumns: "Seçili sütunların ekran görüntüsü", + title: "Izgara Anlık Görüntüsü", + copied: "Kopyalandı", + saved: "Kaydedildi", + failed: "Başarısız: {message}", + reset: "Sıfırla", + rows: "{count} satır", + columns: "{count} sütun", + cells: "{count} hücre", + appearance: "Görünüm", + layout: "Düzen", + fieldMetadata: "Alan Meta Verisi", + theme: "Tema", + windowControls: "Pencere Denetimleri", + fieldNames: "Alan Adları", + columnTypes: "Sütun Türleri", + columnDetails: "Alan Açıklamaları", + rowNumbers: "Satır Numaraları", + wrapCells: "Hücre İçeriğini Kaydır", + transpose: "Devrik", + compact: "Sıkışık Hücreler", + titleLabel: "Başlık (isteğe bağlı)", + titlePlaceholder: "örn. Sorgu sonucu", + }, +}); diff --git a/apps/desktop/src/lib/__tests__/connection/zookeeperConnectionDialog.spec.ts b/apps/desktop/src/lib/__tests__/connection/zookeeperConnectionDialog.spec.ts index 76ec7dde95..981069b93b 100644 --- a/apps/desktop/src/lib/__tests__/connection/zookeeperConnectionDialog.spec.ts +++ b/apps/desktop/src/lib/__tests__/connection/zookeeperConnectionDialog.spec.ts @@ -4,7 +4,7 @@ import { describe, expect, it } from "vitest"; const dialogSource = readFileSync(new URL("../../../components/connection/ConnectionDialog.vue", import.meta.url), "utf8"); const enSource = readFileSync(new URL("../../../i18n/locales/en.ts", import.meta.url), "utf8"); const zhCnSource = readFileSync(new URL("../../../i18n/locales/zh-CN.ts", import.meta.url), "utf8"); -const fallbackLocaleSources = ["es", "it", "ja", "ko", "pt-BR", "zh-TW"].map((locale) => readFileSync(new URL(`../../../i18n/locales/${locale}.ts`, import.meta.url), "utf8")); +const fallbackLocaleSources = ["es", "it", "ja", "ko", "pt-BR", "tr", "zh-TW"].map((locale) => readFileSync(new URL(`../../../i18n/locales/${locale}.ts`, import.meta.url), "utf8")); describe("ZooKeeper connection dialog", () => { it("binds the existing Select component to the ZooKeeper auth_scheme helper", () => { diff --git a/apps/desktop/src/lib/app/localeOptions.ts b/apps/desktop/src/lib/app/localeOptions.ts index ac877f51ee..4843e4bb97 100644 --- a/apps/desktop/src/lib/app/localeOptions.ts +++ b/apps/desktop/src/lib/app/localeOptions.ts @@ -7,6 +7,7 @@ export const LOCALE_OPTIONS: { value: Locale; flag: string; label: string }[] = { value: "ja", flag: "🇯🇵", label: "日本語" }, { value: "ko", flag: "🇰🇷", label: "한국어" }, { value: "pt-BR", flag: "🇧🇷", label: "Português" }, + { value: "tr", flag: "🇹🇷", label: "Türkçe" }, { value: "zh-CN", flag: "🇨🇳", label: "简体中文" }, { value: "zh-TW", flag: "繁", label: "繁體中文" }, ]; diff --git a/apps/desktop/src/lib/settings/__tests__/settingsSearch.spec.ts b/apps/desktop/src/lib/settings/__tests__/settingsSearch.spec.ts index 26ca3760e8..904af27c59 100644 --- a/apps/desktop/src/lib/settings/__tests__/settingsSearch.spec.ts +++ b/apps/desktop/src/lib/settings/__tests__/settingsSearch.spec.ts @@ -101,7 +101,7 @@ describe("settings search", () => { }); it("defines the WebDAV Web-runtime notice in every supported locale", () => { - for (const locale of ["zh-CN", "zh-TW", "en", "es", "it", "ja", "ko", "pt-BR"]) { + for (const locale of ["zh-CN", "zh-TW", "en", "es", "it", "ja", "ko", "pt-BR", "tr"]) { const source = readFileSync(new URL(`../../../i18n/locales/${locale}.ts`, import.meta.url), "utf8"); expect(source, locale).toContain("syncWebDavWebDescription:"); } @@ -212,7 +212,7 @@ describe("settings search", () => { }); it("defines the performance section title in every supported locale", () => { - for (const locale of ["zh-CN", "zh-TW", "en", "es", "it", "ja", "ko", "pt-BR"]) { + for (const locale of ["zh-CN", "zh-TW", "en", "es", "it", "ja", "ko", "pt-BR", "tr"]) { const source = readFileSync(new URL(`../../../i18n/locales/${locale}.ts`, import.meta.url), "utf8"); expect(source, locale).toContain("performanceSection:"); } diff --git a/crates/dbx-core/assets/docs-export.js b/crates/dbx-core/assets/docs-export.js index 64cc1d1ad9..71d5138174 100644 --- a/crates/dbx-core/assets/docs-export.js +++ b/crates/dbx-core/assets/docs-export.js @@ -61,4 +61,4 @@ ${this.parser.parse(e)} ${e} `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+` `}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${ec(e,!0)}`}br(e){return`
`}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=tc(e);if(i===null)return r;e=i;let a=``+r+``,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=tc(e);if(i===null)return ec(n);e=i;let a=`${ec(n)}`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:ec(e.text)}},fc=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},pc=class e{options;renderer;textRenderer;constructor(e){this.options=e||Ho,this.options.renderer=this.options.renderer||new dc,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new fc}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new dc(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new lc(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new mc;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];t[r]=mc.passThroughHooks.has(n)?e=>{if(this.defaults.async&&mc.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return uc.lex(e,t??this.defaults)}parser(e,t){return pc.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?uc.lex:uc.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?pc.parse:pc.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?uc.lex:uc.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?pc.parse:pc.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=` -Please report this to https://github.com/markedjs/marked.`,e){let e=`

An error occurred:

`+ec(n.message+``,!0)+`
`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},gc=new hc;function $(e,t){return gc.parse(e,t)}$.options=$.setOptions=function(e){return gc.setOptions(e),$.defaults=gc.defaults,Uo($.defaults),$},$.getDefaults=Vo,$.defaults=Ho,$.use=function(...e){return gc.use(...e),$.defaults=gc.defaults,Uo($.defaults),$},$.walkTokens=function(e,t){return gc.walkTokens(e,t)},$.parseInline=gc.parseInline,$.Parser=pc,$.parser=pc.parse,$.Renderer=dc,$.TextRenderer=fc,$.Lexer=uc,$.lexer=uc.lex,$.Tokenizer=lc,$.Hooks=mc,$.parse=$,$.options,$.setOptions,$.use,$.walkTokens,$.parseInline,pc.parse,uc.lex;function _c(e){return String(e??``).replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}var vc=/^(https?:|mailto:)/i;function yc(e){let t=String(e??``).trim();return t===``||/^[/\\]{2}/.test(t)?null:t.startsWith(`#`)||t.startsWith(`/`)||t.startsWith(`./`)||t.startsWith(`../`)||vc.test(t)?t:null}var bc=new hc({renderer:{html({text:e}){return _c(e)},link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=yc(e);if(i===null)return r;let a=t?` title="${_c(t)}"`:``;return`${r}`},image({href:e,title:t,text:n}){let r=yc(e);if(r===null)return _c(n);let i=t?` title="${_c(t)}"`:``;return`${_c(n)}`}}});function xc(e){return e===null||e.trim()===``?``:bc.parse(e)}var Sc={class:`text-sm text-muted-foreground`},Cc=[`title`,`innerHTML`],wc=L({__name:`NoteEditor`,props:{modelValue:{},readonly:{type:Boolean},translate:{type:Function}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=t,i=P(!1),a=P(``),o=P(null);async function s(){n.readonly||(a.value=n.modelValue,i.value=!0,await hn(),o.value?.focus())}function c(){i.value=!1,a.value!==n.modelValue&&r(`update:modelValue`,a.value)}function l(){a.value=n.modelValue,i.value=!1}return(t,n)=>(U(),W(`div`,Sc,[i.value?On((U(),W(`textarea`,{key:0,ref_key:`input`,ref:o,"onUpdate:modelValue":n[0]||=e=>a.value=e,rows:`4`,class:`w-full resize-y rounded border border-border bg-background p-2 font-mono text-xs text-foreground outline-none focus:border-ring`,onBlur:n[1]||=e=>c(),onKeydown:n[2]||=lo(e=>l(),[`escape`])},null,544)),[[to,a.value]]):e.modelValue.trim()===``?e.readonly?q(``,!0):(U(),W(`button`,{key:2,type:`button`,class:`rounded border border-dashed border-border px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-muted/40`,onClick:n[4]||=e=>s()},O(e.translate(`docs.addNote`)),1)):(U(),W(`div`,{key:1,class:D([`leading-relaxed`,e.readonly?``:`cursor-text rounded transition-colors hover:bg-muted/30`]),title:e.readonly?void 0:e.translate(`docs.editNote`),onClick:n[3]||=e=>s(),innerHTML:F(xc)(e.modelValue)},null,10,Cc))]))}}),Tc={class:`flex flex-col gap-5`},Ec={class:`flex flex-col gap-2`},Dc={class:`flex flex-wrap items-center gap-2`},Oc={class:`font-mono text-lg font-semibold text-foreground`},kc={key:0,class:`rounded bg-muted/50 px-1.5 py-0.5 text-[10px] uppercase text-muted-foreground`},Ac={class:`mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground`},jc={class:`flex flex-wrap gap-1`},Mc={class:`mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground`},Nc={key:0,class:`text-xs text-muted-foreground`},Pc={key:1,class:`flex flex-col gap-1`},Fc=[`onClick`],Ic=L({__name:`EnumPage`,props:{enumType:{},snapshot:{},translate:{type:Function}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i=Y(()=>n.enumType.schema?`${n.enumType.schema}.${n.enumType.name}`:n.enumType.name),a=Y(()=>Bo(n.snapshot,n.enumType.name));return(t,n)=>(U(),W(`article`,Tc,[G(`header`,Ec,[G(`div`,Dc,[G(`h2`,Oc,O(i.value),1),e.enumType.synthesized?(U(),W(`span`,kc,`synthesized`)):q(``,!0)]),K(wc,{"model-value":e.enumType.note??``,readonly:``,translate:e.translate},null,8,[`model-value`,`translate`])]),G(`section`,null,[G(`h3`,Ac,O(e.translate(`docs.enumValues`)),1),G(`ul`,jc,[(U(!0),W(V,null,R(e.enumType.values,e=>(U(),W(`li`,{key:e,class:`rounded bg-muted/50 px-1.5 py-0.5 font-mono text-[11px] text-foreground`},O(e),1))),128))])]),G(`section`,null,[G(`h3`,Mc,O(e.translate(`docs.usedBy`)),1),a.value.length===0?(U(),W(`p`,Nc,`No column uses this enum.`)):(U(),W(`ul`,Pc,[(U(!0),W(V,null,R(a.value,e=>(U(),W(`li`,{key:`${e.tableKey}.${e.column}`,class:`text-xs`},[G(`button`,{type:`button`,class:`w-full rounded border border-border bg-background px-2 py-1.5 text-left font-mono transition-colors hover:bg-muted/40`,onClick:t=>r(`select`,e.tableKey)},O(e.tableKey)+`.`+O(e.column),9,Fc)]))),128))]))])]))}}),Lc={class:`flex flex-col gap-3`},Rc={class:`flex flex-col gap-1`},zc={class:`text-[10px] uppercase tracking-wide text-muted-foreground`},Bc=[`value`,`placeholder`],Vc={class:`flex flex-col gap-2`},Hc={class:`text-[10px] uppercase tracking-wide text-muted-foreground`},Uc={class:`flex items-center gap-1.5`},Wc=[`title`,`onClick`],Gc=[`value`,`title`],Kc={class:`grid grid-cols-2 gap-2`},qc={class:`docs-ground-light flex items-center gap-2 overflow-hidden rounded border border-border bg-white p-2`},Jc={class:`dark flex items-center gap-2 overflow-hidden rounded border border-border bg-neutral-900 p-2`},Yc={class:`flex justify-end`},Xc=L({__name:`GroupEditor`,props:{group:{},translate:{type:Function}},emits:[`update:group`,`delete`],setup(e,{emit:t}){let n=e,r=t,i=Array.from({length:12},(e,t)=>t*30);function a(e){r(`update:group`,{...n.group,name:e.target.value})}function o(e){r(`update:group`,{...n.group,hue:e})}function s(e){o(Number(e.target.value))}function c(e){return`${n.translate(`docs.groupColour`)} ${e}°`}return(t,n)=>(U(),W(`div`,Lc,[G(`label`,Rc,[G(`span`,zc,O(e.translate(`docs.groupName`)),1),G(`input`,{type:`text`,value:e.group.name,placeholder:e.translate(`docs.groupName`),class:`rounded border border-border bg-background px-2 py-1 text-sm text-foreground outline-none focus:border-ring`,onInput:n[0]||=e=>a(e)},null,40,Bc)]),G(`div`,Vc,[G(`span`,Hc,O(e.translate(`docs.groupColour`)),1),G(`div`,Uc,[(U(!0),W(V,null,R(F(i),t=>(U(),W(`button`,{key:t,type:`button`,class:D([`docs-group h-6 w-6 rounded-full border ring-offset-background transition hover:scale-105`,e.group.hue===t?`ring-2 ring-ring ring-offset-2`:`border-border`]),style:E([{"background-color":`var(--group-c)`},F(Oo)(t)]),title:c(t),onClick:e=>o(t)},null,14,Wc))),128))]),G(`input`,{type:`range`,min:`0`,max:`359`,value:e.group.hue,class:`w-full`,title:c(e.group.hue),onInput:n[1]||=e=>s(e)},null,40,Gc),G(`div`,Kc,[G(`div`,qc,[G(`span`,{class:`docs-group h-4 w-4 shrink-0 rounded-full`,style:E([{"background-color":`var(--group-c)`},F(Oo)(e.group.hue)])},null,4),G(`span`,{class:`docs-group truncate rounded px-1.5 py-0.5 text-[11px] font-medium`,style:E([{"background-color":`var(--group-tint)`,color:`var(--group-c)`},F(Oo)(e.group.hue)])},O(e.group.name),5)]),G(`div`,Jc,[G(`span`,{class:`docs-group h-4 w-4 shrink-0 rounded-full`,style:E([{"background-color":`var(--group-c)`},F(Oo)(e.group.hue)])},null,4),G(`span`,{class:`docs-group truncate rounded px-1.5 py-0.5 text-[11px] font-medium`,style:E([{"background-color":`var(--group-tint)`,color:`var(--group-c)`},F(Oo)(e.group.hue)])},O(e.group.name),5)])])]),G(`div`,Yc,[G(`button`,{type:`button`,class:`rounded border border-border px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-muted/40`,onClick:n[2]||=t=>r(`delete`,e.group.id)},O(e.translate(`docs.deleteGroup`)),1)])]))}});function Zc(e,t={}){let n=Math.max(1,t.columnsPerRow??Math.ceil(Math.sqrt(Math.max(e.length,1)))),r=t.cardWidth??260,i=t.gapX??56,a=t.gapY??40,o=t.margin??40,s=t.rowHeight,c=e=>s??44+(e.columns?.length??0)*24+12,l={},u=o;for(let t=0;t{l[e.name]={x:o+t*(r+i),y:u}}),u+=d+a}return l}function Qc(e,t,n){let r=t.x-e.x,i=t.y-e.y;if(r===0&&i===0)return{x:e.x,y:e.y};let a=r===0?1/0:n.width/Math.abs(r),o=i===0?1/0:n.height/Math.abs(i),s=Math.min(a,o);return{x:e.x+r*s,y:e.y+i*s}}var $c={class:`overflow-auto`},el=[`width`,`height`,`viewBox`],tl=[`x1`,`y1`,`x2`,`y2`],nl=[`x`,`y`,`onClick`],rl=[`x`,`y`],il=[`x`,`y`],al=260,ol=220,sl=40,cl=8,ll=L({__name:`SchemaDiagram`,props:{snapshot:{}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i={width:al/2,height:ol/2},a=Y(()=>Zc(n.snapshot.tables.map(e=>({name:X(e),columns:e.columns})))),o=Y(()=>new Map(n.snapshot.groups.map(e=>[e.id,e]))),s=Y(()=>n.snapshot.tables.map(e=>{let t=X(e),n=a.value[t]??{x:sl,y:sl},r=e.groupId?o.value.get(e.groupId)??null:null;return{key:t,x:n.x,y:n.y,hue:r?.hue??null,columns:e.columns.slice(0,cl).map(e=>e.name)}}));function c(e){let t=a.value[e]??{x:sl,y:sl};return{x:t.x+al/2,y:t.y+ol/2}}let l=Y(()=>{let e=new Set(Object.keys(a.value));return n.snapshot.relationships.map(e=>({relationship:e,fromKey:X({schema:e.from.schema,name:e.from.table}),toKey:X({schema:e.to.schema,name:e.to.table})})).filter(({fromKey:t,toKey:n})=>e.has(t)&&e.has(n)).map(({relationship:e,fromKey:t,toKey:n})=>{let r=c(t),a=c(n);return{id:e.id,from:Qc(r,a,i),to:Qc(a,r,i)}})}),u=Y(()=>Math.max(0,...s.value.map(e=>e.x+al))+sl),d=Y(()=>Math.max(0,...s.value.map(e=>e.y+ol))+sl);function f(e){return e===null?{}:{...Oo(e),fill:`var(--group-tint)`}}return(e,t)=>(U(),W(`div`,$c,[(U(),W(`svg`,{width:u.value,height:d.value,viewBox:`0 0 ${u.value} ${d.value}`,class:`block`},[(U(!0),W(V,null,R(l.value,e=>(U(),W(`line`,{key:e.id,x1:e.from.x,y1:e.from.y,x2:e.to.x,y2:e.to.y,class:`stroke-border`,"stroke-width":`1.5`},null,8,tl))),128)),(U(!0),W(V,null,R(s.value,e=>(U(),W(`g`,{key:e.key},[G(`rect`,{x:e.x,y:e.y,width:al,height:ol,rx:`6`,class:D([`cursor-pointer stroke-border`,e.hue===null?`fill-card`:`docs-group`]),style:E(f(e.hue)),"stroke-width":`1`,onClick:t=>r(`select`,e.key)},null,14,nl),G(`text`,{x:e.x+10,y:e.y+22,class:`pointer-events-none fill-foreground font-mono text-[11px] font-semibold`},O(e.key),9,rl),(U(!0),W(V,null,R(e.columns,(t,n)=>(U(),W(`text`,{key:t,x:e.x+10,y:e.y+42+n*18,class:`pointer-events-none fill-muted-foreground font-mono text-[10px]`},O(t),9,il))),128))]))),128))],8,el))]))}}),ul={class:`overflow-hidden rounded-md border border-border`},dl={class:`w-full text-xs`},fl={class:`bg-muted/30`},pl={class:`px-2 py-1.5 text-left font-medium text-muted-foreground`},ml={class:`px-2 py-1.5 text-left font-medium text-muted-foreground`},hl={class:`px-2 py-1.5 text-left font-medium text-muted-foreground`},gl={class:`px-2 py-1.5 text-left font-medium text-muted-foreground`},_l={class:`px-2 py-1.5 font-mono font-medium text-foreground`},vl={class:`px-2 py-1.5 font-mono text-muted-foreground`},yl={class:`px-2 py-1.5`},bl={class:`flex flex-wrap gap-1`},xl={class:`px-2 py-1.5 text-muted-foreground`},Sl={class:`flex items-start gap-1`},Cl=[`title`],wl=L({__name:`ColumnTable`,props:{columns:{},columnNotes:{},tableKey:{},readonly:{type:Boolean},translate:{type:Function}},emits:[`edit`],setup(e,{emit:t}){let n=e,r=t;function i(e){let t=e.data_type.trim();if(t.includes(`(`))return t;if(e.character_maximum_length!==null)return`${t}(${e.character_maximum_length})`;if(e.numeric_precision!==null){let n=e.numeric_scale===null?``:`,${e.numeric_scale}`;return`${t}(${e.numeric_precision}${n})`}return t}function a(e){let t=[];return e.is_primary_key&&t.push(`pk`),e.is_nullable||t.push(`not null`),e.column_default!==null&&t.push(`default: ${e.column_default}`),e.extra!==null&&e.extra!==``&&t.push(e.extra),e.enum_values!==void 0&&e.enum_values.length>0&&t.push(`enum: ${e.enum_values.join(`, `)}`),t}function o(e){return n.columnNotes[e.name]??null}function s(e){let t=o(e)?.shadowed;return t?`Database comment: ${t}`:void 0}return(t,n)=>(U(),W(`div`,ul,[G(`table`,dl,[G(`thead`,null,[G(`tr`,fl,[G(`th`,pl,O(e.translate(`docs.columnHeader`)),1),G(`th`,ml,O(e.translate(`docs.typeHeader`)),1),G(`th`,hl,O(e.translate(`docs.settingsHeader`)),1),G(`th`,gl,O(e.translate(`docs.noteHeader`)),1)])]),G(`tbody`,null,[(U(!0),W(V,null,R(e.columns,t=>(U(),W(`tr`,{key:t.name,class:`border-t border-border align-top`},[G(`td`,_l,O(t.name),1),G(`td`,vl,O(i(t)),1),G(`td`,yl,[G(`div`,bl,[(U(!0),W(V,null,R(a(t),e=>(U(),W(`span`,{key:e,class:`rounded bg-muted/50 px-1.5 py-0.5 text-[10px] text-muted-foreground`},O(e),1))),128))])]),G(`td`,xl,[G(`div`,Sl,[o(t)?.source===`LOCAL`?(U(),W(`span`,{key:0,class:`mt-0.5 shrink-0 text-[10px] font-medium`,title:s(t)},`⬤ `+O(e.translate(`docs.localNote`)),9,Cl)):q(``,!0),K(wc,{class:`min-w-0 flex-1`,"model-value":o(t)?.note??``,readonly:e.readonly,translate:e.translate,"onUpdate:modelValue":n=>r(`edit`,{kind:`columnNote`,tableKey:e.tableKey,column:t.name,note:n})},null,8,[`model-value`,`readonly`,`translate`,`onUpdate:modelValue`])])])]))),128))])])]))}}),Tl={class:`flex items-center gap-1.5`},El=[`value`],Dl={value:``},Ol=[`value`],kl=`__dbx_new_group__`,Al=L({__name:`GroupPicker`,props:{groups:{},modelValue:{},translate:{type:Function}},emits:[`update:modelValue`,`create`],setup(e,{emit:t}){let n=e,r=t,i=Y(()=>n.groups.find(e=>e.id===n.modelValue)??null);function a(e){let t=e.target;if(t.value===kl&&!n.groups.some(e=>e.id===kl)){t.value=n.modelValue??``,r(`create`);return}r(`update:modelValue`,t.value===``?null:t.value)}return(t,n)=>(U(),W(`div`,Tl,[i.value?(U(),W(`span`,{key:0,class:`docs-group h-3 w-3 shrink-0 rounded-full`,style:E([{"background-color":`var(--group-c)`},F(Oo)(i.value.hue)])},null,4)):q(``,!0),G(`select`,{value:e.modelValue??``,class:`rounded border border-border bg-background px-2 py-1 text-xs text-foreground outline-none focus:border-ring`,onChange:n[0]||=e=>a(e)},[G(`option`,Dl,O(e.translate(`docs.noGroup`)),1),(U(!0),W(V,null,R(e.groups,e=>(U(),W(`option`,{key:e.id,value:e.id},O(e.name),9,Ol))),128)),G(`option`,{value:kl},O(e.translate(`docs.newGroup`)),1)],40,El)]))}}),jl={class:`grid gap-4 sm:grid-cols-2`},Ml={class:`mb-1.5 text-xs font-medium text-muted-foreground`},Nl={key:0,class:`text-xs text-muted-foreground`},Pl={key:1,class:`flex flex-col gap-1`},Fl=[`onClick`],Il={class:`font-mono`},Ll={class:`mx-1.5 text-muted-foreground`},Rl={class:`font-mono`},zl={key:0,class:`ml-1.5 text-[10px] text-muted-foreground`},Bl={class:`mb-1.5 text-xs font-medium text-muted-foreground`},Vl={key:0,class:`text-xs text-muted-foreground`},Hl={key:1,class:`flex flex-col gap-1`},Ul=[`onClick`],Wl={class:`font-mono`},Gl={class:`mx-1.5 text-muted-foreground`},Kl={class:`font-mono`},ql={key:0,class:`ml-1.5 text-[10px] text-muted-foreground`},Jl=L({__name:`RelationshipList`,props:{relationships:{},schema:{},table:{},translate:{type:Function}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t;function i(e){return e.table===n.table&&(e.schema??null)===n.schema}function a(e){return X({schema:e.schema,name:e.table})}function o(e){return`${a(e)}.${e.column}`}function s(e){return e.cardinality===`ONE_TO_ONE`?`1 – 1`:`* – 1`}function c(e){let t=[];return e.onUpdate&&t.push(`on update ${e.onUpdate}`),e.onDelete&&t.push(`on delete ${e.onDelete}`),t}let l=Y(()=>n.relationships.filter(e=>i(e.from))),u=Y(()=>n.relationships.filter(e=>i(e.to)));return(t,n)=>(U(),W(`div`,jl,[G(`section`,null,[G(`h4`,Ml,O(e.translate(`docs.references`))+` (`+O(l.value.length)+`)`,1),l.value.length===0?(U(),W(`p`,Nl,O(e.translate(`docs.noOutgoingRelationships`)),1)):(U(),W(`ul`,Pl,[(U(!0),W(V,null,R(l.value,e=>(U(),W(`li`,{key:e.id,class:`text-xs`},[G(`button`,{type:`button`,class:`w-full rounded border border-border bg-background px-2 py-1.5 text-left transition-colors hover:bg-muted/40`,onClick:t=>r(`select`,a(e.to))},[G(`span`,Il,O(e.from.column),1),G(`span`,Ll,O(s(e)),1),G(`span`,Rl,O(o(e.to)),1),c(e).length>0?(U(),W(`span`,zl,O(c(e).join(`, `)),1)):q(``,!0)],8,Fl)]))),128))]))]),G(`section`,null,[G(`h4`,Bl,O(e.translate(`docs.referencedBy`))+` (`+O(u.value.length)+`)`,1),u.value.length===0?(U(),W(`p`,Vl,O(e.translate(`docs.noIncomingRelationships`)),1)):(U(),W(`ul`,Hl,[(U(!0),W(V,null,R(u.value,e=>(U(),W(`li`,{key:e.id,class:`text-xs`},[G(`button`,{type:`button`,class:`w-full rounded border border-border bg-background px-2 py-1.5 text-left transition-colors hover:bg-muted/40`,onClick:t=>r(`select`,a(e.from))},[G(`span`,Wl,O(o(e.from)),1),G(`span`,Gl,O(s(e)),1),G(`span`,Kl,O(e.to.column),1),c(e).length>0?(U(),W(`span`,ql,O(c(e).join(`, `)),1)):q(``,!0)],8,Ul)]))),128))]))])]))}}),Yl={class:`flex flex-col gap-5`},Xl={class:`flex flex-col gap-2`},Zl={class:`flex flex-wrap items-center gap-2`},Ql={class:`font-mono text-lg font-semibold text-foreground`},$l={class:`rounded bg-muted/50 px-1.5 py-0.5 text-[10px] uppercase text-muted-foreground`},eu={key:1,class:`text-[10px] text-muted-foreground`},tu={class:`flex items-start gap-2`},nu=[`title`],ru={class:`mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground`},iu={key:0},au={class:`mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground`},ou={class:`overflow-hidden rounded-md border border-border`},su={class:`w-full text-xs`},cu={class:`bg-muted/30`},lu={class:`px-2 py-1.5 text-left font-medium text-muted-foreground`},uu={class:`px-2 py-1.5 text-left font-medium text-muted-foreground`},du={class:`px-2 py-1.5 text-left font-medium text-muted-foreground`},fu={class:`px-2 py-1.5 font-mono`},pu={class:`px-2 py-1.5 font-mono text-muted-foreground`},mu={class:`px-2 py-1.5`},hu={class:`flex flex-wrap gap-1 text-[10px] text-muted-foreground`},gu={key:0,class:`rounded bg-muted/50 px-1.5 py-0.5`},_u={key:1,class:`rounded bg-muted/50 px-1.5 py-0.5`},vu={key:2,class:`rounded bg-muted/50 px-1.5 py-0.5`},yu={key:3,class:`rounded bg-muted/50 px-1.5 py-0.5`},bu={class:`mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground`},xu={key:1},Su={class:`mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground`},Cu={class:`overflow-x-auto rounded-md border border-border bg-muted/20 p-2 font-mono text-xs`},wu=L({__name:`TablePage`,props:{table:{},relationships:{},group:{},annotationGroups:{},readonly:{type:Boolean},translate:{type:Function}},emits:[`select`,`edit`,`createGroup`],setup(e,{emit:t}){let n=e,r=t,i=Y(()=>X(n.table)),a=Y(()=>n.table.kind.toLowerCase().replace(/_/g,` `)),o=Y(()=>n.table.shadowedNote?`Database comment: ${n.table.shadowedNote}`:void 0);return(t,n)=>(U(),W(`article`,Yl,[G(`header`,Xl,[G(`div`,Zl,[G(`h2`,Ql,O(i.value),1),G(`span`,$l,O(a.value),1),e.group?(U(),W(`span`,{key:0,class:`docs-group rounded px-1.5 py-0.5 text-[10px] font-medium`,style:E([{"background-color":`var(--group-tint)`,color:`var(--group-c)`},F(Oo)(e.group.hue)])},O(e.group.name),5)):q(``,!0),e.table.estimatedRows===null?q(``,!0):(U(),W(`span`,eu,` ~`+O(e.table.estimatedRows)+` rows `,1))]),G(`div`,tu,[e.table.noteSource===`LOCAL`?(U(),W(`span`,{key:0,class:`mt-0.5 shrink-0 text-[10px] font-medium text-muted-foreground`,title:o.value},`⬤ `+O(e.translate(`docs.localNote`)),9,nu)):q(``,!0),K(wc,{class:`min-w-0 flex-1`,"model-value":e.table.note??``,readonly:e.readonly,translate:e.translate,"onUpdate:modelValue":n[0]||=e=>r(`edit`,{kind:`tableNote`,tableKey:i.value,note:e})},null,8,[`model-value`,`readonly`,`translate`])]),e.readonly?q(``,!0):(U(),ji(Al,{key:0,groups:e.annotationGroups,"model-value":e.table.groupId,translate:e.translate,"onUpdate:modelValue":n[1]||=e=>r(`edit`,{kind:`tableGroup`,tableKey:i.value,groupId:e}),onCreate:n[2]||=e=>r(`createGroup`,i.value)},null,8,[`groups`,`model-value`,`translate`]))]),G(`section`,null,[G(`h3`,ru,O(e.translate(`docs.columns`)),1),K(wl,{columns:e.table.columns,"column-notes":e.table.columnNotes,"table-key":i.value,readonly:e.readonly,translate:e.translate,onEdit:n[3]||=e=>r(`edit`,e)},null,8,[`columns`,`column-notes`,`table-key`,`readonly`,`translate`])]),e.table.indexes.length>0?(U(),W(`section`,iu,[G(`h3`,au,O(e.translate(`docs.indexes`)),1),G(`div`,ou,[G(`table`,su,[G(`thead`,null,[G(`tr`,cu,[G(`th`,lu,O(e.translate(`docs.nameHeader`)),1),G(`th`,uu,O(e.translate(`docs.columns`)),1),G(`th`,du,O(e.translate(`docs.settingsHeader`)),1)])]),G(`tbody`,null,[(U(!0),W(V,null,R(e.table.indexes,e=>(U(),W(`tr`,{key:e.name,class:`border-t border-border align-top`},[G(`td`,fu,O(e.name),1),G(`td`,pu,[zi(O(e.columns.join(`, `)),1),e.included_columns&&e.included_columns.length>0?(U(),W(V,{key:0},[zi(` (include `+O(e.included_columns.join(`, `))+`) `,1)],64)):q(``,!0)]),G(`td`,mu,[G(`div`,hu,[e.is_primary?(U(),W(`span`,gu,`pk`)):q(``,!0),e.is_unique?(U(),W(`span`,_u,`unique`)):q(``,!0),e.index_type?(U(),W(`span`,vu,O(e.index_type),1)):q(``,!0),e.filter?(U(),W(`span`,yu,`where `+O(e.filter),1)):q(``,!0)])])]))),128))])])])])):q(``,!0),G(`section`,null,[G(`h3`,bu,O(e.translate(`docs.relationships`)),1),K(Jl,{relationships:e.relationships,schema:e.table.schema,table:e.table.name,translate:e.translate,onSelect:n[4]||=e=>r(`select`,e)},null,8,[`relationships`,`schema`,`table`,`translate`])]),e.table.viewDefinition?(U(),W(`section`,xu,[G(`h3`,Su,O(e.translate(`docs.definitionHeader`)),1),G(`pre`,Cu,O(e.table.viewDefinition),1)])):q(``,!0)]))}});function Tu(e,t){switch(e.kind){case`tableSkipped`:return{severity:`warning`,title:t(`docs.warnings.tableSkipped.title`),detail:t(`docs.warnings.tableSkipped.detail`,{table:e.table,reason:e.reason})};case`noForeignKeyMetadata`:return{severity:`info`,title:t(`docs.warnings.noForeignKeyMetadata.title`),detail:t(`docs.warnings.noForeignKeyMetadata.detail`,{engine:e.engine})};case`commentsUnsupported`:return{severity:`info`,title:t(`docs.warnings.commentsUnsupported.title`),detail:t(`docs.warnings.commentsUnsupported.detail`,{engine:e.engine})};case`orphanedNotes`:return{severity:`warning`,title:t(`docs.warnings.orphanedNotes.title`),detail:t(`docs.warnings.orphanedNotes.detail`,{count:e.count})};case`dbmlOmitted`:return{severity:`info`,title:t(`docs.warnings.dbmlOmitted.title`),detail:t(`docs.warnings.dbmlOmitted.detail`,{item:e.item,table:e.table,reason:e.reason})}}}var Eu={key:0,class:`flex flex-col gap-2`},Du={class:`font-medium`},Ou={class:`mt-0.5 leading-relaxed`},ku=L({__name:`WarningBanner`,props:{warnings:{},translate:{type:Function}},setup(e){let t=e,n=Y(()=>t.warnings.map((e,n)=>({key:`${e.kind}-${n}`,...Tu(e,t.translate)})));return(e,t)=>n.value.length>0?(U(),W(`div`,Eu,[(U(!0),W(V,null,R(n.value,e=>(U(),W(`div`,{key:e.key,class:D([`rounded-md border px-3 py-2 text-xs`,e.severity===`warning`?`border-amber-300 bg-amber-50 text-amber-900 dark:border-amber-900/40 dark:bg-amber-950/30 dark:text-amber-200`:`border-border bg-muted/30 text-muted-foreground`])},[G(`div`,Du,O(e.title),1),G(`div`,Ou,O(e.detail),1)],2))),128))])):q(``,!0)}}),Au={class:`flex flex-col gap-6`},ju={class:`flex items-baseline gap-2`},Mu={class:`text-sm font-semibold text-foreground`},Nu={class:`text-xs text-muted-foreground`},Pu=[`innerHTML`],Fu={class:`grid gap-1 sm:grid-cols-2 lg:grid-cols-3`},Iu=[`onClick`],Lu={class:`font-mono text-xs font-medium text-foreground`},Ru={key:0,class:`text-[10px] uppercase text-muted-foreground`},zu=[`innerHTML`],Bu=L({__name:`WikiIndex`,props:{sections:{},translate:{type:Function}},emits:[`select`],setup(e,{emit:t}){let n=t;return(t,r)=>(U(),W(`div`,Au,[(U(!0),W(V,null,R(e.sections,t=>(U(),W(`section`,{key:t.key,class:`flex flex-col gap-2`},[G(`div`,{class:D([`flex flex-col gap-1 border-l-2 pl-3`,{"docs-group":t.hue!==null}]),style:E([{"border-color":`var(--group-c, var(--border))`},F(Oo)(t.hue)])},[G(`div`,ju,[G(`h2`,Mu,O(t.label||e.translate(t.fallbackKey)),1),G(`span`,Nu,O(t.tables.length)+` tables`,1)]),t.note?(U(),W(`div`,{key:0,class:`text-xs text-muted-foreground`,innerHTML:F(xc)(t.note)},null,8,Pu)):q(``,!0)],6),G(`ul`,Fu,[(U(!0),W(V,null,R(t.tables,e=>(U(),W(`li`,{key:F(X)(e),class:`flex flex-col gap-0.5 rounded border border-border bg-background px-2 py-1.5 transition-colors hover:bg-muted/40`},[G(`button`,{type:`button`,class:`flex w-full items-baseline gap-1.5 text-left`,onClick:t=>n(`select`,F(X)(e))},[G(`span`,Lu,O(e.name),1),e.kind===`TABLE`?q(``,!0):(U(),W(`span`,Ru,O(e.kind.toLowerCase().replace(/_/g,` `)),1))],8,Iu),e.note?(U(),W(`div`,{key:0,class:`line-clamp-2 text-[11px] text-muted-foreground`,innerHTML:F(xc)(e.note)},null,8,zu)):q(``,!0)]))),128))])]))),128))]))}}),Vu={class:`flex h-full min-h-0 bg-background text-foreground`},Hu={class:`flex h-full min-h-0 w-64 shrink-0 flex-col`},Uu={class:`flex min-w-0 flex-1 flex-col gap-4 overflow-y-auto p-4`},Wu={class:`flex flex-wrap items-start justify-between gap-3`},Gu={class:`flex flex-col gap-1`},Ku={class:`text-base font-semibold`},qu={class:`text-xs text-muted-foreground`},Ju={key:0,class:`flex flex-col gap-4`},Yu={key:0,class:`flex flex-col gap-2`},Xu={class:`text-xs font-semibold uppercase tracking-wide text-muted-foreground`},Zu=L({__name:`DocsApp`,props:{snapshot:{},annotations:{},readonly:{type:Boolean},translate:{},route:{},diagram:{default:`external`}},emits:[`edit`,`update:route`],setup(e,{emit:t}){let n=e,r=t,i=Y(()=>n.readonly??!1),a=Y(()=>n.annotations.groups??[]),o=P(n.snapshot.groups.length>0?`group`:`schema`),s=P(null),c=P(null),l=P(!1),u=Y(()=>n.route?n.route:l.value?{kind:`diagram`}:c.value===null?s.value===null?{kind:`index`}:{kind:`table`,key:s.value}:{kind:`enum`,name:c.value}),d=Y(()=>u.value.kind===`table`?u.value.key:null),f=Y(()=>u.value.kind===`enum`?u.value.name:null),p=Y(()=>o.value===`schema`?Ro(n.snapshot):zo(n.snapshot)),m=Y(()=>n.snapshot.tables.find(e=>X(e)===d.value)??null),h=Y(()=>f.value===null?null:n.snapshot.enums.find(e=>e.name===f.value)??null),g=Y(()=>u.value.kind===`diagram`?`diagram`:h.value===null?m.value===null?`index`:`table`:`enum`),_=Y(()=>{let e=m.value?.groupId;return e?n.snapshot.groups.find(t=>t.id===e)??null:null});function v(e){n.snapshot.tables.some(t=>X(t)===e)&&(c.value=null,l.value=!1,s.value=e,r(`update:route`,{kind:`table`,key:e}))}function y(e){n.snapshot.enums.some(t=>t.name===e)&&(s.value=null,l.value=!1,c.value=e,r(`update:route`,{kind:`enum`,name:e}))}function b(){s.value=null,c.value=null,l.value=!0,r(`update:route`,{kind:`diagram`})}function x(){s.value=null,c.value=null,l.value=!1,r(`update:route`,{kind:`index`})}function ee(e){let t={id:crypto.randomUUID(),name:n.translate(`docs.newGroup`),hue:a.value.length*47%360};r(`edit`,{kind:`upsertGroup`,group:t}),r(`edit`,{kind:`tableGroup`,tableKey:e,groupId:t.id})}return(t,n)=>(U(),W(`div`,Vu,[G(`div`,Hu,[K(Io,{class:`min-h-0 flex-1`,sections:p.value,mode:o.value,"active-key":d.value,translate:e.translate,"onUpdate:mode":n[0]||=e=>o.value=e,onSelect:v,onHome:n[1]||=e=>x()},null,8,[`sections`,`mode`,`active-key`,`translate`]),e.diagram===`inline`?(U(),W(`button`,{key:0,type:`button`,class:D([`shrink-0 border-t border-r border-border bg-background px-3 py-2 text-left text-xs font-medium transition-colors`,g.value===`diagram`?`bg-muted text-foreground`:`text-muted-foreground hover:bg-muted/40`]),onClick:n[2]||=e=>b()},O(e.translate(`docs.diagram`)),3)):q(``,!0)]),G(`main`,Uu,[G(`header`,Wu,[G(`div`,Gu,[G(`h1`,Ku,O(e.snapshot.project.name),1),G(`p`,qu,[zi(O(e.snapshot.project.databaseType),1),e.snapshot.project.database?(U(),W(V,{key:0},[zi(` · `+O(e.snapshot.project.database),1)],64)):q(``,!0),zi(` · `+O(e.snapshot.tables.length)+` tables · generated `+O(e.snapshot.project.generatedAt),1)])]),K(Do,{snapshot:e.snapshot,translate:e.translate,onSelect:v,onSelectEnum:y},null,8,[`snapshot`,`translate`])]),K(ku,{warnings:e.snapshot.warnings,translate:e.translate},null,8,[`warnings`,`translate`]),g.value===`index`?(U(),W(`div`,Ju,[K(wc,{"model-value":e.snapshot.project.note??``,readonly:i.value,translate:e.translate,"onUpdate:modelValue":n[3]||=e=>r(`edit`,{kind:`projectNote`,note:e})},null,8,[`model-value`,`readonly`,`translate`]),K(Bu,{sections:p.value,translate:e.translate,onSelect:v},null,8,[`sections`,`translate`]),!i.value&&a.value.length>0?(U(),W(`section`,Yu,[G(`h2`,Xu,O(e.translate(`docs.groups`)),1),(U(!0),W(V,null,R(a.value,t=>(U(),ji(Xc,{key:t.id,group:t,translate:e.translate,"onUpdate:group":n[4]||=e=>r(`edit`,{kind:`upsertGroup`,group:e}),onDelete:n[5]||=e=>r(`edit`,{kind:`removeGroup`,groupId:e})},null,8,[`group`,`translate`]))),128))])):q(``,!0)])):g.value===`table`&&m.value?(U(),ji(wu,{key:1,table:m.value,relationships:e.snapshot.relationships,group:_.value,"annotation-groups":a.value,readonly:i.value,translate:e.translate,onSelect:v,onEdit:n[6]||=e=>r(`edit`,e),onCreateGroup:ee},null,8,[`table`,`relationships`,`group`,`annotation-groups`,`readonly`,`translate`])):h.value?(U(),ji(Ic,{key:2,"enum-type":h.value,snapshot:e.snapshot,translate:e.translate,onSelect:v},null,8,[`enum-type`,`snapshot`,`translate`])):g.value===`diagram`?(U(),ji(ll,{key:3,snapshot:e.snapshot,onSelect:v},null,8,[`snapshot`])):q(``,!0)])]))}}),Qu={kind:`index`};function $u(e,t,n){if(!e.startsWith(`#`))return Qu;let[r,...i]=e.slice(1).replace(/^\//,``).split(`/`),a=i.join(`/`);if(r===`diagram`&&a===``)return n?{kind:`diagram`}:Qu;if(a===``)return Qu;let o;try{o=decodeURIComponent(a)}catch{return Qu}return r===`table`?t.tables.some(e=>X(e)===o)?{kind:`table`,key:o}:Qu:r===`enum`&&(t.enums??[]).some(e=>e.name===o)?{kind:`enum`,name:o}:Qu}function ed(e){switch(e.kind){case`table`:return`#/table/${encodeURIComponent(e.key)}`;case`enum`:return`#/enum/${encodeURIComponent(e.name)}`;case`diagram`:return`#/diagram`;default:return`#/`}}var td=[{value:`en`,flag:`🇺🇸`,label:`English`},{value:`es`,flag:`🇪🇸`,label:`Español`},{value:`it`,flag:`🇮🇹`,label:`Italiano`},{value:`ja`,flag:`🇯🇵`,label:`日本語`},{value:`ko`,flag:`🇰🇷`,label:`한국어`},{value:`pt-BR`,flag:`🇧🇷`,label:`Português`},{value:`zh-CN`,flag:`🇨🇳`,label:`简体中文`},{value:`zh-TW`,flag:`繁`,label:`繁體中文`}],nd={en:{title:`Documentation`,groupBySchema:`Schemas`,groupByTableGroup:`Table Groups`,noGroup:`(no group)`,noSchema:`(no schema)`,search:`Search tables, columns, groups…`,columns:`Columns`,indexes:`Indexes`,references:`References`,referencedBy:`Referenced by`,localNote:`LOCAL`,shadowedComment:`Database comment: {comment}`,addNote:`Add a note`,editNote:`Edit note`,newGroup:`New group…`,groupName:`Group name`,groupColour:`Colour`,deleteGroup:`Delete group`,enumValues:`Values`,usedBy:`Used by`,openDiagram:`Open schema diagram`,saving:`Saving…`,saved:`Saved`,saveFailed:`Could not save notes: {error}`,overview:`Overview`,groupBy:`Group by`,searchLabel:`Search`,groups:`Groups`,relationships:`Relationships`,columnHeader:`Column`,typeHeader:`Type`,settingsHeader:`Settings`,noteHeader:`Note`,nameHeader:`Name`,definitionHeader:`Definition`,noOutgoingRelationships:`This table references no other table.`,noIncomingRelationships:`No table references this one.`,diagram:`Diagram`,language:`Language`,theme:`Theme`,themeLight:`Light`,themeDark:`Dark`,exportHtml:`Export HTML…`,exporting:`Exporting…`,exportFailed:`Could not export: {error}`,warnings:{tableSkipped:{title:`A table could not be documented`,detail:`{table} was skipped: {reason}. It is missing from this documentation.`},noForeignKeyMetadata:{title:`No relationships available`,detail:`{engine} does not report foreign key metadata, so no relationship edges could be derived. The diagram is complete for this engine.`},commentsUnsupported:{title:`Database comments unavailable`,detail:`{engine} does not support table or column comments, so every description here comes from this project's own notes.`},orphanedNotes:{title:`Some notes no longer match anything`,detail:`{count} note(s) refer to a table or column that no longer exists. Nothing was deleted — re-map or remove them in the notes file.`},dbmlOmitted:{title:`Not representable in DBML`,detail:`{item} on {table} is documented here but omitted from the exported DBML: {reason}.`}}},es:{title:`Documentación`,groupBySchema:`Esquemas`,groupByTableGroup:`Grupos de tablas`,noGroup:`(sin grupo)`,noSchema:`(sin esquema)`,search:`Buscar tablas, columnas, grupos…`,columns:`Columnas`,indexes:`Índices`,references:`Referencias`,referencedBy:`Referenciado por`,localNote:`LOCAL`,shadowedComment:`Comentario de la base de datos: {comment}`,addNote:`Agregar una nota`,editNote:`Editar nota`,newGroup:`Nuevo grupo…`,groupName:`Nombre del grupo`,groupColour:`Color`,deleteGroup:`Eliminar grupo`,enumValues:`Valores`,usedBy:`Usado por`,openDiagram:`Abrir diagrama del esquema`,saving:`Guardando…`,saved:`Guardado`,saveFailed:`No se pudieron guardar las notas: {error}`,overview:`Información general`,groupBy:`Agrupar por`,searchLabel:`Buscar`,groups:`Grupos`,relationships:`Relaciones`,columnHeader:`Columna`,typeHeader:`Tipo`,settingsHeader:`Configuración`,noteHeader:`Nota`,nameHeader:`Nombre`,definitionHeader:`Definición`,noOutgoingRelationships:`Esta tabla no referencia ninguna otra tabla.`,noIncomingRelationships:`Ninguna tabla referencia esta.`,diagram:`Diagrama`,language:`Idioma`,theme:`Tema`,themeLight:`Claro`,themeDark:`Oscuro`,exportHtml:`Exportar HTML…`,exporting:`Exportando…`,exportFailed:`No se pudo exportar: {error}`,warnings:{tableSkipped:{title:`No se pudo documentar una tabla`,detail:`{table} fue omitida: {reason}. Falta en esta documentación.`},noForeignKeyMetadata:{title:`No hay relaciones disponibles`,detail:`{engine} no reporta metadatos de claves foráneas, por lo que no se pudieron derivar relaciones. El diagrama está completo para este motor.`},commentsUnsupported:{title:`Comentarios de base de datos no disponibles`,detail:`{engine} no admite comentarios en tablas o columnas, por lo que toda descripción aquí proviene de las notas de este proyecto.`},orphanedNotes:{title:`Algunas notas ya no coinciden con nada`,detail:`{count} nota(s) hacen referencia a una tabla o columna que ya no existe. No se eliminó nada — vuelva a asignarlas o elimínelas en el archivo de notas.`},dbmlOmitted:{title:`No representable en DBML`,detail:`{item} en {table} está documentado aquí pero se omitió del DBML exportado: {reason}.`}}},it:{title:`Documentazione`,groupBySchema:`Schemi`,groupByTableGroup:`Gruppi di tabelle`,noGroup:`(nessun gruppo)`,noSchema:`(nessuno schema)`,search:`Cerca tabelle, colonne, gruppi…`,columns:`Colonne`,indexes:`Indici`,references:`Riferimenti`,referencedBy:`Referenziato da`,localNote:`LOCALE`,shadowedComment:`Commento del database: {comment}`,addNote:`Aggiungi una nota`,editNote:`Modifica nota`,newGroup:`Nuovo gruppo…`,groupName:`Nome del gruppo`,groupColour:`Colore`,deleteGroup:`Elimina gruppo`,enumValues:`Valori`,usedBy:`Usato da`,openDiagram:`Apri diagramma dello schema`,saving:`Salvataggio…`,saved:`Salvato`,saveFailed:`Impossibile salvare le note: {error}`,overview:`Panoramica`,groupBy:`Raggruppa per`,searchLabel:`Cerca`,groups:`Gruppi`,relationships:`Relazioni`,columnHeader:`Colonna`,typeHeader:`Tipo`,settingsHeader:`Impostazioni`,noteHeader:`Nota`,nameHeader:`Nome`,definitionHeader:`Definizione`,noOutgoingRelationships:`Questa tabella non fa riferimento a nessun'altra tabella.`,noIncomingRelationships:`Nessuna tabella fa riferimento a questa.`,diagram:`Diagramma`,language:`Lingua`,theme:`Tema`,themeLight:`Chiaro`,themeDark:`Scuro`,exportHtml:`Esporta HTML…`,exporting:`Esportazione…`,exportFailed:`Impossibile esportare: {error}`,warnings:{tableSkipped:{title:`Impossibile documentare una tabella`,detail:`{table} è stata saltata: {reason}. Manca da questa documentazione.`},noForeignKeyMetadata:{title:`Nessuna relazione disponibile`,detail:`{engine} non riporta i metadati delle chiavi esterne, quindi non è stato possibile derivare alcuna relazione. Il diagramma è completo per questo motore.`},commentsUnsupported:{title:`Commenti del database non disponibili`,detail:`{engine} non supporta i commenti su tabelle o colonne, quindi ogni descrizione qui proviene dalle note di questo progetto.`},orphanedNotes:{title:`Alcune note non corrispondono più a nulla`,detail:`{count} nota/e fanno riferimento a una tabella o colonna che non esiste più. Nulla è stato eliminato — rimappa o rimuovi queste note nel file delle note.`},dbmlOmitted:{title:`Non rappresentabile in DBML`,detail:`{item} su {table} è documentato qui ma omesso dal DBML esportato: {reason}.`}}},ja:{title:`ドキュメント`,groupBySchema:`スキーマ`,groupByTableGroup:`テーブルグループ`,noGroup:`(グループなし)`,noSchema:`(スキーマなし)`,search:`テーブル、カラム、グループを検索…`,columns:`カラム`,indexes:`インデックス`,references:`参照`,referencedBy:`参照元`,localNote:`ローカル`,shadowedComment:`データベースのコメント: {comment}`,addNote:`メモを追加`,editNote:`メモを編集`,newGroup:`新しいグループ…`,groupName:`グループ名`,groupColour:`色`,deleteGroup:`グループを削除`,enumValues:`値`,usedBy:`使用元`,openDiagram:`スキーマ図を開く`,saving:`保存中…`,saved:`保存済み`,saveFailed:`メモを保存できませんでした: {error}`,overview:`概要`,groupBy:`グループ化`,searchLabel:`検索`,groups:`グループ`,relationships:`リレーションシップ`,columnHeader:`カラム`,typeHeader:`型`,settingsHeader:`設定`,noteHeader:`メモ`,nameHeader:`名前`,definitionHeader:`定義`,noOutgoingRelationships:`このテーブルは他のテーブルを参照していません。`,noIncomingRelationships:`このテーブルを参照しているテーブルはありません。`,diagram:`図`,language:`言語`,theme:`テーマ`,themeLight:`ライト`,themeDark:`ダーク`,exportHtml:`HTMLをエクスポート…`,exporting:`エクスポート中…`,exportFailed:`エクスポートできませんでした: {error}`,warnings:{tableSkipped:{title:`ドキュメント化できないテーブルがあります`,detail:`{table} はスキップされました: {reason}。このドキュメントには含まれていません。`},noForeignKeyMetadata:{title:`リレーションシップを表示できません`,detail:`{engine} は外部キーのメタデータを報告しないため、リレーションシップを導出できませんでした。この図はこのエンジンについては完全です。`},commentsUnsupported:{title:`データベースのコメントは利用できません`,detail:`{engine} はテーブルやカラムのコメントをサポートしていないため、ここでの説明はすべてこのプロジェクトのメモから提供されています。`},orphanedNotes:{title:`対象がなくなったメモがあります`,detail:`{count} 件のメモが、既に存在しないテーブルまたはカラムを参照しています。何も削除されていません。メモファイルで再割り当てまたは削除してください。`},dbmlOmitted:{title:`DBMLでは表現できません`,detail:`{table} の {item} はここに記載されていますが、エクスポートされたDBMLからは除外されています: {reason}。`}}},ko:{title:`문서`,groupBySchema:`스키마`,groupByTableGroup:`테이블 그룹`,noGroup:`(그룹 없음)`,noSchema:`(스키마 없음)`,search:`테이블, 컬럼, 그룹 검색…`,columns:`컬럼`,indexes:`인덱스`,references:`참조`,referencedBy:`참조된 위치`,localNote:`로컬`,shadowedComment:`데이터베이스 코멘트: {comment}`,addNote:`메모 추가`,editNote:`메모 편집`,newGroup:`새 그룹…`,groupName:`그룹 이름`,groupColour:`색상`,deleteGroup:`그룹 삭제`,enumValues:`값`,usedBy:`사용처`,openDiagram:`스키마 다이어그램 열기`,saving:`저장 중…`,saved:`저장됨`,saveFailed:`메모를 저장할 수 없습니다: {error}`,overview:`개요`,groupBy:`그룹화 기준`,searchLabel:`검색`,groups:`그룹`,relationships:`관계`,columnHeader:`컬럼`,typeHeader:`유형`,settingsHeader:`설정`,noteHeader:`메모`,nameHeader:`이름`,definitionHeader:`정의`,noOutgoingRelationships:`이 테이블은 다른 테이블을 참조하지 않습니다.`,noIncomingRelationships:`이 테이블을 참조하는 테이블이 없습니다.`,diagram:`다이어그램`,language:`언어`,theme:`테마`,themeLight:`라이트`,themeDark:`다크`,exportHtml:`HTML 내보내기…`,exporting:`내보내는 중…`,exportFailed:`내보낼 수 없습니다: {error}`,warnings:{tableSkipped:{title:`문서화할 수 없는 테이블이 있습니다`,detail:`{table} 을(를) 건너뛰었습니다: {reason}. 이 문서에서 누락되었습니다.`},noForeignKeyMetadata:{title:`표시할 관계가 없습니다`,detail:`{engine} 은(는) 외래 키 메타데이터를 보고하지 않으므로 관계를 도출할 수 없습니다. 이 엔진에 대해서는 다이어그램이 완전합니다.`},commentsUnsupported:{title:`데이터베이스 코멘트를 사용할 수 없습니다`,detail:`{engine} 은(는) 테이블 또는 컬럼 코멘트를 지원하지 않으므로 여기의 모든 설명은 이 프로젝트의 메모에서만 제공됩니다.`},orphanedNotes:{title:`더 이상 일치하는 대상이 없는 메모가 있습니다`,detail:`{count} 개의 메모가 더 이상 존재하지 않는 테이블 또는 컬럼을 참조하고 있습니다. 삭제된 항목은 없습니다 — 메모 파일에서 다시 매핑하거나 제거하세요.`},dbmlOmitted:{title:`DBML로 표현할 수 없습니다`,detail:`{table} 의 {item} 은(는) 여기에 문서화되어 있지만 내보낸 DBML에서는 제외되었습니다: {reason}.`}}},"pt-BR":{title:`Documentação`,groupBySchema:`Schemas`,groupByTableGroup:`Grupos de tabelas`,noGroup:`(sem grupo)`,noSchema:`(sem schema)`,search:`Buscar tabelas, colunas, grupos…`,columns:`Colunas`,indexes:`Índices`,references:`Referências`,referencedBy:`Referenciado por`,localNote:`LOCAL`,shadowedComment:`Comentário do banco de dados: {comment}`,addNote:`Adicionar uma nota`,editNote:`Editar nota`,newGroup:`Novo grupo…`,groupName:`Nome do grupo`,groupColour:`Cor`,deleteGroup:`Excluir grupo`,enumValues:`Valores`,usedBy:`Usado por`,openDiagram:`Abrir diagrama do schema`,saving:`Salvando…`,saved:`Salvo`,saveFailed:`Não foi possível salvar as notas: {error}`,overview:`Visão geral`,groupBy:`Agrupar por`,searchLabel:`Buscar`,groups:`Grupos`,relationships:`Relacionamentos`,columnHeader:`Coluna`,typeHeader:`Tipo`,settingsHeader:`Configurações`,noteHeader:`Nota`,nameHeader:`Nome`,definitionHeader:`Definição`,noOutgoingRelationships:`Esta tabela não referencia nenhuma outra tabela.`,noIncomingRelationships:`Nenhuma tabela referencia esta.`,diagram:`Diagrama`,language:`Idioma`,theme:`Tema`,themeLight:`Claro`,themeDark:`Escuro`,exportHtml:`Exportar HTML…`,exporting:`Exportando…`,exportFailed:`Não foi possível exportar: {error}`,warnings:{tableSkipped:{title:`Uma tabela não pôde ser documentada`,detail:`{table} foi ignorada: {reason}. Ela está faltando nesta documentação.`},noForeignKeyMetadata:{title:`Nenhum relacionamento disponível`,detail:`{engine} não reporta metadados de foreign key, então nenhum relacionamento pôde ser derivado. O diagrama está completo para este engine.`},commentsUnsupported:{title:`Comentários do banco de dados indisponíveis`,detail:`{engine} não suporta comentários em tabelas ou colunas, então toda descrição aqui vem apenas das notas deste projeto.`},orphanedNotes:{title:`Algumas notas não correspondem mais a nada`,detail:`{count} nota(s) referenciam uma tabela ou coluna que não existe mais. Nada foi excluído — remapeie ou remova essas notas no arquivo de notas.`},dbmlOmitted:{title:`Não representável em DBML`,detail:`{item} em {table} está documentado aqui mas foi omitido do DBML exportado: {reason}.`}}},"zh-CN":{title:`文档`,groupBySchema:`Schema`,groupByTableGroup:`表分组`,noGroup:`(无分组)`,noSchema:`(无 Schema)`,search:`搜索表、列、分组…`,columns:`列`,indexes:`索引`,references:`引用`,referencedBy:`被引用`,localNote:`本地`,shadowedComment:`数据库注释: {comment}`,addNote:`添加备注`,editNote:`编辑备注`,newGroup:`新建分组…`,groupName:`分组名称`,groupColour:`颜色`,deleteGroup:`删除分组`,enumValues:`值`,usedBy:`被使用于`,openDiagram:`打开 Schema 图`,saving:`保存中…`,saved:`已保存`,saveFailed:`无法保存备注: {error}`,overview:`概览`,groupBy:`分组方式`,searchLabel:`搜索`,groups:`分组`,relationships:`关系`,columnHeader:`列`,typeHeader:`类型`,settingsHeader:`设置`,noteHeader:`备注`,nameHeader:`名称`,definitionHeader:`定义`,noOutgoingRelationships:`此表未引用任何其他表。`,noIncomingRelationships:`没有表引用此表。`,diagram:`图`,language:`语言`,theme:`主题`,themeLight:`浅色`,themeDark:`深色`,exportHtml:`导出 HTML…`,exporting:`导出中…`,exportFailed:`无法导出: {error}`,warnings:{tableSkipped:{title:`有一张表无法生成文档`,detail:`{table} 被跳过: {reason}。此文档中缺少该表。`},noForeignKeyMetadata:{title:`没有可用的关系`,detail:`{engine} 不报告外键元数据,因此无法推导出任何关系。此图对该数据库引擎而言已经完整。`},commentsUnsupported:{title:`数据库注释不可用`,detail:`{engine} 不支持表或列注释,因此这里的所有描述均仅来自本项目的备注。`},orphanedNotes:{title:`部分备注已不再对应任何内容`,detail:`{count} 条备注引用的表或列已不存在。没有任何内容被删除 — 请在备注文件中重新映射或移除它们。`},dbmlOmitted:{title:`无法在 DBML 中表示`,detail:`{table} 上的 {item} 已在此处记录,但已从导出的 DBML 中省略: {reason}。`}}},"zh-TW":{title:`文件`,groupBySchema:`Schema`,groupByTableGroup:`資料表分組`,noGroup:`(無分組)`,noSchema:`(無 Schema)`,search:`搜尋資料表、欄位、分組…`,columns:`欄位`,indexes:`索引`,references:`參照`,referencedBy:`被參照`,localNote:`本機`,shadowedComment:`資料庫註解: {comment}`,addNote:`新增備註`,editNote:`編輯備註`,newGroup:`新增分組…`,groupName:`分組名稱`,groupColour:`顏色`,deleteGroup:`刪除分組`,enumValues:`值`,usedBy:`被使用於`,openDiagram:`開啟 Schema 圖`,saving:`儲存中…`,saved:`已儲存`,saveFailed:`無法儲存備註: {error}`,overview:`總覽`,groupBy:`分組方式`,searchLabel:`搜尋`,groups:`分組`,relationships:`關聯`,columnHeader:`欄位`,typeHeader:`類型`,settingsHeader:`設定`,noteHeader:`備註`,nameHeader:`名稱`,definitionHeader:`定義`,noOutgoingRelationships:`此資料表未參照任何其他資料表。`,noIncomingRelationships:`沒有資料表參照此資料表。`,diagram:`圖表`,language:`語言`,theme:`主題`,themeLight:`淺色`,themeDark:`深色`,exportHtml:`匯出 HTML…`,exporting:`匯出中…`,exportFailed:`無法匯出: {error}`,warnings:{tableSkipped:{title:`有一張資料表無法產生文件`,detail:`{table} 被略過: {reason}。此文件中缺少該資料表。`},noForeignKeyMetadata:{title:`沒有可用的關聯`,detail:`{engine} 未回報外鍵中繼資料,因此無法推導出任何關聯。此圖對該資料庫引擎而言已經完整。`},commentsUnsupported:{title:`資料庫註解無法使用`,detail:`{engine} 不支援資料表或欄位註解,因此這裡的所有說明均僅來自本專案的備註。`},orphanedNotes:{title:`部分備註已不再對應任何內容`,detail:`{count} 筆備註參照的資料表或欄位已不存在。沒有任何內容被刪除 — 請在備註檔案中重新對應或移除它們。`},dbmlOmitted:{title:`無法在 DBML 中表示`,detail:`{table} 上的 {item} 已在此處記錄,但已從匯出的 DBML 中省略: {reason}。`}}}};function rd(e,t){let n=t.split(`.`).reduce((e,t)=>e&&typeof e==`object`?e[t]:void 0,e);return typeof n==`string`?n:null}function id(e){let t=nd[e]??nd.en;return(e,n)=>{let r=e.startsWith(`docs.`)?e.slice(5):e,i=rd(t,r)??rd(nd.en,r);return i===null?e:n?i.replace(/\{(\w+)\}/g,(e,t)=>t in n?String(n[t]):e):i}}var ad={class:`flex h-full min-h-0 flex-col bg-background text-foreground`},od={class:`flex shrink-0 flex-wrap items-center justify-end gap-4 border-b border-border px-4 py-2`},sd={class:`flex items-center gap-2 text-xs text-muted-foreground`},cd={value:`light`},ld={value:`dark`},ud={class:`flex items-center gap-2 text-xs text-muted-foreground`},dd=[`value`],fd=L({__name:`ExportApp`,props:{payload:{}},setup(e){let t=e,n=P(t.payload.lang in nd?t.payload.lang:`en`),r=Y(()=>id(n.value)),i=td.filter(e=>e.value in nd),a=P(typeof window<`u`&&window.matchMedia?.(`(prefers-color-scheme: dark)`).matches?`dark`:`light`);Pn(a,e=>{let t=document.documentElement;t.classList.toggle(`dark`,e===`dark`),t.style.colorScheme=e},{immediate:!0}),Pn(n,e=>{document.documentElement.lang=e},{immediate:!0});let o=P($u(location.hash,t.payload.snapshot,!0));function s(){o.value=$u(location.hash,t.payload.snapshot,!0)}function c(e){o.value=e;let t=ed(e);location.hash!==t&&(location.hash=t)}return nr(()=>window.addEventListener(`hashchange`,s)),ar(()=>window.removeEventListener(`hashchange`,s)),(t,s)=>(U(),W(`div`,ad,[G(`div`,od,[G(`label`,sd,[zi(O(r.value(`docs.theme`))+` `,1),On(G(`select`,{"onUpdate:modelValue":s[0]||=e=>a.value=e,class:`rounded border border-border bg-background px-2 py-1 text-xs text-foreground`},[G(`option`,cd,O(r.value(`docs.themeLight`)),1),G(`option`,ld,O(r.value(`docs.themeDark`)),1)],512),[[no,a.value]])]),G(`label`,ud,[zi(O(r.value(`docs.language`))+` `,1),On(G(`select`,{"onUpdate:modelValue":s[1]||=e=>n.value=e,class:`rounded border border-border bg-background px-2 py-1 text-xs text-foreground`},[(U(!0),W(V,null,R(F(i),e=>(U(),W(`option`,{key:e.value,value:e.value},O(e.label),9,dd))),128))],512),[[no,n.value]])])]),K(Zu,{class:`min-h-0 flex-1`,snapshot:e.payload.snapshot,annotations:e.payload.annotations,readonly:!0,translate:r.value,route:o.value,diagram:`inline`,"onUpdate:route":c},null,8,[`snapshot`,`annotations`,`translate`,`route`])]))}});function pd(){let e=document.querySelector(`script[type='application/dbx-snapshot']`);if(e===null)throw Error(`no