diff --git a/apps/desktop-tauri/src-tauri/src/commands/bridge.rs b/apps/desktop-tauri/src-tauri/src/commands/bridge.rs index 63ba86a7..c33ca172 100644 --- a/apps/desktop-tauri/src-tauri/src/commands/bridge.rs +++ b/apps/desktop-tauri/src-tauri/src/commands/bridge.rs @@ -831,56 +831,4 @@ mod tests { "8% • Resets in 2h 05m" ); } - - #[test] - fn japanese_tray_status_label_has_no_english_reset_text() { - use codexbar::settings::Language; - - let window = snapshot_window_with( - 13.0, - Some(300), - Some(chrono::Utc::now() + chrono::Duration::minutes(125)), - None, - ); - - let label = compact_tray_status_label(&window, Language::Japanese); - - assert!(label.contains("リセットまで"), "{label}"); - assert!(!label.to_ascii_lowercase().contains("resets in"), "{label}"); - assert!(label.contains("13%"), "{label}"); - } - - #[test] - fn japanese_tray_status_strips_english_fallback_reset_prefix() { - use codexbar::settings::Language; - - let window = - snapshot_window_with(8.0, Some(300), None, Some("Resets in 2h 05m".to_string())); - - let label = compact_tray_status_label(&window, Language::Japanese); - - assert!(label.contains("リセットまで"), "{label}"); - assert!(!label.to_ascii_lowercase().contains("resets in"), "{label}"); - assert!(label.contains("2h 05m"), "{label}"); - } - - #[test] - fn tray_status_label_relocalizes_without_refetch() { - let window = snapshot_window_with( - 13.0, - Some(300), - Some(chrono::Utc::now() + chrono::Duration::minutes(125)), - None, - ); - - let english = compact_tray_status_label(&window, Language::English); - let japanese = compact_tray_status_label(&window, Language::Japanese); - - assert!(english.contains("Resets in"), "{english}"); - assert!(japanese.contains("リセットまで"), "{japanese}"); - assert!( - !japanese.to_ascii_lowercase().contains("resets in"), - "{japanese}" - ); - } } diff --git a/apps/desktop-tauri/src-tauri/src/commands/chart.rs b/apps/desktop-tauri/src-tauri/src/commands/chart.rs index f367b7ce..f56a1142 100644 --- a/apps/desktop-tauri/src-tauri/src/commands/chart.rs +++ b/apps/desktop-tauri/src-tauri/src/commands/chart.rs @@ -1103,18 +1103,6 @@ mod tests { ); } - #[test] - fn japanese_estimate_note_is_localized() { - assert_eq!( - localized_estimate_note("codex", Language::Japanese), - "ローカルログから推定したもので、請求書と異なる場合があります" - ); - assert_eq!( - localized_estimate_note("claude", Language::Japanese), - "ClaudeのローカルログからAPIレートで推定したもので、トークン総数が請求書と異なる場合があります" - ); - } - #[test] fn english_estimate_note_is_localized() { assert_eq!( diff --git a/apps/desktop-tauri/src-tauri/src/commands/locale_cmd.rs b/apps/desktop-tauri/src-tauri/src/commands/locale_cmd.rs index 430df1de..6807fa82 100644 --- a/apps/desktop-tauri/src-tauri/src/commands/locale_cmd.rs +++ b/apps/desktop-tauri/src-tauri/src/commands/locale_cmd.rs @@ -109,50 +109,6 @@ mod locale_tests { assert_eq!(bundle.entries.len(), locale::LocaleKey::ALL.len()); } - #[test] - fn locale_strings_roundtrip_chinese() { - let bundle = locale_strings_for(Language::Chinese); - assert_eq!(bundle.language, "chinese"); - assert_eq!( - bundle.entries.get("TabGeneral").map(String::as_str), - Some("通用") - ); - assert_eq!(bundle.entries.len(), locale::LocaleKey::ALL.len()); - } - - #[test] - fn locale_strings_roundtrip_traditional_chinese() { - let bundle = locale_strings_for(Language::ChineseTraditional); - assert_eq!(bundle.language, "chinesetraditional"); - assert_eq!( - bundle.entries.get("TabGeneral").map(String::as_str), - Some("一般") - ); - assert_eq!(bundle.entries.len(), locale::LocaleKey::ALL.len()); - } - - #[test] - fn locale_strings_roundtrip_japanese() { - let bundle = locale_strings_for(Language::Japanese); - assert_eq!(bundle.language, "japanese"); - assert_eq!( - bundle.entries.get("TabGeneral").map(String::as_str), - Some("一般") - ); - assert_eq!(bundle.entries.len(), locale::LocaleKey::ALL.len()); - } - - #[test] - fn locale_strings_roundtrip_korean() { - let bundle = locale_strings_for(Language::Korean); - assert_eq!(bundle.language, "korean"); - assert_eq!( - bundle.entries.get("TabGeneral").map(String::as_str), - Some("일반") - ); - assert_eq!(bundle.entries.len(), locale::LocaleKey::ALL.len()); - } - #[test] fn locale_strings_contains_every_variant() { let bundle = locale_strings_for(Language::English); diff --git a/apps/desktop-tauri/src-tauri/src/proof_harness.rs b/apps/desktop-tauri/src-tauri/src/proof_harness.rs index c993ad09..fcecb341 100644 --- a/apps/desktop-tauri/src-tauri/src/proof_harness.rs +++ b/apps/desktop-tauri/src-tauri/src/proof_harness.rs @@ -816,20 +816,6 @@ mod tests { assert!(snapshot.menu_items.iter().any(|item| item == &about_label)); } - #[test] - fn native_menu_snapshot_uses_settings_language() { - let providers = Vec::new(); - let settings = codexbar::settings::Settings { - ui_language: codexbar::settings::Language::Japanese, - ..Default::default() - }; - - let (_, items) = native_menu_snapshot_for_settings(&providers, &settings, "tray"); - - assert!(items.iter().any(|item| item == "すべて更新")); - assert!(!items.iter().any(|item| item == "Refresh Usage")); - } - #[test] fn about_path_snapshot_clears_on_failure() { let _guard = MENU_LOCK.lock().unwrap(); diff --git a/apps/desktop-tauri/src-tauri/src/tray_bridge.rs b/apps/desktop-tauri/src-tauri/src/tray_bridge.rs index 8ae134b2..00be10da 100644 --- a/apps/desktop-tauri/src-tauri/src/tray_bridge.rs +++ b/apps/desktop-tauri/src-tauri/src/tray_bridge.rs @@ -1583,43 +1583,23 @@ mod tests { } #[test] - fn japanese_tooltip_localizes_error_status() { - let mut claude = fake_snapshot("claude", "Claude", 13.0); - claude.error = Some("network timeout".to_string()); - - let tooltip = build_tooltip(&[&claude], codexbar::settings::Language::Japanese, true); - - assert!(tooltip.contains("エラー"), "{tooltip}"); - assert!(!tooltip.contains(": error ("), "{tooltip}"); - } - - #[test] - fn tray_labels_relocalize_on_language_change_without_refetch() { + fn tray_tooltip_is_compact_and_language_neutral() { let mut claude = fake_snapshot("claude", "Claude", 13.0); claude.primary.resets_at = Some((chrono::Utc::now() + chrono::Duration::hours(2)).to_rfc3339()); // The native tooltip is intentionally compact and language-neutral - // (percent + a universal d/h/m reset) so every provider fits, so it no - // longer carries the localized "Resets in" text. - let english_tooltip = - build_tooltip(&[&claude], codexbar::settings::Language::English, true); - assert!( - english_tooltip.contains("Claude · Session (5h) · 13%"), - "{english_tooltip}" - ); + // (percent + a universal d/h/m reset) so every provider fits. + let tooltip = build_tooltip(&[&claude], codexbar::settings::Language::English, true); + assert!(tooltip.contains("Claude · Session (5h) · 13%"), "{tooltip}"); assert!( - !english_tooltip.to_ascii_lowercase().contains("resets in"), - "{english_tooltip}" + !tooltip.to_ascii_lowercase().contains("resets in"), + "{tooltip}" ); - // The tray *menu* status labels still relocalize without a refetch. - let (_, english_label) = - provider_status_label(&claude, codexbar::settings::Language::English); - let (_, japanese_label) = - provider_status_label(&claude, codexbar::settings::Language::Japanese); - assert!(english_label.contains("Resets in"), "{english_label}"); - assert!(japanese_label.contains("リセットまで"), "{japanese_label}"); + // The tray menu status labels carry the reset text. + let (_, label) = provider_status_label(&claude, codexbar::settings::Language::English); + assert!(label.contains("Resets in"), "{label}"); } #[test] diff --git a/apps/desktop-tauri/src-tauri/src/tray_menu.rs b/apps/desktop-tauri/src-tauri/src/tray_menu.rs index 284be768..d2babd95 100644 --- a/apps/desktop-tauri/src-tauri/src/tray_menu.rs +++ b/apps/desktop-tauri/src-tauri/src/tray_menu.rs @@ -441,22 +441,14 @@ mod tests { } #[test] - fn tray_menu_static_labels_follow_language_but_provider_names_stay_raw() { + fn tray_menu_provider_names_stay_raw() { let menu = build_tray_menu_with( &sample_provider_catalog(), &[], &both_enabled(), false, - Language::Japanese, + Language::English, ); - let items = proof_menu_items(&menu, "tray").unwrap(); - - assert!(items.iter().any(|item| item == "すべて更新")); - assert!(items.iter().any(|item| item == "設定...")); - assert!(items.iter().any(|item| item == "終了")); - assert!(!items.iter().any(|item| item == "Refresh Usage")); - assert!(!items.iter().any(|item| item == "Settings")); - let providers = proof_menu_items(&menu, "tray/providers").unwrap(); assert_eq!(providers, vec!["Codex", "Claude"]); } diff --git a/rust/src/locale.rs b/rust/src/locale.rs index a322054a..ba987909 100644 --- a/rust/src/locale.rs +++ b/rust/src/locale.rs @@ -43,22 +43,11 @@ pub fn format_locale(lang: Language, key: LocaleKey, args: &[&str]) -> String { format_template(&get_text(lang, key), args) } -fn language_id(lang: Language) -> &'static LanguageIdentifier { +// Ceiling ships English only. The Language setting is retained but every value +// resolves to the English bundle (the non-English .ftl files were removed). +fn language_id(_lang: Language) -> &'static LanguageIdentifier { static EN_US: LazyLock = LazyLock::new(|| "en-US".parse().unwrap()); - static ZH_CN: LazyLock = LazyLock::new(|| "zh-CN".parse().unwrap()); - static ZH_TW: LazyLock = LazyLock::new(|| "zh-TW".parse().unwrap()); - static JA_JP: LazyLock = LazyLock::new(|| "ja-JP".parse().unwrap()); - static KO_KR: LazyLock = LazyLock::new(|| "ko-KR".parse().unwrap()); - static ES_MX: LazyLock = LazyLock::new(|| "es-MX".parse().unwrap()); - - match lang { - Language::English => &EN_US, - Language::Chinese => &ZH_CN, - Language::ChineseTraditional => &ZH_TW, - Language::Japanese => &JA_JP, - Language::Korean => &KO_KR, - Language::Spanish => &ES_MX, - } + &EN_US } /// Get the current UI language from settings diff --git a/rust/src/locale/es-MX.ftl b/rust/src/locale/es-MX.ftl deleted file mode 100644 index bc8ddf5d..00000000 --- a/rust/src/locale/es-MX.ftl +++ /dev/null @@ -1,612 +0,0 @@ -TabGeneral = General -TabProviders = Proveedores -TabNotifications = Notifications -TabMenuBar = Menu Bar -TabMenu = Menu -TabApiKeys = Claves API -TabCookies = Cookies -TabAdvanced = Avanzado -TabAbout = Acerca de -TabShortcuts = Atajos -InterfaceLanguage = Idioma de la interfaz -StartupSettings = Sistema -StartAtLogin = Iniciar al arrancar -StartMinimized = Iniciar minimizado -StartAtLoginHelper = Iniciar sesión automáticamente al arrancar el sistema -StartMinimizedHelper = Iniciar minimizado en la bandeja del sistema -ShowNotificationsHelper = Alertar cuando se alcancen los umbrales de uso -CapacityEventNotifications = Alertas de reinicio y capacidad -CapacityEventNotificationsHelper = Avisar cuando se reinicie un límite o cambie la capacidad informada por el proveedor -SoundEnabledHelper = Reproducir sonido cuando se alcancen los umbrales -HighUsageThresholdHelper = Mostrar advertencia en este nivel de uso -CriticalUsageThresholdHelper = Mostrar alerta crítica en este nivel -ShowNotifications = Mostrar notificaciones -SoundEnabled = Alertas sonoras -SoundVolume = Volumen de alerta -HighUsageThreshold = Umbral de uso alto -HighUsageAlert = Alerta de uso alto -CriticalUsageThreshold = Umbral de uso crítico -CriticalUsageAlert = Alerta crítica -UsageDisplay = Visualización de uso -ShowUsageAsUsed = Mostrar como usado -ShowUsageAsUsedHelper = Mostrar como porcentaje usado en lugar de restante -ResetTimeRelative = Tiempo relativo de reinicio -ResetTimeRelativeHelper = Mostrar "2h 30m" en lugar de "3:00 PM" -TrayIcon = Ícono de bandeja -MergeTrayIcons = Combinar íconos de bandeja -MergeTrayIconsHelper = Mostrar todos los proveedores en un solo ícono de bandeja -PerProviderTrayIcons = Íconos por proveedor -PerProviderTrayIconsHelper = Mostrar un ícono de bandeja separado por cada proveedor habilitado -ProviderEnabled = Habilitado -ProviderDisabled = Deshabilitado -ProviderInfo = Información -ProviderUsage = Uso -AuthType = Autenticación -DataSource = Fuente de datos -ProviderNotDetected = no detectado -ProviderLastFetchFailed = última consulta fallida -ProviderUsageNotFetchedYet = uso no consultado aún -ProviderNotFetchedYetTitle = Aún no consultado -ProviderDisabledNoRecentData = Deshabilitado — sin datos recientes -ProviderSourceAutoShort = auto -ProviderSourceWebShort = web -ProviderSourceCliShort = cli -ProviderSourceOauthShort = oauth -ProviderSourceApiShort = api -ProviderSourceGithubApiShort = api de github -ProviderSourceLocalShort = local -ProviderSourceKiroEnvShort = entorno kiro -WayfinderGatewayTitle = Gateway de Wayfinder -WayfinderGatewayLabel = URL del gateway -WayfinderGatewayHelp = Usa HTTP solo para localhost o direcciones de loopback. HTTPS permite hosts remotos. -WayfinderGatewayStatus = Gateway -WayfinderModels = Modelos -WayfinderRequests = Solicitudes -WayfinderTokens = Tokens -WayfinderSaved = Ahorrado -WayfinderOffline = Gateway sin conexión -WayfinderDryRun = Simulación -WayfinderMissingKeys = Claves faltantes -TrackingItem = Elemento rastreado -MainWindowLiveUsageData = Datos de uso en vivo en ventana principal -StartTrackingUsage = Habilitar para comenzar a rastrear el uso -ClickTrayIconForMetrics = Clic en ícono de bandeja para métricas en vivo -BrowserCookieImport = Importación de cookies del navegador -ImportFromBrowser = Importar cookies de { "{}" } desde el navegador -NoCookiesFoundInBrowser = No se encontraron cookies en { "{}" }. Inicie sesión primero. -SelectBrowser = Seleccionar navegador... -ImportCookies = Importar cookies -ImportSuccess = Cookies importadas para { "{}" } -ImportFailed = Importación fallida: { "{}" } -SaveFailed = Guardado fallido: { "{}" } -CookiesAutoImport = Las cookies se importan automáticamente desde Chrome, Edge, Brave y Firefox -QuickActions = Acciones rápidas -OpenProviderDashboard = Abrir panel de { "{}" } -OllamaNoDashboard = Ollama se ejecuta localmente, sin panel -ApiKeysTitle = Claves API -ApiKeysDescription = Configurar tokens de acceso para proveedores que requieren autenticación. -AddKey = + Agregar clave -KeySet = Establecida -KeyRequired = Requiere clave -Remove = Eliminar -GetKey = Obtener clave → -SavedCookies = Cookies guardadas -AddManualCookie = Agregar cookie manual -CookieHeader = Encabezado de cookie -PasteHere = Pegar aquí... -DeleteCookie = Eliminar -CookieSaved = { "{}" } cookies guardadas -CookieDeleted = Cookies eliminadas para { "{}" } -RefreshSettings = Actualizar -Animations = Animaciones -MenuBar = Barra de menú -Fun = Diversión -GlobalShortcut = Atajo global -Privacy = Privacidad -Updates = Actualizaciones -UpdateChannel = Canal de actualización -UpdateChannelStable = Estable -UpdateChannelBeta = Beta -Never = Nunca -LastUpdated = Actualizado -NeverUpdated = Nunca actualizado -MinutesAgo = Hace { "{}" } minutos -HoursAgo = Hace { "{}" } horas -DaysAgo = Hace { "{}" } días -BuiltWithRust = Construido con Rust + egui -OriginalMacOSVersion = Versión original de macOS -Links = Enlaces -BuildInfo = Información de compilación -EnabledProviders = Proveedores habilitados -Appearance = Apariencia -ThemeSelection = Tema -LightMode = Claro -DarkMode = Oscuro -AboutTitle = Acerca de Ceiling -Version = Versión -ActionRefreshAll = Actualizar todo -ActionSettings = Configuración -ActionClose = ✕ -ProviderAccount = Cuenta -ProviderSession = Sesión -ProviderWeekly = Semanal -ProviderMonthly = 30 días -ProviderModel = Modelo -ProviderPlan = Plan -ProviderNextReset = Próximo reinicio -ProviderNoRecentUsage = Sin uso reciente -ProviderNotSignedIn = Sin iniciar sesión -SummaryTab = Resumen -StateLoadingProviders = Cargando proveedores... -StateNoProviderData = Sin datos de proveedores. -StateNoProviderSelected = Ningún proveedor seleccionado. -StateSummaryRefreshPending = Actualizando después de que terminen todas las consultas -StateError = Error -StateRetry = Reintentar -StateDownload = Descargar -StateRestartAndUpdate = Reiniciar y actualizar -CreditsTitle = Créditos -UpdateRestartAndUpdate = Reiniciar y actualizar -UpdateRetry = Reintentar -UpdateDownload = Descargar -UpdateDownloading = Descargando -UpdateReady = Listo para instalar -UpdateFailed = Actualización fallida -ButtonOpenProviderSettings = Abrir configuración del proveedor -MenuSettings = Configuración... -MenuAbout = Acerca de Ceiling -MenuQuit = Salir -StatusJustUpdated = Recién actualizado -StatusUnableToGetUsage = No se pudo obtener el uso -ActionRefresh = Actualizar -ActionSwitchAccount = Cambiar cuenta... -ActionUsageDashboard = Panel de uso -ActionStatusPage = Página de estado -ActionCopyError = Copiar error -ActionBuyCredits = Comprar créditos... -PaceOnTrack = En ritmo -PaceBehind = Atrasado -MetricResetsIn = Reinicia en -SectionUsageBreakdown = Desglose de uso -SectionCost = Costo -ResetInProgress = Reiniciando... -TomorrowAt = Mañana a las { "{}" } -UsedPercent = { "{:.0}" }% usado -RemainingPercent = { "{:.0}" }% restante -RemainingAmount = { "{:.2}" } restante -Tokens1K = 1K tokens -TodayCost = Hoy: ${ "{:.2}" } -Last30DaysCost = Últimos 30 días: ${ "{:.2}" } -StatusLabel = Estado: { "{}" } -TrayOpenCodexBar = Abrir panel -TrayPopOutDashboard = Abrir panel -TrayShowWindow = Mostrar ventana -TrayShowTaskbarUsage = Mostrar uso en la barra de tareas -TrayRefreshAll = Actualizar todo -TrayProviders = Proveedores -TraySettings = Configuración... -TrayCheckForUpdates = Buscar actualizaciones -TrayQuit = Salir -TrayLoading = Ceiling - Cargando... -TrayNoProviders = Ceiling - Sin proveedores disponibles -TraySessionPercent = Sesión { "{}" }% -TrayWeeklyPercent = Semanal { "{}" }% -TrayStatusError = { " (Error)" } -TrayStatusStale = { " (Datos desactualizados)" } -TrayStatusIncident = { " (Incidente)" } -TrayStatusPartial = { " (Interrupción parcial)" } -TrayWeeklyExhausted = Límite semanal agotado -TrayCreditsRemaining = Créditos restantes { "{}" }% -TrayStatusRowLoading = Cargando... -TrayStatusRowError = Error -TrayCreditsRow = Créditos { "{}" }% -TrayProviderPopOut = Abrir panel -TrayProviderRefresh = Actualizar -TrayProviderSettings = Configuración... -TrayProviderQuit = Salir -State = Estado -Source = Fuente -Updated = Actualizado -UpdatedJustNow = Recién actualizado -UpdatedMinutesAgo = Hace { "{}" } minutos -UpdatedHoursAgo = Hace { "{}" } horas -UpdatedDaysAgo = Hace { "{}" } días -Status = Estado -AllSystemsOperational = Todos los sistemas funcionando -Plan = Plan -Account = Cuenta -ProviderSessionLabel = Sesión -ProviderWeeklyLabel = Semanal -ProviderCodeReviewLabel = Revisión de código -ResetsInShort = Reinicia en -ResetsInDaysHours = Reinicia en { "{}" }d { "{}" }h -ResetsInDays = Reinicia en { "{}" }d -ResetsInHoursMinutes = Reinicia en { "{}" }h { "{}" }m -ResetsInMinutes = Reinicia en { "{}" }m -FloatBarShowCost = Mostrar costo local -FloatBarShowCostDescription = Muestra el costo estimado del uso local en la barra flotante. -TrayDisplayTitle = Pantalla de bandeja -ShowInTray = Mostrar en bandeja -CreditsLabel = Créditos -CreditsLeft = { "{:.1}" } restantes -CostTitle = Costo -TodayCostFull = Hoy: ${ "{:.2}" } • { "{}" } tokens -Last30DaysCostFull = Últimos 30 días: ${ "{:.2}" } • { "{}" } tokens -ProviderSettingsTitle = Configuración -ProviderAccountsTitle = Cuentas -ProviderOptionsTitle = Opciones -MenuBarMetric = Métrica de barra de menú -MenuBarMetricHelper = Elegir qué ventana controla el porcentaje de la barra de menú. -UsageSource = Fuente de uso -ProviderNoCodexAccountsDetected = Aún no se detectaron cuentas de Codex. -ProviderCodexAutoImportHelp = Importa automáticamente cookies del navegador para extras del panel. -ProviderCodexHistoryHelp = Almacena el historial local de uso de Codex (8 semanas) para personalizar predicciones de ritmo. -ProviderOpenAiCookies = Cookies de OpenAI -ProviderHistoricalTracking = Seguimiento histórico -ProviderOpenAiWebExtras = Extras web de OpenAI -ProviderOpenAiWebExtrasHelp = Mostrar desglose de uso, historial de créditos y revisión de código vía chatgpt.com. -ProviderCodexCreditsUnavailable = Créditos no disponibles; mantenga Codex en ejecución para actualizar. -ProviderCodexLastFetchFailedTitle = Última consulta de Codex fallida: -ProviderCodexNotRunningHelp = Codex no está en ejecución. Intente ejecutar un comando de Codex primero. -ProviderCookieSource = Fuente de cookies -CookieSourceManual = Manual -ProviderRegion = Región -ProviderClaudeCookies = Cookies de Claude -ProviderClaudeCookiesHelp = Se prefieren cookies/sessionKey del navegador porque coinciden con la página de uso de configuración de Claude. -ProviderClaudeAvoidKeychainPrompts = Evitar avisos de llavero -ProviderClaudeAvoidKeychainPromptsHelp = Usar /usr/bin/security para leer credenciales de Claude y evitar avisos de llavero de Ceiling. -ProviderCodexSparkUsage = Show Codex Spark usage -ProviderCodexSparkUsageHelp = Show Codex Spark quota rows without hiding credits or other extra usage. -ProviderCursorCookieSourceHelp = Importa automáticamente cookies del navegador o sesiones almacenadas. -ProviderCursorCreditsHelp = Uso bajo demanda más allá de los límites del plan incluido. -AutoFallbackHelp = Auto recurre a la siguiente fuente si la preferida falla. -ProviderSourceOauthWeb = OAuth + Web -Automatic = Automático -Average = Promedio -ExtraUsage = Uso extra -OAuth = OAuth -Api = API -Web = Web -PrivacyTitle = Privacidad -HidePersonalInfo = Ocultar información personal -HidePersonalInfoHelper = Ocultar correos y nombres de cuenta (útil para transmisiones) -SectionLocalIntegrations = Integraciones locales -PowerToysPipeLabel = Canal de estado de PowerToys -PowerToysPipeHelper = Exponer el estado de proveedores en cache y totales de uso local a PowerToys Command Palette mediante un canal con nombre. No incluye correos ni planes. Requiere reiniciar. -AgentSessionsTitle = Agent Sessions -AgentSessionsEnableLabel = Show active Codex and Claude sessions -AgentSessionsEnableHelper = Discover local sessions and optional SSH hosts. Disabled by default. -AgentSessionsSshHostsLabel = SSH hosts -AgentSessionsSshHostsHelper = Comma-separated SSH targets. Connections use non-interactive mode and short timeouts. -AgentSessionsLoading = Looking for agent sessions... -AgentSessionsEmpty = No active agent sessions. -UpdatesTitle = Actualizaciones -UpdateChannelChoice = Canal de actualización -UpdateChannelChoiceHelper = Elegir entre versiones estables y versiones beta de prueba -AutoDownloadUpdates = Buscar actualizaciones automáticamente -AutoDownloadUpdatesHelper = Descargar actualizaciones del instalador en segundo plano cuando se encuentre una nueva versión -InstallUpdatesOnQuit = Instalar actualizaciones al salir -InstallUpdatesOnQuitHelper = Iniciar automáticamente un instalador listo al salir de Ceiling -KeyboardShortcutsTitle = Atajos de teclado -GlobalShortcutLabel = Atajo global -GlobalShortcutHelper = Presione este atajo para abrir Ceiling desde cualquier lugar -ShortcutFormatHint = Formato: Ctrl+Shift+Tecla, Alt+Ctrl+Tecla, etc. Se requiere reiniciar para aplicar cambios. -Saved = Guardado (reiniciar para aplicar) -InvalidFormat = Formato de atajo no válido -ShortcutHintPlaceholder = p. ej., Ctrl+Shift+U -SelectProvider = Seleccionar un proveedor -RefreshInterval30Sec = 30 seg -RefreshInterval1Min = 1 min -RefreshInterval5Min = 5 min -RefreshInterval10Min = 10 min -BrowserCookiesTitle = Cookies del navegador -CookieImport = Importación de cookies -Provider = Proveedor -SelectPlaceholder = Seleccionar... -AutoRefreshInterval = Intervalo de actualización automática -AboutDescription = Una adaptación para Windows de la versión original de macOS. -AboutDescriptionLine2 = Rastree el uso de proveedores de IA en su bandeja del sistema. -ViewOnGitHub = → Ver en GitHub -SubmitIssue = → Reportar un problema -MaintainedBy = Mantenido por colaboradores de Ceiling -CommitLabel = Commit -BuildDateLabel = Compilado -Save = Guardar -Cancel = Cancelar -Label = Etiqueta -Token = Token -AddAccount = Agregar cuenta -AccountAdded = Cuenta agregada -AccountRemoved = Cuenta eliminada -AccountSwitched = Cuenta cambiada -AccountLabelHint = p. ej., Cuenta de trabajo, Personal... -EnterApiKeyFor = Ingresar clave API para { "{}" } -PasteApiKeyHere = Pegue su clave API aquí... -ApiKeySaved = Clave API guardada para { "{}" } -ApiKeyRemoved = Clave API eliminada para { "{}" } -EnvironmentVariable = Variable de entorno -CookieSavedForProvider = Cookies guardadas para { "{}" } -CookieRemovedForProvider = Cookies eliminadas para { "{}" } -ShowUsedPercent = { "{:.0}" }% usado -ShowRemainingPercent = { "{:.0}" }% restante -UpdateAvailableMessage = Actualización disponible: { "{}" } -UpdateReadyMessage = { "{}" } lista para instalar -UpdateFailedMessage = Actualización fallida: { "{}" } -UpdateDownloadingMessage = Descargando { "{}" } ({ "{:.0}" }%) -TabTokenAccounts = Tokens -SectionRefresh = Automatización -SectionNotifications = Notificaciones -SectionUsageThresholds = Umbrales de uso -SectionKeyboard = Teclado -SectionUsageRendering = Representación de uso -SectionTime = Tiempo -SectionLanguage = Idioma -SectionCredentialsSecurity = Credenciales y seguridad -SectionDebug = Depuración -SectionApiKeys = Claves API -SectionSavedCookies = Cookies guardadas -SectionImportFromBrowser = Importar del navegador -SectionAddCookieManually = Agregar cookie manualmente -SectionTokenAccounts = Cuentas de token -SectionSavedAccounts = Cuentas guardadas -SectionAddAccount = Agregar cuenta -RefreshIntervalLabel = Intervalo de actualización -RefreshIntervalHelper = Segundos entre actualizaciones automáticas de proveedores (0 = manual). -RefreshAllProvidersOnMenuOpen = Actualizar al abrir el menú -RefreshAllProvidersOnMenuOpenHelper = Fuerza la actualización de proveedores habilitados cada vez que se abre el menú de bandeja. -SoundVolumeHelper = Volumen para sonidos de alerta de umbral (0–100). -HighUsageWarningHelper = Mostrar una advertencia cuando el uso exceda este porcentaje. -CriticalUsageWarningHelper = Mostrar una alerta crítica cuando el uso exceda este porcentaje. -GlobalShortcutFieldLabel = Atajo global -GlobalShortcutToggleHelper = Combinación de teclas para alternar el panel de bandeja. -ShortcutRecordButton = Grabar -ShortcutRecordingLabel = Grabando… -ShortcutRecordingHint = Presione modificadores + una tecla. Esc cancela, Retroceso borra. -ShortcutClearButton = Limpiar -ShortcutEmptyPlaceholder = No configurado -NotificationTestSound = Probar sonido -NotificationTestSoundPlaying = Reproduciendo… -TrayIconModeLabel = Modo de ícono de bandeja -TrayIconModeHelper = Ícono único combinado o un ícono por cada proveedor habilitado. -TrayIconModeSingle = Único -TrayIconModePerProvider = Por proveedor -ShowProviderIcons = Mostrar íconos de proveedores -ShowProviderIconsHelper = Mostrar íconos de proveedores en el selector de bandeja. -PreferHighestUsage = Preferir uso más alto -PreferHighestUsageHelper = Mostrar el proveedor más cercano a su límite en la pantalla de bandeja combinada. -ShowPercentInTray = Mostrar porcentaje en bandeja -ShowPercentInTrayHelper = Reemplazar barra de uso con marca de proveedor + texto de porcentaje. -DisplayModeLabel = Modo de visualización -DisplayModeHelper = Nivel de detalle mostrado en la etiqueta de barra de menú. -DisplayModeDetailed = Detallado -DisplayModeCompact = Compacto -DisplayModeMinimal = Mínimo -WindowScaleLabel = Escala de ventana -WindowScaleHelper = Escala el contenido del panel emergente. La ventana sigue pudiendo redimensionarse libremente. -WindowScaleAriaLabel = Escala de ventana -WindowMinimize = Minimizar -WindowMaximize = Maximizar -WindowRestore = Restaurar -WindowClose = Cerrar -ShowAsUsedLabel = Mostrar como usado -ShowAsUsedHelper = Mostrar barras de uso como consumido en lugar de restante. -ShowAllTokenAccountsLabel = Mostrar todas las cuentas de token -ShowAllTokenAccountsHelper = Listar todas las cuentas de token en los menús de proveedores en lugar de colapsarlas. -EnableAnimationsLabel = Habilitar animaciones -EnableAnimationsHelper = Transiciones suaves y barras de progreso animadas. -UpdateChannelStableOption = Estable -UpdateChannelBetaOption = Beta -CodexLocalLogsTitle = Logs locales de Codex -CodexLocalLogsCaption = Agrega directorios home o sessions de Codex para estimaciones de costo locales. Separa varias rutas con punto y coma. -CodexLogPathsLabel = Rutas de logs de Codex -CodexLogPathsHelper = Se acepta una raíz .codex; se escaneará la carpeta sessions dentro de ella. -AvoidKeychainPromptsLabel = Evitar avisos de llavero (Claude) -AvoidKeychainPromptsHelper = Omitir lecturas de credenciales de llavero para Claude para evitar diálogos de permiso del SO. -DisableAllKeychainLabel = Deshabilitar todo acceso al llavero -DisableAllKeychainHelper = Desactivar lecturas de credenciales/llavero para todos los proveedores. También habilita la opción de Claude anterior. -SectionTheme = Apariencia -ThemeLabel = Tema -ThemeHelper = Auto sigue el esquema de color de su sistema. Claro y oscuro lo anulan. -ThemeAutoOption = Auto (sistema) -ThemeLightOption = Claro -ThemeDarkOption = Oscuro -SettingsStatusSaving = Guardando… -ApiKeysTabHint = Configurar claves API para proveedores que usan autenticación basada en tokens. Las claves se almacenan localmente y nunca se transmiten. -FetchingProviderData = Obteniendo datos del proveedor… -NoProvidersConfigured = No hay proveedores configurados. -EnableProvidersHint = Habilite proveedores en Configuración para ver datos de uso. -OpenSettingsButton = Abrir configuración -TooltipRefresh = Actualizar -TooltipSettings = Configuración -TooltipPopOut = Abrir panel -TooltipBackToTray = Volver a bandeja -TrayCardErrorBadge = Error -SummaryProvidersLabel = proveedores -SummaryRefreshing = actualizando… -SummaryFailed = fallido -SummaryWithErrors = con errores -DetailBackButton = Volver -DetailWindowPrimary = Principal -DetailWindowSecondary = Secundario -DetailWindowModelSpecific = Específico del modelo -DetailWindowTertiary = Terciario -DetailWindowMinutesSuffix = ventana de m -DetailWindowExhausted = Agotado -DetailPaceTitle = Ritmo -DetailPaceOnTrack = En ritmo -DetailPaceSlightlyAhead = Ligeramente adelantado -DetailPaceAhead = Adelantado -DetailPaceFarAhead = Muy adelantado -DetailPaceSlightlyBehind = Ligeramente atrasado -DetailPaceBehind = Atrasado -DetailPaceFarBehind = Muy atrasado -DetailPaceRunsOutIn = Se agota en -DetailPaceWillLastToReset = Durará hasta el reinicio -DetailCostTitle = Costo -DetailCostUsed = Usado -DetailCostLimit = Límite -DetailCostRemaining = Restante -DetailCostResets = Reinicia -DetailChartCost = Costo (30 días) -DetailChartCredits = Créditos usados (30 días) -DetailChartUsageBreakdown = Uso por servicio (30 días) -DetailChartEmpty = Sin datos de gráfico aún. -DetailUpdatedPrefix = Actualizado -PanelAllProviders = Todos los proveedores -PanelAllProvidersShort = Todos -PanelShowAllProviders = Mostrar todos los proveedores -PanelShowFewerProviders = Mostrar menos proveedores -PanelZoom = Zoom -PanelMenu = Menú -PanelCopied = Copiado -PanelToday = Hoy -PanelThirtyDayCost = Costo 30d -PanelThirtyDayTokens = Tokens 30d -PanelLatestTokens = Últimos tokens -PanelThirtyDayCostHistogram = Histograma de costos 30 días -PanelTopModelPrefix = Modelo principal -PanelEstimatedFromLocalLogs = Estimado desde logs locales; puede diferir de tu factura -PanelEstimatedFromLocalLogsClaude = Estimado desde logs locales de Claude a tarifas de API; los totales de tokens pueden diferir de tu factura -PanelExpected = Esperado -PanelActual = Real -PanelUsedSuffix = usado -PanelLeftSuffix = restante -PanelOnPaceBudget = Presupuesto al ritmo -PanelNow = ahora -PanelOneHour = 1h -PanelFiveHours = 5h -PanelTodayBudget = hoy -PanelReserveSuffix = en reserva -PanelReserveLastsUntilReset = Dura hasta el reinicio -PanelReserveRunsOutInDaysHours = Se agota en { "{}" }d { "{}" }h -PanelReserveRunsOutInHours = Se agota en { "{}" }h -FloatBarThirtyDayShort = 30d -FloatBarNoProviders = Sin proveedores -FloatBarRemainingSuffix = restante -BannerCheckingForUpdates = Buscando actualizaciones… -BannerUpdateAvailablePrefix = Actualización -BannerDownloadButton = Descargar -BannerViewRelease = Ver versión -BannerDismiss = Descartar -BannerDownloadingPrefix = Descargando actualización -BannerReadyToInstallSuffix = lista para instalar -BannerInstallRestart = Instalar y reiniciar -BannerUpdateFailedPrefix = Actualización fallida -BannerRetry = Reintentar -ProviderSidebarSearch = Buscar -ProviderSidebarClearSearch = Limpiar búsqueda de proveedores -ProviderSidebarNoMatches = Sin proveedores coincidentes -ProviderSidebarReorderHint = Arrastrar para reordenar -ProviderSidebarMoveUp = Subir -ProviderSidebarMoveDown = Bajar -ProviderStatusOk = Actualizado -ProviderStatusStale = Desactualizado -ProviderStatusError = Error -ProviderStatusLoading = Cargando -ProviderStatusDisabled = Deshabilitado -ProviderDetailPlaceholder = Panel de detalle llegando en Fase 6b -ProviderIssueNeedsSignIn = Requiere inicio de sesión -ProviderIssueFetchNeedsAttention = La consulta del proveedor necesita atención -ProviderIssueCopy = Copiar -ProviderIssueUnsupportedSourceModePrefix = Modo de origen no soportado para este proveedor -CredentialStorageTitle = Almacenamiento de credenciales -CredentialRevokeStored = Revocar credenciales almacenadas -CredentialApiKeys = Claves API -CredentialManualCookies = Cookies manuales -CredentialTokenAccounts = Cuentas de token -CredentialProtectedPrefix = Protegido -CredentialStatusNotCreated = No creada -CredentialStatusPlaintext = Texto plano -CredentialStatusUnavailable = No disponible -CredentialStatusUnreadable = No legible -BrowserCookiesSectionTitle = Cookies del navegador -BrowserCookieNoneSaved = Sin cookies guardadas. -BrowserCookieSavedBadge = Guardada -BrowserCookieRemove = Eliminar -BrowserCookieImportSuccess = Cookies importadas correctamente. -BrowserCookieImportFromBrowser = Importar desde navegador -BrowserCookieProfileSingular = perfil -BrowserCookieProfilePlural = perfiles -BrowserCookiePlaceholderDefault = Pegar valor de cabecera de cookie... -BrowserCookiePlaceholderOllama = Pegar la cabecera Cookie completa o solo el valor __Secure-session... -BrowserCookiePlaceholderCurl = Pegar la cabecera Cookie o la solicitud cURL completa del navegador... -BrowserCookieSave = Guardar cookie -CredentialsSectionTitle = Credenciales -OpenCodeGoWorkspaceTitle = OpenCode Go -OpenCodeGoWorkspaceLabel = ID del espacio de trabajo -OpenCodeGoWorkspaceHelp = Opcional. Usa un ID de espacio de trabajo cuando falle la detección automática. -CredsStatusAuthenticated = Autenticado -CredsStatusNotSignedIn = Sin iniciar sesión -CredsStatusDetected = Detectado -CredsStatusNotDetected = No detectado -CredsStatusAvailable = Disponible -CredsStatusUnavailable = No disponible -CredsOpenFolderAction = Abrir carpeta de credenciales -CredsRefreshDetectionAction = Actualizar detección -CredsSavePathAction = Guardar ruta -CredsBrowseAction = Explorar… -CredsGeminiCliLabel = Gemini CLI -CredsGeminiCliHelperPrefix = Usa credenciales OAuth de -CredsGeminiCliSetupAction = Configurar Gemini CLI -CredsGeminiCliSetupHelp = Instale Gemini CLI y ejecute `gemini auth login` para iniciar sesión. -CredsVertexAiLabel = Google Cloud -CredsVertexAiHelperPrefix = Usa credenciales de Google Cloud de -CredsVertexAiSetupAction = Configurar autenticación de Google Cloud -CredsVertexAiSetupHelp = Ejecute `gcloud auth application-default login` para crear credenciales. -CredsJetBrainsLabel = JetBrains IDE -CredsJetBrainsHelperDetectedPrefix = Usando configuración de IDE detectada en -CredsJetBrainsHelperCustomPrefix = Usando ruta base de IDE personalizada -CredsJetBrainsHelperMissing = Instale un IDE de JetBrains con AI Assistant habilitado, luego actualice Ceiling. -CredsJetBrainsCustomPathLabel = Ruta personalizada -CredsJetBrainsCustomPathPlaceholder = %APPDATA%/JetBrains/IntelliJIdea... -CredsJetBrainsSelectLabel = Seleccione el IDE de JetBrains a monitorear. -CredsJetBrainsAutoDetectOption = Detectar automáticamente -CredsKiroLabel = Kiro CLI -CredsKiroHelperAvailablePrefix = Detectado en -CredsKiroHelperMissing = kiro-cli: no se encontró en PATH ni en ubicaciones de instalación conocidas. -CredsOpenAiHistoryHelp = Habilitar seguimiento histórico para ver el uso a lo largo del tiempo. -TokenAccountActive = Activo -TokenAccountSetActive = Establecer activo -TokenAccountRemove = Eliminar -TokenAccountAddButton = Agregar cuenta -TokenAccountGithubLoginButton = Iniciar sesión con GitHub -TokenAccountEmpty = No hay cuentas guardadas para este proveedor. -TokenAccountLabelPlaceholder = Etiqueta (p. ej. Trabajo, Personal)… -TokenAccountProviderLabel = Proveedor -TokenAccountProviderPlaceholder = Seleccionar proveedor… -TokenAccountAddedPrefix = Agregada -TokenAccountUsedPrefix = Usada -TokenAccountTabHint = Administrar múltiples tokens de sesión o tokens API por proveedor. La cuenta activa se usa para todas las consultas. Solo los proveedores que requieren tokens manuales aparecen aquí. -TokenAccountNoSupported = Actualmente ningún proveedor admite cuentas de token. -TokenAccountInlineSummary = Cuentas de token -TrayPaceBadgeSlow = Lento -TrayPaceBadgeSteady = Constante -TrayPaceBadgeRacing = Acelerado -TrayPaceBadgeBurning = Crítico -TrayResetsInLabel = Reinicia en { "{}" } -TrayResetsDueNow = Reiniciando… -PredictivePaceWarnings = Avisos predictivos de ritmo -PredictivePaceWarningsHelper = Avisa cuando el uso de Codex o Claude probablemente se agote antes del reinicio -PredictivePaceWarningTitle = Aviso de ritmo de { "{}" } ({ "{}" }) -PredictivePaceWarningBody = La cuota puede agotarse en { "{}" } -ShowResetWhenExhausted = Mostrar reinicio al agotar la cuota -ShowResetWhenExhaustedHelper = Reemplaza el porcentaje agotado con la cuenta regresiva del reinicio -# Provider data-source / privacy explainer (SOU-179) — English only -DataSourceSectionTitle = How Ceiling gets this data -DataSourcePrivacyNote = Ceiling reads your usage from local app sessions and logs on this PC, or by calling the provider's own usage endpoint. Your credentials and usage data stay on this PC. They are never sent to Ceiling-operated servers, only to the provider itself. -DataSourceLearnMore = Learn how Ceiling gets each provider's data -DataSourceClaude = Reads usage from your signed-in Claude Code or Claude Desktop session, an OAuth token, or claude.ai cookies you provide. Talks only to api.anthropic.com and claude.ai. -DataSourceCodex = Uses the OAuth token from your Codex CLI (~/.codex) plus local session logs on this PC. Talks only to chatgpt.com. -DataSourceCursor = Uses your signed-in Cursor IDE session, or cursor.com cookies you provide. Talks only to cursor.com. -DataSourceCopilot = Uses your GitHub CLI or Git Credential Manager token. Talks only to api.github.com, or your configured GitHub Enterprise host. -DataSourceGemini = Reads the OAuth token from the Gemini CLI (~/.gemini). Talks only to Google's Code Assist and OAuth endpoints. -DataSourceGeneric = Reads this provider's usage from a local session or token on this PC, or by calling the provider's own usage endpoint. Your credentials stay on this PC and are only sent to the provider. - -# First-run checklist (SOU-157) — English only -FirstRunTitle = Finish setting up Ceiling -FirstRunStepEnable = Enable the providers you use -FirstRunStepAuth = Connect or confirm your sign-in -FirstRunStepFloatbar = Turn on the floating bar or taskbar glance -FirstRunOpenProviders = Open provider settings -FirstRunOpenDisplay = Open display settings -FirstRunDismiss = Dismiss diff --git a/rust/src/locale/ja-JP.ftl b/rust/src/locale/ja-JP.ftl deleted file mode 100644 index daddd3b2..00000000 --- a/rust/src/locale/ja-JP.ftl +++ /dev/null @@ -1,612 +0,0 @@ -TabGeneral = 一般 -TabProviders = プロバイダー -TabNotifications = Notifications -TabMenuBar = Menu Bar -TabMenu = Menu -TabApiKeys = API Keys -TabCookies = Cookies -TabAdvanced = 詳細 -TabAbout = 情報 -TabShortcuts = ショートカット -InterfaceLanguage = 表示言語 -StartupSettings = システム -StartAtLogin = ログイン時に起動 -StartMinimized = 最小化して起動 -StartAtLoginHelper = システム起動後に自動的にログインします -StartMinimizedHelper = システムトレイに最小化して起動します -ShowNotificationsHelper = Alert when usage thresholds are reached -CapacityEventNotifications = リセットと容量の通知 -CapacityEventNotificationsHelper = 上限がリセットされたとき、またはプロバイダーが報告する容量が変わったときに通知 -SoundEnabledHelper = Play sound when thresholds are reached -HighUsageThresholdHelper = Show warning at this usage level -CriticalUsageThresholdHelper = Show critical alert at this level -ShowNotifications = Show Notifications -SoundEnabled = Sound Alerts -SoundVolume = Alert Volume -HighUsageThreshold = High Usage Threshold -HighUsageAlert = High Usage Alert -CriticalUsageThreshold = Critical Usage Threshold -CriticalUsageAlert = Critical Alert -UsageDisplay = Usage Display -ShowUsageAsUsed = Show Usage as Used -ShowUsageAsUsedHelper = Display as used percentage instead of remaining -ResetTimeRelative = Relative Reset Time -ResetTimeRelativeHelper = Show "2h 30m" instead of "3:00 PM" -TrayIcon = Tray Icon -MergeTrayIcons = Merge Tray Icons -MergeTrayIconsHelper = Show all providers in a single tray icon -PerProviderTrayIcons = Per-Provider Icons -PerProviderTrayIconsHelper = Show separate tray icon for each enabled provider -ProviderEnabled = Enabled -ProviderDisabled = Disabled -ProviderInfo = Info -ProviderUsage = Usage -AuthType = Authentication -DataSource = Data Source -ProviderNotDetected = not detected -ProviderLastFetchFailed = last fetch failed -ProviderUsageNotFetchedYet = usage not fetched yet -ProviderNotFetchedYetTitle = Not fetched yet -ProviderDisabledNoRecentData = Disabled — no recent data -ProviderSourceAutoShort = auto -ProviderSourceWebShort = web -ProviderSourceCliShort = cli -ProviderSourceOauthShort = oauth -ProviderSourceApiShort = api -ProviderSourceGithubApiShort = github api -ProviderSourceLocalShort = local -ProviderSourceKiroEnvShort = kiro env -WayfinderGatewayTitle = Wayfinder ゲートウェイ -WayfinderGatewayLabel = ゲートウェイ URL -WayfinderGatewayHelp = HTTP は localhost またはループバックアドレスでのみ使用できます。リモートホストには HTTPS を使用します。 -WayfinderGatewayStatus = ゲートウェイ -WayfinderModels = モデル -WayfinderRequests = リクエスト -WayfinderTokens = トークン -WayfinderSaved = 節約 -WayfinderOffline = ゲートウェイオフライン -WayfinderDryRun = ドライラン -WayfinderMissingKeys = 不足しているキー -TrackingItem = Tracked Item -MainWindowLiveUsageData = Live usage data in main window -StartTrackingUsage = Enable to start tracking usage -ClickTrayIconForMetrics = Click tray icon for live metrics -BrowserCookieImport = Browser Cookie Import -ImportFromBrowser = Import { "{}" } cookies from browser -NoCookiesFoundInBrowser = No cookies found in { "{}" }. Please log in first. -SelectBrowser = Select browser... -ImportCookies = Import Cookies -ImportSuccess = Imported cookies for { "{}" } -ImportFailed = Import failed: { "{}" } -SaveFailed = Save failed: { "{}" } -CookiesAutoImport = Cookies are automatically imported from Chrome, Edge, Brave and Firefox -QuickActions = Quick Actions -OpenProviderDashboard = Open { "{}" } Dashboard -OllamaNoDashboard = Ollama runs locally, no dashboard -ApiKeysTitle = API Keys -ApiKeysDescription = Configure access tokens for providers that require authentication. -AddKey = + Add Key -KeySet = Set -KeyRequired = Key Required -Remove = Remove -GetKey = Get key → -SavedCookies = Saved Cookies -AddManualCookie = Add Manual Cookie -CookieHeader = Cookie Header -PasteHere = Paste here... -DeleteCookie = Delete -CookieSaved = Saved { "{}" } cookies -CookieDeleted = Deleted cookies for { "{}" } -RefreshSettings = Refresh -Animations = Animations -MenuBar = Menu Bar -Fun = Fun -GlobalShortcut = Global Shortcut -Privacy = Privacy -Updates = Updates -UpdateChannel = Update Channel -UpdateChannelStable = Stable -UpdateChannelBeta = Beta -Never = Never -LastUpdated = Updated -NeverUpdated = Never updated -MinutesAgo = { "{}" } minutes ago -HoursAgo = { "{}" } hours ago -DaysAgo = { "{}" } days ago -BuiltWithRust = Built with Rust + egui -OriginalMacOSVersion = Original macOS version -Links = Links -BuildInfo = Build Info -EnabledProviders = Enabled Providers -Appearance = Appearance -ThemeSelection = Theme -LightMode = Light -DarkMode = Dark -AboutTitle = About Ceiling -Version = Version -ActionRefreshAll = Refresh All -ActionSettings = Settings -ActionClose = ✕ -ProviderAccount = Account -ProviderSession = Session -ProviderWeekly = 週間 -ProviderMonthly = 30-Day -ProviderModel = Model -ProviderPlan = Plan -ProviderNextReset = Next Reset -ProviderNoRecentUsage = No recent usage -ProviderNotSignedIn = Not signed in -SummaryTab = Summary -StateLoadingProviders = プロバイダーを読み込み中... -StateNoProviderData = No provider data. -StateNoProviderSelected = No provider selected. -StateSummaryRefreshPending = Updating after all provider refreshes finish -StateError = エラー -StateRetry = Retry -StateDownload = Download -StateRestartAndUpdate = Restart & Update -CreditsTitle = Credits -UpdateRestartAndUpdate = Restart & Update -UpdateRetry = Retry -UpdateDownload = Download -UpdateDownloading = Downloading -UpdateReady = Ready to install -UpdateFailed = Update failed -ButtonOpenProviderSettings = Open provider settings -MenuSettings = 設定... -MenuAbout = Ceiling について -MenuQuit = 終了 -StatusJustUpdated = Just updated -StatusUnableToGetUsage = Unable to get usage -ActionRefresh = 更新 -ActionSwitchAccount = Switch account... -ActionUsageDashboard = 使用量ダッシュボード -ActionStatusPage = ステータスページ -ActionCopyError = エラーをコピー -ActionBuyCredits = Buy credits... -PaceOnTrack = On track -PaceBehind = Behind -MetricResetsIn = リセットまで -SectionUsageBreakdown = Usage Breakdown -SectionCost = Cost -ResetInProgress = リセット中... -TomorrowAt = Tomorrow at { "{}" } -UsedPercent = { "{:.0}" }% used -RemainingPercent = { "{:.0}" }% remaining -RemainingAmount = { "{:.2}" } remaining -Tokens1K = 1K tokens -TodayCost = Today: ${ "{:.2}" } -Last30DaysCost = Last 30 days: ${ "{:.2}" } -StatusLabel = Status: { "{}" } -TrayOpenCodexBar = ダッシュボードを開く -TrayPopOutDashboard = ダッシュボードを開く -TrayShowWindow = ウィンドウを表示 -TrayShowTaskbarUsage = タスクバーの使用状況を表示 -TrayRefreshAll = すべて更新 -TrayProviders = プロバイダー -TraySettings = 設定... -TrayCheckForUpdates = 更新を確認 -TrayQuit = 終了 -TrayLoading = Ceiling - 読み込み中... -TrayNoProviders = Ceiling - No providers available -TraySessionPercent = Session { "{}" }% -TrayWeeklyPercent = 週間 { "{}" }% -TrayStatusError = { " (エラー)" } -TrayStatusStale = { " (古いデータ)" } -TrayStatusIncident = { " (インシデント)" } -TrayStatusPartial = { " (一部停止)" } -TrayWeeklyExhausted = 週間の割り当てを使い切りました -TrayCreditsRemaining = 残りクレジット { "{}" }% -TrayStatusRowLoading = 読み込み中... -TrayStatusRowError = エラー -TrayCreditsRow = クレジット { "{}" }% -TrayProviderPopOut = Pop Out Dashboard -TrayProviderRefresh = Refresh -TrayProviderSettings = Settings... -TrayProviderQuit = Quit -State = State -Source = Source -Updated = Updated -UpdatedJustNow = たった今 -UpdatedMinutesAgo = { "{}" }分前 -UpdatedHoursAgo = { "{}" }時間前 -UpdatedDaysAgo = { "{}" }日前 -Status = Status -AllSystemsOperational = All systems operational -Plan = Plan -Account = Account -ProviderSessionLabel = Session -ProviderWeeklyLabel = 週間 -ProviderCodeReviewLabel = Code review -ResetsInShort = リセットまで -ResetsInDaysHours = リセットまで { "{}" }日 { "{}" }時間 -ResetsInDays = リセットまで { "{}" }日 -ResetsInHoursMinutes = リセットまで { "{}" }時間 { "{}" }分 -ResetsInMinutes = リセットまで { "{}" }分 -FloatBarShowCost = ローカルコストを表示 -FloatBarShowCostDescription = フローティングバーにローカル使用量の推定コストを表示します。 -TrayDisplayTitle = Tray Display -ShowInTray = Show in tray -CreditsLabel = Credits -CreditsLeft = { "{:.1}" } left -CostTitle = Cost -TodayCostFull = Today: ${ "{:.2}" } • { "{}" } tokens -Last30DaysCostFull = Last 30 days: ${ "{:.2}" } • { "{}" } tokens -ProviderSettingsTitle = Settings -ProviderAccountsTitle = Accounts -ProviderOptionsTitle = Options -MenuBarMetric = Menu bar metric -MenuBarMetricHelper = Choose which window drives the menu bar percent. -UsageSource = Usage source -ProviderNoCodexAccountsDetected = No Codex accounts detected yet. -ProviderCodexAutoImportHelp = Automatic imports browser cookies for dashboard extras. -ProviderCodexHistoryHelp = Stores local Codex usage history (8 weeks) to personalize Pace predictions. -ProviderOpenAiCookies = OpenAI cookies -ProviderHistoricalTracking = Historical tracking -ProviderOpenAiWebExtras = OpenAI web extras -ProviderOpenAiWebExtrasHelp = Show usage breakdown, credits history, and code review via chatgpt.com. -ProviderCodexCreditsUnavailable = Credits unavailable; keep Codex running to refresh. -ProviderCodexLastFetchFailedTitle = Last Codex fetch failed: -ProviderCodexNotRunningHelp = Codex not running. Try running a Codex command first. -ProviderCookieSource = Cookie source -CookieSourceManual = Manual -ProviderRegion = Region -ProviderClaudeCookies = Claude cookies -ProviderClaudeCookiesHelp = Browser cookies/sessionKey are preferred because they match Claude's settings usage page. -ProviderClaudeAvoidKeychainPrompts = Avoid Keychain prompts -ProviderClaudeAvoidKeychainPromptsHelp = Use /usr/bin/security to read Claude credentials and avoid Ceiling keychain prompts. -ProviderCodexSparkUsage = Show Codex Spark usage -ProviderCodexSparkUsageHelp = Show Codex Spark quota rows without hiding credits or other extra usage. -ProviderCursorCookieSourceHelp = Automatic imports browser cookies or stored sessions. -ProviderCursorCreditsHelp = On-demand usage beyond included plan limits. -AutoFallbackHelp = Auto falls back to the next source if the preferred one fails. -ProviderSourceOauthWeb = OAuth + Web -Automatic = Automatic -Average = Average -ExtraUsage = Extra usage -OAuth = OAuth -Api = API -Web = Web -PrivacyTitle = Privacy -HidePersonalInfo = Hide Personal Info -HidePersonalInfoHelper = Mask emails and account names (good for streaming) -SectionLocalIntegrations = ローカル連携 -PowerToysPipeLabel = PowerToys ステータスパイプ -PowerToysPipeHelper = 名前付きパイプ経由で、キャッシュ済みのプロバイダーステータスとローカル使用量の合計を PowerToys Command Palette に公開します。メールやプランは含まれません。再起動が必要です。 -AgentSessionsTitle = Agent Sessions -AgentSessionsEnableLabel = Show active Codex and Claude sessions -AgentSessionsEnableHelper = Discover local sessions and optional SSH hosts. Disabled by default. -AgentSessionsSshHostsLabel = SSH hosts -AgentSessionsSshHostsHelper = Comma-separated SSH targets. Connections use non-interactive mode and short timeouts. -AgentSessionsLoading = Looking for agent sessions... -AgentSessionsEmpty = No active agent sessions. -UpdatesTitle = Updates -UpdateChannelChoice = Update Channel -UpdateChannelChoiceHelper = Choose between stable and beta preview versions -AutoDownloadUpdates = Check for updates automatically -AutoDownloadUpdatesHelper = Download installer updates in the background when a new release is found -InstallUpdatesOnQuit = Install updates on quit -InstallUpdatesOnQuitHelper = Automatically launch a ready installer when you quit Ceiling -KeyboardShortcutsTitle = Keyboard Shortcuts -GlobalShortcutLabel = Global Shortcut -GlobalShortcutHelper = Press this shortcut to open Ceiling from anywhere -ShortcutFormatHint = Format: Ctrl+Shift+Key, Alt+Ctrl+Key, etc. Restart required to apply changes. -Saved = Saved (restart to apply) -InvalidFormat = Invalid shortcut format -ShortcutHintPlaceholder = e.g., Ctrl+Shift+U -SelectProvider = Select a provider -RefreshInterval30Sec = 30 sec -RefreshInterval1Min = 1 min -RefreshInterval5Min = 5 min -RefreshInterval10Min = 10 min -BrowserCookiesTitle = Browser Cookies -CookieImport = Cookie Import -Provider = Provider -SelectPlaceholder = Select... -AutoRefreshInterval = Auto-refresh interval -AboutDescription = A Windows port of the original macOS version. -AboutDescriptionLine2 = Track AI provider usage in your system tray. -ViewOnGitHub = → View on GitHub -SubmitIssue = → Submit an Issue -MaintainedBy = Maintained by Ceiling contributors -CommitLabel = Commit -BuildDateLabel = Built -Save = Save -Cancel = Cancel -Label = Label -Token = Token -AddAccount = Add Account -AccountAdded = Account added -AccountRemoved = Account removed -AccountSwitched = Account switched -AccountLabelHint = e.g., Work Account, Personal... -EnterApiKeyFor = Enter API key for { "{}" } -PasteApiKeyHere = Paste your API key here... -ApiKeySaved = Saved API key for { "{}" } -ApiKeyRemoved = Removed API key for { "{}" } -EnvironmentVariable = Environment variable -CookieSavedForProvider = Saved cookies for { "{}" } -CookieRemovedForProvider = Removed cookies for { "{}" } -ShowUsedPercent = { "{:.0}" }% used -ShowRemainingPercent = { "{:.0}" }% remaining -UpdateAvailableMessage = Update available: { "{}" } -UpdateReadyMessage = { "{}" } ready to install -UpdateFailedMessage = Update failed: { "{}" } -UpdateDownloadingMessage = Downloading { "{}" } ({ "{:.0}" }%) -TabTokenAccounts = Tokens -SectionRefresh = Automation -SectionNotifications = Notifications -SectionUsageThresholds = Usage Thresholds -SectionKeyboard = Keyboard -SectionUsageRendering = Usage rendering -SectionTime = Time -SectionLanguage = Language -SectionCredentialsSecurity = Credentials & Security -SectionDebug = Debug -SectionApiKeys = API Keys -SectionSavedCookies = Saved Cookies -SectionImportFromBrowser = Import from Browser -SectionAddCookieManually = Add Cookie Manually -SectionTokenAccounts = Token Accounts -SectionSavedAccounts = Saved Accounts -SectionAddAccount = Add Account -RefreshIntervalLabel = Refresh interval -RefreshIntervalHelper = Seconds between automatic provider refreshes (0 = manual). -RefreshAllProvidersOnMenuOpen = Refresh on menu open -RefreshAllProvidersOnMenuOpenHelper = Force-refresh enabled providers whenever the tray menu opens. -SoundVolumeHelper = Volume for threshold alert sounds (0–100). -HighUsageWarningHelper = Show a warning when usage exceeds this percentage. -CriticalUsageWarningHelper = Show a critical alert when usage exceeds this percentage. -GlobalShortcutFieldLabel = Global shortcut -GlobalShortcutToggleHelper = Key combination to toggle the tray panel. -ShortcutRecordButton = Record -ShortcutRecordingLabel = Recording… -ShortcutRecordingHint = Press modifiers + a key. Esc cancels, Backspace clears. -ShortcutClearButton = Clear -ShortcutEmptyPlaceholder = Not set -NotificationTestSound = Test sound -NotificationTestSoundPlaying = Playing… -TrayIconModeLabel = Tray icon mode -TrayIconModeHelper = Single unified icon or one icon per enabled provider. -TrayIconModeSingle = Single -TrayIconModePerProvider = Per provider -ShowProviderIcons = Show provider icons -ShowProviderIconsHelper = Display provider icons in the tray switcher. -PreferHighestUsage = Prefer highest usage -PreferHighestUsageHelper = Show the provider closest to its limit in the merged tray display. -ShowPercentInTray = Show percent in tray -ShowPercentInTrayHelper = Replace usage bar with provider branding + percentage text. -DisplayModeLabel = Display mode -DisplayModeHelper = Level of detail shown in the menu bar label. -DisplayModeDetailed = Detailed -DisplayModeCompact = Compact -DisplayModeMinimal = Minimal -WindowScaleLabel = ウィンドウ倍率 -WindowScaleHelper = ポップアウトダッシュボードの内容を拡大縮小します。ウィンドウ自体は自由にサイズ変更できます。 -WindowScaleAriaLabel = ウィンドウ倍率 -WindowMinimize = 最小化 -WindowMaximize = 最大化 -WindowRestore = 元に戻す -WindowClose = 閉じる -ShowAsUsedLabel = Show as used -ShowAsUsedHelper = Display usage bars as consumed rather than remaining. -ShowAllTokenAccountsLabel = Show all token accounts -ShowAllTokenAccountsHelper = List all token accounts in provider menus instead of collapsing them. -EnableAnimationsLabel = Enable animations -EnableAnimationsHelper = Smooth transitions and animated progress bars. -UpdateChannelStableOption = Stable -UpdateChannelBetaOption = Beta -CodexLocalLogsTitle = Codex ローカルログ -CodexLocalLogsCaption = ローカルのコスト見積もりに使う Codex のホームまたは sessions ディレクトリを追加します。複数のパスはセミコロンで区切ってください。 -CodexLogPathsLabel = Codex ログパス -CodexLogPathsHelper = .codex ルートも指定できます。その中の sessions フォルダをスキャンします。 -AvoidKeychainPromptsLabel = Avoid keychain prompts (Claude) -AvoidKeychainPromptsHelper = Skip keychain credential reads for Claude to prevent OS permission dialogs. -DisableAllKeychainLabel = Disable all keychain access -DisableAllKeychainHelper = Turn off credential/keychain reads for all providers. Also enables the Claude option above. -SectionTheme = Appearance -ThemeLabel = Theme -ThemeHelper = Auto follows your system color scheme. Light and Dark override it. -ThemeAutoOption = Auto (system) -ThemeLightOption = Light -ThemeDarkOption = Dark -SettingsStatusSaving = Saving… -ApiKeysTabHint = Configure API keys for providers that use token-based authentication. Keys are stored locally and never transmitted. -FetchingProviderData = Fetching provider data… -NoProvidersConfigured = No providers configured. -EnableProvidersHint = Enable providers in Settings to see usage data. -OpenSettingsButton = Open Settings -TooltipRefresh = 更新 -TooltipSettings = 設定 -TooltipPopOut = Pop out -TooltipBackToTray = Back to tray -TrayCardErrorBadge = エラー -SummaryProvidersLabel = providers -SummaryRefreshing = refreshing… -SummaryFailed = failed -SummaryWithErrors = エラーあり -DetailBackButton = 戻る -DetailWindowPrimary = プライマリ -DetailWindowSecondary = セカンダリ -DetailWindowModelSpecific = モデル別 -DetailWindowTertiary = 第3枠 -DetailWindowMinutesSuffix = 分ウィンドウ -DetailWindowExhausted = 使い切りました -DetailPaceTitle = ペース -DetailPaceOnTrack = 順調 -DetailPaceSlightlyAhead = やや先行 -DetailPaceAhead = 先行 -DetailPaceFarAhead = 大きく先行 -DetailPaceSlightlyBehind = やや遅れ -DetailPaceBehind = 遅れ -DetailPaceFarBehind = 大きく遅れ -DetailPaceRunsOutIn = 残り -DetailPaceWillLastToReset = リセットまで持ちます -DetailCostTitle = コスト -DetailCostUsed = 使用済み -DetailCostLimit = 上限 -DetailCostRemaining = 残り -DetailCostResets = リセット -DetailChartCost = コスト(30日間) -DetailChartCredits = 使用クレジット(30日間) -DetailChartUsageBreakdown = サービス別使用量(30日間) -DetailChartEmpty = まだチャートデータはありません。 -DetailUpdatedPrefix = 更新 -PanelAllProviders = すべてのプロバイダー -PanelAllProvidersShort = すべて -PanelShowAllProviders = すべてのプロバイダーを表示 -PanelShowFewerProviders = 表示を減らす -PanelZoom = ズーム -PanelMenu = メニュー -PanelCopied = コピーしました -PanelToday = 今日 -PanelThirtyDayCost = 30日間のコスト -PanelThirtyDayTokens = 30日間のトークン -PanelLatestTokens = 最新トークン -PanelThirtyDayCostHistogram = 30日間コストのヒストグラム -PanelTopModelPrefix = トップモデル -PanelEstimatedFromLocalLogs = ローカルログから推定したもので、請求書と異なる場合があります -PanelEstimatedFromLocalLogsClaude = ClaudeのローカルログからAPIレートで推定したもので、トークン総数が請求書と異なる場合があります -PanelExpected = 予測 -PanelActual = 実績 -PanelUsedSuffix = 使用済み -PanelLeftSuffix = 残り -PanelOnPaceBudget = ペース内の予算 -PanelNow = 現在 -PanelOneHour = 1時間 -PanelFiveHours = 5時間 -PanelTodayBudget = 今日 -PanelReserveSuffix = 予備 -PanelReserveLastsUntilReset = リセットまで持ちます -PanelReserveRunsOutInDaysHours = 残り { "{}" }日 { "{}" }時間 -PanelReserveRunsOutInHours = 残り { "{}" }時間 -FloatBarThirtyDayShort = 30日 -FloatBarNoProviders = プロバイダーなし -FloatBarRemainingSuffix = 残り -BannerCheckingForUpdates = Checking for updates… -BannerUpdateAvailablePrefix = Update -BannerDownloadButton = Download -BannerViewRelease = View Release -BannerDismiss = Dismiss -BannerDownloadingPrefix = Downloading update -BannerReadyToInstallSuffix = ready to install -BannerInstallRestart = Install & Restart -BannerUpdateFailedPrefix = Update failed -BannerRetry = Retry -ProviderSidebarSearch = Search -ProviderSidebarClearSearch = Clear provider search -ProviderSidebarNoMatches = No matching providers -ProviderSidebarReorderHint = Drag to reorder -ProviderSidebarMoveUp = Move up -ProviderSidebarMoveDown = Move down -ProviderStatusOk = Up to date -ProviderStatusStale = 古い -ProviderStatusError = エラー -ProviderStatusLoading = 読み込み中 -ProviderStatusDisabled = Disabled -ProviderDetailPlaceholder = Detail pane arriving in Phase 6b -ProviderIssueNeedsSignIn = needs sign-in -ProviderIssueFetchNeedsAttention = Provider fetch needs attention -ProviderIssueCopy = Copy -ProviderIssueUnsupportedSourceModePrefix = Source mode not supported for this provider -CredentialStorageTitle = Credential Storage -CredentialRevokeStored = Revoke Stored Credentials -CredentialApiKeys = API keys -CredentialManualCookies = Manual cookies -CredentialTokenAccounts = Token accounts -CredentialProtectedPrefix = Protected -CredentialStatusNotCreated = Not created -CredentialStatusPlaintext = Plaintext -CredentialStatusUnavailable = Unavailable -CredentialStatusUnreadable = Unreadable -BrowserCookiesSectionTitle = Browser Cookies -BrowserCookieNoneSaved = No cookie saved. -BrowserCookieSavedBadge = Saved -BrowserCookieRemove = Remove -BrowserCookieImportSuccess = Cookies imported successfully. -BrowserCookieImportFromBrowser = Import from Browser -BrowserCookieProfileSingular = profile -BrowserCookieProfilePlural = profiles -BrowserCookiePlaceholderDefault = Paste cookie header value... -BrowserCookiePlaceholderOllama = Paste the full Cookie header or just the __Secure-session value... -BrowserCookiePlaceholderCurl = Paste the Cookie header or full browser cURL request... -BrowserCookieSave = Save Cookie -CredentialsSectionTitle = Credentials -OpenCodeGoWorkspaceTitle = OpenCode Go -OpenCodeGoWorkspaceLabel = Workspace ID -OpenCodeGoWorkspaceHelp = Optional. Use a workspace ID when automatic detection fails. -CredsStatusAuthenticated = Authenticated -CredsStatusNotSignedIn = Not signed in -CredsStatusDetected = Detected -CredsStatusNotDetected = Not detected -CredsStatusAvailable = Available -CredsStatusUnavailable = Unavailable -CredsOpenFolderAction = Open credentials folder -CredsRefreshDetectionAction = Refresh detection -CredsSavePathAction = Save path -CredsBrowseAction = Browse… -CredsGeminiCliLabel = Gemini CLI -CredsGeminiCliHelperPrefix = Uses OAuth credentials from -CredsGeminiCliSetupAction = Setup Gemini CLI -CredsGeminiCliSetupHelp = Install the Gemini CLI and run `gemini auth login` to sign in. -CredsVertexAiLabel = Google Cloud -CredsVertexAiHelperPrefix = Uses Google Cloud credentials from -CredsVertexAiSetupAction = Setup Google Cloud Auth -CredsVertexAiSetupHelp = Run `gcloud auth application-default login` to create credentials. -CredsJetBrainsLabel = JetBrains IDE -CredsJetBrainsHelperDetectedPrefix = Using detected IDE config at -CredsJetBrainsHelperCustomPrefix = Using custom IDE base path -CredsJetBrainsHelperMissing = Install a JetBrains IDE with AI Assistant enabled, then refresh Ceiling. -CredsJetBrainsCustomPathLabel = Custom path -CredsJetBrainsCustomPathPlaceholder = %APPDATA%/JetBrains/IntelliJIdea... -CredsJetBrainsSelectLabel = Select the JetBrains IDE to monitor. -CredsJetBrainsAutoDetectOption = Auto-detect -CredsKiroLabel = Kiro CLI -CredsKiroHelperAvailablePrefix = Detected at -CredsKiroHelperMissing = kiro-cli: not found on PATH or known install locations. -CredsOpenAiHistoryHelp = Enable historical tracking to see usage over time. -TokenAccountActive = Active -TokenAccountSetActive = Set Active -TokenAccountRemove = Remove -TokenAccountAddButton = Add Account -TokenAccountGithubLoginButton = Sign in with GitHub -TokenAccountEmpty = No accounts saved for this provider. -TokenAccountLabelPlaceholder = Label (e.g. Work, Personal)… -TokenAccountProviderLabel = Provider -TokenAccountProviderPlaceholder = Select provider… -TokenAccountAddedPrefix = Added -TokenAccountUsedPrefix = Used -TokenAccountTabHint = Manage multiple session tokens or API tokens per provider. The active account is used for all fetches. Only providers that require manual tokens appear here. -TokenAccountNoSupported = No providers currently support token accounts. -TokenAccountInlineSummary = Token accounts -TrayPaceBadgeSlow = Slow -TrayPaceBadgeSteady = Steady -TrayPaceBadgeRacing = Racing -TrayPaceBadgeBurning = Burning -TrayResetsInLabel = リセットまで { "{}" } -TrayResetsDueNow = リセット中… -PredictivePaceWarnings = ??????? -PredictivePaceWarningsHelper = Codex ??? Claude ??????????????????????????? -PredictivePaceWarningTitle = { "{}" } ? { "{}" } ????? -PredictivePaceWarningBody = ?? { "{}" } ??????????????? -ShowResetWhenExhausted = ??????????????? -ShowResetWhenExhaustedHelper = ?????????????????????????????? -# Provider data-source / privacy explainer (SOU-179) — English only -DataSourceSectionTitle = How Ceiling gets this data -DataSourcePrivacyNote = Ceiling reads your usage from local app sessions and logs on this PC, or by calling the provider's own usage endpoint. Your credentials and usage data stay on this PC. They are never sent to Ceiling-operated servers, only to the provider itself. -DataSourceLearnMore = Learn how Ceiling gets each provider's data -DataSourceClaude = Reads usage from your signed-in Claude Code or Claude Desktop session, an OAuth token, or claude.ai cookies you provide. Talks only to api.anthropic.com and claude.ai. -DataSourceCodex = Uses the OAuth token from your Codex CLI (~/.codex) plus local session logs on this PC. Talks only to chatgpt.com. -DataSourceCursor = Uses your signed-in Cursor IDE session, or cursor.com cookies you provide. Talks only to cursor.com. -DataSourceCopilot = Uses your GitHub CLI or Git Credential Manager token. Talks only to api.github.com, or your configured GitHub Enterprise host. -DataSourceGemini = Reads the OAuth token from the Gemini CLI (~/.gemini). Talks only to Google's Code Assist and OAuth endpoints. -DataSourceGeneric = Reads this provider's usage from a local session or token on this PC, or by calling the provider's own usage endpoint. Your credentials stay on this PC and are only sent to the provider. - -# First-run checklist (SOU-157) — English only -FirstRunTitle = Finish setting up Ceiling -FirstRunStepEnable = Enable the providers you use -FirstRunStepAuth = Connect or confirm your sign-in -FirstRunStepFloatbar = Turn on the floating bar or taskbar glance -FirstRunOpenProviders = Open provider settings -FirstRunOpenDisplay = Open display settings -FirstRunDismiss = Dismiss diff --git a/rust/src/locale/ko-KR.ftl b/rust/src/locale/ko-KR.ftl deleted file mode 100644 index f2bcdbb3..00000000 --- a/rust/src/locale/ko-KR.ftl +++ /dev/null @@ -1,612 +0,0 @@ -TabGeneral = 일반 -TabProviders = 제공업체 -TabNotifications = Notifications -TabMenuBar = Menu Bar -TabMenu = Menu -TabApiKeys = API 키 -TabCookies = 쿠키 -TabAdvanced = 고급 -TabAbout = 정보 -TabShortcuts = 단축키 -InterfaceLanguage = 인터페이스 언어 -StartupSettings = 시스템 -StartAtLogin = 로그인 시 자동 실행 -StartMinimized = 최소화 상태로 시작 -StartAtLoginHelper = 시스템 시작 시 자동으로 앱을 실행합니다 -StartMinimizedHelper = 시스템 트레이로 최소화된 상태로 시작합니다 -ShowNotificationsHelper = 사용량 임계값에 도달하면 알림 -CapacityEventNotifications = 재설정 및 용량 알림 -CapacityEventNotificationsHelper = 한도가 재설정되거나 공급자가 보고한 용량이 변경되면 알림 -SoundEnabledHelper = 임계값에 도달하면 소리 재생 -HighUsageThresholdHelper = 이 사용량 수준에서 경고 표시 -CriticalUsageThresholdHelper = 이 수준에서 위험 경고 표시 -ShowNotifications = 알림 표시 -SoundEnabled = 소리 알림 -SoundVolume = 알림 볼륨 -HighUsageThreshold = 높은 사용량 임계값 -HighUsageAlert = 높은 사용량 경고 -CriticalUsageThreshold = 위험 사용량 임계값 -CriticalUsageAlert = 위험 경고 -UsageDisplay = 사용량 표시 -ShowUsageAsUsed = 사용된 양으로 표시 -ShowUsageAsUsedHelper = 남은 양 대신 사용된 백분율로 표시 -ResetTimeRelative = 상대적인 초기화 시간 -ResetTimeRelativeHelper = "3:00 PM" 대신 "2시간 30분"으로 표시 -TrayIcon = 트레이 아이콘 -MergeTrayIcons = 트레이 아이콘 병합 -MergeTrayIconsHelper = 모든 제공업체를 단일 트레이 아이콘에 표시 -PerProviderTrayIcons = 제공업체별 아이콘 -PerProviderTrayIconsHelper = 활성화된 각 제공업체에 대해 별도의 트레이 아이콘 표시 -ProviderEnabled = 활성화됨 -ProviderDisabled = 비활성화됨 -ProviderInfo = 정보 -ProviderUsage = 사용량 -AuthType = 인증 -DataSource = 데이터 소스 -ProviderNotDetected = 감지되지 않음 -ProviderLastFetchFailed = 최근 가져오기 실패 -ProviderUsageNotFetchedYet = 아직 사용량을 가져오지 않음 -ProviderNotFetchedYetTitle = 아직 가져오지 않음 -ProviderDisabledNoRecentData = 비활성화됨 — 최근 데이터 없음 -ProviderSourceAutoShort = 자동 -ProviderSourceWebShort = 웹 -ProviderSourceCliShort = CLI -ProviderSourceOauthShort = OAuth -ProviderSourceApiShort = API -ProviderSourceGithubApiShort = GitHub API -ProviderSourceLocalShort = 로컬 -ProviderSourceKiroEnvShort = Kiro Env -WayfinderGatewayTitle = Wayfinder 게이트웨이 -WayfinderGatewayLabel = 게이트웨이 URL -WayfinderGatewayHelp = HTTP는 localhost 또는 루프백 주소에서만 사용하세요. 원격 호스트에는 HTTPS를 사용합니다. -WayfinderGatewayStatus = 게이트웨이 -WayfinderModels = 모델 -WayfinderRequests = 요청 -WayfinderTokens = 토큰 -WayfinderSaved = 절약 -WayfinderOffline = 게이트웨이 오프라인 -WayfinderDryRun = 드라이 런 -WayfinderMissingKeys = 누락된 키 -TrackingItem = 추적 대상 -MainWindowLiveUsageData = 기본 창의 실시간 사용량 데이터 -StartTrackingUsage = 사용량 추적을 시작하려면 활성화 -ClickTrayIconForMetrics = 실시간 메트릭을 보려면 트레이 아이콘을 클릭하세요 -BrowserCookieImport = 브라우저 쿠키 가져오기 -ImportFromBrowser = 브라우저에서 { "{}" } 쿠키 가져오기 -NoCookiesFoundInBrowser = { "{}" }에서 쿠키를 찾을 수 없습니다. 먼저 로그인해 주세요. -SelectBrowser = 브라우저 선택... -ImportCookies = 쿠키 가져오기 -ImportSuccess = { "{}" } 쿠키를 가져왔습니다 -ImportFailed = 가져오기 실패: { "{}" } -SaveFailed = 저장 실패: { "{}" } -CookiesAutoImport = Chrome, Edge, Brave, Firefox에서 쿠키를 자동으로 가져옵니다 -QuickActions = 빠른 작업 -OpenProviderDashboard = { "{}" } 대시보드 열기 -OllamaNoDashboard = Ollama는 로컬에서 실행되며 대시보드가 없습니다 -ApiKeysTitle = API 키 -ApiKeysDescription = 인증이 필요한 제공업체의 액세스 토큰을 구성합니다. -AddKey = + 키 추가 -KeySet = 설정됨 -KeyRequired = 키 필요 -Remove = 제거 -GetKey = 키 받기 → -SavedCookies = 저장된 쿠키 -AddManualCookie = 수동 쿠키 추가 -CookieHeader = 쿠키 헤더 -PasteHere = 여기에 붙여넣기... -DeleteCookie = 삭제 -CookieSaved = { "{}" }개 쿠키 저장됨 -CookieDeleted = { "{}" } 쿠키가 삭제되었습니다 -RefreshSettings = 새로고침 -Animations = 애니메이션 -MenuBar = 메뉴 바 -Fun = 재미 -GlobalShortcut = 글로벌 단축키 -Privacy = 개인정보 보호 -Updates = 업데이트 -UpdateChannel = 업데이트 채널 -UpdateChannelStable = 안정(Stable) -UpdateChannelBeta = 베타(Beta) -Never = 안 함 -LastUpdated = 최근 업데이트 -NeverUpdated = 업데이트된 적 없음 -MinutesAgo = { "{}" }분 전 -HoursAgo = { "{}" }시간 전 -DaysAgo = { "{}" }일 전 -BuiltWithRust = Rust + egui로 구축됨 -OriginalMacOSVersion = 원본 macOS 버전 -Links = 링크 -BuildInfo = 빌드 정보 -EnabledProviders = 활성화된 제공업체 -Appearance = 테마 -ThemeSelection = 테마 -LightMode = 라이트 -DarkMode = 다크 -AboutTitle = Ceiling 정보 -Version = 버전 -ActionRefreshAll = 모두 새로고침 -ActionSettings = 설정 -ActionClose = ✕ -ProviderAccount = 계정 -ProviderSession = 세션 -ProviderWeekly = 주간 -ProviderMonthly = 30일 -ProviderModel = 모델 -ProviderPlan = 요금제 -ProviderNextReset = 다음 초기화 -ProviderNoRecentUsage = 최근 사용량 없음 -ProviderNotSignedIn = 로그인하지 않음 -SummaryTab = 요약 -StateLoadingProviders = 제공업체 로딩 중... -StateNoProviderData = 제공업체 데이터가 없습니다. -StateNoProviderSelected = 선택된 제공업체가 없습니다. -StateSummaryRefreshPending = 모든 제공업체 새로고침 완료 후 업데이트 중 -StateError = 오류 -StateRetry = 재시도 -StateDownload = 다운로드 -StateRestartAndUpdate = 재시작 및 업데이트 -CreditsTitle = 크레딧 -UpdateRestartAndUpdate = 재시작 및 업데이트 -UpdateRetry = 재시도 -UpdateDownload = 다운로드 -UpdateDownloading = 다운로드 중 -UpdateReady = 설치 준비 완료 -UpdateFailed = 업데이트 실패 -ButtonOpenProviderSettings = 제공업체 설정 열기 -MenuSettings = 설정... -MenuAbout = Ceiling 정보 -MenuQuit = 종료 -StatusJustUpdated = 방금 업데이트됨 -StatusUnableToGetUsage = 사용량을 가져올 수 없음 -ActionRefresh = 새로고침 -ActionSwitchAccount = 계정 전환... -ActionUsageDashboard = 사용량 대시보드 -ActionStatusPage = 상태 페이지 -ActionCopyError = 오류 복사 -ActionBuyCredits = 크레딧 구매... -PaceOnTrack = 정상 진행 -PaceBehind = 지연됨 -MetricResetsIn = 초기화까지 -SectionUsageBreakdown = 사용량 내역 -SectionCost = 비용 -ResetInProgress = 초기화 중... -TomorrowAt = 내일 { "{}" } -UsedPercent = { "{:.0}" }% 사용됨 -RemainingPercent = { "{:.0}" }% 남음 -RemainingAmount = { "{:.2}" } 남음 -Tokens1K = 1K 토큰 -TodayCost = 오늘: ${ "{:.2}" } -Last30DaysCost = 최근 30일: ${ "{:.2}" } -StatusLabel = 상태: { "{}" } -TrayOpenCodexBar = 대시보드 띄우기 -TrayPopOutDashboard = 대시보드 띄우기 -TrayShowWindow = 창 표시 -TrayShowTaskbarUsage = 작업 표시줄 사용량 표시 -TrayRefreshAll = 모두 새로고침 -TrayProviders = 제공업체 -TraySettings = 설정... -TrayCheckForUpdates = 업데이트 확인 -TrayQuit = 종료 -TrayLoading = Ceiling - 로딩 중... -TrayNoProviders = Ceiling - 사용 가능한 제공업체 없음 -TraySessionPercent = 세션 { "{}" }% -TrayWeeklyPercent = 주간 { "{}" }% -TrayStatusError = { " (오류)" } -TrayStatusStale = { " (이전 데이터)" } -TrayStatusIncident = { " (장애)" } -TrayStatusPartial = { " (부분 장애)" } -TrayWeeklyExhausted = 주간 할당량 모두 사용함 -TrayCreditsRemaining = 남은 크레딧 { "{}" }% -TrayStatusRowLoading = 로딩 중... -TrayStatusRowError = 오류 -TrayCreditsRow = 크레딧 { "{}" }% -TrayProviderPopOut = 대시보드 띄우기 -TrayProviderRefresh = 새로고침 -TrayProviderSettings = 설정... -TrayProviderQuit = 종료 -State = 상태 -Source = 소스 -Updated = 업데이트됨 -UpdatedJustNow = 방금 업데이트됨 -UpdatedMinutesAgo = { "{}" }분 전 -UpdatedHoursAgo = { "{}" }시간 전 -UpdatedDaysAgo = { "{}" }일 전 -Status = 상태 -AllSystemsOperational = 모든 시스템 정상 작동 중 -Plan = 요금제 -Account = 계정 -ProviderSessionLabel = 세션 -ProviderWeeklyLabel = 주간 -ProviderCodeReviewLabel = 코드 리뷰 -ResetsInShort = 초기화까지 -ResetsInDaysHours = 초기화까지 { "{}" }일 { "{}" }시간 -ResetsInDays = 초기화까지 { "{}" }일 -ResetsInHoursMinutes = 초기화까지 { "{}" }시간 { "{}" }분 -ResetsInMinutes = 초기화까지 { "{}" }분 -FloatBarShowCost = 로컬 비용 표시 -FloatBarShowCostDescription = 플로팅 바에 로컬 사용량의 예상 비용을 표시합니다. -TrayDisplayTitle = 트레이 표시 -ShowInTray = 트레이에 표시 -CreditsLabel = 크레딧 -CreditsLeft = { "{:.1}" } 남음 -CostTitle = 비용 -TodayCostFull = 오늘: ${ "{:.2}" } • { "{}" } 토큰 -Last30DaysCostFull = 최근 30일: ${ "{:.2}" } • { "{}" } 토큰 -ProviderSettingsTitle = 설정 -ProviderAccountsTitle = 계정 -ProviderOptionsTitle = 옵션 -MenuBarMetric = 메뉴 바 메트릭 -MenuBarMetricHelper = 메뉴 바 백분율을 결정할 창을 선택합니다. -UsageSource = 사용량 소스 -ProviderNoCodexAccountsDetected = 감지된 Codex 계정이 아직 없습니다. -ProviderCodexAutoImportHelp = 대시보드 추가 기능을 위해 브라우저 쿠키를 자동으로 가져옵니다. -ProviderCodexHistoryHelp = 사용 속도 예측을 개인화하기 위해 로컬 Codex 사용 기록(8주)을 저장합니다. -ProviderOpenAiCookies = OpenAI 쿠키 -ProviderHistoricalTracking = 기록 추적 -ProviderOpenAiWebExtras = OpenAI 웹 추가 기능 -ProviderOpenAiWebExtrasHelp = chatgpt.com을 통해 상세 사용량, 크레딧 내역 및 코드 리뷰를 보여줍니다. -ProviderCodexCreditsUnavailable = 크레딧을 사용할 수 없습니다. 새로 고치려면 Codex를 계속 실행해 두세요. -ProviderCodexLastFetchFailedTitle = 최근 Codex 가져오기 실패: -ProviderCodexNotRunningHelp = Codex가 실행 중이 아닙니다. 먼저 Codex 명령을 실행해 보세요. -ProviderCookieSource = 쿠키 소스 -CookieSourceManual = 수동 -ProviderRegion = 지역 -ProviderClaudeCookies = Claude 쿠키 -ProviderClaudeCookiesHelp = 브라우저 쿠키/`sessionKey`가 Claude의 설정 사용량 페이지와 일치하므로 권장됩니다. -ProviderClaudeAvoidKeychainPrompts = 키체인 메시지 표시 방지 -ProviderClaudeAvoidKeychainPromptsHelp = Claude 자격 증명을 읽을 때 `/usr/bin/security`를 사용하여 Ceiling 키체인 권한 창이 뜨지 않도록 합니다. -ProviderCodexSparkUsage = Show Codex Spark usage -ProviderCodexSparkUsageHelp = Show Codex Spark quota rows without hiding credits or other extra usage. -ProviderCursorCookieSourceHelp = 브라우저 쿠키 또는 저장된 세션을 자동으로 가져옵니다. -ProviderCursorCreditsHelp = 기본 요금제 한도를 초과하는 온디맨드 사용량. -AutoFallbackHelp = 기본 소스가 실패하면 자동으로 다음 소스로 전환합니다. -ProviderSourceOauthWeb = OAuth + 웹 -Automatic = 자동 -Average = 평균 -ExtraUsage = 추가 사용량 -OAuth = OAuth -Api = API -Web = 웹 -PrivacyTitle = 개인정보 보호 -HidePersonalInfo = 개인 정보 숨기기 -HidePersonalInfoHelper = 이메일 및 계정 이름 마스킹 (스트리밍 시 유용) -SectionLocalIntegrations = 로컬 통합 -PowerToysPipeLabel = PowerToys 상태 파이프 -PowerToysPipeHelper = 명명된 파이프를 통해 캐시된 공급자 상태와 로컬 사용량 합계를 PowerToys Command Palette에 노출합니다. 이메일이나 플랜은 포함되지 않습니다. 재시작이 필요합니다. -AgentSessionsTitle = Agent Sessions -AgentSessionsEnableLabel = Show active Codex and Claude sessions -AgentSessionsEnableHelper = Discover local sessions and optional SSH hosts. Disabled by default. -AgentSessionsSshHostsLabel = SSH hosts -AgentSessionsSshHostsHelper = Comma-separated SSH targets. Connections use non-interactive mode and short timeouts. -AgentSessionsLoading = Looking for agent sessions... -AgentSessionsEmpty = No active agent sessions. -UpdatesTitle = 업데이트 -UpdateChannelChoice = 업데이트 채널 -UpdateChannelChoiceHelper = 안정 버전과 베타 미리보기 버전 중 선택 -AutoDownloadUpdates = 업데이트 자동 확인 -AutoDownloadUpdatesHelper = 새 릴리스가 발견되면 백그라운드에서 설치 프로그램 업데이트 다운로드 -InstallUpdatesOnQuit = 종료 시 업데이트 설치 -InstallUpdatesOnQuitHelper = Ceiling를 종료할 때 준비된 설치 프로그램을 자동으로 실행합니다. -KeyboardShortcutsTitle = 키보드 단축키 -GlobalShortcutLabel = 글로벌 단축키 -GlobalShortcutHelper = 어디서나 이 단축키를 눌러 Ceiling를 엽니다 -ShortcutFormatHint = 형식: Ctrl+Shift+Key, Alt+Ctrl+Key 등. 변경 사항을 적용하려면 재시작이 필요합니다. -Saved = 저장됨 (적용하려면 재시작) -InvalidFormat = 유효하지 않은 단축키 형식 -ShortcutHintPlaceholder = 예: Ctrl+Shift+U -SelectProvider = 제공업체 선택 -RefreshInterval30Sec = 30초 -RefreshInterval1Min = 1분 -RefreshInterval5Min = 5분 -RefreshInterval10Min = 10분 -BrowserCookiesTitle = 브라우저 쿠키 -CookieImport = 쿠키 가져오기 -Provider = 제공업체 -SelectPlaceholder = 선택... -AutoRefreshInterval = 자동 새로고침 간격 -AboutDescription = 오리지널 macOS 버전의 Windows 이식 버전입니다. -AboutDescriptionLine2 = 시스템 트레이에서 AI 제공업체의 사용량을 추적하세요. -ViewOnGitHub = → GitHub에서 보기 -SubmitIssue = → 이슈 제출 -MaintainedBy = Ceiling 기여자들에 의해 유지 관리됨 -CommitLabel = 커밋 -BuildDateLabel = 빌드 날짜 -Save = 저장 -Cancel = 취소 -Label = 라벨 -Token = 토큰 -AddAccount = 계정 추가 -AccountAdded = 계정이 추가되었습니다 -AccountRemoved = 계정이 제거되었습니다 -AccountSwitched = 계정이 전환되었습니다 -AccountLabelHint = 예: 회사 계정, 개인 계정... -EnterApiKeyFor = { "{}" }의 API 키 입력 -PasteApiKeyHere = 여기에 API 키 붙여넣기... -ApiKeySaved = { "{}" }의 API 키 저장됨 -ApiKeyRemoved = { "{}" }의 API 키 제거됨 -EnvironmentVariable = 환경 변수 -CookieSavedForProvider = { "{}" }의 쿠키 저장됨 -CookieRemovedForProvider = { "{}" }의 쿠키 제거됨 -ShowUsedPercent = { "{:.0}" }% 사용됨 -ShowRemainingPercent = { "{:.0}" }% 남음 -UpdateAvailableMessage = 사용 가능한 업데이트: { "{}" } -UpdateReadyMessage = { "{}" } 설치 준비 완료 -UpdateFailedMessage = 업데이트 실패: { "{}" } -UpdateDownloadingMessage = { "{}" } 다운로드 중 ({ "{:.0}" }%) -TabTokenAccounts = 토큰 -SectionRefresh = 자동화 -SectionNotifications = 알림 -SectionUsageThresholds = 사용량 임계값 -SectionKeyboard = 키보드 -SectionUsageRendering = 사용량 렌더링 -SectionTime = 시간 -SectionLanguage = 언어 -SectionCredentialsSecurity = 자격 증명 및 보안 -SectionDebug = 디버그 -SectionApiKeys = API 키 -SectionSavedCookies = 저장된 쿠키 -SectionImportFromBrowser = 브라우저에서 가져오기 -SectionAddCookieManually = 수동으로 쿠키 추가 -SectionTokenAccounts = 토큰 계정 -SectionSavedAccounts = 저장된 계정 -SectionAddAccount = 계정 추가 -RefreshIntervalLabel = 새로고침 간격 -RefreshIntervalHelper = 제공업체 자동 새로고침 간격(초) (0으로 설정 시 수동 새로고침). -RefreshAllProvidersOnMenuOpen = 메뉴를 열 때 새로고침 -RefreshAllProvidersOnMenuOpenHelper = 트레이 메뉴를 열 때마다 활성화된 제공업체를 강제로 새로고침합니다. -SoundVolumeHelper = 임계값 경고 소리 볼륨 (0~100). -HighUsageWarningHelper = 사용량이 이 백분율을 초과하면 경고를 표시합니다. -CriticalUsageWarningHelper = 사용량이 이 백분율을 초과하면 위험 경고를 표시합니다. -GlobalShortcutFieldLabel = 글로벌 단축키 -GlobalShortcutToggleHelper = 트레이 패널을 토글하는 키 조합입니다. -ShortcutRecordButton = 입력 -ShortcutRecordingLabel = 입력 중… -ShortcutRecordingHint = 조합 키 + 단축키를 누르세요. Esc는 취소, Backspace는 지우기입니다. -ShortcutClearButton = 지우기 -ShortcutEmptyPlaceholder = 설정되지 않음 -NotificationTestSound = 소리 테스트 -NotificationTestSoundPlaying = 재생 중… -TrayIconModeLabel = 트레이 아이콘 모드 -TrayIconModeHelper = 단일 통합 아이콘 또는 활성화된 제공업체당 하나의 아이콘. -TrayIconModeSingle = 단일 -TrayIconModePerProvider = 제공업체별 -ShowProviderIcons = 제공업체 아이콘 표시 -ShowProviderIconsHelper = 트레이 메뉴에 제공업체 아이콘을 표시합니다. -PreferHighestUsage = 가장 높은 사용량 우선 -PreferHighestUsageHelper = 병합된 트레이 아이콘에 사용 한도에 가장 가까운 제공업체를 표시합니다. -ShowPercentInTray = 트레이에 백분율 표시 -ShowPercentInTrayHelper = 사용량 표시줄을 제공업체 브랜드 및 백분율 텍스트로 대체합니다. -DisplayModeLabel = 디스플레이 모드 -DisplayModeHelper = 메뉴 바 라벨에 표시할 세부 정보 수준입니다. -DisplayModeDetailed = 상세 -DisplayModeCompact = 압축 -DisplayModeMinimal = 최소 -WindowScaleLabel = 창 크기 조절 -WindowScaleHelper = 팝아웃 대시보드 콘텐츠의 크기를 조절합니다. 창 자체는 자유롭게 크기를 변경할 수 있습니다. -WindowScaleAriaLabel = 창 크기 조절 -WindowMinimize = 최소화 -WindowMaximize = 최대화 -WindowRestore = 이전 크기로 복원 -WindowClose = 닫기 -ShowAsUsedLabel = 사용된 양으로 표시 -ShowAsUsedHelper = 사용량 표시줄을 남은 양 대신 소비된 양으로 표시합니다. -ShowAllTokenAccountsLabel = 모든 토큰 계정 표시 -ShowAllTokenAccountsHelper = 제공업체 메뉴에서 토큰 계정을 축소하지 않고 모두 나열합니다. -EnableAnimationsLabel = 애니메이션 활성화 -EnableAnimationsHelper = 부드러운 전환 효과 및 애니메이션 진행 표시줄을 사용합니다. -UpdateChannelStableOption = 안정(Stable) -UpdateChannelBetaOption = 베타(Beta) -CodexLocalLogsTitle = Codex 로컬 로그 -CodexLocalLogsCaption = 로컬 비용 추정을 위해 Codex 홈 또는 sessions 디렉터리를 추가합니다. 여러 경로는 세미콜론으로 구분하세요. -CodexLogPathsLabel = Codex 로그 경로 -CodexLogPathsHelper = .codex 루트도 사용할 수 있으며, 그 안의 sessions 폴더를 스캔합니다. -AvoidKeychainPromptsLabel = 키체인 창 표시 방지 (Claude) -AvoidKeychainPromptsHelper = OS 권한 대화 상자가 나타나지 않도록 Claude의 키체인 자격 증명 읽기를 건너뜁니다. -DisableAllKeychainLabel = 모든 키체인 액세스 비활성화 -DisableAllKeychainHelper = 모든 제공업체에 대한 자격 증명/키체인 읽기를 비활성화합니다. 위의 Claude 옵션도 활성화됩니다. -SectionTheme = 테마 -ThemeLabel = 테마 -ThemeHelper = 시스템 테마 설정을 자동으로 따릅니다. 라이트 또는 다크 모드는 이 설정을 무시합니다. -ThemeAutoOption = 자동 (시스템) -ThemeLightOption = 라이트 -ThemeDarkOption = 다크 -SettingsStatusSaving = 저장 중… -ApiKeysTabHint = 토큰 기반 인증을 사용하는 제공업체의 API 키를 구성합니다. 키는 로컬에 저장되며 절대 전송되지 않습니다. -FetchingProviderData = 제공업체 데이터 가져오는 중… -NoProvidersConfigured = 구성된 제공업체가 없습니다. -EnableProvidersHint = 사용량 데이터를 보려면 설정에서 제공업체를 활성화하세요. -OpenSettingsButton = 설정 열기 -TooltipRefresh = 새로고침 -TooltipSettings = 설정 -TooltipPopOut = 대시보드 띄우기 -TooltipBackToTray = 트레이로 복귀 -TrayCardErrorBadge = 오류 -SummaryProvidersLabel = 제공업체 -SummaryRefreshing = 새로고침 중… -SummaryFailed = 실패 -SummaryWithErrors = 오류 있음 -DetailBackButton = 뒤로 -DetailWindowPrimary = 기본 -DetailWindowSecondary = 보조 -DetailWindowModelSpecific = 모델별 -DetailWindowTertiary = 3차 -DetailWindowMinutesSuffix = 분 창 -DetailWindowExhausted = 모두 사용됨 -DetailPaceTitle = 사용 속도 -DetailPaceOnTrack = 정상 진행 -DetailPaceSlightlyAhead = 조금 빠름 -DetailPaceAhead = 빠름 -DetailPaceFarAhead = 매우 빠름 -DetailPaceSlightlyBehind = 조금 느림 -DetailPaceBehind = 느림 -DetailPaceFarBehind = 매우 느림 -DetailPaceRunsOutIn = 소진까지 -DetailPaceWillLastToReset = 초기화까지 유지 예상 -DetailCostTitle = 비용 -DetailCostUsed = 사용량 -DetailCostLimit = 한도 -DetailCostRemaining = 남음 -DetailCostResets = 초기화 -DetailChartCost = 비용 (30일) -DetailChartCredits = 사용 크레딧 (30일) -DetailChartUsageBreakdown = 서비스별 사용량 (30일) -DetailChartEmpty = 아직 차트 데이터가 없습니다. -DetailUpdatedPrefix = 업데이트됨 -PanelAllProviders = 모든 제공자 -PanelAllProvidersShort = 전체 -PanelShowAllProviders = 모든 제공자 표시 -PanelShowFewerProviders = 적은 제공자 표시 -PanelZoom = 확대/축소 -PanelMenu = 메뉴 -PanelCopied = 복사됨 -PanelToday = 오늘 -PanelThirtyDayCost = 30일 비용 -PanelThirtyDayTokens = 30일 토큰 -PanelLatestTokens = 최신 토큰 -PanelThirtyDayCostHistogram = 30일 비용 히스토그램 -PanelTopModelPrefix = 상위 모델 -PanelEstimatedFromLocalLogs = 로컬 로그에서 추정; 청구서와 다를 수 있음 -PanelEstimatedFromLocalLogsClaude = API 요율로 로컬 Claude 로그에서 추정; 토큰 합계가 청구서와 다를 수 있음 -PanelExpected = 예상 -PanelActual = 실제 -PanelUsedSuffix = 사용됨 -PanelLeftSuffix = 남음 -PanelOnPaceBudget = 예산 내 -PanelNow = 지금 -PanelOneHour = 1시간 -PanelFiveHours = 5시간 -PanelTodayBudget = 오늘 -PanelReserveSuffix = 예비 -PanelReserveLastsUntilReset = 리셋까지 지속 -PanelReserveRunsOutInDaysHours = { "{}" }일 { "{}" }시간 후 소진 -PanelReserveRunsOutInHours = { "{}" }시간 후 소진 -FloatBarThirtyDayShort = 30일 -FloatBarNoProviders = 공급자 없음 -FloatBarRemainingSuffix = 남음 -BannerCheckingForUpdates = 업데이트 확인 중… -BannerUpdateAvailablePrefix = 업데이트 -BannerDownloadButton = 다운로드 -BannerViewRelease = 릴리스 보기 -BannerDismiss = 닫기 -BannerDownloadingPrefix = 업데이트 다운로드 중 -BannerReadyToInstallSuffix = 설치 준비 완료 -BannerInstallRestart = 설치 및 재시작 -BannerUpdateFailedPrefix = 업데이트 실패 -BannerRetry = 재시도 -ProviderSidebarSearch = 검색 -ProviderSidebarClearSearch = 제공업체 검색 지우기 -ProviderSidebarNoMatches = 일치하는 제공업체 없음 -ProviderSidebarReorderHint = 끌어서 순서 변경 -ProviderSidebarMoveUp = 위로 이동 -ProviderSidebarMoveDown = 아래로 이동 -ProviderStatusOk = 최신 상태 -ProviderStatusStale = 이전 데이터 -ProviderStatusError = 오류 -ProviderStatusLoading = 로딩 중 -ProviderStatusDisabled = 비활성화됨 -ProviderDetailPlaceholder = 세부 정보 패널은 6b단계에 제공될 예정입니다 -ProviderIssueNeedsSignIn = 로그인이 필요합니다 -ProviderIssueFetchNeedsAttention = 제공업체 데이터 가져오기에 확인이 필요합니다 -ProviderIssueCopy = 복사 -ProviderIssueUnsupportedSourceModePrefix = 이 제공업체는 선택한 소스 모드를 지원하지 않습니다 -CredentialStorageTitle = 자격 증명 저장소 -CredentialRevokeStored = 저장된 자격 증명 해제 -CredentialApiKeys = API 키 -CredentialManualCookies = 수동 쿠키 -CredentialTokenAccounts = 토큰 계정 -CredentialProtectedPrefix = 보호됨 -CredentialStatusNotCreated = 생성되지 않음 -CredentialStatusPlaintext = 일반 텍스트 -CredentialStatusUnavailable = 사용할 수 없음 -CredentialStatusUnreadable = 읽을 수 없음 -BrowserCookiesSectionTitle = 브라우저 쿠키 -BrowserCookieNoneSaved = 저장된 쿠키가 없습니다. -BrowserCookieSavedBadge = 저장됨 -BrowserCookieRemove = 삭제 -BrowserCookieImportSuccess = 쿠키를 가져왔습니다. -BrowserCookieImportFromBrowser = 브라우저에서 가져오기 -BrowserCookieProfileSingular = 프로필 -BrowserCookieProfilePlural = 프로필 -BrowserCookiePlaceholderDefault = 쿠키 헤더 값을 붙여넣으세요... -BrowserCookiePlaceholderOllama = 전체 Cookie 헤더 또는 __Secure-session 값만 붙여넣으세요... -BrowserCookiePlaceholderCurl = Cookie 헤더 또는 브라우저 cURL 요청 전체를 붙여넣으세요... -BrowserCookieSave = 쿠키 저장 -CredentialsSectionTitle = 자격 증명 -OpenCodeGoWorkspaceTitle = OpenCode Go -OpenCodeGoWorkspaceLabel = 워크스페이스 ID -OpenCodeGoWorkspaceHelp = 선택 사항입니다. 자동 감지에 실패하면 워크스페이스 ID를 사용하세요. -CredsStatusAuthenticated = 인증됨 -CredsStatusNotSignedIn = 로그인하지 않음 -CredsStatusDetected = 감지됨 -CredsStatusNotDetected = 감지되지 않음 -CredsStatusAvailable = 사용 가능 -CredsStatusUnavailable = 사용 불가능 -CredsOpenFolderAction = 자격 증명 폴더 열기 -CredsRefreshDetectionAction = 감지 새로고침 -CredsSavePathAction = 경로 저장 -CredsBrowseAction = 찾아보기… -CredsGeminiCliLabel = Gemini CLI -CredsGeminiCliHelperPrefix = 다음 경로의 OAuth 자격 증명 사용: -CredsGeminiCliSetupAction = Gemini CLI 설정 -CredsGeminiCliSetupHelp = Gemini CLI를 설치하고 `gemini auth login`을 실행하여 로그인하십시오. -CredsVertexAiLabel = Google Cloud -CredsVertexAiHelperPrefix = 다음 경로의 Google Cloud 자격 증명 사용: -CredsVertexAiSetupAction = Google Cloud 인증 설정 -CredsVertexAiSetupHelp = `gcloud auth application-default login`을 실행하여 자격 증명을 생성하십시오. -CredsJetBrainsLabel = JetBrains IDE -CredsJetBrainsHelperDetectedPrefix = 다음 경로의 감지된 IDE 구성 사용: -CredsJetBrainsHelperCustomPrefix = 사용자 정의 IDE 기본 경로 사용: -CredsJetBrainsHelperMissing = AI Assistant가 활성화된 JetBrains IDE를 설치한 후 Ceiling를 새로 고치십시오. -CredsJetBrainsCustomPathLabel = 사용자 정의 경로 -CredsJetBrainsCustomPathPlaceholder = %APPDATA%/JetBrains/IntelliJIdea... -CredsJetBrainsSelectLabel = 모니터링할 JetBrains IDE를 선택하십시오. -CredsJetBrainsAutoDetectOption = 자동 감지 -CredsKiroLabel = Kiro CLI -CredsKiroHelperAvailablePrefix = 감지된 위치: -CredsKiroHelperMissing = `kiro-cli`: PATH 또는 알려진 설치 위치에서 찾을 수 없습니다. -CredsOpenAiHistoryHelp = 시간 경과에 따른 사용량을 확인하려면 기록 추적을 활성화하세요. -TokenAccountActive = 활성 -TokenAccountSetActive = 활성으로 설정 -TokenAccountRemove = 제거 -TokenAccountAddButton = 계정 추가 -TokenAccountGithubLoginButton = GitHub로 로그인 -TokenAccountEmpty = 이 제공업체에 대해 저장된 계정이 없습니다. -TokenAccountLabelPlaceholder = 라벨 (예: 업무용, 개인용)… -TokenAccountProviderLabel = 제공업체 -TokenAccountProviderPlaceholder = 제공업체 선택… -TokenAccountAddedPrefix = 추가됨 -TokenAccountUsedPrefix = 사용됨 -TokenAccountTabHint = 제공업체별로 여러 세션 토큰 또는 API 토큰을 관리합니다. 활성 계정이 모든 데이터 가져오기에 사용됩니다. 수동 토큰이 필요한 제공업체만 여기에 표시됩니다. -TokenAccountNoSupported = 현재 토큰 계정을 지원하는 제공업체가 없습니다. -TokenAccountInlineSummary = 토큰 계정 -TrayPaceBadgeSlow = 느림 -TrayPaceBadgeSteady = 안정적 -TrayPaceBadgeRacing = 빠름 -TrayPaceBadgeBurning = 매우 빠름 -TrayResetsInLabel = 초기화까지 { "{}" } -TrayResetsDueNow = 초기화 중… -PredictivePaceWarnings = ?? ?? ?? ?? -PredictivePaceWarningsHelper = Codex ?? Claude ???? ??? ?? ??? ???? ??? ???? -PredictivePaceWarningTitle = { "{}" } { "{}" } ?? ?? ?? -PredictivePaceWarningBody = { "{}" } ? ???? ??? ? ???? -ShowResetWhenExhausted = ?? ? ??? ?? ?? -ShowResetWhenExhaustedHelper = ??? ??? ??? ??? ??????? ???? -# Provider data-source / privacy explainer (SOU-179) — English only -DataSourceSectionTitle = How Ceiling gets this data -DataSourcePrivacyNote = Ceiling reads your usage from local app sessions and logs on this PC, or by calling the provider's own usage endpoint. Your credentials and usage data stay on this PC. They are never sent to Ceiling-operated servers, only to the provider itself. -DataSourceLearnMore = Learn how Ceiling gets each provider's data -DataSourceClaude = Reads usage from your signed-in Claude Code or Claude Desktop session, an OAuth token, or claude.ai cookies you provide. Talks only to api.anthropic.com and claude.ai. -DataSourceCodex = Uses the OAuth token from your Codex CLI (~/.codex) plus local session logs on this PC. Talks only to chatgpt.com. -DataSourceCursor = Uses your signed-in Cursor IDE session, or cursor.com cookies you provide. Talks only to cursor.com. -DataSourceCopilot = Uses your GitHub CLI or Git Credential Manager token. Talks only to api.github.com, or your configured GitHub Enterprise host. -DataSourceGemini = Reads the OAuth token from the Gemini CLI (~/.gemini). Talks only to Google's Code Assist and OAuth endpoints. -DataSourceGeneric = Reads this provider's usage from a local session or token on this PC, or by calling the provider's own usage endpoint. Your credentials stay on this PC and are only sent to the provider. - -# First-run checklist (SOU-157) — English only -FirstRunTitle = Finish setting up Ceiling -FirstRunStepEnable = Enable the providers you use -FirstRunStepAuth = Connect or confirm your sign-in -FirstRunStepFloatbar = Turn on the floating bar or taskbar glance -FirstRunOpenProviders = Open provider settings -FirstRunOpenDisplay = Open display settings -FirstRunDismiss = Dismiss diff --git a/rust/src/locale/tests.rs b/rust/src/locale/tests.rs index 0621dd69..92c62a1a 100644 --- a/rust/src/locale/tests.rs +++ b/rust/src/locale/tests.rs @@ -18,364 +18,16 @@ fn test_locale_key_english() { } #[test] -fn test_locale_key_chinese() { - assert_eq!(get_text(Language::Chinese, LocaleKey::TabGeneral), "通用"); - assert_eq!(get_text(Language::Chinese, LocaleKey::TabCookies), "Cookie"); - assert_eq!( - get_text(Language::Chinese, LocaleKey::InterfaceLanguage), - "界面语言" - ); - assert_eq!( - get_text(Language::Chinese, LocaleKey::StartAtLogin), - "开机启动" - ); -} - -#[test] -fn test_locale_key_traditional_chinese() { - assert_eq!( - get_text(Language::ChineseTraditional, LocaleKey::TabGeneral), - "一般" - ); - assert_eq!( - get_text(Language::ChineseTraditional, LocaleKey::InterfaceLanguage), - "介面語言" - ); - assert_eq!( - get_text(Language::ChineseTraditional, LocaleKey::StartAtLogin), - "登入時啟動" - ); -} - -#[test] -fn test_locale_key_japanese() { - assert_eq!(get_text(Language::Japanese, LocaleKey::TabGeneral), "一般"); - assert_eq!( - get_text(Language::Japanese, LocaleKey::InterfaceLanguage), - "表示言語" - ); - assert_eq!( - get_text(Language::Japanese, LocaleKey::StartAtLogin), - "ログイン時に起動" - ); -} - -#[test] -fn test_japanese_menu_card_locale_values_are_translated() { - let cases = [ - (LocaleKey::ActionCopyError, "エラーをコピー"), - (LocaleKey::DetailWindowPrimary, "プライマリ"), - (LocaleKey::DetailWindowSecondary, "セカンダリ"), - (LocaleKey::DetailWindowModelSpecific, "モデル別"), - (LocaleKey::DetailWindowTertiary, "第3枠"), - (LocaleKey::DetailWindowExhausted, "使い切りました"), - (LocaleKey::DetailPaceTitle, "ペース"), - (LocaleKey::DetailPaceOnTrack, "順調"), - (LocaleKey::DetailPaceAhead, "先行"), - (LocaleKey::DetailPaceBehind, "遅れ"), - (LocaleKey::DetailPaceRunsOutIn, "残り"), - (LocaleKey::DetailPaceWillLastToReset, "リセットまで持ちます"), - (LocaleKey::DetailCostTitle, "コスト"), - (LocaleKey::DetailCostUsed, "使用済み"), - (LocaleKey::DetailCostLimit, "上限"), - (LocaleKey::DetailCostRemaining, "残り"), - (LocaleKey::DetailCostResets, "リセット"), - (LocaleKey::DetailChartCost, "コスト(30日間)"), - (LocaleKey::DetailChartCredits, "使用クレジット(30日間)"), - ( - LocaleKey::DetailChartUsageBreakdown, - "サービス別使用量(30日間)", - ), - ( - LocaleKey::DetailChartEmpty, - "まだチャートデータはありません。", - ), - ]; - - for (key, expected) in cases { - assert_eq!(get_text(Language::Japanese, key), expected, "{key:?}"); - } -} - -#[test] -fn test_japanese_tray_panel_locale_values_are_translated() { - // CUA-verified English strings that must not appear in the Japanese tray panel. - let cases = [ - (LocaleKey::ProviderWeekly, "週間"), - (LocaleKey::TrayWeeklyPercent, "週間 {}%"), - ( - LocaleKey::TrayWeeklyExhausted, - "週間の割り当てを使い切りました", - ), - (LocaleKey::ProviderWeeklyLabel, "週間"), - (LocaleKey::MetricResetsIn, "リセットまで"), - (LocaleKey::ResetsInShort, "リセットまで"), - (LocaleKey::ResetsInDaysHours, "リセットまで {}日 {}時間"), - (LocaleKey::ResetsInHoursMinutes, "リセットまで {}時間 {}分"), - (LocaleKey::TrayResetsInLabel, "リセットまで {}"), - (LocaleKey::UpdatedJustNow, "たった今"), - (LocaleKey::UpdatedMinutesAgo, "{}分前"), - (LocaleKey::UpdatedHoursAgo, "{}時間前"), - (LocaleKey::UpdatedDaysAgo, "{}日前"), - ( - LocaleKey::PanelEstimatedFromLocalLogs, - "ローカルログから推定したもので、請求書と異なる場合があります", - ), - (LocaleKey::TrayStatusError, " (エラー)"), - (LocaleKey::TrayStatusStale, " (古いデータ)"), - (LocaleKey::TrayStatusIncident, " (インシデント)"), - (LocaleKey::TrayStatusPartial, " (一部停止)"), - (LocaleKey::TrayLoading, "Ceiling - 読み込み中..."), - (LocaleKey::TrayStatusRowLoading, "読み込み中..."), - (LocaleKey::TrayStatusRowError, "エラー"), - (LocaleKey::TrayCreditsRemaining, "残りクレジット {}%"), - (LocaleKey::TrayCreditsRow, "クレジット {}%"), - (LocaleKey::ProviderStatusStale, "古い"), - (LocaleKey::ProviderStatusError, "エラー"), - (LocaleKey::ProviderStatusLoading, "読み込み中"), - (LocaleKey::TrayCardErrorBadge, "エラー"), - (LocaleKey::SummaryWithErrors, "エラーあり"), - ( - LocaleKey::StateLoadingProviders, - "プロバイダーを読み込み中...", - ), - (LocaleKey::StateError, "エラー"), - (LocaleKey::PanelAllProviders, "すべてのプロバイダー"), - (LocaleKey::PanelAllProvidersShort, "すべて"), - (LocaleKey::PanelZoom, "ズーム"), - (LocaleKey::PanelMenu, "メニュー"), - (LocaleKey::PanelToday, "今日"), - (LocaleKey::PanelThirtyDayCost, "30日間のコスト"), - (LocaleKey::PanelThirtyDayTokens, "30日間のトークン"), - (LocaleKey::PanelLatestTokens, "最新トークン"), - (LocaleKey::PanelTopModelPrefix, "トップモデル"), - (LocaleKey::PanelUsedSuffix, "使用済み"), - (LocaleKey::PanelLeftSuffix, "残り"), - (LocaleKey::PanelOnPaceBudget, "ペース内の予算"), - (LocaleKey::PanelNow, "現在"), - (LocaleKey::PanelOneHour, "1時間"), - (LocaleKey::PanelFiveHours, "5時間"), - (LocaleKey::PanelTodayBudget, "今日"), - (LocaleKey::PanelReserveSuffix, "予備"), - ( - LocaleKey::PanelReserveLastsUntilReset, - "リセットまで持ちます", - ), - ( - LocaleKey::PanelShowAllProviders, - "すべてのプロバイダーを表示", - ), - (LocaleKey::PanelShowFewerProviders, "表示を減らす"), - (LocaleKey::PanelExpected, "予測"), - (LocaleKey::PanelActual, "実績"), - ]; - - for (key, expected) in cases { - assert_eq!(get_text(Language::Japanese, key), expected, "{key:?}"); - } -} - -#[test] -fn test_chinese_tray_panel_locale_values_are_translated() { - let cases = [ - (LocaleKey::PanelAllProviders, "所有提供者"), - (LocaleKey::PanelAllProvidersShort, "全部"), - (LocaleKey::PanelZoom, "缩放"), - (LocaleKey::PanelMenu, "菜单"), - (LocaleKey::PanelToday, "今日"), - (LocaleKey::PanelThirtyDayCost, "30天成本"), - (LocaleKey::PanelThirtyDayTokens, "30天令牌"), - (LocaleKey::PanelLatestTokens, "最新令牌"), - (LocaleKey::PanelTopModelPrefix, "热门模型"), - (LocaleKey::PanelUsedSuffix, "已使用"), - (LocaleKey::PanelLeftSuffix, "剩余"), - (LocaleKey::PanelOnPaceBudget, "按节奏预算"), - (LocaleKey::PanelNow, "现在"), - (LocaleKey::PanelOneHour, "1小时"), - (LocaleKey::PanelFiveHours, "5小时"), - (LocaleKey::PanelTodayBudget, "今日"), - (LocaleKey::PanelReserveSuffix, "储备"), - (LocaleKey::PanelReserveLastsUntilReset, "持续到重置"), - ( - LocaleKey::PanelEstimatedFromLocalLogs, - "根据本地日志估算;可能与账单不同", - ), - (LocaleKey::PanelShowAllProviders, "显示所有提供者"), - (LocaleKey::PanelShowFewerProviders, "显示较少提供者"), - (LocaleKey::PanelExpected, "预期"), - (LocaleKey::PanelActual, "实际"), - ]; - - for (key, expected) in cases { - assert_eq!(get_text(Language::Chinese, key), expected, "{key:?}"); - } -} - -#[test] -fn test_korean_tray_panel_locale_values_are_translated() { - let cases = [ - (LocaleKey::PanelAllProviders, "모든 제공자"), - (LocaleKey::PanelAllProvidersShort, "전체"), - (LocaleKey::PanelZoom, "확대/축소"), - (LocaleKey::PanelMenu, "메뉴"), - (LocaleKey::PanelToday, "오늘"), - (LocaleKey::PanelThirtyDayCost, "30일 비용"), - (LocaleKey::PanelThirtyDayTokens, "30일 토큰"), - (LocaleKey::PanelLatestTokens, "최신 토큰"), - (LocaleKey::PanelTopModelPrefix, "상위 모델"), - (LocaleKey::PanelUsedSuffix, "사용됨"), - (LocaleKey::PanelLeftSuffix, "남음"), - (LocaleKey::PanelOnPaceBudget, "예산 내"), - (LocaleKey::PanelNow, "지금"), - (LocaleKey::PanelOneHour, "1시간"), - (LocaleKey::PanelFiveHours, "5시간"), - (LocaleKey::PanelTodayBudget, "오늘"), - (LocaleKey::PanelReserveSuffix, "예비"), - (LocaleKey::PanelReserveLastsUntilReset, "리셋까지 지속"), - ( - LocaleKey::PanelEstimatedFromLocalLogs, - "로컬 로그에서 추정; 청구서와 다를 수 있음", - ), - (LocaleKey::PanelShowAllProviders, "모든 제공자 표시"), - (LocaleKey::PanelShowFewerProviders, "적은 제공자 표시"), - (LocaleKey::PanelExpected, "예상"), - (LocaleKey::PanelActual, "실제"), - ]; - - for (key, expected) in cases { - assert_eq!(get_text(Language::Korean, key), expected, "{key:?}"); - } -} - -#[test] -fn test_spanish_tray_panel_locale_values_are_translated() { - let cases = [ - (LocaleKey::PanelAllProviders, "Todos los proveedores"), - (LocaleKey::PanelAllProvidersShort, "Todos"), - (LocaleKey::PanelZoom, "Zoom"), - (LocaleKey::PanelMenu, "Menú"), - (LocaleKey::PanelToday, "Hoy"), - (LocaleKey::PanelThirtyDayCost, "Costo 30d"), - (LocaleKey::PanelThirtyDayTokens, "Tokens 30d"), - (LocaleKey::PanelLatestTokens, "Últimos tokens"), - (LocaleKey::PanelTopModelPrefix, "Modelo principal"), - (LocaleKey::PanelUsedSuffix, "usado"), - (LocaleKey::PanelLeftSuffix, "restante"), - (LocaleKey::PanelOnPaceBudget, "Presupuesto al ritmo"), - (LocaleKey::PanelNow, "ahora"), - (LocaleKey::PanelOneHour, "1h"), - (LocaleKey::PanelFiveHours, "5h"), - (LocaleKey::PanelTodayBudget, "hoy"), - (LocaleKey::PanelReserveSuffix, "en reserva"), - ( - LocaleKey::PanelReserveLastsUntilReset, - "Dura hasta el reinicio", - ), - ( - LocaleKey::PanelEstimatedFromLocalLogs, - "Estimado desde logs locales; puede diferir de tu factura", - ), - ( - LocaleKey::PanelShowAllProviders, - "Mostrar todos los proveedores", - ), - ( - LocaleKey::PanelShowFewerProviders, - "Mostrar menos proveedores", - ), - (LocaleKey::PanelExpected, "Esperado"), - (LocaleKey::PanelActual, "Real"), - ]; - - for (key, expected) in cases { - assert_eq!(get_text(Language::Spanish, key), expected, "{key:?}"); - } -} - -#[test] -fn test_locale_key_spanish() { - assert_eq!( - get_text(Language::Spanish, LocaleKey::TabGeneral), - "General" - ); - assert_eq!( - get_text(Language::Spanish, LocaleKey::InterfaceLanguage), - "Idioma de la interfaz" - ); - assert_eq!( - get_text(Language::Spanish, LocaleKey::StartAtLogin), - "Iniciar al arrancar" - ); -} - -#[test] -fn test_locale_key_korean() { - assert_eq!(get_text(Language::Korean, LocaleKey::TabGeneral), "일반"); - assert_eq!( - get_text(Language::Korean, LocaleKey::InterfaceLanguage), - "인터페이스 언어" - ); - assert_eq!( - get_text(Language::Korean, LocaleKey::StartAtLogin), - "로그인 시 자동 실행" - ); -} - -#[test] -fn test_locale_respects_language_setting() { - // Test that English language returns English strings - let lang = Language::English; - assert_eq!(get_text(lang, LocaleKey::TabAbout), "About"); - - // Test that Chinese language returns Chinese strings - let lang = Language::Chinese; - assert_eq!(get_text(lang, LocaleKey::TabAbout), "关于"); - - // Test that Japanese language returns Japanese strings - let lang = Language::Japanese; - assert_eq!(get_text(lang, LocaleKey::TabAbout), "情報"); - - // Test that Korean language returns Korean strings - let lang = Language::Korean; - assert_eq!(get_text(lang, LocaleKey::TabAbout), "정보"); - - // Test that Spanish language returns Spanish strings - let lang = Language::Spanish; - assert_eq!(get_text(lang, LocaleKey::TabAbout), "Acerca de"); -} - -#[test] -fn test_all_locale_keys_have_all_languages() { - let resources = [ - ("en-US", include_str!("en-US.ftl")), - ("zh-CN", include_str!("zh-CN.ftl")), - ("zh-TW", include_str!("zh-TW.ftl")), - ("ja-JP", include_str!("ja-JP.ftl")), - ("ko-KR", include_str!("ko-KR.ftl")), - ("es-MX", include_str!("es-MX.ftl")), - ]; - - let resource_keys: Vec<(&str, HashSet<&str>)> = resources - .into_iter() - .map(|(locale, resource)| (locale, resource_key_names(resource))) - .collect(); - +fn test_all_locale_keys_present_in_english() { + let en_us = resource_key_names(include_str!("en-US.ftl")); for (key, name) in LocaleKey::ALL { assert_eq!(key.name(), *name); - for (locale, keys) in &resource_keys { - assert!(keys.contains(name), "missing Fluent key {name} in {locale}"); - } - for lang in Language::all() { - let text = LOCALES - .try_lookup(language_id(*lang), name) - .unwrap_or_default(); - assert!( - !text.trim().is_empty(), - "missing or empty Fluent text for {:?} in {:?}", - key, - lang - ); - } + assert!(en_us.contains(name), "missing Fluent key {name} in en-US"); + let text = get_text(Language::English, *key); + assert!( + !text.trim().is_empty(), + "missing or empty Fluent text for {key:?}" + ); } } diff --git a/rust/src/locale/zh-CN.ftl b/rust/src/locale/zh-CN.ftl deleted file mode 100644 index 8fa2e564..00000000 --- a/rust/src/locale/zh-CN.ftl +++ /dev/null @@ -1,612 +0,0 @@ -TabGeneral = 通用 -TabProviders = 服务商 -TabNotifications = Notifications -TabMenuBar = Menu Bar -TabMenu = Menu -TabApiKeys = API 密钥 -TabCookies = Cookie -TabAdvanced = 高级 -TabAbout = 关于 -TabShortcuts = 快捷键 -InterfaceLanguage = 界面语言 -StartupSettings = 系统 -StartAtLogin = 开机启动 -StartMinimized = 最小化启动 -StartAtLoginHelper = 登录后自动启动 Ceiling -StartMinimizedHelper = 启动后停留在系统托盘 -ShowNotificationsHelper = 达到用量阈值时提醒 -CapacityEventNotifications = 重置和容量提醒 -CapacityEventNotificationsHelper = 限额重置或服务商报告的容量发生变化时提醒 -SoundEnabledHelper = 达到阈值时播放提示音 -HighUsageThresholdHelper = 在该用量水平显示预警 -CriticalUsageThresholdHelper = 在该水平显示严重告警 -ShowNotifications = 显示通知 -SoundEnabled = 声音提示 -SoundVolume = 提示音音量 -HighUsageThreshold = 高用量阈值 -HighUsageAlert = 高位预警 -CriticalUsageThreshold = 紧急用量阈值 -CriticalUsageAlert = 严重告警 -UsageDisplay = 用量显示 -ShowUsageAsUsed = 显示已用用量 -ShowUsageAsUsedHelper = 显示为已使用百分比(而非剩余) -ResetTimeRelative = 相对重置时间 -ResetTimeRelativeHelper = 显示"2h 30m"而不是"3:00 PM" -TrayIcon = 托盘图标 -MergeTrayIcons = 合并托盘图标 -MergeTrayIconsHelper = 将所有服务商显示在一个托盘图标中 -PerProviderTrayIcons = 按服务商分图标 -PerProviderTrayIconsHelper = 每个启用的服务商显示独立托盘图标 -ProviderEnabled = 已启用 -ProviderDisabled = 已禁用 -ProviderInfo = 信息 -ProviderUsage = 用量 -AuthType = 认证方式 -DataSource = 数据来源 -ProviderNotDetected = 未检测到 -ProviderLastFetchFailed = 上次获取失败 -ProviderUsageNotFetchedYet = 尚未获取用量 -ProviderNotFetchedYetTitle = 尚未获取 -ProviderDisabledNoRecentData = 已禁用 — 没有最近数据 -ProviderSourceAutoShort = 自动 -ProviderSourceWebShort = 网页 -ProviderSourceCliShort = CLI -ProviderSourceOauthShort = OAuth -ProviderSourceApiShort = API -ProviderSourceGithubApiShort = GitHub API -ProviderSourceLocalShort = 本地 -ProviderSourceKiroEnvShort = Kiro 环境 -WayfinderGatewayTitle = Wayfinder 网关 -WayfinderGatewayLabel = 网关 URL -WayfinderGatewayHelp = HTTP 仅可用于 localhost 或回环地址。远程主机请使用 HTTPS。 -WayfinderGatewayStatus = 网关 -WayfinderModels = 模型 -WayfinderRequests = 请求 -WayfinderTokens = 令牌 -WayfinderSaved = 节省 -WayfinderOffline = 网关离线 -WayfinderDryRun = 试运行 -WayfinderMissingKeys = 缺少密钥 -TrackingItem = 追踪项 -MainWindowLiveUsageData = 主窗口实时用量数据 -StartTrackingUsage = 启用后开始追踪用量 -ClickTrayIconForMetrics = 点击托盘图标查看实时指标 -BrowserCookieImport = 浏览器 Cookie 导入 -ImportFromBrowser = 从浏览器导入 { "{}" } 的 Cookies -NoCookiesFoundInBrowser = 在 { "{}" } 的 { "{}" } 中未找到 Cookies。请先确认已登录 -SelectBrowser = 请选择浏览器... -ImportCookies = 导入 Cookies -ImportSuccess = 已为 { "{}" } 导入 Cookies -ImportFailed = 导入失败:{ "{}" } -SaveFailed = 保存失败:{ "{}" } -CookiesAutoImport = Cookies 会自动从 Chrome、Edge、Brave 和 Firefox 中提取 -QuickActions = 快捷操作 -OpenProviderDashboard = → 打开 { "{}" } 仪表盘 -OllamaNoDashboard = Ollama 在本地运行,无仪表盘 -ApiKeysTitle = API 密钥 -ApiKeysDescription = 为需要认证的服务商配置访问令牌。 -AddKey = + 添加密钥 -KeySet = ✓ 已设置 -KeyRequired = 需要密钥 -Remove = 移除 -GetKey = 获取密钥 → -SavedCookies = 已保存的 Cookies -AddManualCookie = 添加手动 Cookie -CookieHeader = Cookie 头 -PasteHere = 在这里粘贴... -DeleteCookie = 删除 -CookieSaved = 已保存 { "{}" } 个 Cookies -CookieDeleted = 已删除 { "{}" } 的 Cookies -RefreshSettings = 刷新 -Animations = 动画 -MenuBar = 菜单栏 -Fun = 趣味 -GlobalShortcut = 全局快捷键 -Privacy = 隐私 -Updates = 更新 -UpdateChannel = 更新通道 -UpdateChannelStable = 稳定版 -UpdateChannelBeta = 测试预览版 -Never = 从不 -LastUpdated = 上次更新 -NeverUpdated = 从未更新 -MinutesAgo = { "{}" } 分钟前更新 -HoursAgo = { "{}" } 小时前更新 -DaysAgo = { "{}" } 天前更新 -BuiltWithRust = 基于 Rust + egui 构建 -OriginalMacOSVersion = 原始 macOS 版本 -Links = 链接 -BuildInfo = 构建信息 -EnabledProviders = 已启用服务商 -Appearance = 外观 -ThemeSelection = 主题 -LightMode = 浅色 -DarkMode = 深色 -AboutTitle = 关于 Ceiling -Version = 版本 -ActionRefreshAll = 刷新全部 -ActionSettings = 设置 -ActionClose = ✕ -ProviderAccount = 账号 -ProviderSession = 本次会话 -ProviderWeekly = 本周 -ProviderMonthly = 30天 -ProviderModel = 模型 -ProviderPlan = 套餐 -ProviderNextReset = 下次重置 -ProviderNoRecentUsage = 暂无用量 -ProviderNotSignedIn = 未登录 -SummaryTab = 汇总 -StateLoadingProviders = 正在加载服务商... -StateNoProviderData = 暂无服务商数据。 -StateNoProviderSelected = 尚未选择服务商。 -StateSummaryRefreshPending = 将在全部服务商刷新完成后更新 -StateError = 错误 -StateRetry = 重试 -StateDownload = 下载 -StateRestartAndUpdate = 重启并更新 -CreditsTitle = 额度 -UpdateRestartAndUpdate = 重启并更新 -UpdateRetry = 重试 -UpdateDownload = 下载 -UpdateDownloading = 下载中 -UpdateReady = 准备安装 -UpdateFailed = 更新失败 -ButtonOpenProviderSettings = 打开服务商设置 -MenuSettings = 设置... -MenuAbout = 关于 Ceiling -MenuQuit = 退出 -StatusJustUpdated = 刚刚更新 -StatusUnableToGetUsage = 无法获取用量 -ActionRefresh = 刷新 -ActionSwitchAccount = 切换账号... -ActionUsageDashboard = 用量仪表盘 -ActionStatusPage = 状态页面 -ActionCopyError = 复制错误 -ActionBuyCredits = 购买额度... -PaceOnTrack = 进度正常 -PaceBehind = 进度滞后 -MetricResetsIn = 重置于 -SectionUsageBreakdown = 用量明细 -SectionCost = 费用 -ResetInProgress = 正在重置... -TomorrowAt = 明天 { "{}" } -UsedPercent = 已使用 { "{:.0}" }% -RemainingPercent = 剩余 { "{:.0}" }% -RemainingAmount = 剩余 { "{:.2}" } -Tokens1K = 1K tokens -TodayCost = 今日:${ "{:.2}" } -Last30DaysCost = 近 30 天:${ "{:.2}" } -StatusLabel = 状态:{ "{}" } -TrayOpenCodexBar = 弹出仪表盘 -TrayPopOutDashboard = 弹出仪表盘 -TrayShowWindow = 显示窗口 -TrayShowTaskbarUsage = 显示任务栏用量 -TrayRefreshAll = 刷新全部 -TrayProviders = 服务商 -TraySettings = 设置... -TrayCheckForUpdates = 检查更新 -TrayQuit = 退出 -TrayLoading = Ceiling - 加载中... -TrayNoProviders = Ceiling - 无可用服务商 -TraySessionPercent = 本次会话 { "{}" }% -TrayWeeklyPercent = 本周 { "{}" }% -TrayStatusError = (错误) -TrayStatusStale = (数据过期) -TrayStatusIncident = (故障) -TrayStatusPartial = (部分中断) -TrayWeeklyExhausted = 周额度已用尽 -TrayCreditsRemaining = 剩余额度 { "{}" }% -TrayStatusRowLoading = 加载中... -TrayStatusRowError = 错误 -TrayCreditsRow = 额度 { "{}" }% -TrayProviderPopOut = 弹出仪表盘 -TrayProviderRefresh = 刷新 -TrayProviderSettings = 设置... -TrayProviderQuit = 退出 -State = 状态 -Source = 来源 -Updated = 更新时间 -UpdatedJustNow = 刚刚更新 -UpdatedMinutesAgo = { "{}" } 分钟前更新 -UpdatedHoursAgo = { "{}" } 小时前更新 -UpdatedDaysAgo = { "{}" } 天前更新 -Status = 状态 -AllSystemsOperational = 系统运行正常 -Plan = 套餐 -Account = 账号 -ProviderSessionLabel = 本次会话 -ProviderWeeklyLabel = 本周 -ProviderCodeReviewLabel = 代码审查 -ResetsInShort = 重置于 -ResetsInDaysHours = { "{}" } 天 { "{}" } 小时后重置 -ResetsInDays = { "{}" } 天后重置 -ResetsInHoursMinutes = { "{}" } 小时 { "{}" } 分钟后重置 -ResetsInMinutes = { "{}" } 分钟后重置 -FloatBarShowCost = 显示本地费用 -FloatBarShowCostDescription = 在浮动栏中显示本地使用量的估算费用。 -TrayDisplayTitle = 托盘显示 -ShowInTray = 在托盘中显示 -CreditsLabel = 额度 -CreditsLeft = 剩余 { "{:.1}" } -CostTitle = 费用 -TodayCostFull = 今日:${ "{:.2}" } • { "{}" } tokens -Last30DaysCostFull = 近 30 天:${ "{:.2}" } • { "{}" } tokens -ProviderSettingsTitle = 设置 -ProviderAccountsTitle = 账号 -ProviderOptionsTitle = 选项 -MenuBarMetric = 菜单栏指标 -MenuBarMetricHelper = 选择由哪个窗口驱动菜单栏百分比。 -UsageSource = 用量来源 -ProviderNoCodexAccountsDetected = 尚未检测到 Codex 账号。 -ProviderCodexAutoImportHelp = 自动导入浏览器 Cookie 以补充仪表盘信息。 -ProviderCodexHistoryHelp = 在本地保存 Codex 用量历史(8 周),用于个性化 Pace 预测。 -ProviderOpenAiCookies = OpenAI Cookie -ProviderHistoricalTracking = 历史追踪 -ProviderOpenAiWebExtras = OpenAI 网页扩展 -ProviderOpenAiWebExtrasHelp = 通过 chatgpt.com 显示用量明细、额度历史和代码审查信息。 -ProviderCodexCreditsUnavailable = 额度暂不可用;保持 Codex 运行后会自动刷新。 -ProviderCodexLastFetchFailedTitle = 上次 Codex 获取失败: -ProviderCodexNotRunningHelp = Codex 未运行。先运行一次 Codex 命令再试。 -ProviderCookieSource = Cookie 来源 -CookieSourceManual = 手动 -ProviderRegion = 地区 -ProviderClaudeCookies = Claude Cookie -ProviderClaudeCookiesHelp = 优先使用浏览器 Cookie/sessionKey,因为它与 Claude 设置页的用量一致。 -ProviderClaudeAvoidKeychainPrompts = 避免钥匙串提示 -ProviderClaudeAvoidKeychainPromptsHelp = 使用 /usr/bin/security 读取 Claude 凭据,避免 Ceiling 的钥匙串提示。 -ProviderCodexSparkUsage = Show Codex Spark usage -ProviderCodexSparkUsageHelp = Show Codex Spark quota rows without hiding credits or other extra usage. -ProviderCursorCookieSourceHelp = 自动导入浏览器 Cookie 或已保存会话。 -ProviderCursorCreditsHelp = 包含计划额度之外的按量计费用量。 -AutoFallbackHelp = 当首选来源失败时自动回退到下一个来源。 -ProviderSourceOauthWeb = OAuth + 网页 -Automatic = 自动 -Average = 平均 -ExtraUsage = 额外用量 -OAuth = OAuth -Api = API -Web = 网页 -PrivacyTitle = 隐私 -HidePersonalInfo = 隐藏个人信息 -HidePersonalInfoHelper = 遮蔽邮箱和账号名称(适合直播时使用) -SectionLocalIntegrations = 本机集成 -PowerToysPipeLabel = PowerToys 状态管道 -PowerToysPipeHelper = 通过命名管道向 PowerToys Command Palette 暴露已缓存的提供商状态和本地用量汇总。不包含邮箱或套餐。需要重启后生效。 -AgentSessionsTitle = Agent Sessions -AgentSessionsEnableLabel = Show active Codex and Claude sessions -AgentSessionsEnableHelper = Discover local sessions and optional SSH hosts. Disabled by default. -AgentSessionsSshHostsLabel = SSH hosts -AgentSessionsSshHostsHelper = Comma-separated SSH targets. Connections use non-interactive mode and short timeouts. -AgentSessionsLoading = Looking for agent sessions... -AgentSessionsEmpty = No active agent sessions. -UpdatesTitle = 更新 -UpdateChannelChoice = 更新通道 -UpdateChannelChoiceHelper = 在稳定版与测试预览版之间选择 -AutoDownloadUpdates = 自动检查更新 -AutoDownloadUpdatesHelper = 发现新版本后在后台下载安装器更新 -InstallUpdatesOnQuit = 退出时安装更新 -InstallUpdatesOnQuitHelper = 退出 Ceiling 时自动启动已准备好的安装器 -KeyboardShortcutsTitle = 快捷键 -GlobalShortcutLabel = 全局快捷键 -GlobalShortcutHelper = 按此快捷键可从任何位置打开 Ceiling -ShortcutFormatHint = 格式:Ctrl+Shift+Key、Alt+Ctrl+Key 等。需重启以应用更改。 -Saved = 已保存(需重启以应用) -InvalidFormat = 无效的快捷键格式 -ShortcutHintPlaceholder = 例如:Ctrl+Shift+U -SelectProvider = 请选择服务商 -RefreshInterval30Sec = 30 秒 -RefreshInterval1Min = 1 分钟 -RefreshInterval5Min = 5 分钟 -RefreshInterval10Min = 10 分钟 -BrowserCookiesTitle = 浏览器 Cookie -CookieImport = Cookie 导入 -Provider = 服务商 -SelectPlaceholder = 请选择... -AutoRefreshInterval = 自动刷新间隔 -AboutDescription = Ceiling 的 Windows 移植版本。 -AboutDescriptionLine2 = 在系统托盘中追踪 AI 服务商用量。 -ViewOnGitHub = → 查看 GitHub -SubmitIssue = → 提交问题 -MaintainedBy = 由 Ceiling 贡献者维护 -CommitLabel = 提交 -BuildDateLabel = 构建 -Save = 保存 -Cancel = 取消 -Label = 标签 -Token = 令牌 -AddAccount = 添加账号 -AccountAdded = 账号已添加 -AccountRemoved = 账号已移除 -AccountSwitched = 账号已切换 -AccountLabelHint = 例如:工作账号、个人账号... -EnterApiKeyFor = 为 { "{}" } 输入 API Key -PasteApiKeyHere = 在这里粘贴 API key... -ApiKeySaved = 已保存 { "{}" } 的 API key -ApiKeyRemoved = 已移除 { "{}" } 的 API key -EnvironmentVariable = 环境变量 -CookieSavedForProvider = 已保存 { "{}" } 的 Cookie -CookieRemovedForProvider = 已移除 { "{}" } 的 Cookie -ShowUsedPercent = 已使用 { "{:.0}" }% -ShowRemainingPercent = 剩余 { "{:.0}" }% -UpdateAvailableMessage = 有可用更新:{ "{}" } -UpdateReadyMessage = { "{}" } 准备安装 -UpdateFailedMessage = 更新失败:{ "{}" } -UpdateDownloadingMessage = 正在下载 { "{}" } ({ "{:.0}" }%) -TabTokenAccounts = 令牌 -SectionRefresh = 自动化 -SectionNotifications = 通知 -SectionUsageThresholds = 用量阈值 -SectionKeyboard = 键盘 -SectionUsageRendering = 用量展示 -SectionTime = 时间 -SectionLanguage = 语言 -SectionCredentialsSecurity = 凭据与安全 -SectionDebug = 调试 -SectionApiKeys = API 密钥 -SectionSavedCookies = 已保存的 Cookies -SectionImportFromBrowser = 从浏览器导入 -SectionAddCookieManually = 手动添加 Cookie -SectionTokenAccounts = 令牌账户 -SectionSavedAccounts = 已保存账户 -SectionAddAccount = 添加账户 -RefreshIntervalLabel = 刷新间隔 -RefreshIntervalHelper = 两次自动刷新之间的秒数(0 = 手动)。 -RefreshAllProvidersOnMenuOpen = 打开菜单时刷新 -RefreshAllProvidersOnMenuOpenHelper = 每次打开托盘菜单时强制刷新已启用的提供商。 -SoundVolumeHelper = 阈值告警音量(0–100)。 -HighUsageWarningHelper = 当用量超过该百分比时显示预警。 -CriticalUsageWarningHelper = 当用量超过该百分比时显示严重告警。 -GlobalShortcutFieldLabel = 全局快捷键 -GlobalShortcutToggleHelper = 用于切换托盘面板的组合键。 -ShortcutRecordButton = 录制 -ShortcutRecordingLabel = 录制中… -ShortcutRecordingHint = 按下修饰键 + 任意键。Esc 取消,Backspace 清除。 -ShortcutClearButton = 清除 -ShortcutEmptyPlaceholder = 未设置 -NotificationTestSound = 测试声音 -NotificationTestSoundPlaying = 播放中… -TrayIconModeLabel = 托盘图标模式 -TrayIconModeHelper = 使用单一合并图标,或为每个已启用服务商显示独立图标。 -TrayIconModeSingle = 合并 -TrayIconModePerProvider = 按服务商 -ShowProviderIcons = 显示服务商图标 -ShowProviderIconsHelper = 在托盘切换器中显示服务商图标。 -PreferHighestUsage = 优先显示最高用量 -PreferHighestUsageHelper = 在合并托盘显示中优先展示最接近限额的服务商。 -ShowPercentInTray = 在托盘中显示百分比 -ShowPercentInTrayHelper = 使用服务商标识与百分比文字替代用量条。 -DisplayModeLabel = 显示模式 -DisplayModeHelper = 菜单栏标签显示的详细程度。 -DisplayModeDetailed = 详细 -DisplayModeCompact = 紧凑 -DisplayModeMinimal = 最简 -WindowScaleLabel = 窗口缩放 -WindowScaleHelper = 缩放弹出仪表盘内容,窗口本身仍可自由调整大小。 -WindowScaleAriaLabel = 窗口缩放 -WindowMinimize = 最小化 -WindowMaximize = 最大化 -WindowRestore = 还原 -WindowClose = 关闭 -ShowAsUsedLabel = 显示为已用 -ShowAsUsedHelper = 以已使用百分比而非剩余显示用量条。 -ShowAllTokenAccountsLabel = 显示所有令牌账户 -ShowAllTokenAccountsHelper = 在服务商菜单中列出所有令牌账户,而不是折叠显示。 -EnableAnimationsLabel = 启用动画 -EnableAnimationsHelper = 平滑过渡与动画进度条。 -UpdateChannelStableOption = 稳定版 -UpdateChannelBetaOption = 测试预览版 -CodexLocalLogsTitle = Codex 本地日志 -CodexLocalLogsCaption = 添加 Codex 主目录或 sessions 目录,用于估算本地成本。多个路径请用分号分隔。 -CodexLogPathsLabel = Codex 日志路径 -CodexLogPathsHelper = 可以填写 .codex 根目录;应用会扫描其中的 sessions 文件夹。 -AvoidKeychainPromptsLabel = 避免钥匙串弹窗(Claude) -AvoidKeychainPromptsHelper = 跳过 Claude 的钥匙串凭据读取,避免系统权限弹窗。 -DisableAllKeychainLabel = 禁用所有钥匙串访问 -DisableAllKeychainHelper = 关闭所有服务商的凭据/钥匙串读取。同时启用上方的 Claude 选项。 -SectionTheme = 外观 -ThemeLabel = 主题 -ThemeHelper = 自动跟随系统配色方案;浅色/深色可手动覆盖。 -ThemeAutoOption = 自动(跟随系统) -ThemeLightOption = 浅色 -ThemeDarkOption = 深色 -SettingsStatusSaving = 保存中… -ApiKeysTabHint = 为使用令牌认证的服务商配置 API 密钥。密钥仅存储在本地,不会上传。 -FetchingProviderData = 正在获取服务商数据… -NoProvidersConfigured = 尚未配置任何服务商。 -EnableProvidersHint = 请在设置中启用服务商以查看用量数据。 -OpenSettingsButton = 打开设置 -TooltipRefresh = 刷新 -TooltipSettings = 设置 -TooltipPopOut = 弹出 -TooltipBackToTray = 返回托盘 -TrayCardErrorBadge = 错误 -SummaryProvidersLabel = 服务商 -SummaryRefreshing = 正在刷新… -SummaryFailed = 失败 -SummaryWithErrors = 存在错误 -DetailBackButton = 返回 -DetailWindowPrimary = 主要 -DetailWindowSecondary = 次要 -DetailWindowModelSpecific = 模型专属 -DetailWindowTertiary = 第三 -DetailWindowMinutesSuffix = 分钟窗口 -DetailWindowExhausted = 已用尽 -DetailPaceTitle = 进度 -DetailPaceOnTrack = 正常 -DetailPaceSlightlyAhead = 略超前 -DetailPaceAhead = 超前 -DetailPaceFarAhead = 远超前 -DetailPaceSlightlyBehind = 略落后 -DetailPaceBehind = 落后 -DetailPaceFarBehind = 远落后 -DetailPaceRunsOutIn = 预计耗尽时间 -DetailPaceWillLastToReset = 足以支撑到重置 -DetailCostTitle = 费用 -DetailCostUsed = 已用 -DetailCostLimit = 限额 -DetailCostRemaining = 剩余 -DetailCostResets = 重置 -DetailChartCost = 费用(30 天) -DetailChartCredits = 已用额度(30 天) -DetailChartUsageBreakdown = 按服务划分的用量(30 天) -DetailChartEmpty = 暂无图表数据。 -DetailUpdatedPrefix = 更新于 -PanelAllProviders = 所有提供者 -PanelAllProvidersShort = 全部 -PanelShowAllProviders = 显示所有提供者 -PanelShowFewerProviders = 显示较少提供者 -PanelZoom = 缩放 -PanelMenu = 菜单 -PanelCopied = 已复制 -PanelToday = 今日 -PanelThirtyDayCost = 30天成本 -PanelThirtyDayTokens = 30天令牌 -PanelLatestTokens = 最新令牌 -PanelThirtyDayCostHistogram = 30天成本直方图 -PanelTopModelPrefix = 热门模型 -PanelEstimatedFromLocalLogs = 根据本地日志估算;可能与账单不同 -PanelEstimatedFromLocalLogsClaude = 根据本地Claude日志按API费率估算;令牌总数可能与账单不同 -PanelExpected = 预期 -PanelActual = 实际 -PanelUsedSuffix = 已使用 -PanelLeftSuffix = 剩余 -PanelOnPaceBudget = 按节奏预算 -PanelNow = 现在 -PanelOneHour = 1小时 -PanelFiveHours = 5小时 -PanelTodayBudget = 今日 -PanelReserveSuffix = 储备 -PanelReserveLastsUntilReset = 持续到重置 -PanelReserveRunsOutInDaysHours = { "{}" }天{ "{}" }小时后耗尽 -PanelReserveRunsOutInHours = { "{}" }小时后耗尽 -FloatBarThirtyDayShort = 30天 -FloatBarNoProviders = 无提供商 -FloatBarRemainingSuffix = 剩余 -BannerCheckingForUpdates = 正在检查更新… -BannerUpdateAvailablePrefix = 更新 -BannerDownloadButton = 下载 -BannerViewRelease = 查看发布 -BannerDismiss = 忽略 -BannerDownloadingPrefix = 正在下载更新 -BannerReadyToInstallSuffix = 已准备好安装 -BannerInstallRestart = 安装并重启 -BannerUpdateFailedPrefix = 更新失败 -BannerRetry = 重试 -ProviderSidebarSearch = 搜索 -ProviderSidebarClearSearch = 清除提供商搜索 -ProviderSidebarNoMatches = 没有匹配的提供商 -ProviderSidebarReorderHint = 拖动以重新排序 -ProviderSidebarMoveUp = 上移 -ProviderSidebarMoveDown = 下移 -ProviderStatusOk = 已更新 -ProviderStatusStale = 已过期 -ProviderStatusError = 错误 -ProviderStatusLoading = 加载中 -ProviderStatusDisabled = 已禁用 -ProviderDetailPlaceholder = 详细面板将在 6b 阶段推出 -ProviderIssueNeedsSignIn = needs sign-in -ProviderIssueFetchNeedsAttention = Provider fetch needs attention -ProviderIssueCopy = Copy -ProviderIssueUnsupportedSourceModePrefix = Source mode not supported for this provider -CredentialStorageTitle = Credential Storage -CredentialRevokeStored = Revoke Stored Credentials -CredentialApiKeys = API keys -CredentialManualCookies = Manual cookies -CredentialTokenAccounts = Token accounts -CredentialProtectedPrefix = Protected -CredentialStatusNotCreated = Not created -CredentialStatusPlaintext = Plaintext -CredentialStatusUnavailable = Unavailable -CredentialStatusUnreadable = Unreadable -BrowserCookiesSectionTitle = Browser Cookies -BrowserCookieNoneSaved = No cookie saved. -BrowserCookieSavedBadge = Saved -BrowserCookieRemove = Remove -BrowserCookieImportSuccess = Cookies imported successfully. -BrowserCookieImportFromBrowser = Import from Browser -BrowserCookieProfileSingular = profile -BrowserCookieProfilePlural = profiles -BrowserCookiePlaceholderDefault = Paste cookie header value... -BrowserCookiePlaceholderOllama = Paste the full Cookie header or just the __Secure-session value... -BrowserCookiePlaceholderCurl = Paste the Cookie header or full browser cURL request... -BrowserCookieSave = Save Cookie -CredentialsSectionTitle = 凭据 -OpenCodeGoWorkspaceTitle = OpenCode Go -OpenCodeGoWorkspaceLabel = 工作区 ID -OpenCodeGoWorkspaceHelp = 可选。自动检测失败时,请使用工作区 ID。 -CredsStatusAuthenticated = 已认证 -CredsStatusNotSignedIn = 未登录 -CredsStatusDetected = 已检测到 -CredsStatusNotDetected = 未检测到 -CredsStatusAvailable = 可用 -CredsStatusUnavailable = 不可用 -CredsOpenFolderAction = 打开凭据文件夹 -CredsRefreshDetectionAction = 刷新检测 -CredsSavePathAction = 保存路径 -CredsBrowseAction = 浏览… -CredsGeminiCliLabel = Gemini CLI -CredsGeminiCliHelperPrefix = 使用的 OAuth 凭据来自 -CredsGeminiCliSetupAction = 安装 Gemini CLI -CredsGeminiCliSetupHelp = 安装 Gemini CLI 并运行 `gemini auth login` 进行登录。 -CredsVertexAiLabel = Google Cloud -CredsVertexAiHelperPrefix = 使用的 Google Cloud 凭据来自 -CredsVertexAiSetupAction = 配置 Google Cloud 身份 -CredsVertexAiSetupHelp = 运行 `gcloud auth application-default login` 创建凭据。 -CredsJetBrainsLabel = JetBrains IDE -CredsJetBrainsHelperDetectedPrefix = 使用检测到的 IDE 配置: -CredsJetBrainsHelperCustomPrefix = 使用自定义 IDE 基础路径: -CredsJetBrainsHelperMissing = 请安装启用了 AI Assistant 的 JetBrains IDE,然后刷新 Ceiling。 -CredsJetBrainsCustomPathLabel = 自定义路径 -CredsJetBrainsCustomPathPlaceholder = %APPDATA%/JetBrains/IntelliJIdea... -CredsJetBrainsSelectLabel = 选择要监控的 JetBrains IDE。 -CredsJetBrainsAutoDetectOption = 自动检测 -CredsKiroLabel = Kiro CLI -CredsKiroHelperAvailablePrefix = 检测到于 -CredsKiroHelperMissing = kiro-cli:未在 PATH 或常见安装位置找到。 -CredsOpenAiHistoryHelp = 启用历史跟踪以查看一段时间内的使用情况。 -TokenAccountActive = 活动 -TokenAccountSetActive = 设为活动 -TokenAccountRemove = 移除 -TokenAccountAddButton = 添加账户 -TokenAccountGithubLoginButton = 使用 GitHub 登录 -TokenAccountEmpty = 该服务商尚未保存任何账户。 -TokenAccountLabelPlaceholder = 标签(如工作、个人)… -TokenAccountProviderLabel = 服务商 -TokenAccountProviderPlaceholder = 选择服务商… -TokenAccountAddedPrefix = 添加于 -TokenAccountUsedPrefix = 上次使用 -TokenAccountTabHint = 按服务商管理多个会话令牌或 API 令牌。所有数据拉取都会使用活动账户。仅需要手动令牌的服务商会显示在此处。 -TokenAccountNoSupported = 当前没有支持令牌账户的服务商。 -TokenAccountInlineSummary = 令牌账户 -TrayPaceBadgeSlow = 缓慢 -TrayPaceBadgeSteady = 稳定 -TrayPaceBadgeRacing = 加速 -TrayPaceBadgeBurning = 超速 -TrayResetsInLabel = { "{}" } 后重置 -TrayResetsDueNow = 正在重置… -PredictivePaceWarnings = ???????? -PredictivePaceWarningsHelper = ? Codex ? Claude ??????????? -PredictivePaceWarningTitle = { "{}" } { "{}" }?????? -PredictivePaceWarningBody = ????? { "{}" } ??? -ShowResetWhenExhausted = ????????? -ShowResetWhenExhaustedHelper = ????????????????? -# Provider data-source / privacy explainer (SOU-179) — English only -DataSourceSectionTitle = How Ceiling gets this data -DataSourcePrivacyNote = Ceiling reads your usage from local app sessions and logs on this PC, or by calling the provider's own usage endpoint. Your credentials and usage data stay on this PC. They are never sent to Ceiling-operated servers, only to the provider itself. -DataSourceLearnMore = Learn how Ceiling gets each provider's data -DataSourceClaude = Reads usage from your signed-in Claude Code or Claude Desktop session, an OAuth token, or claude.ai cookies you provide. Talks only to api.anthropic.com and claude.ai. -DataSourceCodex = Uses the OAuth token from your Codex CLI (~/.codex) plus local session logs on this PC. Talks only to chatgpt.com. -DataSourceCursor = Uses your signed-in Cursor IDE session, or cursor.com cookies you provide. Talks only to cursor.com. -DataSourceCopilot = Uses your GitHub CLI or Git Credential Manager token. Talks only to api.github.com, or your configured GitHub Enterprise host. -DataSourceGemini = Reads the OAuth token from the Gemini CLI (~/.gemini). Talks only to Google's Code Assist and OAuth endpoints. -DataSourceGeneric = Reads this provider's usage from a local session or token on this PC, or by calling the provider's own usage endpoint. Your credentials stay on this PC and are only sent to the provider. - -# First-run checklist (SOU-157) — English only -FirstRunTitle = Finish setting up Ceiling -FirstRunStepEnable = Enable the providers you use -FirstRunStepAuth = Connect or confirm your sign-in -FirstRunStepFloatbar = Turn on the floating bar or taskbar glance -FirstRunOpenProviders = Open provider settings -FirstRunOpenDisplay = Open display settings -FirstRunDismiss = Dismiss diff --git a/rust/src/locale/zh-TW.ftl b/rust/src/locale/zh-TW.ftl deleted file mode 100644 index 14e5e885..00000000 --- a/rust/src/locale/zh-TW.ftl +++ /dev/null @@ -1,612 +0,0 @@ -TabGeneral = 一般 -TabProviders = 提供者 -TabNotifications = Notifications -TabMenuBar = Menu Bar -TabMenu = Menu -TabApiKeys = API 金鑰 -TabCookies = Cookie -TabAdvanced = 高階 -TabAbout = 關於 -TabShortcuts = 快捷鍵 -InterfaceLanguage = 介面語言 -StartupSettings = 系統 -StartAtLogin = 登入時啟動 -StartMinimized = 最小化啟動 -StartAtLoginHelper = 登入後自動啟動 Ceiling -StartMinimizedHelper = 啟動後停留在系統系統匣 -ShowNotificationsHelper = 達到用量臨界值時提醒 -CapacityEventNotifications = 重設與容量提醒 -CapacityEventNotificationsHelper = 限額重設或服務商回報的容量發生變化時提醒 -SoundEnabledHelper = 達到臨界值時播放提示音 -HighUsageThresholdHelper = 在該用量水平顯示預警 -CriticalUsageThresholdHelper = 在該水平顯示嚴重告警 -ShowNotifications = 顯示通知 -SoundEnabled = 聲音提示 -SoundVolume = 提示音音量 -HighUsageThreshold = 高用量臨界值 -HighUsageAlert = 高位預警 -CriticalUsageThreshold = 緊急用量臨界值 -CriticalUsageAlert = 嚴重告警 -UsageDisplay = 用量顯示 -ShowUsageAsUsed = 顯示已用用量 -ShowUsageAsUsedHelper = 顯示為已使用百分比(而非剩餘) -ResetTimeRelative = 相對重置時間 -ResetTimeRelativeHelper = 顯示"2h 30m"而不是"3:00 PM" -TrayIcon = 系統匣圖示 -MergeTrayIcons = 合併系統匣圖示 -MergeTrayIconsHelper = 將所有提供者顯示在一個系統匣圖示中 -PerProviderTrayIcons = 按提供者分圖示 -PerProviderTrayIconsHelper = 每個啟用的提供者顯示獨立系統匣圖示 -ProviderEnabled = 已啟用 -ProviderDisabled = 已停用 -ProviderInfo = 資訊 -ProviderUsage = 用量 -AuthType = 認證方式 -DataSource = 資料來源 -ProviderNotDetected = 未檢測到 -ProviderLastFetchFailed = 上次獲取失敗 -ProviderUsageNotFetchedYet = 尚未獲取用量 -ProviderNotFetchedYetTitle = 尚未獲取 -ProviderDisabledNoRecentData = 已停用 — 沒有最近資料 -ProviderSourceAutoShort = 自動 -ProviderSourceWebShort = 網頁 -ProviderSourceCliShort = CLI -ProviderSourceOauthShort = OAuth -ProviderSourceApiShort = API -ProviderSourceGithubApiShort = GitHub API -ProviderSourceLocalShort = 本機 -ProviderSourceKiroEnvShort = Kiro 環境 -WayfinderGatewayTitle = Wayfinder 閘道 -WayfinderGatewayLabel = 閘道 URL -WayfinderGatewayHelp = HTTP 僅可用於 localhost 或迴路位址。遠端主機請使用 HTTPS。 -WayfinderGatewayStatus = 閘道 -WayfinderModels = 模型 -WayfinderRequests = 請求 -WayfinderTokens = 權杖 -WayfinderSaved = 節省 -WayfinderOffline = 閘道離線 -WayfinderDryRun = 試執行 -WayfinderMissingKeys = 缺少金鑰 -TrackingItem = 追蹤項 -MainWindowLiveUsageData = 主視窗實時用量資料 -StartTrackingUsage = 啟用後開始追蹤用量 -ClickTrayIconForMetrics = 點選系統匣圖示檢視實時指標 -BrowserCookieImport = 瀏覽器 Cookie 匯入 -ImportFromBrowser = 從瀏覽器匯入 { "{}" } 的 Cookies -NoCookiesFoundInBrowser = 在 { "{}" } 的 { "{}" } 中未找到 Cookies。請先確認已登入 -SelectBrowser = 請選擇瀏覽器... -ImportCookies = 匯入 Cookies -ImportSuccess = 已為 { "{}" } 匯入 Cookies -ImportFailed = 匯入失敗:{ "{}" } -SaveFailed = 儲存失敗:{ "{}" } -CookiesAutoImport = Cookies 會自動從 Chrome、Edge、Brave 和 Firefox 中提取 -QuickActions = 快捷操作 -OpenProviderDashboard = → 開啟 { "{}" } 儀表板 -OllamaNoDashboard = Ollama 在本機執行,無儀表板 -ApiKeysTitle = API 金鑰 -ApiKeysDescription = 為需要認證的提供者配置訪問權杖。 -AddKey = + 新增金鑰 -KeySet = ✓ 已設定 -KeyRequired = 需要金鑰 -Remove = 移除 -GetKey = 獲取金鑰 → -SavedCookies = 已儲存的 Cookies -AddManualCookie = 新增手動 Cookie -CookieHeader = Cookie 頭 -PasteHere = 在這裡貼上... -DeleteCookie = 刪除 -CookieSaved = 已儲存 { "{}" } 個 Cookies -CookieDeleted = 已刪除 { "{}" } 的 Cookies -RefreshSettings = 重新整理 -Animations = 動畫 -MenuBar = 選單欄 -Fun = 趣味 -GlobalShortcut = 全域性快捷鍵 -Privacy = 隱私 -Updates = 更新 -UpdateChannel = 更新通道 -UpdateChannelStable = 穩定版 -UpdateChannelBeta = 測試預覽版 -Never = 從不 -LastUpdated = 上次更新 -NeverUpdated = 從未更新 -MinutesAgo = { "{}" } 分鐘前更新 -HoursAgo = { "{}" } 小時前更新 -DaysAgo = { "{}" } 天前更新 -BuiltWithRust = 基於 Rust + egui 構建 -OriginalMacOSVersion = 原始 macOS 版本 -Links = 連結 -BuildInfo = 構建資訊 -EnabledProviders = 已啟用提供者 -Appearance = 外觀 -ThemeSelection = 主題 -LightMode = 淺色 -DarkMode = 深色 -AboutTitle = 關於 Ceiling -Version = 版本 -ActionRefreshAll = 重新整理全部 -ActionSettings = 設定 -ActionClose = ✕ -ProviderAccount = 賬號 -ProviderSession = 本次會話 -ProviderWeekly = 本週 -ProviderMonthly = 30天 -ProviderModel = 模型 -ProviderPlan = 套餐 -ProviderNextReset = 下次重置 -ProviderNoRecentUsage = 暫無用量 -ProviderNotSignedIn = 未登入 -SummaryTab = 彙總 -StateLoadingProviders = 正在載入提供者... -StateNoProviderData = 暫無提供者資料。 -StateNoProviderSelected = 尚未選擇提供者。 -StateSummaryRefreshPending = 將在全部提供者重新整理完成後更新 -StateError = 錯誤 -StateRetry = 重試 -StateDownload = 下載 -StateRestartAndUpdate = 重啟並更新 -CreditsTitle = 額度 -UpdateRestartAndUpdate = 重啟並更新 -UpdateRetry = 重試 -UpdateDownload = 下載 -UpdateDownloading = 下載中 -UpdateReady = 準備安裝 -UpdateFailed = 更新失敗 -ButtonOpenProviderSettings = 開啟提供者設定 -MenuSettings = 設定... -MenuAbout = 關於 Ceiling -MenuQuit = 退出 -StatusJustUpdated = 剛剛更新 -StatusUnableToGetUsage = 無法獲取用量 -ActionRefresh = 重新整理 -ActionSwitchAccount = 切換賬號... -ActionUsageDashboard = 用量儀表板 -ActionStatusPage = 狀態頁面 -ActionCopyError = 複製錯誤 -ActionBuyCredits = 購買額度... -PaceOnTrack = 進度正常 -PaceBehind = 進度滯後 -MetricResetsIn = 重置於 -SectionUsageBreakdown = 用量明細 -SectionCost = 費用 -ResetInProgress = 正在重置... -TomorrowAt = 明天 { "{}" } -UsedPercent = 已使用 { "{:.0}" }% -RemainingPercent = 剩餘 { "{:.0}" }% -RemainingAmount = 剩餘 { "{:.2}" } -Tokens1K = 1K tokens -TodayCost = 今日:${ "{:.2}" } -Last30DaysCost = 近 30 天:${ "{:.2}" } -StatusLabel = 狀態:{ "{}" } -TrayOpenCodexBar = 彈出儀表板 -TrayPopOutDashboard = 彈出儀表板 -TrayShowWindow = 顯示視窗 -TrayShowTaskbarUsage = 顯示工作列用量 -TrayRefreshAll = 重新整理全部 -TrayProviders = 提供者 -TraySettings = 設定... -TrayCheckForUpdates = 檢查更新 -TrayQuit = 退出 -TrayLoading = Ceiling - 載入中... -TrayNoProviders = Ceiling - 無可用提供者 -TraySessionPercent = 本次會話 { "{}" }% -TrayWeeklyPercent = 本週 { "{}" }% -TrayStatusError = (錯誤) -TrayStatusStale = (資料過期) -TrayStatusIncident = (故障) -TrayStatusPartial = (部分中斷) -TrayWeeklyExhausted = 周額度已用盡 -TrayCreditsRemaining = 剩餘額度 { "{}" }% -TrayStatusRowLoading = 載入中... -TrayStatusRowError = 錯誤 -TrayCreditsRow = 額度 { "{}" }% -TrayProviderPopOut = 彈出儀表板 -TrayProviderRefresh = 重新整理 -TrayProviderSettings = 設定... -TrayProviderQuit = 退出 -State = 狀態 -Source = 來源 -Updated = 更新時間 -UpdatedJustNow = 剛剛更新 -UpdatedMinutesAgo = { "{}" } 分鐘前更新 -UpdatedHoursAgo = { "{}" } 小時前更新 -UpdatedDaysAgo = { "{}" } 天前更新 -Status = 狀態 -AllSystemsOperational = 系統執行正常 -Plan = 套餐 -Account = 賬號 -ProviderSessionLabel = 本次會話 -ProviderWeeklyLabel = 本週 -ProviderCodeReviewLabel = 程式碼審查 -ResetsInShort = 重置於 -ResetsInDaysHours = { "{}" } 天 { "{}" } 小時後重置 -ResetsInDays = { "{}" } 天後重置 -ResetsInHoursMinutes = { "{}" } 小時 { "{}" } 分鐘後重置 -ResetsInMinutes = { "{}" } 分鐘後重置 -FloatBarShowCost = 顯示本機費用 -FloatBarShowCostDescription = 在浮動列中顯示本機使用量的估算費用。 -TrayDisplayTitle = 系統匣顯示 -ShowInTray = 在系統匣中顯示 -CreditsLabel = 額度 -CreditsLeft = 剩餘 { "{:.1}" } -CostTitle = 費用 -TodayCostFull = 今日:${ "{:.2}" } • { "{}" } tokens -Last30DaysCostFull = 近 30 天:${ "{:.2}" } • { "{}" } tokens -ProviderSettingsTitle = 設定 -ProviderAccountsTitle = 賬號 -ProviderOptionsTitle = 選項 -MenuBarMetric = 選單欄指標 -MenuBarMetricHelper = 選擇由哪個視窗驅動選單欄百分比。 -UsageSource = 用量來源 -ProviderNoCodexAccountsDetected = 尚未檢測到 Codex 賬號。 -ProviderCodexAutoImportHelp = 自動匯入瀏覽器 Cookie 以補充儀表板資訊。 -ProviderCodexHistoryHelp = 在本機儲存 Codex 用量歷史(8 周),用於個性化 Pace 預測。 -ProviderOpenAiCookies = OpenAI Cookie -ProviderHistoricalTracking = 歷史追蹤 -ProviderOpenAiWebExtras = OpenAI 網頁擴充套件 -ProviderOpenAiWebExtrasHelp = 透過 chatgpt.com 顯示用量明細、額度歷史和程式碼審查資訊。 -ProviderCodexCreditsUnavailable = 額度暫不可用;保持 Codex 執行後會自動重新整理。 -ProviderCodexLastFetchFailedTitle = 上次 Codex 獲取失敗: -ProviderCodexNotRunningHelp = Codex 未執行。先執行一次 Codex 命令再試。 -ProviderCookieSource = Cookie 來源 -CookieSourceManual = 手動 -ProviderRegion = 地區 -ProviderClaudeCookies = Claude Cookie -ProviderClaudeCookiesHelp = 優先使用瀏覽器 Cookie/sessionKey,因為它與 Claude 設定頁的用量一致。 -ProviderClaudeAvoidKeychainPrompts = 避免鑰匙串提示 -ProviderClaudeAvoidKeychainPromptsHelp = 使用 /usr/bin/security 讀取 Claude 憑據,避免 Ceiling 的鑰匙串提示。 -ProviderCodexSparkUsage = Show Codex Spark usage -ProviderCodexSparkUsageHelp = Show Codex Spark quota rows without hiding credits or other extra usage. -ProviderCursorCookieSourceHelp = 自動匯入瀏覽器 Cookie 或已儲存會話。 -ProviderCursorCreditsHelp = 包含計劃額度之外的按量計費用量。 -AutoFallbackHelp = 當首選來源失敗時自動回退到下一個來源。 -ProviderSourceOauthWeb = OAuth + 網頁 -Automatic = 自動 -Average = 平均 -ExtraUsage = 額外用量 -OAuth = OAuth -Api = API -Web = 網頁 -PrivacyTitle = 隱私 -HidePersonalInfo = 隱藏個人資訊 -HidePersonalInfoHelper = 遮蔽郵箱和賬號名稱(適合直播時使用) -SectionLocalIntegrations = 本機整合 -PowerToysPipeLabel = PowerToys 狀態管道 -PowerToysPipeHelper = 透過具名管道向 PowerToys Command Palette 公開已快取的供應商狀態與本機使用量總計。不包含電子郵件或方案資訊。需要重新啟動。 -AgentSessionsTitle = Agent Sessions -AgentSessionsEnableLabel = Show active Codex and Claude sessions -AgentSessionsEnableHelper = Discover local sessions and optional SSH hosts. Disabled by default. -AgentSessionsSshHostsLabel = SSH hosts -AgentSessionsSshHostsHelper = Comma-separated SSH targets. Connections use non-interactive mode and short timeouts. -AgentSessionsLoading = Looking for agent sessions... -AgentSessionsEmpty = No active agent sessions. -UpdatesTitle = 更新 -UpdateChannelChoice = 更新通道 -UpdateChannelChoiceHelper = 在穩定版與測試預覽版之間選擇 -AutoDownloadUpdates = 自動檢查更新 -AutoDownloadUpdatesHelper = 發現新版本後在後臺下載安裝器更新 -InstallUpdatesOnQuit = 退出時安裝更新 -InstallUpdatesOnQuitHelper = 退出 Ceiling 時自動啟動已準備好的安裝器 -KeyboardShortcutsTitle = 快捷鍵 -GlobalShortcutLabel = 全域性快捷鍵 -GlobalShortcutHelper = 按此快捷鍵可從任何位置開啟 Ceiling -ShortcutFormatHint = 格式:Ctrl+Shift+Key、Alt+Ctrl+Key 等。需重啟以應用更改。 -Saved = 已儲存(需重啟以應用) -InvalidFormat = 無效的快捷鍵格式 -ShortcutHintPlaceholder = 例如:Ctrl+Shift+U -SelectProvider = 請選擇提供者 -RefreshInterval30Sec = 30 秒 -RefreshInterval1Min = 1 分鐘 -RefreshInterval5Min = 5 分鐘 -RefreshInterval10Min = 10 分鐘 -BrowserCookiesTitle = 瀏覽器 Cookie -CookieImport = Cookie 匯入 -Provider = 提供者 -SelectPlaceholder = 請選擇... -AutoRefreshInterval = 自動重新整理間隔 -AboutDescription = Ceiling 的 Windows 移植版本。 -AboutDescriptionLine2 = 在系統系統匣中追蹤 AI 提供者用量。 -ViewOnGitHub = → 檢視 GitHub -SubmitIssue = → 提交問題 -MaintainedBy = 由 Ceiling 貢獻者維護 -CommitLabel = 提交 -BuildDateLabel = 構建 -Save = 儲存 -Cancel = 取消 -Label = 標籤 -Token = 權杖 -AddAccount = 新增賬號 -AccountAdded = 賬號已新增 -AccountRemoved = 賬號已移除 -AccountSwitched = 賬號已切換 -AccountLabelHint = 例如:工作賬號、個人賬號... -EnterApiKeyFor = 為 { "{}" } 輸入 API Key -PasteApiKeyHere = 在這裡貼上 API key... -ApiKeySaved = 已儲存 { "{}" } 的 API key -ApiKeyRemoved = 已移除 { "{}" } 的 API key -EnvironmentVariable = 環境變數 -CookieSavedForProvider = 已儲存 { "{}" } 的 Cookie -CookieRemovedForProvider = 已移除 { "{}" } 的 Cookie -ShowUsedPercent = 已使用 { "{:.0}" }% -ShowRemainingPercent = 剩餘 { "{:.0}" }% -UpdateAvailableMessage = 有可用更新:{ "{}" } -UpdateReadyMessage = { "{}" } 準備安裝 -UpdateFailedMessage = 更新失敗:{ "{}" } -UpdateDownloadingMessage = 正在下載 { "{}" } ({ "{:.0}" }%) -TabTokenAccounts = 權杖 -SectionRefresh = 自動化 -SectionNotifications = 通知 -SectionUsageThresholds = 用量臨界值 -SectionKeyboard = 鍵盤 -SectionUsageRendering = 用量展示 -SectionTime = 時間 -SectionLanguage = 語言 -SectionCredentialsSecurity = 憑據與安全 -SectionDebug = 除錯 -SectionApiKeys = API 金鑰 -SectionSavedCookies = 已儲存的 Cookies -SectionImportFromBrowser = 從瀏覽器匯入 -SectionAddCookieManually = 手動新增 Cookie -SectionTokenAccounts = 權杖賬戶 -SectionSavedAccounts = 已儲存賬戶 -SectionAddAccount = 新增賬戶 -RefreshIntervalLabel = 重新整理間隔 -RefreshIntervalHelper = 兩次自動重新整理之間的秒數(0 = 手動)。 -RefreshAllProvidersOnMenuOpen = 開啟選單時重新整理 -RefreshAllProvidersOnMenuOpenHelper = 每次開啟系統匣選單時強制重新整理已啟用的提供商。 -SoundVolumeHelper = 臨界值告警音量(0–100)。 -HighUsageWarningHelper = 當用量超過該百分比時顯示預警。 -CriticalUsageWarningHelper = 當用量超過該百分比時顯示嚴重告警。 -GlobalShortcutFieldLabel = 全域性快捷鍵 -GlobalShortcutToggleHelper = 用於切換系統匣面板的組合鍵。 -ShortcutRecordButton = 錄製 -ShortcutRecordingLabel = 錄製中… -ShortcutRecordingHint = 按下修飾鍵 + 任意鍵。Esc 取消,Backspace 清除。 -ShortcutClearButton = 清除 -ShortcutEmptyPlaceholder = 未設定 -NotificationTestSound = 測試聲音 -NotificationTestSoundPlaying = 播放中… -TrayIconModeLabel = 系統匣圖示模式 -TrayIconModeHelper = 使用單一合併圖示,或為每個已啟用提供者顯示獨立圖示。 -TrayIconModeSingle = 合併 -TrayIconModePerProvider = 按提供者 -ShowProviderIcons = 顯示提供者圖示 -ShowProviderIconsHelper = 在系統匣切換器中顯示提供者圖示。 -PreferHighestUsage = 優先顯示最高用量 -PreferHighestUsageHelper = 在合併系統匣顯示中優先展示最接近限額的提供者。 -ShowPercentInTray = 在系統匣中顯示百分比 -ShowPercentInTrayHelper = 使用提供者標識與百分比文字替代用量條。 -DisplayModeLabel = 顯示模式 -DisplayModeHelper = 選單欄標籤顯示的詳細程度。 -DisplayModeDetailed = 詳細 -DisplayModeCompact = 緊湊 -DisplayModeMinimal = 最簡 -WindowScaleLabel = 視窗縮放 -WindowScaleHelper = 縮放彈出儀表板內容,視窗本身仍可自由調整大小。 -WindowScaleAriaLabel = 視窗縮放 -WindowMinimize = 最小化 -WindowMaximize = 最大化 -WindowRestore = 還原 -WindowClose = 關閉 -ShowAsUsedLabel = 顯示為已用 -ShowAsUsedHelper = 以已使用百分比而非剩餘顯示用量條。 -ShowAllTokenAccountsLabel = 顯示所有權杖賬戶 -ShowAllTokenAccountsHelper = 在提供者選單中列出所有權杖賬戶,而不是摺疊顯示。 -EnableAnimationsLabel = 啟用動畫 -EnableAnimationsHelper = 平滑過渡與動畫進度條。 -UpdateChannelStableOption = 穩定版 -UpdateChannelBetaOption = 測試預覽版 -CodexLocalLogsTitle = Codex 本機日誌 -CodexLocalLogsCaption = 新增 Codex 主目錄或 sessions 目錄以估算本機成本。多個路徑請以分號分隔。 -CodexLogPathsLabel = Codex 日誌路徑 -CodexLogPathsHelper = 可以填寫 .codex 根目錄;應用程式會掃描其中的 sessions 資料夾。 -AvoidKeychainPromptsLabel = 避免鑰匙串彈窗(Claude) -AvoidKeychainPromptsHelper = 跳過 Claude 的鑰匙串憑據讀取,避免系統許可權彈窗。 -DisableAllKeychainLabel = 停用所有鑰匙串訪問 -DisableAllKeychainHelper = 關閉所有提供者的憑據/鑰匙串讀取。同時啟用上方的 Claude 選項。 -SectionTheme = 外觀 -ThemeLabel = 主題 -ThemeHelper = 自動跟隨系統配色方案;淺色/深色可手動覆蓋。 -ThemeAutoOption = 自動(跟隨系統) -ThemeLightOption = 淺色 -ThemeDarkOption = 深色 -SettingsStatusSaving = 儲存中… -ApiKeysTabHint = 為使用權杖認證的提供者配置 API 金鑰。金鑰僅儲存在本機,不會上傳。 -FetchingProviderData = 正在獲取提供者資料… -NoProvidersConfigured = 尚未配置任何提供者。 -EnableProvidersHint = 請在設定中啟用提供者以檢視用量資料。 -OpenSettingsButton = 開啟設定 -TooltipRefresh = 重新整理 -TooltipSettings = 設定 -TooltipPopOut = 彈出 -TooltipBackToTray = 返回系統匣 -TrayCardErrorBadge = 錯誤 -SummaryProvidersLabel = 提供者 -SummaryRefreshing = 正在重新整理… -SummaryFailed = 失敗 -SummaryWithErrors = 存在錯誤 -DetailBackButton = 返回 -DetailWindowPrimary = 主要 -DetailWindowSecondary = 次要 -DetailWindowModelSpecific = 模型專屬 -DetailWindowTertiary = 第三 -DetailWindowMinutesSuffix = 分鐘視窗 -DetailWindowExhausted = 已用盡 -DetailPaceTitle = 進度 -DetailPaceOnTrack = 正常 -DetailPaceSlightlyAhead = 略超前 -DetailPaceAhead = 超前 -DetailPaceFarAhead = 遠超前 -DetailPaceSlightlyBehind = 略落後 -DetailPaceBehind = 落後 -DetailPaceFarBehind = 遠落後 -DetailPaceRunsOutIn = 預計耗盡時間 -DetailPaceWillLastToReset = 足以支撐到重置 -DetailCostTitle = 費用 -DetailCostUsed = 已用 -DetailCostLimit = 限額 -DetailCostRemaining = 剩餘 -DetailCostResets = 重置 -DetailChartCost = 費用(30 天) -DetailChartCredits = 已用額度(30 天) -DetailChartUsageBreakdown = 按服務劃分的用量(30 天) -DetailChartEmpty = 暫無圖表資料。 -DetailUpdatedPrefix = 更新於 -PanelAllProviders = 所有提供者 -PanelAllProvidersShort = 全部 -PanelShowAllProviders = 顯示所有提供者 -PanelShowFewerProviders = 顯示較少提供者 -PanelZoom = 縮放 -PanelMenu = 選單 -PanelCopied = 已複製 -PanelToday = 今日 -PanelThirtyDayCost = 30天成本 -PanelThirtyDayTokens = 30天權杖 -PanelLatestTokens = 最新權杖 -PanelThirtyDayCostHistogram = 30天成本直方圖 -PanelTopModelPrefix = 熱門模型 -PanelEstimatedFromLocalLogs = 根據本機日誌估算;可能與賬單不同 -PanelEstimatedFromLocalLogsClaude = 根據本機Claude日誌按API費率估算;權杖總數可能與賬單不同 -PanelExpected = 預期 -PanelActual = 實際 -PanelUsedSuffix = 已使用 -PanelLeftSuffix = 剩餘 -PanelOnPaceBudget = 按節奏預算 -PanelNow = 現在 -PanelOneHour = 1小時 -PanelFiveHours = 5小時 -PanelTodayBudget = 今日 -PanelReserveSuffix = 儲備 -PanelReserveLastsUntilReset = 持續到重置 -PanelReserveRunsOutInDaysHours = { "{}" }天{ "{}" }小時後耗盡 -PanelReserveRunsOutInHours = { "{}" }小時後耗盡 -FloatBarThirtyDayShort = 30天 -FloatBarNoProviders = 無提供商 -FloatBarRemainingSuffix = 剩餘 -BannerCheckingForUpdates = 正在檢查更新… -BannerUpdateAvailablePrefix = 更新 -BannerDownloadButton = 下載 -BannerViewRelease = 檢視釋出 -BannerDismiss = 忽略 -BannerDownloadingPrefix = 正在下載更新 -BannerReadyToInstallSuffix = 已準備好安裝 -BannerInstallRestart = 安裝並重啟 -BannerUpdateFailedPrefix = 更新失敗 -BannerRetry = 重試 -ProviderSidebarSearch = 搜尋 -ProviderSidebarClearSearch = 清除提供商搜尋 -ProviderSidebarNoMatches = 沒有匹配的提供商 -ProviderSidebarReorderHint = 拖動以重新排序 -ProviderSidebarMoveUp = 上移 -ProviderSidebarMoveDown = 下移 -ProviderStatusOk = 已更新 -ProviderStatusStale = 已過期 -ProviderStatusError = 錯誤 -ProviderStatusLoading = 載入中 -ProviderStatusDisabled = 已停用 -ProviderDetailPlaceholder = 詳細面板將在 6b 階段推出 -ProviderIssueNeedsSignIn = needs sign-in -ProviderIssueFetchNeedsAttention = Provider fetch needs attention -ProviderIssueCopy = Copy -ProviderIssueUnsupportedSourceModePrefix = Source mode not supported for this provider -CredentialStorageTitle = Credential Storage -CredentialRevokeStored = Revoke Stored Credentials -CredentialApiKeys = API keys -CredentialManualCookies = Manual cookies -CredentialTokenAccounts = Token accounts -CredentialProtectedPrefix = Protected -CredentialStatusNotCreated = Not created -CredentialStatusPlaintext = Plaintext -CredentialStatusUnavailable = Unavailable -CredentialStatusUnreadable = Unreadable -BrowserCookiesSectionTitle = Browser Cookies -BrowserCookieNoneSaved = No cookie saved. -BrowserCookieSavedBadge = Saved -BrowserCookieRemove = Remove -BrowserCookieImportSuccess = Cookies imported successfully. -BrowserCookieImportFromBrowser = Import from Browser -BrowserCookieProfileSingular = profile -BrowserCookieProfilePlural = profiles -BrowserCookiePlaceholderDefault = Paste cookie header value... -BrowserCookiePlaceholderOllama = Paste the full Cookie header or just the __Secure-session value... -BrowserCookiePlaceholderCurl = Paste the Cookie header or full browser cURL request... -BrowserCookieSave = Save Cookie -CredentialsSectionTitle = 憑據 -OpenCodeGoWorkspaceTitle = OpenCode Go -OpenCodeGoWorkspaceLabel = 工作區 ID -OpenCodeGoWorkspaceHelp = 選用。自動偵測失敗時,請使用工作區 ID。 -CredsStatusAuthenticated = 已認證 -CredsStatusNotSignedIn = 未登入 -CredsStatusDetected = 已檢測到 -CredsStatusNotDetected = 未檢測到 -CredsStatusAvailable = 可用 -CredsStatusUnavailable = 不可用 -CredsOpenFolderAction = 開啟憑據資料夾 -CredsRefreshDetectionAction = 重新整理檢測 -CredsSavePathAction = 儲存路徑 -CredsBrowseAction = 瀏覽… -CredsGeminiCliLabel = Gemini CLI -CredsGeminiCliHelperPrefix = 使用的 OAuth 憑據來自 -CredsGeminiCliSetupAction = 安裝 Gemini CLI -CredsGeminiCliSetupHelp = 安裝 Gemini CLI 並執行 `gemini auth login` 進行登入。 -CredsVertexAiLabel = Google Cloud -CredsVertexAiHelperPrefix = 使用的 Google Cloud 憑據來自 -CredsVertexAiSetupAction = 配置 Google Cloud 身份 -CredsVertexAiSetupHelp = 執行 `gcloud auth application-default login` 建立憑據。 -CredsJetBrainsLabel = JetBrains IDE -CredsJetBrainsHelperDetectedPrefix = 使用檢測到的 IDE 配置: -CredsJetBrainsHelperCustomPrefix = 使用自定義 IDE 基礎路徑: -CredsJetBrainsHelperMissing = 請安裝啟用了 AI Assistant 的 JetBrains IDE,然後重新整理 Ceiling。 -CredsJetBrainsCustomPathLabel = 自定義路徑 -CredsJetBrainsCustomPathPlaceholder = %APPDATA%/JetBrains/IntelliJIdea... -CredsJetBrainsSelectLabel = 選擇要監控的 JetBrains IDE。 -CredsJetBrainsAutoDetectOption = 自動檢測 -CredsKiroLabel = Kiro CLI -CredsKiroHelperAvailablePrefix = 檢測到於 -CredsKiroHelperMissing = kiro-cli:未在 PATH 或常見安裝位置找到。 -CredsOpenAiHistoryHelp = 啟用歷史跟蹤以檢視一段時間內的使用情況。 -TokenAccountActive = 活動 -TokenAccountSetActive = 設為活動 -TokenAccountRemove = 移除 -TokenAccountAddButton = 新增賬戶 -TokenAccountGithubLoginButton = 使用 GitHub 登入 -TokenAccountEmpty = 該提供者尚未儲存任何賬戶。 -TokenAccountLabelPlaceholder = 標籤(如工作、個人)… -TokenAccountProviderLabel = 提供者 -TokenAccountProviderPlaceholder = 選擇提供者… -TokenAccountAddedPrefix = 新增於 -TokenAccountUsedPrefix = 上次使用 -TokenAccountTabHint = 按提供者管理多個會話權杖或 API 權杖。所有資料拉取都會使用活動賬戶。僅需要手動權杖的提供者會顯示在此處。 -TokenAccountNoSupported = 當前沒有支援權杖賬戶的提供者。 -TokenAccountInlineSummary = 權杖賬戶 -TrayPaceBadgeSlow = 緩慢 -TrayPaceBadgeSteady = 穩定 -TrayPaceBadgeRacing = 加速 -TrayPaceBadgeBurning = 超速 -TrayResetsInLabel = { "{}" } 後重置 -TrayResetsDueNow = 正在重置… -PredictivePaceWarnings = ???????? -PredictivePaceWarningsHelper = ? Codex ? Claude ??????????? -PredictivePaceWarningTitle = { "{}" } { "{}" }?????? -PredictivePaceWarningBody = ????? { "{}" } ??? -ShowResetWhenExhausted = ????????? -ShowResetWhenExhaustedHelper = ???????????????? -# Provider data-source / privacy explainer (SOU-179) — English only -DataSourceSectionTitle = How Ceiling gets this data -DataSourcePrivacyNote = Ceiling reads your usage from local app sessions and logs on this PC, or by calling the provider's own usage endpoint. Your credentials and usage data stay on this PC. They are never sent to Ceiling-operated servers, only to the provider itself. -DataSourceLearnMore = Learn how Ceiling gets each provider's data -DataSourceClaude = Reads usage from your signed-in Claude Code or Claude Desktop session, an OAuth token, or claude.ai cookies you provide. Talks only to api.anthropic.com and claude.ai. -DataSourceCodex = Uses the OAuth token from your Codex CLI (~/.codex) plus local session logs on this PC. Talks only to chatgpt.com. -DataSourceCursor = Uses your signed-in Cursor IDE session, or cursor.com cookies you provide. Talks only to cursor.com. -DataSourceCopilot = Uses your GitHub CLI or Git Credential Manager token. Talks only to api.github.com, or your configured GitHub Enterprise host. -DataSourceGemini = Reads the OAuth token from the Gemini CLI (~/.gemini). Talks only to Google's Code Assist and OAuth endpoints. -DataSourceGeneric = Reads this provider's usage from a local session or token on this PC, or by calling the provider's own usage endpoint. Your credentials stay on this PC and are only sent to the provider. - -# First-run checklist (SOU-157) — English only -FirstRunTitle = Finish setting up Ceiling -FirstRunStepEnable = Enable the providers you use -FirstRunStepAuth = Connect or confirm your sign-in -FirstRunStepFloatbar = Turn on the floating bar or taskbar glance -FirstRunOpenProviders = Open provider settings -FirstRunOpenDisplay = Open display settings -FirstRunDismiss = Dismiss