diff --git a/CHANGELOG.md b/CHANGELOG.md index 30319e9e8..84054c244 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Added - Localization: add native Korean language support across the app and language picker (#1460). Thanks @soohanpark! +- Localization: add German as a selectable app language (#1245). Thanks @Yuxin-Qiao! - Devin: add daily and weekly quota tracking from the signed-in Chrome session or a manual Bearer token (#1264, fixes #800). Thanks @coygeek! - Menu bar: add an optional reset-time display for the selected quota metric, with percent fallback when reset metadata is unavailable (#1223, fixes #1185). Thanks @Yuxin-Qiao! - Cursor: include application data, extensions, settings, and caches in optional local storage tracking (fixes #1403). Thanks @dhruv-anand-aintech! diff --git a/Sources/CodexBar/PreferencesGeneralPane.swift b/Sources/CodexBar/PreferencesGeneralPane.swift index dfe0927f7..3e51945c4 100644 --- a/Sources/CodexBar/PreferencesGeneralPane.swift +++ b/Sources/CodexBar/PreferencesGeneralPane.swift @@ -5,6 +5,7 @@ import SwiftUI enum AppLanguage: String, CaseIterable, Identifiable { case system = "" case english = "en" + case german = "de" case spanish = "es" case catalan = "ca" case chineseSimplified = "zh-Hans" @@ -26,6 +27,7 @@ enum AppLanguage: String, CaseIterable, Identifiable { switch self { case .system: L("language_system") case .english: L("language_english") + case .german: L("language_german") case .spanish: L("language_spanish") case .catalan: L("language_catalan") case .chineseSimplified: L("language_chinese_simplified") diff --git a/Sources/CodexBar/Resources/ca.lproj/Localizable.strings b/Sources/CodexBar/Resources/ca.lproj/Localizable.strings index 93b1eb12f..a52b24b96 100644 --- a/Sources/CodexBar/Resources/ca.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/ca.lproj/Localizable.strings @@ -401,6 +401,7 @@ "language_portuguese_brazilian" = "Português (Brasil)"; "language_swedish" = "Suec"; "language_dutch" = "Nederlands"; +"language_german" = "Deutsch"; "language_french" = "Francès"; "language_ukrainian" = "Ucraïnès"; "language_japanese" = "Japonès"; diff --git a/Sources/CodexBar/Resources/de.lproj/Localizable.strings b/Sources/CodexBar/Resources/de.lproj/Localizable.strings new file mode 100644 index 000000000..88f16343c --- /dev/null +++ b/Sources/CodexBar/Resources/de.lproj/Localizable.strings @@ -0,0 +1,1076 @@ +/* English localization for CodexBar (base/fallback) */ + +" providers" = "Anbieter"; +"(System)" = "(System)"; +"30d" = "30d"; +"A managed Codex login is already running. Wait for it to finish before adding " = "Eine verwaltete Codex-Anmeldung läuft bereits. Warten Sie, bis der Vorgang abgeschlossen ist, bevor Sie ihn hinzufügen"; +"API key" = "API-Schlüssel"; +"API region" = "API-Region"; +"API token" = "API-Token"; +"API tokens" = "API-Tokens"; +"About" = "Um"; +"Account" = "Konto"; +"Accounts" = "Konten"; +"Accounts subtitle" = "Untertitel \"Konten\"."; +"Active" = "Aktiv"; +"Add" = "Hinzufügen"; +"Add Workspace" = "Arbeitsbereich hinzufügen"; +"Advanced" = "Fortschrittlich"; +"All" = "Alle"; +"Always allow prompts" = "Erlauben Sie immer Aufforderungen"; +"Animation pattern" = "Animationsmuster"; +"Antigravity login is managed in the app" = "Der Antigravity-Login wird in der App verwaltet"; +"Applies only to the Security.framework OAuth keychain reader." = "Gilt nur für den Security.framework OAuth-Schlüsselbundleser."; +"Auto falls back to the next source if the preferred one fails." = "Wenn die bevorzugte Quelle ausfällt, wird automatisch auf die nächste Quelle zurückgegriffen."; +"Auto uses API first, then falls back to CLI on auth failures." = "Auto verwendet zuerst die API und greift dann bei Authentifizierungsfehlern auf die CLI zurück."; +"Auto-detect" = "Automatische Erkennung"; +"Auto-refresh is off; use the menu's Refresh command." = "Die automatische Aktualisierung ist deaktiviert. Verwenden Sie den Befehl \"Aktualisieren\" des Menüs."; +"Auto-refresh: hourly · Timeout: 10m" = "Automatische Aktualisierung: stündlich · Zeitüberschreitung: 10 Minuten"; +"Automatic" = "Automatisch"; +"Automatic imports browser cookies and WorkOS tokens." = "Automatischer Import von Browser-Cookies und WorkOS-Tokens."; +"Automatic imports browser cookies and local storage tokens." = "Automatischer Import von Browser-Cookies und lokalen Speichertokens."; +"Automatic imports browser cookies for dashboard extras." = "Automatischer Import von Browser-Cookies für Dashboard-Extras."; +"Automatic imports browser cookies for the web API." = "Automatischer Import von Browser-Cookies für die Web-API."; +"Automatic imports browser cookies from Model Studio/Bailian." = "Importiert automatisch Browser-Cookies von Model Studio/Bailian."; +"Automatic imports browser cookies from admin.mistral.ai." = "Importiert automatisch Browser-Cookies von admin.mistral.ai."; +"Automatic imports browser cookies from opencode.ai." = "Importiert automatisch Browser-Cookies von opencode.ai."; +"Automatic imports browser cookies or stored sessions." = "Automatischer Import von Browser-Cookies oder gespeicherten Sitzungen."; +"Automatic imports browser cookies." = "Automatischer Import von Browser-Cookies."; +"Automatically imports browser session cookie." = "Importiert automatisch Browser-Sitzungscookies."; +"Automatically opens CodexBar when you start your Mac." = "CodexBar wird automatisch geöffnet, wenn Sie Ihren Mac starten."; +"Automation" = "Automatisierung"; +"Average (\\(label1) + \\(label2))" = "Durchschnitt (\\\\(label1) + \\\\(label2))"; +"Average (\\(metadata.sessionLabel) + \\(metadata.weeklyLabel))" = "Durchschnitt (\\\\(metadata.sessionLabel) + \\\\(metadata.weeklyLabel))"; +"Avoid Keychain prompts" = "Vermeiden Sie Aufforderungen zum Schlüsselbund"; +"Balance" = "Gleichgewicht"; +"Battery Saver" = "Batteriesparmodus"; +"Bordered" = "Umrandet"; +"Build" = "Bauen"; +"Built \\(buildTimestamp)" = "Gebaut \\\\(buildTimestamp)"; +"Buy Credits..." = "Credits kaufen..."; +"Buy Credits…" = "Credits kaufen…"; +"CLI paths" = "CLI-Pfade"; +"CLI sessions" = "CLI-Sitzungen"; +"Caches" = "Caches"; +"Cancel" = "Stornieren"; +"Check for Updates…" = "Nach Updates suchen…"; +"Check for updates automatically" = "Suchen Sie automatisch nach Updates"; +"Check if you like your agents having some fun up there." = "Prüfen Sie, ob Sie möchten, dass Ihre Agenten dort oben Spaß haben."; +"Check provider status" = "Überprüfen Sie den Anbieterstatus"; +"Choose Codex workspace" = "Wählen Sie Codex-Arbeitsbereich"; +"Choose the MiniMax host (global .io or China mainland .com)." = "Wählen Sie den MiniMax-Host (global .io oder China Mainland .com)."; +"Choose up to " = "Wählen Sie bis zu"; +"Choose up to \\(Self.maxOverviewProviders) providers" = "Wählen Sie bis zu \\\\(Self.maxOverviewProviders) Anbieter aus"; +"Choose up to \\(count) providers" = "Wählen Sie bis zu \\\\(count) Anbieter aus"; +"Choose what to show in the menu bar (Pace shows usage vs. expected)." = "Wählen Sie aus, was in der Menüleiste angezeigt werden soll (Pace zeigt die Nutzung im Vergleich zur erwarteten)."; +"Choose which Codex account CodexBar should follow." = "Wählen Sie aus, welchem ​​Codex-Konto CodexBar folgen soll."; +"Choose which window drives the menu bar percent." = "Wählen Sie aus, welches Fenster den Prozentwert der Menüleiste steuert."; +"Chrome" = "Chrom"; +"Claude CLI not found" = "Claude CLI nicht gefunden"; +"Claude binary" = "Claude binär"; +"Claude cookies" = "Claude-Kekse"; +"Claude login failed" = "Die Anmeldung von Claude ist fehlgeschlagen"; +"Claude login timed out" = "Zeitüberschreitung beim Claude-Login"; +"Close" = "Schließen"; +"Code review" = "Codeüberprüfung"; +"Codex CLI not found" = "Codex-CLI nicht gefunden"; +"Codex account login already running" = "Die Codex-Kontoanmeldung läuft bereits"; +"Codex binary" = "Codex-Binärdatei"; +"Codex login failed" = "Codex-Anmeldung fehlgeschlagen"; +"Codex login timed out" = "Zeitüberschreitung beim Codex-Login"; +"CodexBar Lifecycle Keepalive" = "CodexBar Lifecycle Keepalive"; +"CodexBar can't show its menu bar icon" = "CodexBar kann sein Menüleistensymbol nicht anzeigen"; +"CodexBar could not read managed account storage. " = "CodexBar konnte den verwalteten Kontospeicher nicht lesen."; +"Configure…" = "Konfigurieren…"; +"Connected" = "Verbunden"; +"Controls how much detail is logged." = "Steuert, wie viele Details protokolliert werden."; +"Cookie header" = "Cookie-Header"; +"Cookie source" = "Cookie-Quelle"; +"Cookie: ..." = "Keks: ..."; +"Cookie: \\u{2026}\\\n\\\nor paste a cURL capture from the Abacus AI dashboard" = "Cookie: \\u{2026}\\\n\\\noder fügen Sie eine cURL-Erfassung aus dem Abacus AI-Dashboard ein"; +"Cookie: \\u{2026}\\\n\\\nor paste the __Secure-next-auth.session-token value" = "Cookie: \\u{2026}\\\n\\\noder fügen Sie den __Secure-next-auth.session-token-Wert ein"; +"Cookie: \\u{2026}\\\n\\\nor paste the kimi-auth token value" = "Cookie: \\u{2026}\\\n\\\noder fügen Sie den Kimi-Auth-Token-Wert ein"; +"Cookie: …" = "Keks: …"; +"CopilotDeviceFlow" = "CopilotDeviceFlow"; +"Cost" = "Kosten"; +"Could not add Codex account" = "Codex-Konto konnte nicht hinzugefügt werden"; +"Could not open Terminal for Gemini" = "Terminal für Gemini konnte nicht geöffnet werden"; +"Could not start claude /login" = "Claude /login konnte nicht gestartet werden"; +"Could not start codex login" = "Die Codex-Anmeldung konnte nicht gestartet werden"; +"Could not switch system account" = "Das Systemkonto konnte nicht gewechselt werden"; +"Credits" = "Credits"; +"Credits history" = "Credits-Geschichte"; +"Cursor login failed" = "Die Cursor-Anmeldung ist fehlgeschlagen"; +"Custom" = "Brauch"; +"Custom Path" = "Benutzerdefinierter Pfad"; +"Daily Routines" = "Tägliche Routinen"; +"Debug" = "Debuggen"; +"Default" = "Standard"; +"Disable Keychain access" = "Deaktivieren Sie den Schlüsselbundzugriff"; +"Disabled" = "Deaktiviert"; +"Dismiss" = "Zurückweisen"; +"Disconnected" = "Getrennt"; +"Display" = "Anzeige"; +"Display mode" = "Anzeigemodus"; +"Display reset times as absolute clock values instead of countdowns." = "Anzeige der Rücksetzzeiten als absolute Uhrwerte statt als Countdown."; +"Done" = "Erledigt"; +"Effective PATH" = "Effektiver WEG"; +"Email" = "E-Mail"; +"Enable Merge Icons to configure Overview tab providers." = "Aktivieren Sie \"Symbole zusammenführen\", um Anbieter für die Registerkarte \"Übersicht\" zu konfigurieren."; +"Enable file logging" = "Aktivieren Sie die Dateiprotokollierung"; +"Enabled" = "Ermöglicht"; +"Error" = "Fehler"; +"Error simulation" = "Fehlersimulation"; +"Expose troubleshooting tools in the Debug tab." = "Stellen Sie Tools zur Fehlerbehebung auf der Registerkarte \"Debug\" bereit."; +"Failed" = "Fehlgeschlagen"; +"False" = "FALSCH"; +"Fetch strategy attempts" = "Strategieversuche abrufen"; +"Fetching" = "Holen"; +"Field" = "Feld"; +"Field subtitle" = "Felduntertitel"; +"Finish the current managed account change before switching the system account." = "Schließen Sie die Änderung des aktuellen verwalteten Kontos ab, bevor Sie das Systemkonto wechseln."; +"Force animation on next refresh" = "Animation bei der nächsten Aktualisierung erzwingen"; +"Gateway region" = "Gateway-Region"; +"Gemini CLI not found" = "Gemini-CLI nicht gefunden"; +"Gemini/Antigravity, surfacing incidents in the icon and menu." = "Zwillinge/Antigravitation, auftauchende Ereignisse im Symbol und Menü."; +"General" = "Allgemein"; +"GitHub" = "GitHub"; +"GitHub Copilot Login" = "GitHub Copilot-Anmeldung"; +"GitHub Login" = "GitHub-Anmeldung"; +"Hide details" = "Details ausblenden"; +"Hide personal information" = "Persönliche Informationen ausblenden"; +"Historical tracking" = "Historische Verfolgung"; +"How often CodexBar polls providers in the background." = "Wie oft fragt CodexBar Anbieter im Hintergrund ab?"; +"Inactive" = "Inaktiv"; +"Install CLI" = "CLI installieren"; +"Install the Claude CLI (npm i -g @anthropic-ai/claude-code) and try again." = "Installieren Sie die Claude-CLI (npm i -g @anthropic-ai/claude-code) und versuchen Sie es erneut."; +"Install the Codex CLI (npm i -g @openai/codex) and try again." = "Installieren Sie die Codex-CLI (npm i -g @openai/codex) und versuchen Sie es erneut."; +"Install the Gemini CLI (npm i -g @google/gemini-cli) and try again." = "Installieren Sie die Gemini-CLI (npm i -g @google/gemini-cli) und versuchen Sie es erneut."; +"JetBrains AI is ready" = "JetBrains AI ist bereit"; +"JetBrains IDE" = "JetBrains-IDE"; +"Keep CLI sessions alive" = "Halten Sie CLI-Sitzungen am Leben"; +"Keyboard shortcut" = "Tastenkombination"; +"Keychain access" = "Schlüsselbundzugriff"; +"Keychain prompt policy" = "Richtlinie für Schlüsselbund-Eingabeaufforderungen"; +"Last \\(name) fetch failed:" = "Der letzte Abruf von \\\\(name) ist fehlgeschlagen:"; +"Last \\(self.store.metadata(for: self.provider).displayName) fetch failed:" = "Letzter Abruf von \\\\(self.store.metadata(for: self.provider).displayName) ist fehlgeschlagen:"; +"Last attempt" = "Letzter Versuch"; +"Link" = "Link"; +"Loading animations" = "Animationen werden geladen"; +"Loading…" = "Laden…"; +"Local" = "Lokal"; +"Logging" = "Protokollierung"; +"Login failed" = "Fehler bei der Anmeldung"; +"Login shell PATH (startup capture)" = "Login-Shell-PATH (Starterfassung)"; +"Login timed out" = "Zeitüberschreitung bei der Anmeldung"; +"MCP details" = "MCP-Details"; +"Managed Codex accounts unavailable" = "Verwaltete Codex-Konten nicht verfügbar"; +"Managed account storage is unreadable. Live account access is still available, " = "Der verwaltete Kontospeicher ist nicht lesbar. Der Live-Kontozugriff ist weiterhin verfügbar."; +"Manual" = "Handbuch"; +"May your tokens never run out—keep agent limits in view." = "Mögen Ihre Token nie ausgehen – behalten Sie die Agentenlimits im Blick."; +"Menu bar" = "Menüleiste"; +"Menu bar auto-shows the provider closest to its rate limit." = "In der Menüleiste wird automatisch der Anbieter angezeigt, der seinem Tariflimit am nächsten kommt."; +"Menu bar metric" = "Menüleistenmetrik"; +"Menu bar shows percent" = "Die Menüleiste zeigt Prozent an"; +"Menu content" = "Menüinhalt"; +"Merge Icons" = "Symbole zusammenführen"; +"Never prompt" = "Niemals auffordern"; +"No" = "NEIN"; +"No Codex accounts detected yet." = "Es wurden noch keine Codex-Konten erkannt."; +"No JetBrains IDE detected" = "Keine JetBrains-IDE erkannt"; +"No cost history data." = "Keine Daten zur Kostenhistorie."; +"No data available" = "Keine Daten verfügbar"; +"No data yet" = "Noch keine Daten"; +"No enabled providers available for Overview." = "Für die Übersicht sind keine aktivierten Anbieter verfügbar."; +"No providers selected" = "Keine Anbieter ausgewählt"; +"No token accounts yet." = "Noch keine Token-Konten."; +"No usage breakdown data." = "Keine Nutzungsaufschlüsselungsdaten."; +"None" = "Keiner"; +"Notifications" = "Benachrichtigungen"; +"Notifies when the 5-hour session quota hits 0% and when it becomes " = "Benachrichtigt, wenn das 5-Stunden-Sitzungskontingent 0 % erreicht und wenn dies der Fall ist"; +"OK" = "OK"; +"Obscure email addresses in the menu bar and menu UI." = "Verdecken Sie E-Mail-Adressen in der Menüleiste und der Menü-Benutzeroberfläche."; +"Off" = "Aus"; +"Offline" = "Offline"; +"On" = "An"; +"Online" = "Online"; +"Only on user action" = "Nur bei Benutzeraktion"; +"Open" = "Offen"; +"Open API Keys" = "Offene API-Schlüssel"; +"Open Amp Settings" = "Öffnen Sie die Verstärkereinstellungen"; +"Open Antigravity to sign in, then refresh CodexBar." = "Öffnen Sie Antigravity, um sich anzumelden, und aktualisieren Sie dann CodexBar."; +"Open Browser" = "Öffnen Sie den Browser"; +"Open Coding Plan" = "Codierungsplan öffnen"; +"Open Console" = "Öffnen Sie die Konsole"; +"Open Dashboard" = "Öffnen Sie das Dashboard"; +"Open Mistral Admin" = "Öffnen Sie Mistral Admin"; +"Open Menu Bar Settings" = "Öffnen Sie die Menüleisteneinstellungen"; +"Open Ollama Settings" = "Öffnen Sie die Ollama-Einstellungen"; +"Open Terminal" = "Öffnen Sie das Terminal"; +"Open Usage Page" = "Öffnen Sie die Nutzungsseite"; +"Open Warp API Key Guide" = "Öffnen Sie den Warp-API-Schlüsselleitfaden"; +"Open menu" = "Menü öffnen"; +"Open token file" = "Tokendatei öffnen"; +"OpenAI cookies" = "OpenAI-Cookies"; +"OpenAI web extras" = "OpenAI-Web-Extras"; +"Option A" = "Option A"; +"Option B" = "Option B"; +"Optional override if workspace lookup fails." = "Optionale Überschreibung, wenn die Arbeitsbereichssuche fehlschlägt."; +"Options" = "Optionen"; +"Override auto-detection with a custom IDE base path" = "Überschreiben Sie die automatische Erkennung mit einem benutzerdefinierten IDE-Basispfad"; +"Overview" = "Überblick"; +"Overview rows always follow provider order." = "Übersichtszeilen folgen immer der Anbieterreihenfolge."; +"Overview tab providers" = "Anbieter von Übersichtsregisterkarten"; +"Paste API key…" = "API-Schlüssel einfügen…"; +"Paste API token…" = "API-Token einfügen…"; +"Paste key…" = "Schlüssel einfügen…"; +"Paste sessionKey or OAuth token…" = "SessionKey oder OAuth-Token einfügen…"; +"Paste the Cookie header from a request to admin.mistral.ai. " = "Fügen Sie den Cookie-Header aus einer Anfrage in admin.mistral.ai ein."; +"Paste token…" = "Token einfügen…"; +"Personal" = "Persönlich"; +"Picker" = "Pflücker"; +"Picker subtitle" = "Picker-Untertitel"; +"Placeholder" = "Platzhalter"; +"Plan" = "Planen"; +"Play full-screen confetti when weekly usage resets." = "Spielen Sie Konfetti im Vollbildmodus ab, wenn die wöchentliche Nutzung zurückgesetzt wird."; +"Polls OpenAI/Claude status pages and Google Workspace for " = "Fragt OpenAI/Claude-Statusseiten und Google Workspace ab"; +"Prevents any Keychain access while enabled." = "Verhindert jeglichen Zugriff auf den Schlüsselbund, solange diese Option aktiviert ist."; +"Primary (API key limit)" = "Primär (API-Schlüssellimit)"; +"Primary (\\(label))" = "Primär (\\\\(label))"; +"Primary (\\(metadata.sessionLabel))" = "Primär (\\\\(metadata.sessionLabel))"; +"Probe logs" = "Sondenprotokolle"; +"Progress bars fill as you consume quota (instead of showing remaining)." = "Fortschrittsbalken füllen sich, wenn Sie das Kontingent verbrauchen (anstatt die verbleibende Menge anzuzeigen)."; +"Provider" = "Anbieter"; +"Providers" = "Anbieter"; +"Quit CodexBar" = "CodexBar beenden"; +"Random (default)" = "Zufällig (Standard)"; +"Reads local usage logs. Shows today + last 30 days cost in the menu." = "Liest lokale Nutzungsprotokolle. Zeigt heute + das ausgewählte Verlaufsfenster im Menü an."; +"Refresh" = "Aktualisieren"; +"Refresh cadence" = "Trittfrequenz aktualisieren"; +"Remote" = "Fernbedienung"; +"Remove" = "Entfernen"; +"Remove Codex account?" = "Codex-Konto entfernen?"; +"Remove \\(account.email) from CodexBar? Its managed Codex home will be deleted." = "\\\\(account.email) aus CodexBar entfernen? Das verwaltete Codex-Heim wird gelöscht."; +"Remove \\(email) from CodexBar? Its managed Codex home will be deleted." = "\\\\(email) aus CodexBar entfernen? Das verwaltete Codex-Heim wird gelöscht."; +"Remove selected account" = "Ausgewähltes Konto entfernen"; +"Replace critter bars with provider branding icons and a percentage." = "Ersetzen Sie die Leisten durch Anbieter-Branding-Symbole und einen Prozentsatz."; +"Replay selected animation" = "Ausgewählte Animation erneut abspielen"; +"Requires authentication via GitHub Device Flow." = "Erfordert Authentifizierung über GitHub Device Flow."; +"Resets: \\(reset)" = "Zurückgesetzt: \\\\(reset)"; +"Rolling five-hour limit" = "Rollierendes Fünf-Stunden-Limit"; +"Search hourly" = "Stündlich suchen"; +"Secondary (\\(label))" = "Sekundär (\\\\(label))"; +"Secondary (\\(metadata.weeklyLabel))" = "Sekundär (\\\\(metadata.weeklyLabel))"; +"Select a provider" = "Wählen Sie einen Anbieter aus"; +"Select the IDE to monitor" = "Wählen Sie die zu überwachende IDE aus"; +"Session quota notifications" = "Benachrichtigungen über Sitzungskontingente"; +"Session tokens" = "Sitzungstoken"; +"Settings" = "Einstellungen"; +"Show Codex Credits and Claude Extra usage sections in the menu." = "Zeigen Sie die Nutzungsabschnitte \"Codex Credits\" und \"Claude Extra\" im Menü an."; +"Show Debug Settings" = "Debug-Einstellungen anzeigen"; +"Show all token accounts" = "Alle Token-Konten anzeigen"; +"Show cost summary" = "Kostenübersicht anzeigen"; +"Show credits + extra usage" = "Credits + zusätzliche Nutzung anzeigen"; +"Show details" = "Details anzeigen"; +"Show most-used provider" = "Meistgenutzten Anbieter anzeigen"; +"Show provider icons in the switcher (otherwise show a weekly progress line)." = "Anbietersymbole im Umschalter anzeigen (andernfalls eine wöchentliche Fortschrittslinie anzeigen)."; +"Show reset time as clock" = "Reset-Zeit als Uhr anzeigen"; +"Show usage as used" = "Nutzung als gebraucht anzeigen"; +"Sign in via button below" = "Melden Sie sich über die Schaltfläche unten an"; +"Skip teardown between probes (debug-only)." = "Teardown zwischen Probes überspringen (nur Debug)."; +"Stack token accounts in the menu (otherwise show an account switcher bar)." = "Stapeln Sie Token-Konten im Menü (andernfalls wird eine Kontowechselleiste angezeigt)."; +"Start at Login" = "Beginnen Sie mit der Anmeldung"; +"Status" = "Status"; +"Store Claude sessionKey cookies or OAuth access tokens." = "Speichern Sie Claude-SessionKey-Cookies oder OAuth-Zugriffstoken."; +"Store multiple Abacus AI Cookie headers." = "Speichern Sie mehrere Abacus AI Cookie-Header."; +"Store multiple Augment Cookie headers." = "Speichern Sie mehrere Augment-Cookie-Header."; +"Store multiple Cursor Cookie headers." = "Speichern Sie mehrere Cursor-Cookie-Header."; +"Store multiple Factory Cookie headers." = "Speichern Sie mehrere Factory-Cookie-Header."; +"Store multiple MiniMax Cookie headers." = "Speichern Sie mehrere MiniMax-Cookie-Header."; +"Store multiple Mistral Cookie headers." = "Speichern Sie mehrere Mistral-Cookie-Header."; +"Store multiple Ollama Cookie headers." = "Speichern Sie mehrere Ollama-Cookie-Header."; +"Store multiple OpenCode Cookie headers." = "Speichern Sie mehrere OpenCode-Cookie-Header."; +"Store multiple OpenCode Go Cookie headers." = "Speichern Sie mehrere OpenCode Go-Cookie-Header."; +"Stored in the CodexBar config file." = "Wird in der CodexBar-Konfigurationsdatei gespeichert."; +"Stored in ~/.codexbar/config.json. " = "Gespeichert in ~/.codexbar/config.json."; +"Stored in ~/.codexbar/config.json. Generate one at kimi-k2.ai." = "Gespeichert in ~/.codexbar/config.json. Generieren Sie eines unter kimi-k2.ai."; +"Stored in ~/.codexbar/config.json. Paste the key from the Synthetic dashboard." = "Gespeichert in ~/.codexbar/config.json. Fügen Sie den Schlüssel aus dem Synthetic-Dashboard ein."; +"Stored in ~/.codexbar/config.json. Paste your Coding Plan API key from Model Studio." = "Gespeichert in ~/.codexbar/config.json. Fügen Sie Ihren Coding Plan API-Schlüssel aus Model Studio ein."; +"Stored in ~/.codexbar/config.json. Paste your MiniMax API key." = "Gespeichert in ~/.codexbar/config.json. Fügen Sie Ihren MiniMax-API-Schlüssel ein."; +"Stored in ~/.codexbar/config.json. You can also provide KILO_API_KEY or " = "Gespeichert in ~/.codexbar/config.json. Sie können auch KILO_API_KEY oder angeben"; +"Stores local Codex usage history (8 weeks) to personalize Pace predictions." = "Speichert den lokalen Codex-Nutzungsverlauf (8 Wochen), um Pace-Vorhersagen zu personalisieren."; +"Subscription Utilization" = "Abonnementnutzung"; +"Surprise me" = "Überrasche mich"; +"Switcher shows icons" = "Switcher zeigt Symbole an"; +"Symlink CodexBarCLI to /usr/local/bin and /opt/homebrew/bin as codexbar." = "Verknüpfen Sie CodexBarCLI mit /usr/local/bin und /opt/homebrew/bin als Codexbar."; +"System" = "System"; +"terminal_app_subtitle" = "Terminal für die Aktion „Terminal öffnen“"; +"terminal_app_title" = "Standardterminal"; +"Temporarily shows the loading animation after the next refresh." = "Zeigt nach der nächsten Aktualisierung vorübergehend die Ladeanimation an."; +"Tertiary (\\(label))" = "Tertiär (\\\\(label))"; +"Tertiary (\\(tertiaryTitle))" = "Tertiär (\\\\(tertiaryTitle))"; +"The default Codex account on this Mac." = "Das Standard-Codex-Konto auf diesem Mac."; +"Toggle" = "Umschalten"; +"Toggle subtitle" = "Untertitel umschalten"; +"Token" = "Token"; +"Trigger the menu bar menu from anywhere." = "Lösen Sie das Menü der Menüleiste von überall aus aus."; +"True" = "WAHR"; +"Twitter" = "Twitter"; +"Unsupported" = "Nicht unterstützt"; +"Update Channel" = "Kanal aktualisieren"; +"Updated" = "Aktualisiert"; +"Updates unavailable in this build." = "Updates sind in diesem Build nicht verfügbar."; +"Usage" = "Verwendung"; +"Usage breakdown" = "Aufschlüsselung der Nutzung"; +"Usage history (30 days)" = "Nutzungsverlauf"; +"Usage source" = "Nutzungsquelle"; +"Use BigModel for the China mainland endpoints (open.bigmodel.cn)." = "Verwenden Sie BigModel für die Endpunkte auf dem chinesischen Festland (open.bigmodel.cn)."; +"Use a single menu bar icon with a provider switcher." = "Verwenden Sie ein einzelnes Menüleistensymbol mit einem Anbieter-Umschalter."; +"Use international or China mainland console gateways for quota fetches." = "Verwenden Sie für Kontingentabrufe internationale Konsolen-Gateways oder Konsolen-Gateways auf dem chinesischen Festland."; +"Version" = "Version"; +"Version \\(self.versionString)" = "Version \\(self.versionString)"; +"Version \\(version)" = "Version \\(version)"; +"Version \\(versionString)" = "Version \\(versionString)"; +"Vertex AI Login" = "Vertex AI Login"; +"Wait for the current managed Codex login to finish before adding another account." = "Warten Sie, bis die aktuell verwaltete Codex-Anmeldung abgeschlossen ist, bevor Sie ein weiteres Konto hinzufügen."; +"Waiting for Authentication..." = "Warten auf Authentifizierung..."; +"Website" = "Webseite"; +"Weekly limit confetti" = "Wöchentliches Konfetti-Limit"; +"Weekly token limit" = "Wöchentliches Token-Limit"; +"Weekly usage" = "Wöchentliche Nutzung"; +"Weekly usage unavailable for this account." = "Die wöchentliche Nutzung ist für dieses Konto nicht verfügbar."; +"Window: \\(window)" = "Fenster: \\\\(window)"; +"Write logs to \\(self.fileLogPath) for debugging." = "Schreiben Sie Protokolle zum Debuggen nach \\\\(self.fileLogPath)."; +"Yes" = "Ja"; +"\\(detail.modelCode): \\(usage)" = "\\(detail.modelCode): \\(usage)"; +"\\(name): \\(truncated)" = "\\(name): \\(truncated)"; +"\\(name): \\(updated) · 30d \\(cost)" = "\\(name): \\(updated) · 30d \\(cost)"; +"\\(name): fetching…\\(elapsed)" = "\\\\(name): Abrufen…\\\\(elapsed)"; +"\\(name): last attempt \\(when)" = "\\\\(name): letzter Versuch \\\\(when)"; +"\\(name): no data yet" = "\\\\(name): noch keine Daten"; +"\\(name): unsupported" = "\\\\(name): nicht unterstützt"; +"all browsers" = "alle Browser"; +"available again." = "wieder verfügbar."; +"built_format" = "Gebaut %@"; +"copilot_complete_in_browser" = "Melden Sie sich vollständig in Ihrem Browser an."; +"copilot_device_code" = "Gerätecode in die Zwischenablage kopiert: %1$@\n\nÜberprüfen unter: %2$@"; +"copilot_device_code_copied" = "Gerätecode kopiert."; +"copilot_verify_at" = "Überprüfen Sie um %@"; +"copilot_waiting_text" = "Schließen Sie die Anmeldung in Ihrem Browser ab.\nDieses Fenster wird automatisch geschlossen, wenn die Anmeldung abgeschlossen ist."; +"copilot_window_closes_auto" = "Dieses Fenster wird automatisch geschlossen, wenn die Anmeldung abgeschlossen ist."; +"cost_status_error" = "%1$@: %2$@"; +"cost_status_fetching" = "%1$@: Abrufen… %2$@"; +"cost_status_last_attempt" = "%1$@: letzter Versuch %2$@"; +"cost_status_no_data" = "%@: noch keine Daten"; +"cost_status_snapshot" = "%1$@: %2$@ · %3$@ %4$@"; +"cost_status_unsupported" = "%@: nicht unterstützt"; +"credits_remaining" = "Credits: %@"; +"cursor_on_demand" = "Auf Anfrage: %@"; +"cursor_on_demand_with_limit" = "Auf Anfrage: %1$@ / %2$@"; +"extra_usage_format" = "Zusätzliche Nutzung: %1$@ / %2$@"; +"jetbrains_detected_generate" = "Erkannt: %@. Verwenden Sie den KI-Assistenten einmal, um Quotendaten zu generieren, und aktualisieren Sie dann CodexBar."; +"jetbrains_detected_select" = "Erkannt: %@. Wählen Sie in den Einstellungen Ihre bevorzugte IDE aus und aktualisieren Sie dann CodexBar."; +"last_fetch_failed_with_provider" = "Der letzte Abruf von %@ ist fehlgeschlagen:"; +"last_spend" = "Letzte Ausgabe: %@"; +"mcp_model_usage" = "%1$@: %2$@"; +"mcp_resets" = "Zurückgesetzt: %@"; +"mcp_window" = "Fenster: %@"; +"metric_average" = "Durchschnitt (%1$@ + %2$@)"; +"metric_primary" = "Primär (%@)"; +"metric_secondary" = "Sekundär (%@)"; +"metric_tertiary" = "Tertiärbereich (%@)"; +"multiple_workspaces_found" = "CodexBar hat mehrere Arbeitsbereiche für %@ gefunden. Bitte wählen Sie den Arbeitsbereich aus, den Sie hinzufügen möchten."; +"ory_session_…=…; csrftoken=…" = "ory_session_…=…; csrftoken=…"; +"overview_choose_providers" = "Wählen Sie bis zu %@ Anbieter aus"; +"remove_account_message" = "%@ aus CodexBar entfernen? Das verwaltete Codex-Heim wird gelöscht."; +"version_format" = "Version %@"; +"vertex_ai_login_instructions" = "Um die Vertex AI-Nutzung zu verfolgen, authentifizieren Sie sich bei Google Cloud.\n\n1. Öffnen Sie Terminal\n2. Führen Sie Folgendes aus: gcloud auth application-default login\n3. Befolgen Sie die Anweisungen des Browsers, um sich anzumelden\n4. Legen Sie Ihr Projekt fest: gcloud config set project PROJECT_ID\n\nTerminal jetzt öffnen?"; +"workspaceID is set but only opencode, opencodego, and deepgram support workspaceID." = "Die Arbeitsbereichs-ID ist festgelegt, aber nur Opencode, Opencodego und Deepgram unterstützen die Arbeitsbereichs-ID."; +"© 2026 Peter Steinberger. MIT License." = "© 2026 Peter Steinberger. MIT-Lizenz."; + +/* General Pane */ +"section_system" = "System"; +"section_usage" = "Nutzung"; +"section_automation" = "Automatisierung"; +"language_title" = "Sprache"; +"language_subtitle" = "Anzeigesprache wechseln. Ein App-Neustart wird empfohlen."; +"language_system" = "System"; +"language_english" = "Englisch"; +"language_spanish" = "Español"; +"language_catalan" = "Català"; +"language_chinese_simplified" = "简体中文"; +"language_chinese_traditional" = "繁體中文"; +"language_portuguese_brazilian" = "Português (Brasil)"; +"language_german" = "Deutsch"; +"language_japanese" = "Japanisch"; +"language_swedish" = "Svenska"; +"language_dutch" = "Niederländisch"; +"language_french" = "Französisch"; +"language_ukrainian" = "Ukrainisch"; +"language_vietnamese" = "Vietnamesisch"; +"language_korean" = "Koreanisch"; +"start_at_login_title" = "Beim Login starten"; +"start_at_login_subtitle" = "Startet CodexBar automatisch, wenn dein Mac hochfährt."; +"show_cost_summary" = "Kostenübersicht anzeigen"; +"show_cost_summary_subtitle" = "Liest lokale Nutzungsprotokolle. Zeigt heute + das gewählte Verlaufsfenster im Menü."; +"cost_history_days_title" = "Verlaufsfenster: %d Tage"; +"cost_auto_refresh_info" = "Auto-Aktualisierung: stündlich · Timeout: 10 Min."; +"refresh_cadence_title" = "Aktualisierungsintervall"; +"refresh_cadence_subtitle" = "Wie oft CodexBar Anbieter im Hintergrund abfragt."; +"manual_refresh_hint" = "Auto-Aktualisierung ist aus; nutze im Menü den Befehl „Aktualisieren“."; +"check_provider_status_title" = "Anbieterstatus prüfen"; +"check_provider_status_subtitle" = "Prüft OpenAI/Claude-Statusseiten und Google Workspace für Gemini/Antigravity und zeigt Vorfälle in Icon und Menü."; +"session_quota_notifications_title" = "Sitzungs-Quota-Benachrichtigungen"; +"session_quota_notifications_subtitle" = "Benachrichtigt, wenn das 5-Stunden-Sitzungslimit 0 % erreicht und wenn es wieder verfügbar ist."; +"quota_warning_notifications_title" = "Quota-Warnungen"; +"quota_warning_notifications_subtitle" = "Warnt, wenn verbleibende Sitzungs- oder Wochenquote die konfigurierten Schwellenwerte unterschreitet."; +"quota_warnings_title" = "Kontingentwarnungen"; +"quota_warning_session" = "Sitzung"; +"quota_warning_session_capitalized" = "Sitzung"; +"quota_warning_weekly" = "wöchentlich"; +"quota_warning_weekly_capitalized" = "Wöchentlich"; +"quota_warning_notification_title" = "%1$@ %2$@ Kontingent niedrig"; +"quota_warning_notification_body" = "%1$@ übrig. Reached your %2$d%% %3$@ warning threshold."; +"quota_warning_notification_body_with_account" = "Konto %1$@. %2$@ übrig. Ihr Warnschwellenwert von %3$d%% %4$@ wurde erreicht."; +"session_depleted_notification_title" = "%@ Sitzung erschöpft"; +"session_depleted_notification_body" = "0 % übrig. Werde benachrichtigen, wenn es wieder verfügbar ist."; +"session_restored_notification_title" = "%@ Sitzung wiederhergestellt"; +"session_restored_notification_body" = "Das Sitzungskontingent ist wieder verfügbar."; +"quota_warning_warn_at" = "Warnen Sie vor"; +"quota_warning_global_threshold_subtitle" = "Verbleibende Prozentsätze für Sitzungs- und Wochenfenster, es sei denn, ein Anbieter überschreibt sie."; +"quota_warning_sound" = "Benachrichtigungston abspielen"; +"quota_warning_provider_inherits" = "Verwendet die globalen Einstellungen für Kontingentwarnungen, es sei denn, hier wird ein Fenster angepasst."; +"quota_warning_customize_thresholds" = "Passen Sie die Schwellenwerte für %@ an"; +"quota_warning_enable_warnings" = "Aktivieren Sie %@-Warnungen"; +"quota_warning_window_warn_at" = "%@ warnen bei"; +"quota_warning_off" = "Aus"; +"quota_warning_inherited" = "Geerbt: %@"; +"quota_warning_depleted_only" = "nur erschöpft"; +"quota_warning_upper" = "Obere"; +"quota_warning_lower" = "Untere"; +"apply" = "Anwenden"; +"quit_app" = "CodexBar beenden"; + +/* Tab titles */ +"tab_general" = "Allgemein"; +"tab_providers" = "Anbieter"; +"tab_display" = "Anzeige"; +"tab_advanced" = "Fortschrittlich"; +"tab_about" = "Um"; +"tab_debug" = "Debuggen"; + +/* Providers Pane */ +"select_a_provider" = "Wählen Sie einen Anbieter aus"; +"cancel" = "Stornieren"; +"last_fetch_failed" = "Der letzte Abruf ist fehlgeschlagen"; +"usage_not_fetched_yet" = "Nutzung noch nicht abgerufen"; +"managed_account_storage_unreadable" = "Der verwaltete Kontospeicher ist nicht lesbar. Der Live-Kontozugriff ist weiterhin verfügbar, die verwalteten Aktionen \"Hinzufügen\", \"Erneute Authentifizierung\" und \"Entfernen\" sind jedoch deaktiviert, bis der Store wiederhergestellt werden kann."; +"remove_codex_account_title" = "Codex-Konto entfernen?"; +"remove" = "Entfernen"; +"managed_login_already_running" = "Eine verwaltete Codex-Anmeldung läuft bereits. Warten Sie, bis der Vorgang abgeschlossen ist, bevor Sie ein weiteres Konto hinzufügen oder erneut authentifizieren."; +"managed_login_failed" = "Die Anmeldung bei verwaltetem Codex wurde nicht abgeschlossen. Stellen Sie sicher, dass \"codex --version\" im Terminal funktioniert. Wenn macOS blockiert oder \"Codex\" in den Papierkorb verschoben hat, entfernen Sie veraltete doppelte Installationen, führen Sie \"npm install -g --include=optional @openai/codex@latest\" aus und versuchen Sie es dann erneut."; +"codex_login_output" = "Codex-Login-Ausgabe:"; +"managed_login_missing_email" = "Codex-Anmeldung abgeschlossen, aber keine Konto-E-Mail-Adresse verfügbar. Versuchen Sie es erneut, nachdem Sie sich vergewissert haben, dass das Konto vollständig angemeldet ist."; +"login_success_notification_title" = "%@ Anmeldung erfolgreich"; +"login_success_notification_body" = "Sie können zur App zurückkehren; Authentifizierung abgeschlossen."; +"workspace_selection_cancelled" = "CodexBar hat mehrere Arbeitsbereiche gefunden, es wurde jedoch kein Arbeitsbereich ausgewählt."; +"unsafe_managed_home" = "CodexBar weigerte sich, einen unerwarteten verwalteten Home-Pfad zu ändern: %@"; +"menu_bar_metric_title" = "Menüleistenmetrik"; +"menu_bar_metric_subtitle" = "Wählen Sie aus, welches Fenster den Prozentwert der Menüleiste steuert."; +"menu_bar_metric_subtitle_deepseek" = "Zeigt das DeepSeek-Guthaben in der Menüleiste an."; +"menu_bar_metric_subtitle_moonshot" = "Zeigt das Moonshot-/Kimi-API-Guthaben in der Menüleiste an."; +"menu_bar_metric_subtitle_mistral" = "Zeigt die Mistral-API-Ausgaben des aktuellen Monats in der Menüleiste an."; +"menu_bar_metric_subtitle_kimik2" = "Zeigt Kimi K2 API-Schlüssel-Credits in der Menüleiste an."; +"automatic" = "Automatisch"; +"primary_api_key_limit" = "Primär (API-Schlüssellimit)"; + +/* Display Pane */ +"section_menu_bar" = "Menüleiste"; +"merge_icons_title" = "Symbole zusammenführen"; +"merge_icons_subtitle" = "Verwenden Sie ein einzelnes Menüleistensymbol mit einem Anbieter-Umschalter."; +"switcher_shows_icons_title" = "Switcher zeigt Symbole an"; +"switcher_shows_icons_subtitle" = "Anbietersymbole im Umschalter anzeigen (andernfalls eine wöchentliche Fortschrittslinie anzeigen)."; +"show_most_used_provider_title" = "Meistgenutzten Anbieter anzeigen"; +"show_most_used_provider_subtitle" = "In der Menüleiste wird automatisch der Anbieter angezeigt, der seinem Tariflimit am nächsten kommt."; +"menu_bar_shows_percent_title" = "Die Menüleiste zeigt Prozent an"; +"menu_bar_shows_percent_subtitle" = "Ersetzen Sie die Leisten durch Anbieter-Branding-Symbole und einen Prozentsatz."; +"display_mode_title" = "Anzeigemodus"; +"display_mode_subtitle" = "Wählen Sie aus, was in der Menüleiste angezeigt werden soll (Pace zeigt die Nutzung im Vergleich zur erwarteten)."; +"section_menu_content" = "Menüinhalt"; +"show_usage_as_used_title" = "Nutzung als gebraucht anzeigen"; +"show_usage_as_used_subtitle" = "Fortschrittsbalken füllen sich, wenn Sie das Kontingent verbrauchen (anstatt die verbleibende Menge anzuzeigen)."; +"show_quota_warning_markers_title" = "Quotenwarnmarkierungen anzeigen"; +"show_quota_warning_markers_subtitle" = "Zeichnen Sie Schwellenwertmarkierungen auf Nutzungsbalken, wenn Kontingentwarnungen konfiguriert sind."; +"weekly_progress_work_days_title" = "Wöchentliche Fortschrittsarbeitstage"; +"weekly_progress_work_days_subtitle" = "Zeichnen Sie Häkchenmarkierungen für die Tagesgrenzen auf den Balken für die wöchentliche Nutzung."; +"show_reset_time_as_clock_title" = "Reset-Zeit als Uhr anzeigen"; +"show_reset_time_as_clock_subtitle" = "Anzeige der Rücksetzzeiten als absolute Uhrwerte statt als Countdown."; +"show_provider_changelog_links_title" = "Links zum Änderungsprotokoll des Anbieters anzeigen"; +"show_provider_changelog_links_subtitle" = "Fügt dem Menü Versionshinweise-Links für unterstützte CLI-gestützte Anbieter hinzu."; +"show_credits_extra_usage_title" = "Credits + zusätzliche Nutzung anzeigen"; +"show_credits_extra_usage_subtitle" = "Zeigen Sie die Nutzungsabschnitte \"Codex Credits\" und \"Claude Extra\" im Menü an."; +"show_all_token_accounts_title" = "Alle Token-Konten anzeigen"; +"show_all_token_accounts_subtitle" = "Stapeln Sie Token-Konten im Menü (andernfalls wird eine Kontowechselleiste angezeigt)."; +"multi_account_layout_title" = "Layout für mehrere Konten"; +"multi_account_layout_subtitle" = "Wählen Sie segmentierte Kontoumschaltung oder gestapelte Kontokarten."; +"multi_account_layout_segmented" = "Segmentiert"; +"multi_account_layout_stacked" = "Gestapelt"; +"overview_tab_providers_title" = "Anbieter von Übersichtsregisterkarten"; +"configure" = "Konfigurieren…"; +"overview_enable_merge_icons_hint" = "Aktivieren Sie \"Symbole zusammenführen\", um Anbieter für die Registerkarte \"Übersicht\" zu konfigurieren."; +"overview_no_providers_hint" = "Für die Übersicht sind keine aktivierten Anbieter verfügbar."; +"overview_rows_follow_order" = "Übersichtszeilen folgen immer der Anbieterreihenfolge."; +"overview_no_providers_selected" = "Keine Anbieter ausgewählt"; + +/* Advanced Pane */ +"section_keyboard_shortcut" = "Tastenkombination"; +"open_menu_shortcut_title" = "Menü öffnen"; +"open_menu_shortcut_subtitle" = "Lösen Sie das Menü der Menüleiste von überall aus aus."; +"install_cli" = "CLI installieren"; +"install_cli_subtitle" = "Verknüpfen Sie CodexBarCLI mit /usr/local/bin und /opt/homebrew/bin als Codexbar."; +"cli_not_found" = "CodexBarCLI wurde im App-Bundle nicht gefunden."; +"no_writable_bin_dirs" = "Keine beschreibbaren Bin-Verzeichnisse gefunden."; +"show_debug_settings_title" = "Debug-Einstellungen anzeigen"; +"show_debug_settings_subtitle" = "Stellen Sie Tools zur Fehlerbehebung auf der Registerkarte \"Debug\" bereit."; +"surprise_me_title" = "Überrasche mich"; +"surprise_me_subtitle" = "Prüfen Sie, ob Sie möchten, dass Ihre Agenten dort oben Spaß haben."; +"weekly_limit_confetti_title" = "Wöchentliches Konfetti-Limit"; +"weekly_limit_confetti_subtitle" = "Spielen Sie Konfetti im Vollbildmodus ab, wenn die wöchentliche Nutzung zurückgesetzt wird."; +"hide_personal_info_title" = "Persönliche Informationen ausblenden"; +"hide_personal_info_subtitle" = "Verdecken Sie E-Mail-Adressen in der Menüleiste und der Menü-Benutzeroberfläche."; +"show_provider_storage_usage_title" = "Speichernutzung des Anbieters anzeigen"; +"show_provider_storage_usage_subtitle" = "Zeigen Sie die lokale Festplattennutzung in Menüs an. Scannt bekannte anbietereigene Pfade im Hintergrund."; +"section_keychain_access" = "Schlüsselbundzugriff"; +"keychain_access_caption" = "Deaktivieren Sie alle Lese- und Schreibvorgänge im Schlüsselbund. Verwenden Sie diese Option, wenn macOS weiterhin nach \"Chrome/Brave/Edge Safe Storage\" fragt, auch nachdem Sie auf \"Immer zulassen\" geklickt haben. Der Browser-Cookie-Import ist nicht verfügbar, solange er aktiviert ist. Fügen Sie Cookie-Header manuell in Provider ein. Claude/Codex OAuth über die CLI funktioniert weiterhin."; +"disable_keychain_access_title" = "Deaktivieren Sie den Schlüsselbundzugriff"; +"disable_keychain_access_subtitle" = "Verhindert jeglichen Zugriff auf den Schlüsselbund, solange diese Option aktiviert ist."; + +/* About Pane */ +"about_tagline" = "Mögen Ihre Token nie ausgehen – behalten Sie die Agentenlimits im Blick."; +"link_github" = "GitHub"; +"link_website" = "Webseite"; +"link_twitter" = "Twitter"; +"link_email" = "E-Mail"; +"check_updates_auto" = "Suchen Sie automatisch nach Updates"; +"update_channel" = "Kanal aktualisieren"; +"check_for_updates" = "Nach Updates suchen…"; +"updates_unavailable" = "Updates sind in diesem Build nicht verfügbar."; +"copyright" = "© 2026 Peter Steinberger. MIT-Lizenz."; + +/* Debug Pane */ +"section_logging" = "Protokollierung"; +"enable_file_logging" = "Aktivieren Sie die Dateiprotokollierung"; +"enable_file_logging_subtitle" = "Schreiben Sie Protokolle zum Debuggen in %@."; +"verbosity_title" = "Ausführlichkeit"; +"verbosity_subtitle" = "Steuert, wie viele Details protokolliert werden."; +"open_log_file" = "Protokolldatei öffnen"; +"force_animation_next_refresh" = "Animation bei der nächsten Aktualisierung erzwingen"; +"force_animation_next_refresh_subtitle" = "Zeigt nach der nächsten Aktualisierung vorübergehend die Ladeanimation an."; +"section_loading_animations" = "Animationen werden geladen"; +"loading_animations_caption" = "Wählen Sie ein Muster aus und spielen Sie es in der Menüleiste ab. \\\"Random\\\" behält das bestehende Verhalten bei."; +"animation_random_default" = "Zufällig (Standard)"; +"replay_selected_animation" = "Ausgewählte Animation erneut abspielen"; +"blink_now" = "Blinzeln Sie jetzt"; +"section_probe_logs" = "Sondenprotokolle"; +"probe_logs_caption" = "Rufen Sie die neueste Probe-Ausgabe zum Debuggen ab. Beim Kopieren bleibt der vollständige Text erhalten."; +"fetch_log" = "Protokoll abrufen"; +"copy" = "Kopie"; +"save_to_file" = "In Datei speichern"; +"load_parse_dump" = "Parse-Dump laden"; +"rerun_provider_autodetect" = "Führen Sie die automatische Anbietererkennung erneut aus"; +"loading" = "Laden…"; +"no_log_yet_fetch" = "Noch kein Protokoll. Zum Laden abrufen."; +"section_fetch_strategy" = "Strategieversuche abrufen"; +"fetch_strategy_caption" = "Entscheidungen und Fehler der letzten Abrufpipeline für einen Anbieter."; +"section_openai_cookies" = "OpenAI-Cookies"; +"openai_cookies_caption" = "Cookie-Import + WebKit-Scrape-Protokolle vom letzten OpenAI-Cookie-Versuch."; +"no_log_yet" = "Noch kein Protokoll. Aktualisieren Sie OpenAI-Cookies unter Anbieter → Codex, um einen Import auszuführen."; +"section_caches" = "Caches"; +"caches_caption" = "Löschen Sie zwischengespeicherte Kosten-Scan-Ergebnisse oder Browser-Cookie-Caches."; +"clear_cookie_cache" = "Cookie-Cache leeren"; +"clear_cost_cache" = "Kostencache löschen"; +"section_notifications" = "Benachrichtigungen"; +"notifications_caption" = "Testbenachrichtigungen für das 5-Stunden-Sitzungsfenster auslösen (erschöpft/wiederhergestellt)."; +"post_depleted" = "Beitrag erschöpft"; +"post_restored" = "Beitrag wiederhergestellt"; +"section_cli_sessions" = "CLI-Sitzungen"; +"cli_sessions_caption" = "Halten Sie Codex/Claude-CLI-Sitzungen nach einer Untersuchung am Leben. Die Standardeinstellung wird beendet, sobald Daten erfasst wurden."; +"keep_cli_sessions_alive" = "Halten Sie CLI-Sitzungen am Leben"; +"keep_cli_sessions_alive_subtitle" = "Teardown zwischen Probes überspringen (nur Debug)."; +"reset_cli_sessions" = "CLI-Sitzungen zurücksetzen"; +"section_error_simulation" = "Fehlersimulation"; +"error_simulation_caption" = "Fügen Sie zum Testen des Layouts eine gefälschte Fehlermeldung in die Menükarte ein."; +"set_menu_error" = "Menüfehler einstellen"; +"clear_menu_error" = "Menüfehler löschen"; +"set_cost_error" = "Kostenfehler festlegen"; +"clear_cost_error" = "Klarer Kostenfehler"; +"section_cli_paths" = "CLI-Pfade"; +"cli_paths_caption" = "Codex-Binär- und PATH-Ebenen behoben; Start-Login-PATH-Erfassung (kurze Zeitüberschreitung)."; +"codex_binary" = "Codex-Binärdatei"; +"claude_binary" = "Claude binär"; +"effective_path" = "Effektiver WEG"; +"unavailable" = "Nicht verfügbar"; +"login_shell_path" = "Login-Shell-PATH (Starterfassung)"; +"cleared" = "Gelöscht."; +"no_fetch_attempts" = "Noch keine Abrufversuche."; +"macOS Tahoe can block menu bar apps in System Settings → Menu Bar → Allow in the Menu Bar. CodexBar is running, but macOS may be hiding its icon. Open Menu Bar settings and turn CodexBar on." = "macOS Tahoe kann Menüleisten-Apps unter Systemeinstellungen → Menüleiste → Zulassen in der Menüleiste blockieren. CodexBar wird ausgeführt, aber macOS verbirgt möglicherweise sein Symbol. Öffnen Sie die Menüleisteneinstellungen und aktivieren Sie CodexBar."; + +/* Metric preferences */ +"metric_pref_automatic" = "Automatisch"; +"metric_pref_primary" = "Primär"; +"metric_pref_secondary" = "Sekundär"; +"metric_pref_tertiary" = "Tertiär"; +"metric_pref_extra_usage" = "Zusätzliche Nutzung"; +"metric_pref_average" = "Durchschnitt"; + +/* Display modes */ +"display_mode_percent" = "Prozent"; +"display_mode_pace" = "Tempo"; +"display_mode_both" = "Beide"; +"display_mode_reset_time" = "Zurücksetzungszeit"; +"display_mode_percent_desc" = "Verbleibenden/verwendeten Prozentsatz anzeigen (z. B. 45 %)"; +"display_mode_pace_desc" = "Tempoanzeige anzeigen (z. B. +5%)"; +"display_mode_both_desc" = "Zeigen Sie sowohl Prozentsatz als auch Tempo an (z. B. 45 % · +5 %)"; +"display_mode_reset_time_desc" = "Zurücksetzungszeit der ausgewählten Metrik anzeigen (z. B. ↻ 15:56)"; + +/* Provider status */ +"status_operational" = "Betriebsbereit"; +"status_partial_outage" = "Teilweiser Ausfall"; +"status_major_outage" = "Schwerwiegender Ausfall"; +"status_critical_issue" = "Kritisches Problem"; +"status_maintenance" = "Wartung"; +"status_unknown" = "Status unbekannt"; + +/* Refresh frequency */ +"refresh_manual" = "Handbuch"; +"refresh_1min" = "1 Minute"; +"refresh_2min" = "2 Min"; +"refresh_5min" = "5 Min"; +"refresh_15min" = "15 Min"; +"refresh_30min" = "30 Min"; + +/* Additional keys */ +"not_found" = "Nicht gefunden"; + +/* Cost estimation */ +"cost_header_estimated" = "Kosten (geschätzt)"; +"cost_estimate_hint" = "Schätzung aus lokalen Protokollen · kann von Ihrer Rechnung abweichen"; +"No JetBrains IDE with AI Assistant detected. Install a JetBrains IDE and enable AI Assistant." = "Keine JetBrains-IDE mit AI Assistant erkannt. Installieren Sie eine JetBrains-IDE und aktivieren Sie AI Assistant."; +"OpenRouter API token not configured. Set OPENROUTER_API_KEY environment variable or configure in Settings." = "OpenRouter-API-Token nicht konfiguriert. Legen Sie die Umgebungsvariable OPENROUTER_API_KEY fest oder konfigurieren Sie sie in den Einstellungen."; +"z.ai API token not found. Set apiKey in ~/.codexbar/config.json or Z_AI_API_KEY." = "z.ai-API-Token nicht gefunden. Legen Sie apiKey in ~/.codexbar/config.json oder Z_AI_API_KEY fest."; +"Missing DeepSeek API key." = "Fehlender DeepSeek-API-Schlüssel."; +"%@ is unavailable in the current environment." = "%@ ist in der aktuellen Umgebung nicht verfügbar."; +"All Systems Operational" = "Alle Systeme betriebsbereit"; +"Last 30 days" = "Letzte 30 Tage"; +"Last 30 days:" = "Letzte 30 Tage:"; +"This month" = "Diesen Monat"; +"Store multiple OpenAI API keys." = "Speichern Sie mehrere OpenAI-API-Schlüssel."; +"Admin API key" = "Admin-API-Schlüssel"; +"Open billing" = "Abrechnung öffnen"; +"Google accounts" = "Google-Konten"; +"Store multiple Antigravity Google OAuth accounts for quick switching." = "Speichern Sie mehrere Antigravity Google OAuth-Konten für einen schnellen Wechsel."; +"Add Google Account" = "Google-Konto hinzufügen"; +"Open Token Plan" = "Offener Token-Plan"; +"Text Generation" = "Textgenerierung"; +"Text to Speech" = "Text-to-Speech"; +"Music Generation" = "Musikgeneration"; +"Image Generation" = "Bilderzeugung"; +"No local data found" = "Keine lokalen Daten gefunden"; +"Credits unavailable; keep Codex running to refresh." = "Credits nicht verfügbar; Lassen Sie Codex zum Aktualisieren laufen."; +"No available fetch strategy for minimax." = "Für Minimax ist keine Abrufstrategie verfügbar."; +"No Cursor session found. Please log in to cursor.com in Safari, Chrome, Microsoft Edge, Brave, Arc, Dia, ChatGPT Atlas, Chromium, Helium, Vivaldi, Yandex Browser, Firefox, Zen, Colibri, Sidekick, Opera, Opera GX, or Edge Canary. If you use Safari, grant CodexBar Full Disk Access in System Settings ▸ Privacy & Security. You can also sign in to Cursor from the CodexBar menu (Add / switch account)." = "Keine Cursor-Sitzung gefunden. Bitte melden Sie sich bei Cursor.com in Safari, Chrome, Microsoft Edge, Brave, Arc, Dia, ChatGPT Atlas, Chromium, Helium, Vivaldi, Yandex Browser, Firefox, Zen, Colibri, Sidekick, Opera, Opera GX oder Edge Canary an. Wenn Sie Safari verwenden, gewähren Sie CodexBar vollständigen Festplattenzugriff unter Systemeinstellungen ▸ Datenschutz und Sicherheit. Sie können sich auch über das CodexBar-Menü (Konto hinzufügen/wechseln) bei Cursor anmelden."; +"No OpenCode session cookies found in browsers." = "In Browsern wurden keine OpenCode-Sitzungscookies gefunden."; +"No available fetch strategy for %@." = "Für %@ ist keine Abrufstrategie verfügbar."; +"Today" = "Heute"; +"Today tokens" = "Heute Token"; +"30d cost" = "30 Tage Kosten"; +"30d tokens" = "30d-Token"; +"Latest tokens" = "Neueste Token"; +"Top model" = "Topmodell"; +"Storage" = "Lagerung"; +"Add Account..." = "Konto hinzufügen..."; +"Usage Dashboard" = "Nutzungs-Dashboard"; +"Status Page" = "Statusseite"; +"Settings..." = "Einstellungen..."; +"About CodexBar" = "About CodexBar"; +"Quit" = "Aufhören"; +"Last %d day" = "Letzter %d Tag"; +"Last %d days" = "Letzte %d Tage"; +"%@ tokens" = "%@ Token"; +"Latest billing day" = "Letzter Abrechnungstag"; +"Latest billing day (%@)" = "Letzter Abrechnungstag (%@)"; +"%@ left" = "%@ übrig"; +"Resets %@" = "Setzt %@ zurück"; +"Resets in %@" = "Zurückgesetzt in %@"; +"Resets now" = "Wird jetzt zurückgesetzt"; +"Lasts until reset" = "Hält bis zum Zurücksetzen an"; +"Updated %@" = "Aktualisiert %@"; +"Updated %@h ago" = "Vor %@h aktualisiert"; +"Updated %@m ago" = "Vor %@m aktualisiert"; +"Updated just now" = "Gerade erst aktualisiert"; +"Projected empty in %@" = "Voraussichtlich leer in %@"; +"Runs out in %@" = "Läuft in %@ aus"; +"Pace: %@" = "Tempo: %@"; +"Pace: %@ · %@" = "Tempo: %@ · %@"; +"%@ · %@" = "%@ · %@"; +"≈ %d%% run-out risk" = "≈ %d%% Auslaufrisiko"; +"%d%% in deficit" = "%d%% im Defizit"; +"%d%% in reserve" = "%d%% in Reserve"; +"usage_percent_suffix_left" = "links"; +"usage_percent_suffix_used" = "gebraucht"; +"Store multiple DeepSeek API keys." = "Speichern Sie mehrere DeepSeek-API-Schlüssel."; +"This week" = "Diese Woche"; +"Week" = "Woche"; +"Month" = "Monat"; +"Models" = "Modelle"; +"24h tokens" = "24-Stunden-Token"; +"Latest hour" = "Letzte Stunde"; +"Peak hour" = "Hauptverkehrszeit"; +"Top method" = "Top-Methode"; +"30d cash" = "30 Tage Bargeld"; +"30d billing history from MiniMax web session" = "30-tägiger Abrechnungsverlauf aus der MiniMax-Websitzung"; +"AWS Cost Explorer billing can lag." = "Die Abrechnung mit AWS Cost Explorer kann verzögert sein."; +"Rate limit: %d / %@" = "Ratenlimit: %d / %@"; +"Key remaining" = "Schlüssel übrig"; +"No limit set for the API key" = "Für den API-Schlüssel ist kein Limit festgelegt"; +"API key limit unavailable right now" = "Das API-Schlüssellimit ist derzeit nicht verfügbar"; +"This month: %@ tokens" = "Diesen Monat: %@ Token"; +"No utilization data yet." = "Noch keine Nutzungsdaten."; +"No %@ utilization data yet." = "Noch keine %@-Nutzungsdaten."; +"%@: %@%% used" = "%@: %@%% verwendet"; +"%dd" = "%dd"; +"today" = "Heute"; +"just now" = "soeben"; +"On pace" = "Auf Tempo"; +"Runs out now" = "Ist jetzt ausverkauft"; +"Projected empty now" = "Voraussichtlich jetzt leer"; +"Switch Account..." = "Konto wechseln..."; +"Update ready, restart now?" = "Update bereit, jetzt neu starten?"; +"Daily" = "Täglich"; +"Hourly Tokens" = "Stündliche Token"; +"No data" = "Keine Daten"; +"No usage breakdown data available." = "Es sind keine Nutzungsaufschlüsselungsdaten verfügbar."; + +"Today: %@ · %@ tokens" = "Heute: %@ · %@ Token"; +"Today: %@" = "Heute: %@"; +"Today: %@ tokens" = "Heute: %@ Token"; +"Last 30 days: %@ · %@ tokens" = "Letzte 30 Tage: %@ · %@ Token"; +"Last 30 days: %@" = "Letzte 30 Tage: %@"; +"Est. total (30d): %@" = "Schätzung: Gesamt (30 Tage): %@"; +"Est. total (%@): %@" = "Schätzung: Gesamt (%@): %@"; +"Hover a bar for details" = "Bewegen Sie den Mauszeiger über eine Leiste, um Einzelheiten anzuzeigen"; +"%@: %@ · %@ tokens" = "%@: %@ · %@ Token"; +"No providers selected for Overview." = "Für die Übersicht wurden keine Anbieter ausgewählt."; +"No overview data available." = "Keine Übersichtsdaten verfügbar."; +"Auto uses the local IDE API first, then Google OAuth when the IDE is closed." = "Auto verwendet zuerst die lokale IDE-API und dann Google OAuth, wenn die IDE geschlossen wird."; +"Login with Google" = "Melden Sie sich mit Google an"; + +/* Popup panels */ +"No usage configured." = "Keine Nutzung konfiguriert."; +"Quota" = "Quote"; +"tokens" = "Token"; +"requests" = "Anfragen"; +"Latest" = "Letzte"; +"Monthly" = "Monatlich"; +"Sonnet" = "Sonett"; +"Overages" = "Überschreitungen"; +"Activity" = "Aktivität"; +"Copied" = "Kopiert"; +"Copy error" = "Kopierfehler"; +"Copy path" = "Pfad kopieren"; +"Extra usage spent" = "Zusätzliche Nutzung aufgewendet"; +"Credits remaining" = "Verbleibende Credits"; +"Using CLI fallback" = "CLI-Fallback verwenden"; +"Balance updates in near-real time (up to 5 min lag)" = "Guthabenaktualisierungen nahezu in Echtzeit (bis zu 5 Minuten Verzögerung)"; +"Daily billing data finalizes at 07:00 UTC" = "Die täglichen Abrechnungsdaten werden um 07:00 UTC finalisiert"; +"%@ of %@ credits left" = "%@ von %@ Credits übrig"; +"%@ of %@ bonus credits left" = "%@ von %@ Bonusguthaben übrig"; +"%@ / %@ (%@ remaining)" = "%@ / %@ (%@ verbleibend)"; +"%@/%@ left" = "%@/%@ übrig"; +"Gemini Flash" = "Zwillingsblitz"; +"Regenerates %@" = "Regeneriert %@"; +"used after next regen" = "Wird nach der nächsten Regenerierung verwendet"; +"after next regen" = "nach der nächsten Regeneration"; +"Near full" = "Fast voll"; +"Full in ~1 regen" = "Voll in ~1 Regeneration"; +"Full in ~%.0f regens" = "Voll in ~%.0f Regenerationen"; +"Overage usage" = "Übermäßige Nutzung"; +"Overage cost" = "Überschreitungskosten"; +"credits" = "Credits"; +"Zen balance" = "Zen-Balance"; +"API spend" = "API-Ausgaben"; +"Extra usage" = "Zusätzliche Nutzung"; +"Quota usage" = "Kontingentnutzung"; +"%.0f%% used" = "%.0f%% verwendet"; +"Usage history (today)" = "Nutzungshistorie (heute)"; +"Usage history (%d days)" = "Nutzungsverlauf (%d Tage)"; +"%d percent remaining" = "%d Prozent verbleibend"; +"Unknown" = "Unbekannt"; +"stale data" = "veraltete Daten"; +"No credits history data." = "Keine Credits-Verlaufsdaten."; +"No credits history data available." = "Es sind keine Daten zum Kreditverlauf verfügbar."; +"Credits history chart" = "Diagramm zum Verlauf der Credits"; +"%d days of credits data" = "%d Tage Credits-Daten"; +"Usage breakdown chart" = "Aufschlüsselungsdiagramm zur Nutzung"; +"%d days of usage data across %d services" = "%d Tage Nutzungsdaten für %d Dienste"; +"Cost history chart" = "Kostenverlaufsdiagramm"; +"%d days of cost data" = "%d Tage Kostendaten"; +"Plan utilization chart" = "Planauslastungsdiagramm"; +"%d utilization samples" = "%d Nutzungsbeispiele"; +"Hourly Usage" = "Stündliche Nutzung"; +"Usage remaining" = "Verbleibende Nutzung"; +"Usage used" = "Verwendung verwendet"; +"API key verified. Ollama does not expose Cloud quota limits through the API." = "API-Schlüssel überprüft. Ollama legt über die API keine Cloud-Kontingentgrenzen offen."; +"Last 30 days: %@ tokens" = "Letzte 30 Tage: %@ Token"; +"7d spend" = "7d ausgeben"; +"30d spend" = "30 Tage ausgeben"; +"Cache read" = "Cache gelesen"; +"Claude Admin API 30 day spend trend" = "30-Tage-Ausgabentrend der Claude Admin API"; +"OpenRouter API key spend trend" = "Trend zu Ausgaben für OpenRouter-API-Schlüssel"; +"z.ai hourly token trend" = "z.ai stündlicher Token-Trend"; +"MiniMax 30 day token usage trend" = "MiniMax 30-Tage-Token-Nutzungstrend"; +"Today cash" = "Heute Bargeld"; +"DeepSeek 30 day token usage trend" = "Trend zur 30-Tage-Token-Nutzung von DeepSeek"; +"cache-hit input" = "Cache-Hit-Eingabe"; +"cache-miss input" = "Cache-Miss-Eingabe"; +"output" = "Ausgabe"; +"Requests" = "Anfragen"; +"Reported by OpenAI Admin API organization usage." = "Gemeldet durch die Nutzung der OpenAI Admin API-Organisation."; +"Reported by Mistral billing usage." = "Gemeldet durch Mistral-Abrechnungsnutzung."; +"Google OAuth" = "Google OAuth"; +"Add accounts via GitHub OAuth Device Flow on the selected host." = "Fügen Sie Konten über GitHub OAuth Device Flow auf dem ausgewählten Host hinzu."; +"Stores each signed-in Google account for quick Antigravity switching. Uses Antigravity.app OAuth when available, or ANTIGRAVITY_OAUTH_CLIENT_ID and ANTIGRAVITY_OAUTH_CLIENT_SECRET as an override." = "Speichert jedes angemeldete Google-Konto für einen schnellen Antigravity-Wechsel. Verwendet Antigravity.app OAuth, sofern verfügbar, oder ANTIGRAVITY_OAUTH_CLIENT_ID und ANTIGRAVITY_OAUTH_CLIENT_SECRET als Überschreibung."; +"Manual cleanup: past sessions" = "Manuelle Bereinigung: vergangene Sitzungen"; +"Clearing removes past resume, continue, and rewind history." = "Durch das Löschen werden vergangene Fortsetzungs-, Fortsetzungs- und Rückspulverläufe entfernt."; +"Manual cleanup: file checkpoints" = "Manuelle Bereinigung: Dateiprüfpunkte"; +"Clearing removes checkpoint restore data for previous edits." = "Durch das Löschen werden Prüfpunkt-Wiederherstellungsdaten für frühere Bearbeitungen entfernt."; +"Manual cleanup: saved plans" = "Manuelle Bereinigung: gespeicherte Pläne"; +"Clearing removes old plan-mode files." = "Durch das Löschen werden alte Planmodusdateien entfernt."; +"Manual cleanup: debug logs" = "Manuelle Bereinigung: Debug-Protokolle"; +"Clearing removes past debug logs." = "Durch das Löschen werden frühere Debugprotokolle entfernt."; +"Manual cleanup: attachment cache" = "Manuelle Bereinigung: Anhang-Cache"; +"Clearing removes cached large pastes or attached images." = "Durch das Löschen werden zwischengespeicherte große Einfügungen oder angehängte Bilder entfernt."; +"Manual cleanup: session metadata" = "Manuelle Bereinigung: Sitzungsmetadaten"; +"Clearing removes per-session environment metadata." = "Durch das Löschen werden Umgebungsmetadaten pro Sitzung entfernt."; +"Manual cleanup: shell snapshots" = "Manuelle Bereinigung: Shell-Snapshots"; +"Clearing removes leftover runtime shell snapshot files." = "Durch das Löschen werden übrig gebliebene Runtime-Shell-Snapshot-Dateien entfernt."; +"Manual cleanup: legacy todos" = "Manuelle Bereinigung: Legacy-Aufgaben"; +"Clearing removes legacy per-session task lists." = "Durch das Löschen werden alte Aufgabenlisten pro Sitzung entfernt."; +"Manual cleanup: sessions" = "Manuelle Bereinigung: Sitzungen"; +"Clearing removes past Codex session history." = "Durch das Löschen wird der Verlauf vergangener Codex-Sitzungen entfernt."; +"Manual cleanup: archived sessions" = "Manuelle Bereinigung: archivierte Sitzungen"; +"Clearing removes archived Codex session history." = "Beim Löschen wird der archivierte Codex-Sitzungsverlauf entfernt."; +"Manual cleanup: cache" = "Manuelle Bereinigung: Cache"; +"Clearing removes provider-owned cached data." = "Durch das Löschen werden zwischengespeicherte Daten des Anbieters entfernt."; +"Manual cleanup: logs" = "Manuelle Bereinigung: Protokolle"; +"Clearing removes local diagnostic logs." = "Durch das Löschen werden lokale Diagnoseprotokolle entfernt."; +"Manual cleanup: file history" = "Manuelle Bereinigung: Dateiverlauf"; +"Clearing removes local edit checkpoint history." = "Durch das Löschen wird der lokale Bearbeitungsprüfpunktverlauf entfernt."; +"Manual cleanup: temporary data" = "Manuelle Bereinigung: temporäre Daten"; +"Clearing removes local temporary provider data." = "Durch das Löschen werden lokale temporäre Anbieterdaten entfernt."; +"Total: %@" = "Gesamt: %@"; +"%d more items" = "%d weitere Artikel"; +"Cleanup ideas" = "Aufräumideen"; +"%d unreadable item(s) skipped" = "%d unlesbare Elemente wurden übersprungen"; + +"API key limit" = "API-Schlüssellimit"; +"Auth" = "Auth"; +"Auto" = "Auto"; +"Disabled — no recent data" = "Deaktiviert – keine aktuellen Daten"; +"Limits not available" = "Limits nicht verfügbar"; +"No usage yet" = "Noch keine Nutzung"; +"Not fetched yet" = "Noch nicht abgerufen"; +"Refreshing" = "Erfrischend"; +"Session" = "Sitzung"; +"Source" = "Quelle"; +"State" = "Zustand"; +"Unavailable" = "Nicht verfügbar"; +"Weekly" = "Wöchentlich"; +"not detected" = "nicht erkannt"; +"Estimated from local Codex logs for the selected account." = "Geschätzt aus lokalen Codex-Protokollen für das ausgewählte Konto."; +"minimax_usage_amount_format" = "Verwendung: %@ / %@"; +"minimax_used_percent_format" = "Gebraucht %@"; +"minimax_service_text_generation" = "Textgenerierung"; +"minimax_service_text_to_speech" = "Text-to-Speech"; +"minimax_service_music_generation" = "Musikgeneration"; +"minimax_service_image_generation" = "Bilderzeugung"; +"minimax_service_lyrics_generation" = "Songtextgenerierung"; +"minimax_service_coding_plan_vlm" = "Codierungsplan VLM"; +"minimax_service_coding_plan_search" = "Suche nach Kodierungsplänen"; + +/* Additional provider settings and alerts */ +"%@ is waiting for permission" = "%@ wartet auf Erlaubnis"; +"%@ requests" = "%@ Anfragen"; +"%@: %@ credits" = "%@: %@ Credits"; +"30d requests" = "30 Tage Anfragen"; +"4 days" = "4 Tage"; +"5 days" = "5 Tage"; +"7 days" = "7 Tage"; +"API key verifies Ollama Cloud access; cookies still expose quota limits." = "Der API-Schlüssel überprüft den Ollama-Cloud-Zugriff. Cookies unterliegen weiterhin Kontingentgrenzen."; +"AWS access key ID. Can also be set with AWS_ACCESS_KEY_ID." = "AWS-Zugriffsschlüssel-ID. Kann auch mit AWS_ACCESS_KEY_ID festgelegt werden."; +"AWS region. Can also be set with AWS_REGION." = "AWS-Region. Kann auch mit AWS_REGION festgelegt werden."; +"AWS secret access key. Can also be set with AWS_SECRET_ACCESS_KEY." = "Geheimer AWS-Zugriffsschlüssel. Kann auch mit AWS_SECRET_ACCESS_KEY festgelegt werden."; +"Access key ID" = "Zugriffsschlüssel-ID"; +"Add Account" = "Konto hinzufügen"; +"Adding Account…" = "Konto wird hinzugefügt…"; +"Antigravity login failed" = "Antigravity-Anmeldung fehlgeschlagen"; +"Antigravity login timed out" = "Zeitüberschreitung beim Antigravity-Login"; +"Auth source" = "Authentifizierungsquelle"; +"Automatic imports browser cookies from Xiaomi MiMo." = "Importiert automatisch Browser-Cookies von Xiaomi MiMo."; +"Automatic imports Windsurf session data from Chromium browser localStorage." = "Importiert Windsurf-Sitzungsdaten automatisch aus dem lokalen Speicher des Chromium-Browsers."; +"Automatic imports browser cookies from Bailian." = "Automatischer Import von Browser-Cookies von Bailian."; +"Automatically imports browser cookies." = "Importiert automatisch Browser-Cookies."; +"Automatically imports browser session cookies." = "Importiert automatisch Browser-Sitzungscookies."; +"Azure OpenAI deployment name. AZURE_OPENAI_DEPLOYMENT_NAME is also supported." = "Name der Azure OpenAI-Bereitstellung. AZURE_OPENAI_DEPLOYMENT_NAME wird ebenfalls unterstützt."; +"Azure OpenAI key" = "Azure OpenAI-Schlüssel"; +"Azure OpenAI resource endpoint. AZURE_OPENAI_ENDPOINT is also supported." = "Azure OpenAI-Ressourcenendpunkt. AZURE_OPENAI_ENDPOINT wird ebenfalls unterstützt."; +"Base URL" = "Basis-URL"; +"Base URL for the LLM-API-Key-Proxy instance." = "Basis-URL für die LLM-API-Key-Proxy-Instanz."; +"Browser cookies" = "Browser-Cookies"; +"Cap end" = "Kappenende"; +"Cap start" = "Kappenanfang"; +"Capacity End" = "Kapazitätsende"; +"Capacity Start" = "Kapazitätsanfang"; +"Changelog" = "Änderungsprotokoll"; +"Choose the Moonshot/Kimi API host for international or China mainland accounts." = "Wählen Sie den Moonshot/Kimi-API-Host für internationale Konten oder Konten auf dem chinesischen Festland."; +"CodexBar can't replace a system account that is signed in with an API key only setup." = "CodexBar kann kein Systemkonto ersetzen, das nur mit einem API-Schlüssel angemeldet ist."; +"CodexBar could not find saved auth for that account. Re-authenticate it and try again." = "CodexBar konnte die gespeicherte Authentifizierung für dieses Konto nicht finden. Authentifizieren Sie es erneut und versuchen Sie es erneut."; +"CodexBar could not read managed account storage. Recover the store before adding another account." = "CodexBar konnte den verwalteten Kontospeicher nicht lesen. Stellen Sie den Store wieder her, bevor Sie ein weiteres Konto hinzufügen."; +"CodexBar could not read saved auth for that account. Re-authenticate it and try again." = "CodexBar konnte die gespeicherte Authentifizierung für dieses Konto nicht lesen. Authentifizieren Sie es erneut und versuchen Sie es erneut."; +"CodexBar could not read the current system account on this Mac." = "CodexBar konnte das aktuelle Systemkonto auf diesem Mac nicht lesen."; +"CodexBar could not replace the live Codex auth on this Mac." = "CodexBar konnte die Live-Codex-Authentifizierung auf diesem Mac nicht ersetzen."; +"CodexBar could not safely preserve the current system account before switching." = "CodexBar konnte das aktuelle Systemkonto vor dem Wechsel nicht sicher beibehalten."; +"CodexBar could not save the current system account before switching." = "CodexBar konnte das aktuelle Systemkonto vor dem Wechsel nicht speichern."; +"CodexBar could not update managed account storage." = "CodexBar konnte den verwalteten Kontospeicher nicht aktualisieren."; +"CodexBar found another managed account that already uses the current system account. Resolve the duplicate account before switching." = "CodexBar hat ein anderes verwaltetes Konto gefunden, das bereits das aktuelle Systemkonto verwendet. Lösen Sie das doppelte Konto auf, bevor Sie wechseln."; +"CodexBar will ask macOS Keychain for “%@” so it can decrypt browser cookies and authenticate your account. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach \"%@\", damit es Browser-Cookies entschlüsseln und Ihr Konto authentifizieren kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for the Claude Code OAuth token so it can fetch your Claude usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach dem Claude Code OAuth-Token, damit es Ihre Claude-Nutzung abrufen kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your Amp cookie header so it can fetch usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem Amp-Cookie-Header, damit er die Nutzung abrufen kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your Augment cookie header so it can fetch usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem Augment-Cookie-Header, damit er die Nutzung abrufen kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your Claude cookie header so it can fetch Claude web usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem Claude-Cookie-Header, damit die Claude-Webnutzung abgerufen werden kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your Cursor cookie header so it can fetch usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem Cursor-Cookie-Header, damit er die Nutzung abrufen kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your Factory cookie header so it can fetch usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem Factory-Cookie-Header, damit er die Nutzung abrufen kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your GitHub Copilot token so it can fetch usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem GitHub-Copilot-Token, damit es die Nutzung abrufen kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your Kimi K2 API key so it can fetch usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem Kimi K2-API-Schlüssel, damit er die Nutzung abrufen kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your Kimi auth token so it can fetch usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem Kimi-Authentifizierungstoken, damit es die Nutzung abrufen kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your MiniMax API token so it can fetch usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem MiniMax-API-Token, damit die Nutzung abgerufen werden kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your MiniMax cookie header so it can fetch usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem MiniMax-Cookie-Header, damit er die Nutzung abrufen kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your OpenAI cookie header so it can fetch Codex dashboard extras. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem OpenAI-Cookie-Header, damit Codex-Dashboard-Extras abgerufen werden können. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your OpenCode cookie header so it can fetch usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem OpenCode-Cookie-Header, damit er die Nutzung abrufen kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your Synthetic API key so it can fetch usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem synthetischen API-Schlüssel, damit er die Nutzung abrufen kann. Klicken Sie auf OK, um fortzufahren."; +"CodexBar will ask macOS Keychain for your z.ai API token so it can fetch usage. Click OK to continue." = "CodexBar fragt den macOS-Schlüsselbund nach Ihrem z.ai-API-Token, damit es die Nutzung abrufen kann. Klicken Sie auf OK, um fortzufahren."; +"Could not open Cursor login in your browser." = "Die Cursor-Anmeldung konnte in Ihrem Browser nicht geöffnet werden."; +"Could not open browser for Antigravity" = "Der Browser für Antigravity konnte nicht geöffnet werden"; +"Credits used" = "Verwendete Credits"; +"Day" = "Tag"; +"Deployment" = "Einsatz"; +"Drag to reorder" = "Zum Neuanordnen ziehen"; +"Endpoint" = "Endpunkt"; +"Enterprise host" = "Unternehmenshost"; +"Extra usage balance: %@" = "Zusätzlicher Nutzungssaldo: %@"; +"Keychain Access Required" = "Schlüsselbundzugriff erforderlich"; +"Kiro menu bar value" = "Wert der Kiro-Menüleiste"; +"Label" = "Etikett"; +"No organizations loaded. Click Refresh after setting your API key." = "Keine Organisationen geladen. Klicken Sie auf Aktualisieren, nachdem Sie Ihren API-Schlüssel festgelegt haben."; +"No output captured." = "Keine Ausgabe erfasst."; +"No system account" = "Kein Systemkonto"; +"Oasis-Token" = "Oasis-Token"; +"Open Augment (Log Out & Back In)" = "Augment öffnen (abmelden und wieder anmelden)"; +"Open Codebuff Dashboard" = "Öffnen Sie das Codebuff-Dashboard"; +"Open Command Code Settings" = "Öffnen Sie die Befehlscode-Einstellungen"; +"Open Crof dashboard" = "Öffnen Sie das Crof-Dashboard"; +"Open Manus" = "Öffne Manus"; +"Open MiMo Balance" = "Öffnen Sie MiMo Balance"; +"Open Moonshot Console" = "Öffnen Sie die Moonshot-Konsole"; +"Open Ollama API Keys" = "Öffnen Sie die Ollama-API-Schlüssel"; +"Open StepFun Platform" = "Öffnen Sie die StepFun-Plattform"; +"Open T3 Chat Settings" = "Öffnen Sie die T3-Chat-Einstellungen"; +"Open Volcengine Ark Console" = "Öffnen Sie die Volcengine Ark-Konsole"; +"Open legacy provider docs" = "Öffnen Sie die Dokumente älterer Anbieter"; +"Open projects" = "Offene Projekte"; +"Open this URL manually to continue login:\n\n%@" = "Öffnen Sie diese URL manuell, um mit der Anmeldung fortzufahren:\n\n%@"; +"Optional organization ID for accounts linked to multiple Anthropic organizations." = "Optionale Organisations-ID für Konten, die mit mehreren Anthropic-Organisationen verknüpft sind."; +"Optional. Applies to the configured Admin API key; selected token accounts do not inherit OPENAI_PROJECT_ID." = "Optional. Gilt für den konfigurierten Admin-API-Schlüssel; Ausgewählte Token-Konten erben OPENAI_PROJECT_ID nicht."; +"Optional. Enter your GitHub Enterprise host, for example octocorp.ghe.com. Leave blank for github.com." = "Optional. Geben Sie Ihren GitHub Enterprise-Host ein, zum Beispiel octocorp.ghe.com. Für github.com leer lassen."; +"Optional. Leave blank to discover and aggregate projects visible to the API key." = "Optional. Lassen Sie das Feld leer, um für den API-Schlüssel sichtbare Projekte zu ermitteln und zu aggregieren."; +"Org ID (optional)" = "Organisations-ID (optional)"; +"Organizations" = "Organisationen"; +"Password" = "Passwort"; +"%@ authentication is disabled." = "Die %@-Authentifizierung ist deaktiviert."; +"%@ cookies are disabled." = "%@ Cookies sind deaktiviert."; +"%@ web API access is disabled." = "%@ Web-API-Zugriff ist deaktiviert."; +"Disable %@ dashboard cookie usage." = "Deaktivieren Sie die Verwendung von Dashboard-Cookies für %@."; +"Keychain access is disabled in Advanced, so browser cookie import is unavailable." = "Der Schlüsselbundzugriff ist in \"Erweitert\" deaktiviert, daher ist der Browser-Cookie-Import nicht verfügbar."; +"Manually paste an %@ from a browser session." = "Fügen Sie manuell einen %@ aus einer Browsersitzung ein."; +"Paste a Cookie header captured from %@." = "Fügen Sie einen von %@ erfassten Cookie-Header ein."; +"Paste a Cookie header from %@." = "Fügen Sie einen Cookie-Header von %@ ein."; +"Paste a Cookie header or cURL capture from %@." = "Fügen Sie einen Cookie-Header oder eine cURL-Erfassung aus %@ ein."; +"Paste a Cookie header or full cURL capture from %@." = "Fügen Sie einen Cookie-Header oder eine vollständige cURL-Erfassung aus %@ ein."; +"Paste a Cookie or Authorization header from %@." = "Fügen Sie einen Cookie- oder Autorisierungsheader von %@ ein."; +"Paste a full cookie header or the %@ value." = "Fügen Sie einen vollständigen Cookie-Header oder den Wert %@ ein."; +"Paste a Cookie header or full cURL capture from T3 Chat settings." = "Fügen Sie einen Cookie-Header oder eine vollständige cURL-Erfassung aus den T3-Chat-Einstellungen ein."; +"Paste the Cookie header from a request to admin.mistral.ai. Must contain an ory_session_* cookie." = "Fügen Sie den Cookie-Header aus einer Anfrage in admin.mistral.ai ein. Muss ein ory_session_*-Cookie enthalten."; +"Paste the Oasis-Token from a logged-in browser session on platform.stepfun.com." = "Fügen Sie den Oasis-Token aus einer angemeldeten Browsersitzung auf platform.stepfun.com ein."; +"Paste the %@ JSON bundle from %@." = "Fügen Sie das JSON-Bundle %@ aus %@ ein."; +"Paste the %@ value or a full Cookie header." = "Fügen Sie den Wert %@ oder einen vollständigen Cookie-Header ein."; +"Personal account" = "Persönliches Konto"; +"Project ID" = "Projekt-ID"; +"Re-auth" = "Erneut authentifizieren"; +"Re-login at claude.ai" = "Erneut bei claude.ai anmelden"; +"Re-authenticating…" = "Erneute Authentifizierung…"; +"Refresh Session" = "Sitzung aktualisieren"; +"Refresh organizations" = "Organisationen aktualisieren"; +"Region" = "Region"; +"Reload" = "Neu laden"; +"Reorder" = "Neu anordnen"; +"Secret access key" = "Geheimer Zugangsschlüssel"; +"Series" = "Serie"; +"Service" = "Service"; +"Show or hide Kiro credits, percent, or both next to the menu bar icon." = "Kiro-Credits, Prozent oder beides neben dem Menüleistensymbol ein- oder ausblenden."; +"Show usage for organizations you belong to. Personal account is always shown." = "Zeigen Sie die Nutzung für Organisationen an, denen Sie angehören. Persönliches Konto wird immer angezeigt."; +"Sign in to cursor.com in your browser, then refresh Cursor in CodexBar." = "Melden Sie sich in Ihrem Browser bei Cursor.com an und aktualisieren Sie dann Cursor in CodexBar."; +"Simulated error text" = "Simulierter Fehlertext"; +"StepFun platform account (phone number or email)." = "StepFun-Plattformkonto (Telefonnummer oder E-Mail)."; +"Stored in ~/.codexbar/config.json." = "Gespeichert in ~/.codexbar/config.json."; +"Stored in ~/.codexbar/config.json. AZURE_OPENAI_API_KEY is also supported." = "Gespeichert in ~/.codexbar/config.json. AZURE_OPENAI_API_KEY wird ebenfalls unterstützt."; +"Stored in ~/.codexbar/config.json. For the official Kimi API, use Moonshot / Kimi API." = "Gespeichert in ~/.codexbar/config.json. Verwenden Sie für die offizielle Kimi-API die Moonshot/Kimi-API."; +"Stored in ~/.codexbar/config.json. Get your API key from the Volcengine Ark console." = "Gespeichert in ~/.codexbar/config.json. Holen Sie sich Ihren API-Schlüssel von der Volcengine Ark-Konsole."; +"Stored in ~/.codexbar/config.json. Get your key from Ollama settings." = "Gespeichert in ~/.codexbar/config.json. Holen Sie sich Ihren Schlüssel aus den Ollama-Einstellungen."; +"Stored in ~/.codexbar/config.json. Get your key from console.deepgram.com." = "Gespeichert in ~/.codexbar/config.json. Holen Sie sich Ihren Schlüssel von console.deepgram.com."; +"Stored in ~/.codexbar/config.json. Get your key from elevenlabs.io/app/settings/api-keys." = "Gespeichert in ~/.codexbar/config.json. Holen Sie sich Ihren Schlüssel von elevenlabs.io/app/settings/api-keys."; +"Stored in ~/.codexbar/config.json. Get your key from openrouter.ai/settings/keys and set a key spending limit there to enable API key quota tracking." = "Gespeichert in ~/.codexbar/config.json. Holen Sie sich Ihren Schlüssel von openrouter.ai/settings/keys und legen Sie dort ein Schlüsselausgabelimit fest, um die API-Schlüsselkontingentverfolgung zu ermöglichen."; +"Stored in ~/.codexbar/config.json. In Warp, open Settings > Platform > API Keys, then create one." = "Gespeichert in ~/.codexbar/config.json. Öffnen Sie in Warp Einstellungen > Plattform > API-Schlüssel und erstellen Sie einen."; +"Stored in ~/.codexbar/config.json. Metrics require Groq Enterprise Prometheus access." = "Gespeichert in ~/.codexbar/config.json. Für Metriken ist Groq Enterprise Prometheus-Zugriff erforderlich."; +"Stored in ~/.codexbar/config.json. OPENAI_ADMIN_KEY is preferred; OPENAI_API_KEY still works." = "Gespeichert in ~/.codexbar/config.json. OPENAI_ADMIN_KEY wird bevorzugt; OPENAI_API_KEY funktioniert immer noch."; +"Stored in ~/.codexbar/config.json. Requires an Anthropic Admin API key." = "Gespeichert in ~/.codexbar/config.json. Erfordert einen Anthropic Admin API-Schlüssel."; +"Stored in ~/.codexbar/config.json. Used for /v1/quota-stats." = "Gespeichert in ~/.codexbar/config.json. Wird für /v1/quota-stats verwendet."; +"Stored in ~/.codexbar/config.json. You can also provide CODEBUFF_API_KEY or let CodexBar read ~/.config/manicode/credentials.json (created by `codebuff login`)." = "Gespeichert in ~/.codexbar/config.json. Sie können auch CODEBUFF_API_KEY bereitstellen oder CodexBar ~/.config/manicode/credentials.json lesen lassen (erstellt durch \"codebuff login\")."; +"Stored in ~/.codexbar/config.json. You can also provide CROF_API_KEY." = "Gespeichert in ~/.codexbar/config.json. Sie können auch CROF_API_KEY angeben."; +"Stored in ~/.codexbar/config.json. You can also provide KILO_API_KEY or ~/.local/share/kilo/auth.json (kilo.access)." = "Gespeichert in ~/.codexbar/config.json. Sie können auch KILO_API_KEY oder ~/.local/share/kilo/auth.json (kilo.access) angeben."; +"T3 Chat cookie" = "T3-Chat-Cookie"; +"That account is no longer available in CodexBar. Refresh the account list and try again." = "Dieses Konto ist in CodexBar nicht mehr verfügbar. Aktualisieren Sie die Kontoliste und versuchen Sie es erneut."; +"The browser login did not complete in time. Try Antigravity login again." = "Die Browseranmeldung wurde nicht rechtzeitig abgeschlossen. Versuchen Sie erneut, sich bei Antigravity anzumelden."; +"Timed out waiting for Cursor login. %@" = "Zeitüberschreitung beim Warten auf die Cursor-Anmeldung. %@"; +"Timed out waiting for Cursor login. %@ Last error: %@" = "Zeitüberschreitung beim Warten auf die Cursor-Anmeldung. %@ Letzter Fehler: %@"; +"Today requests" = "Heute Anfragen"; +"Total (30d): %@ credits" = "Gesamt (30 Tage): %@ Credits"; +"Username" = "Benutzername"; +"Uses username + password to login and obtain an Oasis-Token automatically." = "Verwendet Benutzername + Passwort, um sich anzumelden und automatisch ein Oasis-Token zu erhalten."; +"Uses username + password to login and obtain an %@ automatically." = "Verwendet Benutzername + Passwort, um sich anzumelden und automatisch einen %@ zu erhalten."; +"Utilization End" = "Nutzungsende"; +"Utilization Start" = "Nutzungsbeginn"; +"Verbosity" = "Ausführlichkeit"; +"Windsurf session JSON bundle" = "JSON-Paket für Windsurf-Sitzungen"; +"Workspace ID" = "Arbeitsbereichs-ID"; +"Your StepFun platform password. Used to login and obtain a session token." = "Ihr Passwort für die StepFun-Plattform. Wird verwendet, um sich anzumelden und ein Sitzungstoken zu erhalten."; +"claude /login exited with status %d." = "Claude /login wurde mit dem Status %d beendet."; +"codex login exited with status %d." = "Codex-Anmeldung mit Status %d beendet."; +"Cookie: …\n\nor paste a cURL capture from the Abacus AI dashboard" = "Cookie: …\n\noder fügen Sie eine cURL-Erfassung aus dem Abacus AI-Dashboard ein"; +"Cookie: …\n\nor paste the __Secure-next-auth.session-token value" = "Cookie: …\n\noder fügen Sie den Wert __Secure-next-auth.session-token ein"; +"Cookie: …\n\nor paste the kimi-auth token value" = "Cookie: …\n\noder fügen Sie den Kimi-Auth-Token-Wert ein"; +"session_id=...\n\nor paste just the session_id value" = "session_id=...\n\noder fügen Sie nur den session_id-Wert ein"; +"Clear" = "Klar"; +"No matching providers" = "Keine passenden Anbieter"; +"Search providers" = "Suchanbieter"; + +"Request quota: %@ / %@" = "Anfragelimit: %@ / %@"; diff --git a/Sources/CodexBar/Resources/en.lproj/Localizable.strings b/Sources/CodexBar/Resources/en.lproj/Localizable.strings index ac787c16f..606d23ca2 100644 --- a/Sources/CodexBar/Resources/en.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/en.lproj/Localizable.strings @@ -402,6 +402,7 @@ "language_chinese_traditional" = "繁體中文"; "language_portuguese_brazilian" = "Português (Brasil)"; "language_dutch" = "Nederlands"; +"language_german" = "Deutsch"; "language_swedish" = "Svenska"; "language_french" = "French"; "language_ukrainian" = "Українська"; diff --git a/Sources/CodexBar/Resources/es.lproj/Localizable.strings b/Sources/CodexBar/Resources/es.lproj/Localizable.strings index c55f4ab28..53b8c5253 100644 --- a/Sources/CodexBar/Resources/es.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/es.lproj/Localizable.strings @@ -401,6 +401,7 @@ "language_portuguese_brazilian" = "Português (Brasil)"; "language_swedish" = "Sueco"; "language_dutch" = "Nederlands"; +"language_german" = "Deutsch"; "language_french" = "Francés"; "language_ukrainian" = "Ucraniano"; "language_japanese" = "Japonés"; diff --git a/Sources/CodexBar/Resources/fr.lproj/Localizable.strings b/Sources/CodexBar/Resources/fr.lproj/Localizable.strings index 0917f228f..6daef097c 100644 --- a/Sources/CodexBar/Resources/fr.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/fr.lproj/Localizable.strings @@ -399,6 +399,7 @@ "language_chinese_simplified" = "Chinois simplifié"; "language_chinese_traditional" = "Chinois traditionnel"; "language_portuguese_brazilian" = "Portugais (Brésil)"; +"language_german" = "Allemand"; "language_swedish" = "Suédois"; "language_french" = "Français"; "language_dutch" = "Néerlandais"; diff --git a/Sources/CodexBar/Resources/ja.lproj/Localizable.strings b/Sources/CodexBar/Resources/ja.lproj/Localizable.strings index a61291b83..741042d33 100644 --- a/Sources/CodexBar/Resources/ja.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/ja.lproj/Localizable.strings @@ -402,6 +402,7 @@ "language_dutch" = "オランダ語"; "language_swedish" = "スウェーデン語"; "language_french" = "フランス語"; +"language_german" = "ドイツ語"; "language_ukrainian" = "ウクライナ語"; "language_japanese" = "日本語"; "language_korean" = "韓国語"; diff --git a/Sources/CodexBar/Resources/ko.lproj/Localizable.strings b/Sources/CodexBar/Resources/ko.lproj/Localizable.strings index 70a6d0c66..a3428fcda 100644 --- a/Sources/CodexBar/Resources/ko.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/ko.lproj/Localizable.strings @@ -399,6 +399,7 @@ "language_chinese_simplified" = "중국어(간체)"; "language_chinese_traditional" = "중국어(번체)"; "language_portuguese_brazilian" = "포르투갈어(브라질)"; +"language_german" = "독일어"; "language_dutch" = "네덜란드어"; "language_swedish" = "스웨덴어"; "language_french" = "프랑스어"; diff --git a/Sources/CodexBar/Resources/nl.lproj/Localizable.strings b/Sources/CodexBar/Resources/nl.lproj/Localizable.strings index 0e9f6f886..4043699ea 100644 --- a/Sources/CodexBar/Resources/nl.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/nl.lproj/Localizable.strings @@ -400,6 +400,7 @@ "language_chinese_traditional" = "繁體中文"; "language_portuguese_brazilian" = "Portugees (Brazilië)"; "language_dutch" = "Nederlands"; +"language_german" = "Duits"; "language_french" = "Frans"; "language_ukrainian" = "Oekraïens"; "language_japanese" = "Japans"; diff --git a/Sources/CodexBar/Resources/pt-BR.lproj/Localizable.strings b/Sources/CodexBar/Resources/pt-BR.lproj/Localizable.strings index d7f6ae3e2..5b3ecd641 100644 --- a/Sources/CodexBar/Resources/pt-BR.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/pt-BR.lproj/Localizable.strings @@ -401,6 +401,7 @@ "language_portuguese_brazilian" = "Português (Brasil)"; "language_swedish" = "Sueco"; "language_dutch" = "Nederlands"; +"language_german" = "Deutsch"; "language_french" = "Francês"; "language_ukrainian" = "Ucraniano"; "language_japanese" = "Japonês"; diff --git a/Sources/CodexBar/Resources/sv.lproj/Localizable.strings b/Sources/CodexBar/Resources/sv.lproj/Localizable.strings index aa9e5a408..14b888527 100644 --- a/Sources/CodexBar/Resources/sv.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/sv.lproj/Localizable.strings @@ -401,6 +401,7 @@ "language_chinese_traditional" = "繁體中文"; "language_portuguese_brazilian" = "Português (Brasil)"; "language_dutch" = "Nederlands"; +"language_german" = "Deutsch"; "language_swedish" = "Svenska"; "language_french" = "Franska"; "language_ukrainian" = "Ukrainska"; diff --git a/Sources/CodexBar/Resources/uk.lproj/Localizable.strings b/Sources/CodexBar/Resources/uk.lproj/Localizable.strings index e107d34b0..8a400b076 100644 --- a/Sources/CodexBar/Resources/uk.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/uk.lproj/Localizable.strings @@ -399,6 +399,7 @@ "language_chinese_simplified" = "简体中文"; "language_chinese_traditional" = "繁體中文"; "language_portuguese_brazilian" = "Português (Brasil)"; +"language_german" = "Deutsch"; "language_swedish" = "Svenska"; "language_french" = "Français"; "language_dutch" = "Нідерландська"; diff --git a/Sources/CodexBar/Resources/vi.lproj/Localizable.strings b/Sources/CodexBar/Resources/vi.lproj/Localizable.strings index 67e4259a1..1997f75d9 100644 --- a/Sources/CodexBar/Resources/vi.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/vi.lproj/Localizable.strings @@ -399,6 +399,7 @@ "language_chinese_simplified" = "简体中文"; "language_chinese_traditional" = "繁體中文"; "language_portuguese_brazilian" = "Português (Brasil)"; +"language_german" = "Deutsch"; "language_swedish" = "Svenska"; "language_french" = "Tiếng Pháp"; "language_dutch" = "Tiếng Hà Lan"; diff --git a/Sources/CodexBar/Resources/zh-Hans.lproj/Localizable.strings b/Sources/CodexBar/Resources/zh-Hans.lproj/Localizable.strings index 748165ac0..f4a442c81 100644 --- a/Sources/CodexBar/Resources/zh-Hans.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/zh-Hans.lproj/Localizable.strings @@ -408,6 +408,7 @@ "language_portuguese_brazilian" = "Português (Brasil)"; "language_swedish" = "瑞典语"; "language_dutch" = "Nederlands"; +"language_german" = "Deutsch"; "language_french" = "法语"; "language_ukrainian" = "乌克兰语"; "language_japanese" = "日语"; diff --git a/Sources/CodexBar/Resources/zh-Hant.lproj/Localizable.strings b/Sources/CodexBar/Resources/zh-Hant.lproj/Localizable.strings index f51a26b6b..fe7d06b39 100644 --- a/Sources/CodexBar/Resources/zh-Hant.lproj/Localizable.strings +++ b/Sources/CodexBar/Resources/zh-Hant.lproj/Localizable.strings @@ -408,6 +408,7 @@ "language_portuguese_brazilian" = "Português (Brasil)"; "language_swedish" = "瑞典語"; "language_dutch" = "Nederlands"; +"language_german" = "Deutsch"; "language_french" = "法語"; "language_ukrainian" = "烏克蘭語"; "language_japanese" = "日語"; diff --git a/Tests/CodexBarTests/LocalizationLanguageCatalogTests.swift b/Tests/CodexBarTests/LocalizationLanguageCatalogTests.swift index 5f494c6a0..cfeee52a8 100644 --- a/Tests/CodexBarTests/LocalizationLanguageCatalogTests.swift +++ b/Tests/CodexBarTests/LocalizationLanguageCatalogTests.swift @@ -6,6 +6,7 @@ struct LocalizationLanguageCatalogTests { private let languageKeys = [ "language_system", "language_english", + "language_german", "language_spanish", "language_catalan", "language_chinese_simplified", diff --git a/Tests/CodexBarTests/PreferencesPaneSmokeTests.swift b/Tests/CodexBarTests/PreferencesPaneSmokeTests.swift index a7e4837e0..e56ef2933 100644 --- a/Tests/CodexBarTests/PreferencesPaneSmokeTests.swift +++ b/Tests/CodexBarTests/PreferencesPaneSmokeTests.swift @@ -86,6 +86,36 @@ struct PreferencesPaneSmokeTests { #expect(L("quit_app") == "CodexBar を終了") } + @Test + func `german app language resolves localized labels`() { + let previousLanguage = UserDefaults.standard.object(forKey: "appLanguage") + let previousAppleLanguages = UserDefaults.standard.object(forKey: "AppleLanguages") + defer { + if let previousLanguage { + UserDefaults.standard.set(previousLanguage, forKey: "appLanguage") + } else { + UserDefaults.standard.removeObject(forKey: "appLanguage") + } + if let previousAppleLanguages { + UserDefaults.standard.set(previousAppleLanguages, forKey: "AppleLanguages") + } else { + UserDefaults.standard.removeObject(forKey: "AppleLanguages") + } + } + + let settings = Self.makeSettingsStore(suite: "PreferencesPaneSmokeTests-language-de") + settings.appLanguage = "de" + + #expect(UserDefaults.standard.string(forKey: "appLanguage") == "de") + #expect(L("tab_general") == "Allgemein") + #expect(L("language_title") == "Sprache") + #expect(L("quit_app") == "CodexBar beenden") + #expect(L("display_mode_reset_time") == "Zurücksetzungszeit") + #expect(L("display_mode_reset_time_desc").contains("↻ 15:56")) + #expect(L("vertex_ai_login_instructions").contains("\n\n1. Öffnen Sie Terminal")) + #expect(!L("vertex_ai_login_instructions").contains("\\n")) + } + private static func makeSettingsStore(suite: String) -> SettingsStore { let defaults = UserDefaults(suiteName: suite)! defaults.removePersistentDomain(forName: suite)