diff --git a/CLI/CMUXCLI+AgentHookStopStatus.swift b/CLI/CMUXCLI+AgentHookStopStatus.swift index 5082a3af032e..71c27791413d 100644 --- a/CLI/CMUXCLI+AgentHookStopStatus.swift +++ b/CLI/CMUXCLI+AgentHookStopStatus.swift @@ -1,6 +1,36 @@ import Foundation +/// What a running agent is working on, as the sidebar's `set_status --work` +/// option spells it. The CLI does not link the sidebar package, so these raw +/// values are the wire contract with the app's `SidebarAgentWorkState`. +enum AgentSidebarWorkState: String { + case running + case subagents + case waiting +} + extension CMUXCLI { + /// A blocking monitor or known wait command parks the turn on a wakeup. + static func waitsOnDeterministicEvent(toolName: String?, toolInput: Any?) -> Bool { + let tool = toolName?.lowercased() ?? "" + let input = toolInput as? [String: Any] ?? [:] + if tool == "monitor" { return true } + if tool == "taskoutput" { + // Nonblocking probes return immediately, so only a blocking read + // should hold the hourglass. Claude defaults `block` to true. + return input["block"] as? Bool != false + } + guard ["bash", "shell", "exec_command"].contains(tool), + let command = input["command"] as? String ?? input["cmd"] as? String else { return false } + // Match executable positions, not prose or arguments mentioning a + // wait. A shell loop is waiting only when it contains a real sleep. + let executable = #"(?:^|[;\n]|&&|\|\||\bdo\s+)\s*(?:[A-Za-z_][A-Za-z0-9_]*=\S+\s+)*(?:[^\s;]+/)?"# + let wait = #"(?:glaeda-gh\s+wait\b|gh\s+run\s+watch\b|sleep\s+(?:\d|\$)|watch\s+)"# + if command.range(of: executable + wait, options: .regularExpression) != nil { return true } + let checks = #"gh\s+pr\s+checks\b[^;\n]*(?:--watch\b|(?:^|\s)-w(?:\s|$))"# + return command.range(of: executable + checks, options: .regularExpression) != nil + } + /// Restores the shared needs-input status after a completion Stop that /// followed an attention request in the same turn. func setAgentNeedsInputStatus( diff --git a/CLI/CMUXCLI+ClaudeHookStopFailure.swift b/CLI/CMUXCLI+ClaudeHookStopFailure.swift index 83cb529bab7f..4020e53510bf 100644 --- a/CLI/CMUXCLI+ClaudeHookStopFailure.swift +++ b/CLI/CMUXCLI+ClaudeHookStopFailure.swift @@ -10,7 +10,8 @@ extension CMUXCLI { icon: String, color: String, pid: Int? = nil, - priority: Int? = nil + priority: Int? = nil, + workState: AgentSidebarWorkState? = nil ) throws { // The socket tokenizer opens a quoted token at a bare ' or ", so a // localized value such as "Erreur d'API" would swallow every option @@ -27,6 +28,16 @@ extension CMUXCLI { ProcessInfo.processInfo.environment[agentHookRelayOriginEnvironmentKey] != "1" { cmd += " --pid=\(pid)" } + // Every option here is `--key=value`, so none can swallow another and + // the reader takes them from a dictionary: order on the wire does not + // matter. This one is new and optional, so it goes last, because + // several existing tests pin the command up to `--tab=` and a flag + // inserted before that breaks them for no reason connected to what + // they check. A future bare flag would not be order-independent: the + // parser reads the next token as its value. + if let workState { + cmd += " --work=\(workState.rawValue)" + } _ = try client.send(command: cmd) } diff --git a/CLI/cmux.swift b/CLI/cmux.swift index 72d8a82fefcb..925b829cb322 100644 --- a/CLI/cmux.swift +++ b/CLI/cmux.swift @@ -4343,6 +4343,18 @@ struct CMUXCLI { } static let claudeCodeStatusKey = "claude_code" + /// The SF Symbol a running-with-subagents row shows: several connected + /// points, distinct from the git-branch symbol the sidebar already uses. + static let subagentsStatusIcon = "point.3.filled.connected.trianglepath.dotted" + + /// Whether a PreToolUse tool name is Claude Code's subagent spawn. + /// Claude Code renamed the spawn tool "Task" -> "Agent" (2.x); both names + /// remain on the wire depending on CLI version, so both must count (see + /// `AgentChatSessionRegistry.isTaskSpawn`, which says the same thing for + /// the mobile child-run tracker). + static func spawnsSubagents(toolName: String?) -> Bool { + toolName == "Task" || toolName == "Agent" + } private static func agentNotificationMeta( category: AgentHookNotifyCategory, @@ -28595,9 +28607,11 @@ struct CMUXCLI { // to the app so it can suppress the done-ping until work truly drains. let hasPendingBackgroundWork = hasActiveClaudeBackgroundWork(parsedInput) // Claude sets stop_hook_active on a re-entry after a Stop hook - // blocked once. That flag describes hook recursion, not work - // still running; only authoritative background-work signals - // should keep the sidebar in Running. + // blocked once. That flag describes hook recursion, not pending + // work: it must not mark the turn pending, but it does keep the + // sidebar pill in Running. Only authoritative background-work + // signals mark the turn pending and show Waiting. + let isReentrantStop = parsedInput.rawObject?["stop_hook_active"] as? Bool == true let hasUnsettledWork = stopFailure == nil && hasPendingBackgroundWork // Update session with transcript summary and send completion notification. @@ -28657,18 +28671,34 @@ struct CMUXCLI { ) if let stopFailure { try? setClaudeStopFailureStatus(stopFailure, client: client, workspaceId: workspaceId, surfaceId: surfaceId) - } else if hasUnsettledWork { + } else if hasPendingBackgroundWork { // The turn ended but a background task or scheduled wakeup is // still live, so the pane is not idle — show it as still // running rather than the misleading "Idle". Reuse the shared // generic-agent status strings so the pill stays localized. + // + // A background task or cron is a deterministic wakeup the pane + // is parked on, which reads as Waiting. A re-entrant Stop + // (`stop_hook_active`) keeps the pill on Running separately + // because it does not represent pending background work. + try? setClaudeStatus( + client: client, + workspaceId: workspaceId, + surfaceId: surfaceId, + value: String(localized: "agent.generic.status.waiting", defaultValue: "Waiting"), + icon: "hourglass", + color: "#8E8E93", + workState: .waiting + ) + } else if isReentrantStop { try? setClaudeStatus( client: client, workspaceId: workspaceId, surfaceId: surfaceId, value: String(localized: "agent.generic.status.running", defaultValue: "Running"), icon: "bolt.fill", - color: "#4C8DFF" + color: "#4C8DFF", + workState: .running ) } else { try? setClaudeStatus( @@ -28863,7 +28893,8 @@ struct CMUXCLI { surfaceId: surfaceId, value: "Running", icon: "bolt.fill", - color: "#4C8DFF" + color: "#4C8DFF", + workState: .running ) printClaudeHookAck() @@ -29558,10 +29589,28 @@ struct CMUXCLI { telemetry: telemetry ) + // A spawn call blocks the parent inside the tool until its + // subagents finish, so no other parent hook can fire meanwhile: + // the subagent state holds for exactly that span, and the next + // parent PreToolUse or Stop clears it. No counter to drift. + let runsSubagents = Self.spawnsSubagents( + toolName: parsedInput.object?["tool_name"] as? String + ) + let waits = Self.waitsOnDeterministicEvent( + toolName: parsedInput.object?["tool_name"] as? String, + toolInput: parsedInput.object?["tool_input"] + ) let statusValue: String - if UserDefaults.standard.bool(forKey: "claudeCodeVerboseStatus"), - let toolStatus = describeToolUse(parsedInput.object) { + if waits { + statusValue = String(localized: "agent.generic.status.waiting", defaultValue: "Waiting") + } else if UserDefaults.standard.bool(forKey: "claudeCodeVerboseStatus"), + let toolStatus = describeToolUse(parsedInput.object) { statusValue = toolStatus + } else if runsSubagents { + statusValue = String( + localized: "agent.generic.status.runningSubagents", + defaultValue: "Running subagents" + ) } else { statusValue = "Running" } @@ -29570,9 +29619,10 @@ struct CMUXCLI { workspaceId: workspaceId, surfaceId: surfaceId, value: statusValue, - icon: "bolt.fill", + icon: runsSubagents ? Self.subagentsStatusIcon : (waits ? "hourglass" : "bolt.fill"), color: "#4C8DFF", - pid: claudePid + pid: claudePid, + workState: runsSubagents ? .subagents : (waits ? .waiting : .running) ) printClaudeHookAck() diff --git a/Packages/macOS/CmuxAgentJournal/Sources/CmuxAgentJournal/AgentNotificationReconciler.swift b/Packages/macOS/CmuxAgentJournal/Sources/CmuxAgentJournal/AgentNotificationReconciler.swift index 5a21e1e34bbc..16ecd2db32d9 100644 --- a/Packages/macOS/CmuxAgentJournal/Sources/CmuxAgentJournal/AgentNotificationReconciler.swift +++ b/Packages/macOS/CmuxAgentJournal/Sources/CmuxAgentJournal/AgentNotificationReconciler.swift @@ -74,9 +74,31 @@ public struct AgentNotificationReconciler: Sendable { if isResolution { // A work observation is not a resolution. Only this explicit semantic // event can retire an immutable request/child ID behind a newer watermark. - // A late reply still retires its own request, but it never reopens a - // turn that settled after it. - let fresh = draft.occurredAtMs >= session.occurredAtMs + // A late reply still retires its own request. Only a fresh running + // tool event may reopen a settled turn. + let fresh = draft.occurredAtMs > session.occurredAtMs + || (draft.occurredAtMs == session.occurredAtMs && event.sequence > session.sequence) + let isIdentitylessToolStart = incomingTurn == nil + && draft.nativeEvent?.caseInsensitiveCompare("PreToolUse") == .orderedSame + let incomingTurn = context?.turnIdentity + let isNewTurn = incomingTurn != nil + && session.nativeTurn != nil + && incomingTurn != session.nativeTurn + if draft.kind == .attentionResolved, draft.declaredPhase == .running, fresh, + !session.ended, + draft.pendingWork + || (isNewTurn && incomingTurn.map { !session.seenTurns.contains($0) } == true) + || (isIdentitylessToolStart && fresh) { + // A tool completion is progress, including a continuation + // that starts without UserPromptSubmit. Reopen only fresh + // activity with a new turn identity; an older or same-turn + // result cannot resurrect a settled pane. + if let incomingTurn, isNewTurn { + session.turn = incomingTurn + session.nativeTurn = incomingTurn + } + session.resumeWork() + } if let request = context?.requestIdentity { if draft.kind == .attentionResolved { let wasResolved = session.resolvedRequests.contains(request) @@ -101,8 +123,7 @@ public struct AgentNotificationReconciler: Sendable { session.phase = .needsInput } else if draft.declaredPhase == .idle { // Only an idle declaration (a dismissed idle dialog) settles the - // turn. Feed declares every tool result `.running`, which must not - // reopen a turn that already completed. + // turn. Fresh tool activity explicitly reopens it below. session.phase = .idle session.rootStopped = true } else if session.rootStopped && session.children.isEmpty { @@ -162,9 +183,8 @@ public struct AgentNotificationReconciler: Sendable { session.completionIdentity = nil } if draft.kind == .idleObserved { - let matchesTurn = context?.turnIdentity != nil && context?.turnIdentity == session.nativeTurn guard !draft.pendingWork, session.attentionIdentities.isEmpty, session.children.isEmpty, - session.phase == .idle || session.phase == .unknown || (session.phase == .running && matchesTurn), + session.phase == .idle || session.phase == .unknown, !session.ended else { return .init(.delayed, projectsLifecycle: false) } session.phase = .idle session.rootStopped = true @@ -242,6 +262,22 @@ public struct AgentNotificationReconciler: Sendable { session.ended = true case .stateChanged: if draft.declaredPhase == .running { + let isNewTurn = incomingTurn != nil + && incomingTurn != session.nativeTurn + && incomingTurn.map { !session.seenTurns.contains($0) } == true + let isFreshIdentitylessActivity = incomingTurn == nil + && draft.nativeEvent?.caseInsensitiveCompare("PreToolUse") == .orderedSame + && (draft.occurredAtMs > session.occurredAtMs + || (draft.occurredAtMs == session.occurredAtMs && event.sequence > session.sequence)) + // A tool event without a turn identity is ambiguous after a + // completion. Reopen only when its event timestamp/sequence is + // newer than the completion watermark; this admits promptless + // continuations while a late older event remains stale. + guard session.phase != .idle || isNewTurn || isFreshIdentitylessActivity else { break } + if isNewTurn, let incomingTurn { + session.turn = incomingTurn + session.nativeTurn = incomingTurn + } session.rootStopped = false session.pendingCompletion = nil } diff --git a/Packages/macOS/CmuxAgentJournal/Tests/CmuxAgentJournalTests/AgentLifecycleReducerTests.swift b/Packages/macOS/CmuxAgentJournal/Tests/CmuxAgentJournalTests/AgentLifecycleReducerTests.swift index 027b17bcf4b6..64b169c00201 100644 --- a/Packages/macOS/CmuxAgentJournal/Tests/CmuxAgentJournalTests/AgentLifecycleReducerTests.swift +++ b/Packages/macOS/CmuxAgentJournal/Tests/CmuxAgentJournalTests/AgentLifecycleReducerTests.swift @@ -77,6 +77,15 @@ struct AgentLifecycleReducerTests { #expect(state.combinedPhase(surfaceId: surface, agentKey: "claude_code") == .backgroundWorkPending) } + @Test func toolActivityReopensASettledTurnAndLateStopIsIgnored() { + let state = fold([ + event(1, .turnCompleted, occurredAtMs: 10), + event(2, .stateChanged, declaredPhase: .running, occurredAtMs: 20), + event(3, .turnCompleted, occurredAtMs: 10), + ]) + #expect(state.combinedPhase(surfaceId: surface, agentKey: "claude_code") == .running) + } + @Test func newTurnRemainsRunningWhileBackgroundWorkIsPending() { let state = fold([ event(1, .turnStarted), diff --git a/Packages/macOS/CmuxAgentJournal/Tests/CmuxAgentJournalTests/AgentNotificationReconcilerTests.swift b/Packages/macOS/CmuxAgentJournal/Tests/CmuxAgentJournalTests/AgentNotificationReconcilerTests.swift index abe2d1e7b869..38b428ca7721 100644 --- a/Packages/macOS/CmuxAgentJournal/Tests/CmuxAgentJournalTests/AgentNotificationReconcilerTests.swift +++ b/Packages/macOS/CmuxAgentJournal/Tests/CmuxAgentJournalTests/AgentNotificationReconcilerTests.swift @@ -9,12 +9,13 @@ struct AgentNotificationReconcilerTests { private func event(_ sequence: Int64, _ kind: AgentJournalEventKind, source: String, turn: String? = "turn-1", request: String? = nil, pending: Bool = false, notify: Bool = true, occurredAt: Int64? = nil, nativeID: String? = nil, - surfaceID: String? = nil, declaredPhase: AgentLifecyclePhase? = nil) -> AgentJournalEvent { + surfaceID: String? = nil, declaredPhase: AgentLifecyclePhase? = nil, + nativeEvent: String? = nil) -> AgentJournalEvent { AgentJournalEvent(sequence: sequence, committedAtMs: 1000 + sequence, draft: AgentJournalEventDraft(eventId: "event-\(sequence)", kind: kind, occurredAtMs: occurredAt ?? sequence, source: source, agentKey: source, sessionId: "session", workspaceId: workspace, surfaceId: surfaceID ?? surface, - pendingWork: pending, declaredPhase: declaredPhase, attention: AgentAttentionContext(eventIdentity: nativeID, + pendingWork: pending, nativeEvent: nativeEvent, declaredPhase: declaredPhase, attention: AgentAttentionContext(eventIdentity: nativeID, turnIdentity: turn, requestIdentity: request, notification: notify ? AgentJournalNotification(title: "Agent", subtitle: "", body: "Ready", category: kind == .turnCompleted ? "turn-complete" : "needs-permission") : nil))) @@ -249,6 +250,92 @@ struct AgentNotificationReconcilerTests { #expect(reconciler.apply(event(6, .approvalRequested, source: source, turn: "next", request: "real", occurredAt: 10)).disposition == .accepted) } + @Test(arguments: ["claude", "codex"]) + func toolActivityReopensAContinuationWithoutPromptSubmit(source: String) { + var reconciler = AgentNotificationReconciler() + _ = reconciler.apply(event(1, .turnCompleted, source: source, turn: "first", notify: false)) + let activity = event(2, .stateChanged, source: source, turn: "continuation", notify: false, + occurredAt: 20, declaredPhase: .running) + _ = reconciler.apply(activity) + #expect(reconciler.lifecycleEvent(activity).draft.declaredPhase == .running) + } + + @Test(arguments: ["claude", "codex"]) + func identitylessToolActivityReopensAContinuationWithoutPromptSubmit(source: String) { + var reconciler = AgentNotificationReconciler() + _ = reconciler.apply(event(1, .turnCompleted, source: source, turn: nil, notify: false, occurredAt: 10)) + let activity = event(2, .stateChanged, source: source, turn: nil, notify: false, + occurredAt: 20, declaredPhase: .running, nativeEvent: "PreToolUse") + _ = reconciler.apply(activity) + #expect(reconciler.lifecycleEvent(activity).draft.declaredPhase == .running) + } + + @Test(arguments: ["claude", "codex"]) + func identitylessToolResolutionReopensAContinuationWithoutPromptSubmit(source: String) { + var reconciler = AgentNotificationReconciler() + _ = reconciler.apply(event(1, .turnCompleted, source: source, turn: nil, notify: false, occurredAt: 10)) + let result = event(2, .attentionResolved, source: source, turn: nil, request: "tool", + pending: false, notify: false, occurredAt: 20, declaredPhase: .running, + nativeEvent: "PreToolUse") + _ = reconciler.apply(result) + #expect(reconciler.lifecycleEvent(result).draft.declaredPhase == .running) + } + + @Test(arguments: ["claude", "codex"]) + func identitylessLateStopCannotSettleAContinuation(source: String) { + var reconciler = AgentNotificationReconciler() + _ = reconciler.apply(event(1, .turnCompleted, source: source, turn: nil, notify: false, occurredAt: 10)) + let activity = event(2, .stateChanged, source: source, turn: nil, notify: false, + occurredAt: 20, declaredPhase: .running, nativeEvent: "PreToolUse") + _ = reconciler.apply(activity) + let lateStop = event(3, .turnCompleted, source: source, turn: nil, notify: false, occurredAt: 10) + #expect(reconciler.apply(lateStop).disposition == .stale) + #expect(reconciler.lifecycleEvent(activity).draft.declaredPhase == .running) + } + + @Test(arguments: ["claude", "codex"]) + func identitylessPostToolResultKeepsSettledCompletionIdle(source: String) { + var reconciler = AgentNotificationReconciler() + _ = reconciler.apply(event(1, .turnCompleted, source: source, turn: nil, notify: false, occurredAt: 10)) + let result = event(2, .stateChanged, source: source, turn: nil, notify: false, + occurredAt: 20, declaredPhase: .running, nativeEvent: "PostToolUse") + _ = reconciler.apply(result) + #expect(reconciler.lifecycleEvent(result).draft.declaredPhase == .idle) + } + + @Test(arguments: ["claude", "codex"]) + func backgroundWorkResolutionKeepsThePaneRunning(source: String) { + var reconciler = AgentNotificationReconciler() + _ = reconciler.apply(event(1, .turnStarted, source: source, turn: "turn-1", notify: false)) + _ = reconciler.apply(event(2, .turnCompleted, source: source, turn: "turn-1", + pending: true, notify: false)) + let resumed = event(3, .attentionResolved, source: source, turn: "turn-1", + pending: true, notify: false, declaredPhase: .running) + _ = reconciler.apply(resumed) + #expect(reconciler.lifecycleEvent(resumed).draft.declaredPhase == .running) + } + + @Test(arguments: ["claude", "codex"]) + func idlePromptDoesNotSettleAnActiveTurn(source: String) { + var reconciler = AgentNotificationReconciler() + _ = reconciler.apply(event(1, .turnStarted, source: source, turn: "turn-1", notify: false)) + let idlePrompt = event(2, .idleObserved, source: source, turn: "turn-1", notify: false, occurredAt: 20) + _ = reconciler.apply(idlePrompt) + #expect(reconciler.lifecycleEvent(idlePrompt).draft.declaredPhase == .running) + } + + @Test(arguments: ["claude", "codex"]) + func lateStopCannotSettleAContinuationReopenedByActivity(source: String) { + var reconciler = AgentNotificationReconciler() + _ = reconciler.apply(event(1, .turnCompleted, source: source, turn: "first", notify: false, occurredAt: 10)) + let activity = event(2, .stateChanged, source: source, turn: "continuation", notify: false, + occurredAt: 20, declaredPhase: .running) + _ = reconciler.apply(activity) + let lateStop = event(3, .turnCompleted, source: source, turn: "first", notify: false, occurredAt: 10) + #expect(reconciler.apply(lateStop).disposition == .stale) + #expect(reconciler.lifecycleEvent(activity).draft.declaredPhase == .running) + } + @Test(arguments: ["claude", "codex"]) func anonymousReminderReusesPendingAttentionWithoutMaskingAnotherRequest(source: String) { var reconciler = AgentNotificationReconciler() @@ -316,8 +403,8 @@ struct AgentNotificationReconcilerTests { } @Test(arguments: ["claude", "codex"]) - func runningToolResultDoesNotReopenSettledTurn(source: String) { - // Feed declares every tool result `.running`; only an idle declaration settles. + func runningToolResultKeepsASettledTurnIdle(source: String) { + // A same-turn result can be a late delivery from the completed turn. var reconciler = AgentNotificationReconciler() _ = reconciler.apply(event(1, .turnCompleted, source: source)) let result = event(2, .attentionResolved, source: source, request: "ordinary-tool", diff --git a/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlCommandCoordinator+SidebarMetadataV1.swift b/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlCommandCoordinator+SidebarMetadataV1.swift index d728b8446c4f..77e414157a7b 100644 --- a/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlCommandCoordinator+SidebarMetadataV1.swift +++ b/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlCommandCoordinator+SidebarMetadataV1.swift @@ -38,6 +38,16 @@ extension ControlCommandCoordinator { return "ERROR: Invalid metadata format '\(formatRaw)' — use: plain, markdown" } + let workState: ControlSidebarAgentWorkState? + if let rawWorkState = sidebarNormalizedOptionValue(parsed.options["work"]) { + guard let parsedWorkState = ControlSidebarAgentWorkState(rawValue: rawWorkState.lowercased()) else { + return "ERROR: Invalid work state '\(rawWorkState)' — use: running, subagents, waiting" + } + workState = parsedWorkState + } else { + workState = nil + } + let priority: Int if let rawPriority = sidebarNormalizedOptionValue(parsed.options["priority"]) { guard let parsedPriority = Int(rawPriority) else { @@ -66,7 +76,7 @@ extension ControlCommandCoordinator { } let panelResolution = sidebarParseOptionalPanelIdOption( options: parsed.options, - usage: "set_status [--icon=X] [--color=#hex] [--url=X] [--priority=N] [--format=plain|markdown] [--tab=X] [--panel=ID]" + usage: "set_status [--icon=X] [--color=#hex] [--url=X] [--priority=N] [--format=plain|markdown] [--work=running|subagents|waiting] [--tab=X] [--panel=ID]" ) if let error = panelResolution.error { return error @@ -90,7 +100,8 @@ extension ControlCommandCoordinator { priority: priority, format: format, panelID: panelResolution.panelId, - pid: pidValue + pid: pidValue, + workState: workState ) return "OK" } @@ -131,7 +142,7 @@ extension ControlCommandCoordinator { nonisolated func sidebarSetStatus(_ args: String, context: (any ControlCommandContext)?) -> String { sidebarUpsertMetadata( args, - missingError: "ERROR: Missing status key or value — usage: set_status [--icon=X] [--color=#hex] [--url=X] [--priority=N] [--format=plain|markdown] [--tab=X]", + missingError: "ERROR: Missing status key or value — usage: set_status [--icon=X] [--color=#hex] [--url=X] [--priority=N] [--format=plain|markdown] [--work=running|subagents|waiting] [--tab=X]", context: context ) } diff --git a/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlCommandCoordinator+SidebarV1.swift b/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlCommandCoordinator+SidebarV1.swift index 2b9b259886eb..58b5b1b2c86f 100644 --- a/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlCommandCoordinator+SidebarV1.swift +++ b/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlCommandCoordinator+SidebarV1.swift @@ -403,6 +403,7 @@ extension ControlCommandCoordinator { if let url = entry.urlAbsoluteString { line += " url=\(url)" } if entry.priority != 0 { line += " priority=\(entry.priority)" } if entry.format != .plain { line += " format=\(entry.format.rawValue)" } + if let workState = entry.workState { line += " work=\(workState.rawValue)" } return line } diff --git a/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlSidebarAgentWorkState.swift b/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlSidebarAgentWorkState.swift new file mode 100644 index 000000000000..dcb119afb4b9 --- /dev/null +++ b/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlSidebarAgentWorkState.swift @@ -0,0 +1,13 @@ +internal import Foundation + +/// What a running agent is running on (the typed twin of the app's +/// `SidebarAgentWorkState`; raw values match so the conformance can rebuild +/// the app enum losslessly). +public enum ControlSidebarAgentWorkState: String, Sendable, Equatable, CaseIterable { + /// The agent itself is working. + case running + /// The agent is working through background subagents. + case subagents + /// The agent is parked on a deterministic external event. + case waiting +} diff --git a/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlSidebarContext.swift b/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlSidebarContext.swift index 6e8343c40cfd..81f338a95869 100644 --- a/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlSidebarContext.swift +++ b/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlSidebarContext.swift @@ -62,7 +62,8 @@ public protocol ControlSidebarContext: AnyObject { priority: Int, format: ControlSidebarMetadataFormat, panelID: UUID?, - pid: Int32? + pid: Int32?, + workState: ControlSidebarAgentWorkState? ) /// Enqueues the `clear_status`/`clear_meta` removal mutation. diff --git a/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlSidebarStatusEntrySnapshot.swift b/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlSidebarStatusEntrySnapshot.swift index 286992092409..8be75b624265 100644 --- a/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlSidebarStatusEntrySnapshot.swift +++ b/Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Coordinator/Sidebar/ControlSidebarStatusEntrySnapshot.swift @@ -17,6 +17,9 @@ public struct ControlSidebarStatusEntrySnapshot: Sendable, Equatable { public let priority: Int /// The render format (non-`plain` is appended to the listing line). public let format: ControlSidebarMetadataFormat + /// What a running agent is running on, when it reported one. Listed so + /// the state the compact glyph reads is observable over the socket. + public let workState: ControlSidebarAgentWorkState? /// Creates a snapshot. /// @@ -28,6 +31,7 @@ public struct ControlSidebarStatusEntrySnapshot: Sendable, Equatable { /// - urlAbsoluteString: The optional absolute URL string. /// - priority: The display priority. /// - format: The render format. + /// - workState: The reported agent work state, if any. public init( key: String, value: String, @@ -35,7 +39,8 @@ public struct ControlSidebarStatusEntrySnapshot: Sendable, Equatable { color: String?, urlAbsoluteString: String?, priority: Int, - format: ControlSidebarMetadataFormat + format: ControlSidebarMetadataFormat, + workState: ControlSidebarAgentWorkState? = nil ) { self.key = key self.value = value @@ -44,5 +49,6 @@ public struct ControlSidebarStatusEntrySnapshot: Sendable, Equatable { self.urlAbsoluteString = urlAbsoluteString self.priority = priority self.format = format + self.workState = workState } } diff --git a/Packages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/ControlCommandContextTestStubs+SidebarBrowser.swift b/Packages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/ControlCommandContextTestStubs+SidebarBrowser.swift index 0ca3fe9e88c2..0e99ac733da8 100644 --- a/Packages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/ControlCommandContextTestStubs+SidebarBrowser.swift +++ b/Packages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/ControlCommandContextTestStubs+SidebarBrowser.swift @@ -58,7 +58,8 @@ extension ControlSidebarContext { priority: Int, format: ControlSidebarMetadataFormat, panelID: UUID?, - pid: Int32? + pid: Int32?, + workState: ControlSidebarAgentWorkState? ) {} nonisolated func controlSidebarScheduleStatusClear( diff --git a/Packages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/ControlCommandCoordinatorSidebarV1Tests.swift b/Packages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/ControlCommandCoordinatorSidebarV1Tests.swift index 7ad1659d4f07..2e37aa8a8f9b 100644 --- a/Packages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/ControlCommandCoordinatorSidebarV1Tests.swift +++ b/Packages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/ControlCommandCoordinatorSidebarV1Tests.swift @@ -42,6 +42,81 @@ struct ControlCommandCoordinatorSidebarV1Tests { #expect(context.statusClearCall?.panelID == panelID) } + @Test func statusUpsertForwardsAgentWorkState() { + let context = FakeSidebarV1ControlCommandContext() + let coordinator = ControlCommandCoordinator(context: context) + let workspaceID = UUID() + + let response = coordinator.handleSidebarV1( + command: "set_status", + args: "claude_code Running subagents --icon=bolt.fill --work=SUBAGENTS --tab=\(workspaceID.uuidString)" + ) + + #expect(response == "OK") + #expect(context.statusUpsertCall?.key == "claude_code") + #expect(context.statusUpsertCall?.value == "Running subagents") + #expect(context.statusUpsertCall?.workState == .subagents) + } + + /// Every existing reporter omits `--work`, and those rows must keep + /// resolving the way they did before the option existed. + @Test func statusUpsertWithoutWorkOptionForwardsNoWorkState() { + let context = FakeSidebarV1ControlCommandContext() + let coordinator = ControlCommandCoordinator(context: context) + + let response = coordinator.handleSidebarV1( + command: "set_status", + args: "claude_code Running --icon=bolt.fill --tab=\(UUID().uuidString)" + ) + + #expect(response == "OK") + #expect(context.statusUpsertCall?.workState == nil) + } + + @Test func statusUpsertRejectsUnknownWorkStateBeforeMutation() { + let context = FakeSidebarV1ControlCommandContext() + let coordinator = ControlCommandCoordinator(context: context) + + let response = coordinator.handleSidebarV1( + command: "set_status", + args: "claude_code Thinking --work=thinking --tab=\(UUID().uuidString)" + ) + + #expect(response?.hasPrefix("ERROR: Invalid work state 'thinking'") == true, + "An unknown work state must be named in the error; saw \(response ?? "nil")") + #expect(context.statusUpsertCall == nil) + } + + /// The work state drives a glyph with no text of its own, so the + /// `list_status` / `sidebar_state` line has to carry it: it is the only + /// way a test or a user can see which state a row is actually in. + @Test func statusListingLineCarriesTheWorkState() { + let coordinator = ControlCommandCoordinator(context: FakeSidebarV1ControlCommandContext()) + let waiting = ControlSidebarStatusEntrySnapshot( + key: "claude_code", + value: "Waiting", + icon: "hourglass", + color: "#8E8E93", + urlAbsoluteString: nil, + priority: 0, + format: .plain, + workState: .waiting + ) + #expect(coordinator.sidebarMetadataLine(waiting) + == "claude_code=Waiting icon=hourglass color=#8E8E93 work=waiting") + + let plain = ControlSidebarStatusEntrySnapshot( + key: "deploy", + value: "staging green", + icon: nil, + color: nil, + urlAbsoluteString: nil, + priority: 0, + format: .plain + ) + #expect(coordinator.sidebarMetadataLine(plain) == "deploy=staging green") + } + @Test func workspaceLoadingFailureReasonReturnsErrorLine() { let context = FakeSidebarV1ControlCommandContext() context.workspaceLoadingResult = ControlSidebarWorkspaceLoadingState( diff --git a/Packages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/FakeSidebarV1ControlCommandContext.swift b/Packages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/FakeSidebarV1ControlCommandContext.swift index a815ed6222e0..6530c34a2493 100644 --- a/Packages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/FakeSidebarV1ControlCommandContext.swift +++ b/Packages/macOS/CmuxControlSocket/Tests/CmuxControlSocketTests/FakeSidebarV1ControlCommandContext.swift @@ -21,6 +21,14 @@ final class FakeSidebarV1ControlCommandContext: ControlCommandContext { scope: ControlSidebarPanelScope, stateRawValue: String )? + nonisolated(unsafe) var statusUpsertCall: ( + target: ControlSidebarTabTarget, + key: String, + value: String, + icon: String?, + panelID: UUID?, + workState: ControlSidebarAgentWorkState? + )? nonisolated func controlSurfaceParseShellActivityState( _ rawState: String @@ -32,6 +40,22 @@ final class FakeSidebarV1ControlCommandContext: ControlCommandContext { } } + nonisolated func controlSidebarScheduleStatusUpsert( + target: ControlSidebarTabTarget, + key: String, + value: String, + icon: String?, + color: String?, + url: URL?, + priority: Int, + format: ControlSidebarMetadataFormat, + panelID: UUID?, + pid: Int32?, + workState: ControlSidebarAgentWorkState? + ) { + statusUpsertCall = (target, key, value, icon, panelID, workState) + } + nonisolated func controlSidebarScheduleStatusClear( target: ControlSidebarTabTarget, key: String, diff --git a/Packages/macOS/CmuxFoundation/Sources/CmuxFoundation/ConfigValidation/CmuxConfigSchema.generated.swift b/Packages/macOS/CmuxFoundation/Sources/CmuxFoundation/ConfigValidation/CmuxConfigSchema.generated.swift index 47a418a10ae9..308f0dfbb70f 100644 --- a/Packages/macOS/CmuxFoundation/Sources/CmuxFoundation/ConfigValidation/CmuxConfigSchema.generated.swift +++ b/Packages/macOS/CmuxFoundation/Sources/CmuxFoundation/ConfigValidation/CmuxConfigSchema.generated.swift @@ -1494,7 +1494,9 @@ enum CmuxEmbeddedConfigSchema { "properties": { "error": { "type": "string", "minLength": 1 }, "needsInput": { "type": "string", "minLength": 1 }, + "subagents": { "type": "string", "minLength": 1 }, "running": { "type": "string", "minLength": 1 }, + "waiting": { "type": "string", "minLength": 1 }, "starting": { "type": "string", "minLength": 1 }, "unseen": { "type": "string", "minLength": 1 }, "pullRequestOpen": { "type": "string", "minLength": 1 }, diff --git a/Packages/macOS/CmuxSidebar/Sources/CmuxSidebar/Status/SidebarAgentWorkState.swift b/Packages/macOS/CmuxSidebar/Sources/CmuxSidebar/Status/SidebarAgentWorkState.swift new file mode 100644 index 000000000000..b735b4fd366e --- /dev/null +++ b/Packages/macOS/CmuxSidebar/Sources/CmuxSidebar/Status/SidebarAgentWorkState.swift @@ -0,0 +1,38 @@ +public import Foundation + +/// What a *running* agent is running on, as reported by its hook. +/// +/// This refines the running half of the sidebar's agent vocabulary; it never +/// replaces it. Needs input, idle and error stay where they already live (the +/// lifecycle state and the entry's own icon), and hibernation keeps reading +/// `AgentHibernationLifecycleState`, so a work state can never make a pane +/// with live work look hibernatable. +/// +/// An entry without a work state reads exactly as it did before: a plain +/// running row. An unrecognized value is not accepted anywhere: the control +/// socket rejects the whole `set_status` with an error, the same way it +/// already rejects an unknown `--format` or a non-integer `--priority`. A +/// future fourth state therefore needs the app to ship before the CLI that +/// sends it. +public enum SidebarAgentWorkState: String, Sendable, Equatable, CaseIterable { + /// The agent itself is working: a model turn or a tool call is in flight. + case running + /// The agent is working through background subagents it spawned. + case subagents + /// The turn is over but the agent is parked on a deterministic external + /// event it will be woken by: a background command, a scheduled wakeup, a + /// CI run. Not idle, and not hibernatable. + case waiting + + /// Parses a reported value, tolerating surrounding space and case and + /// nothing else. Deliberately the same acceptance set as the control + /// socket's own `--work` parse, so a value the socket rejects can never + /// look parseable here. + public static func parse(_ rawValue: String) -> SidebarAgentWorkState? { + SidebarAgentWorkState( + rawValue: rawValue + .trimmingCharacters(in: .whitespacesAndNewlines) + .lowercased() + ) + } +} diff --git a/Packages/macOS/CmuxSidebar/Sources/CmuxSidebar/Status/SidebarStatusEntry.swift b/Packages/macOS/CmuxSidebar/Sources/CmuxSidebar/Status/SidebarStatusEntry.swift index a90488ad979a..852643b7c793 100644 --- a/Packages/macOS/CmuxSidebar/Sources/CmuxSidebar/Status/SidebarStatusEntry.swift +++ b/Packages/macOS/CmuxSidebar/Sources/CmuxSidebar/Status/SidebarStatusEntry.swift @@ -19,6 +19,10 @@ public struct SidebarStatusEntry: Equatable, Sendable { public let format: SidebarMetadataFormat /// When the entry was reported. public let timestamp: Date + /// What the agent is running on, when the reporter said so. `nil` on every + /// entry that is not an agent row, and on agent rows from a reporter that + /// does not report it. + public let workState: SidebarAgentWorkState? /// Creates a status row (defaults mirror the legacy initializer). public init( @@ -29,7 +33,8 @@ public struct SidebarStatusEntry: Equatable, Sendable { url: URL? = nil, priority: Int = 0, format: SidebarMetadataFormat = .plain, - timestamp: Date = Date() + timestamp: Date = Date(), + workState: SidebarAgentWorkState? = nil ) { self.key = key self.value = value @@ -39,5 +44,6 @@ public struct SidebarStatusEntry: Equatable, Sendable { self.priority = priority self.format = format self.timestamp = timestamp + self.workState = workState } } diff --git a/Resources/Localizable.xcstrings b/Resources/Localizable.xcstrings index 7f1b0e040cf5..2e875afc9e96 100644 --- a/Resources/Localizable.xcstrings +++ b/Resources/Localizable.xcstrings @@ -234922,6 +234922,256 @@ } } }, + "cloudTree.group.cloudMachines": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Cloud Machines" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Cloud-Maschinen" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Machines cloud" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "أجهزة سحابية" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Máquinas en la nube" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "雲端機器" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "云端机器" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "클라우드 머신" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "クラウドマシン" + } + }, + "bs": { + "stringUnit": { + "state": "translated", + "value": "Mašine u oblaku" + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "Cloud-maskiner" + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "Macchine cloud" + } + }, + "km": { + "stringUnit": { + "state": "translated", + "value": "ម៉ាស៊ីនលើពពក" + } + }, + "nb": { + "stringUnit": { + "state": "translated", + "value": "Skymaskiner" + } + }, + "pl": { + "stringUnit": { + "state": "translated", + "value": "Maszyny w chmurze" + } + }, + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "Máquinas na nuvem" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Облачные машины" + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "เครื่องคลาวด์" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Bulut makineleri" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Хмарні машини" + } + } + } + }, + "cloudTree.group.devices": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "My Devices" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Meine Geräte" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Mes appareils" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "أجهزتي" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Mis dispositivos" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "我的裝置" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "我的设备" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "내 기기" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "マイデバイス" + } + }, + "bs": { + "stringUnit": { + "state": "translated", + "value": "Moji uređaji" + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "Mine enheder" + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "I miei dispositivi" + } + }, + "km": { + "stringUnit": { + "state": "translated", + "value": "ឧបករណ៍របស់ខ្ញុំ" + } + }, + "nb": { + "stringUnit": { + "state": "translated", + "value": "Mine enheter" + } + }, + "pl": { + "stringUnit": { + "state": "translated", + "value": "Moje urządzenia" + } + }, + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "Meus dispositivos" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Мои устройства" + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "อุปกรณ์ของฉัน" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Cihazlarım" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Мої пристрої" + } + } + } + }, "machines.operation.checkpoint": { "extractionState": "manual", "localizations": { @@ -237317,6 +237567,419 @@ } } }, + "machines.listUnavailable.stale": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Machine list unavailable — showing last known" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Maschinenliste nicht verfügbar – zeige letzten bekannten Stand" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Liste des machines indisponible — affichage des dernières informations connues" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "قائمة الأجهزة غير متاحة — يتم عرض آخر حالة معروفة" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Lista de máquinas no disponible — se muestra el último estado conocido" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "無法取得機器清單 — 顯示上次已知的狀態" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "机器列表不可用 —— 显示的是最后已知状态" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "머신 목록을 사용할 수 없음 — 마지막으로 확인된 상태 표시 중" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "マシン一覧を取得できません — 最後の状態を表示中" + } + } + } + }, + "machines.listUnavailable.subtitle": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Your machines are unchanged. cmux couldn’t load the list from the Cloud service and retries on its own." + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Deine Maschinen sind unverändert. cmux konnte die Liste nicht vom Cloud-Dienst laden und versucht es selbstständig erneut." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Vos machines ne sont pas modifiées. cmux n’a pas pu charger la liste depuis le service Cloud et va réessayer automatiquement." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "لم تتغير أجهزتك. تعذر على cmux تحميل القائمة من الخدمة السحابية، وسيعيد المحاولة تلقائيًا." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Tus máquinas no han cambiado. cmux no pudo cargar la lista desde el servicio de la nube y volverá a intentarlo automáticamente." + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "您的機器沒有任何變動。cmux 無法從雲端服務載入清單,會自動重試。" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "你的机器没有任何变化。cmux 无法从云端服务加载列表,会自动重试。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "머신은 변경되지 않았습니다. cmux가 클라우드 서비스에서 목록을 불러오지 못했으며 자동으로 다시 시도합니다." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "マシンは変更されていません。cmux はクラウドサービスから一覧を読み込めませんでした。自動的に再試行します。" + } + } + } + }, + "machines.listUnavailable.title": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Can’t load the machine list" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Maschinenliste kann nicht geladen werden" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Impossible de charger la liste des machines" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تعذر تحميل قائمة الأجهزة" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "No se puede cargar la lista de máquinas" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "無法載入機器清單" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "无法加载机器列表" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "머신 목록을 불러올 수 없습니다" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "マシン一覧を読み込めません" + } + } + } + }, + "machines.offline.stale": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Offline — showing last known" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Offline – zeige letzten bekannten Stand" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Hors ligne — affichage des dernières informations connues" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "غير متصل — يتم عرض آخر حالة معروفة" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Sin conexión — se muestra el último estado conocido" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "離線 — 顯示上次已知的狀態" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "离线 —— 显示的是最后已知状态" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "오프라인 — 마지막으로 확인된 상태 표시 중" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "オフライン — 最後の状態を表示中" + } + } + } + }, + "machines.offline.subtitle": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Cloud machines load when this Mac is back online." + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Cloud-Maschinen werden geladen, sobald dieser Mac wieder online ist." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Les machines Cloud se chargeront dès que ce Mac sera de nouveau en ligne." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "سيتم تحميل الأجهزة السحابية عندما يعود جهاز Mac هذا إلى الاتصال بالإنترنت." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Las máquinas en la nube se cargarán cuando este Mac vuelva a estar en línea." + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "這台 Mac 恢復連線後,就會載入雲端機器。" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "这台 Mac 恢复联网后,就会加载云端机器。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "이 Mac이 다시 온라인 상태가 되면 클라우드 머신을 불러옵니다." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "この Mac がオンラインに戻ると Cloud マシンを読み込みます。" + } + } + } + }, + "machines.offline.title": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Waiting for network" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Warte auf Netzwerk" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "En attente du réseau" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "في انتظار الشبكة" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Esperando la red" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "正在等待網路" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "正在等待网络" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "네트워크 대기 중" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ネットワークを待機中" + } + } + } + }, + "machines.reconnecting.title": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Reconnecting to Cloud…" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Verbindung zur Cloud wird wiederhergestellt…" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Reconnexion au Cloud…" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "جارٍ إعادة الاتصال بالسحابة…" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Reconectando con la nube…" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "正在重新連線至雲端…" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "正在重新连接云端…" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "클라우드에 다시 연결하는 중…" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "クラウドに再接続中…" + } + } + } + }, "markdown.copyConfirm.html": { "extractionState": "manual", "localizations": { @@ -546330,14 +546993,54 @@ "value": "Workspace Color: %@" } }, - "de": {"stringUnit": {"state": "translated", "value": "Arbeitsbereichfarbe: %@"}}, - "fr": {"stringUnit": {"state": "translated", "value": "Couleur de l’espace de travail : %@"}}, - "ar": {"stringUnit": {"state": "translated", "value": "لون مساحة العمل: %@"}}, - "es": {"stringUnit": {"state": "translated", "value": "Color del espacio de trabajo: %@"}}, - "zh-Hant": {"stringUnit": {"state": "translated", "value": "工作區顏色:%@"}}, - "zh-Hans": {"stringUnit": {"state": "translated", "value": "工作区颜色:%@"}}, - "ko": {"stringUnit": {"state": "translated", "value": "작업 공간 색상: %@"}}, - "ja": {"stringUnit": {"state": "translated", "value": "ワークスペースの色: %@"}} + "de": { + "stringUnit": { + "state": "translated", + "value": "Arbeitsbereichfarbe: %@" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Couleur de l’espace de travail : %@" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "لون مساحة العمل: %@" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Color del espacio de trabajo: %@" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "工作區顏色:%@" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "工作区颜色:%@" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "작업 공간 색상: %@" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ワークスペースの色: %@" + } + } } }, "fileExplorer.preview.failedTitle": { @@ -547291,124 +547994,6 @@ } } }, - "settings.terminal.predictiveLocalEcho": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Predictive Local Echo" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Vorausschauendes lokales Echo" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Écho local prédictif" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "الصدى المحلي التنبؤي" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Eco local predictivo" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "預測性本機回顯" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "预测性本地回显" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "예측 로컬 에코" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "予測ローカルエコー" - } - } - } - }, - "settings.search.alias.setting.terminal.predictive-local-echo": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "terminal.predictiveLocalEcho predictive local echo typing latency lag ssh remote speculative mosh round trip underline" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "terminal.predictiveLocalEcho vorausschauendes lokales echo tippen latenz verzögerung ssh remote spekulativ mosh round trip unterstrichen" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "terminal.predictiveLocalEcho écho local prédictif saisie latence décalage ssh distant spéculatif mosh aller-retour souligné" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "terminal.predictiveLocalEcho الصدى المحلي التنبؤي الكتابة زمن الاستجابة التأخير ssh بعيد تخميني mosh ذهاب وإياب تسطير" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "terminal.predictiveLocalEcho eco local predictivo escritura latencia retraso ssh remoto especulativo mosh ida y vuelta subrayado" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "terminal.predictiveLocalEcho 預測性本機回顯 輸入 延遲 卡頓 ssh 遠端 推測 mosh 往返 底線" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "terminal.predictiveLocalEcho 预测性本地回显 输入 延迟 卡顿 ssh 远程 推测 mosh 往返 下划线" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "terminal.predictiveLocalEcho 예측 로컬 에코 입력 지연 랙 ssh 원격 추측 mosh 왕복 밑줄" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "terminal.predictiveLocalEcho 予測ローカルエコー 入力 遅延 ラグ ssh リモート 投機的 mosh 往復 下線" - } - } - } - }, "settings.search.alias.setting.terminal.password-input-indicator": { "extractionState": "manual", "localizations": { @@ -561575,6 +562160,131 @@ } } }, + "cli.sshPtyAttach.launchAcknowledgementTimeoutRetry": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux did not acknowledge the SSH launch; retrying %s in %ss." + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux hat den SSH-Start nicht bestätigt; neuer Versuch %s in %ss." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux n’a pas confirmé le démarrage SSH ; nouvelle tentative %s dans %ss." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "[cmux] لم يؤكد cmux بدء SSH؛ ستتم إعادة المحاولة %s خلال %s ث." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux no confirmó el inicio de SSH; reintentando %s en %ss." + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux 未確認 SSH 啟動;將在第 %s 次於 %s 秒後重試。" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux 未确认 SSH 启动;将在第 %s 次于 %s 秒后重试。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux가 SSH 시작을 확인하지 못했습니다. %s번째로 %s초 후 다시 시도합니다." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux が SSH の起動を確認できないため、%s 回目を %s 秒後に再試行します。" + } + }, + "bs": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux nije potvrdio SSH pokretanje; ponovni pokušaj %s za %ss." + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux bekræftede ikke SSH-starten; prøver igen %s om %ss." + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux non ha confermato l’avvio SSH; nuovo tentativo %s tra %ss." + } + }, + "km": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux មិនបានបញ្ជាក់ការចាប់ផ្តើម SSH ទេ; កំពុងព្យាយាមម្តងទៀត %s ក្នុងរយៈពេល %ss។" + } + }, + "nb": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux bekreftet ikke SSH-oppstarten; prøver på nytt %s om %ss." + } + }, + "pl": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux nie potwierdził uruchomienia SSH; ponawianie próby %s za %ss." + } + }, + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "[cmux] o cmux não confirmou o início do SSH; tentando novamente %s em %ss." + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux не подтвердил запуск SSH; повторная попытка %s через %ss." + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux ไม่ยืนยันการเริ่มต้น SSH; กำลังลองใหม่ครั้งที่ %s ในอีก %s วินาที" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux SSH başlatmasını onaylamadı; %s saniye içinde %s. deneme yapılıyor." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "[cmux] cmux не підтвердив запуск SSH; повторна спроба %s через %s с." + } + } + } + }, "devices.discovery.settingsDisabled": { "extractionState": "manual", "localizations": { @@ -563345,1540 +564055,1490 @@ } } }, - "cloudTree.group.cloudMachines": { + "settings.automation.pi": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud Machines" + "value": "Pi Integration" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Cloud-Maschinen" + "value": "تكامل Pi" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Machines cloud" + "value": "Pi-Integration" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "أجهزة سحابية" + "value": "Integración de Pi" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "Máquinas en la nube" + "value": "Intégration de Pi" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "雲端機器" + "value": "Pi連携" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "云端机器" + "value": "Pi 연동" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "클라우드 머신" + "value": "Pi 集成" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "クラウドマシン" + "value": "Pi 整合" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Mašine u oblaku" + "value": "Pi integracija" } }, "da": { "stringUnit": { "state": "translated", - "value": "Cloud-maskiner" + "value": "Pi-integration" } }, "it": { "stringUnit": { "state": "translated", - "value": "Macchine cloud" + "value": "Integrazione di Pi" } }, "km": { "stringUnit": { "state": "translated", - "value": "ម៉ាស៊ីនលើពពក" + "value": "ការរួមបញ្ចូល Pi" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Skymaskiner" + "value": "Pi-integrasjon" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Maszyny w chmurze" + "value": "Integracja Pi" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Máquinas na nuvem" + "value": "Integração do Pi" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Облачные машины" + "value": "Интеграция Pi" } }, "th": { "stringUnit": { "state": "translated", - "value": "เครื่องคลาวด์" + "value": "การผสานรวม Pi" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Bulut makineleri" + "value": "Pi entegrasyonu" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Хмарні машини" + "value": "Інтеграція Pi" } } } }, - "cloudTree.group.devices": { + "settings.automation.pi.note": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "My Devices" + "value": "When enabled, cmux wraps the pi command and loads its bundled session extension without changing your Pi configuration. Disable if you prefer to manage Pi hooks yourself." } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Meine Geräte" + "value": "عند التفعيل، يغلّف cmux أمر pi ويحمّل امتداد الجلسة المضمّن دون تغيير إعدادات Pi. عطّل هذا الخيار إذا كنت تفضّل إدارة خطافات Pi بنفسك." } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Mes appareils" + "value": "Wenn aktiviert, umhüllt cmux den pi-Befehl und lädt seine gebündelte Sitzungserweiterung, ohne deine Pi-Konfiguration zu ändern. Deaktiviere dies, wenn du die Pi-Hooks selbst verwalten möchtest." } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "أجهزتي" + "value": "Cuando está activado, cmux envuelve el comando pi y carga su extensión de sesión integrada sin cambiar tu configuración de Pi. Desactívalo si prefieres gestionar tú mismo los hooks de Pi." } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "Mis dispositivos" + "value": "Lorsque cette option est activée, cmux encapsule la commande pi et charge son extension de session intégrée sans modifier votre configuration Pi. Désactivez-la si vous préférez gérer les hooks Pi vous-même." } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "我的裝置" + "value": "有効にすると、cmuxはpiコマンドをラップし、Piの設定を変更せずにバンドルされたセッション拡張機能を読み込みます。Piのフックを自分で管理する場合は無効にしてください。" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "我的设备" + "value": "활성화하면 cmux가 pi 명령을 래핑하고 Pi 설정을 변경하지 않고 번들 세션 확장을 로드합니다. Pi 훅을 직접 관리하려면 비활성화하세요." } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "내 기기" + "value": "启用后,cmux 会包装 pi 命令并加载内置会话扩展,不会更改你的 Pi 配置。如果你希望自行管理 Pi 钩子,请禁用此选项。" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "マイデバイス" + "value": "啟用後,cmux 會包裝 pi 指令並載入內建工作階段擴充功能,不會變更你的 Pi 設定。若偏好自行管理 Pi 掛鉤,請停用此選項。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Moji uređaji" + "value": "Kada je omogućeno, cmux obavija naredbu pi i učitava ugrađeno proširenje sesije bez mijenjanja vaše Pi konfiguracije. Onemogućite ako želite sami upravljati Pi kukama." } }, "da": { "stringUnit": { "state": "translated", - "value": "Mine enheder" + "value": "Når funktionen er aktiveret, indpakker cmux pi-kommandoen og indlæser den medfølgende sessionsudvidelse uden at ændre din Pi-konfiguration. Deaktiver den, hvis du selv vil administrere Pi-hooks." } }, "it": { "stringUnit": { "state": "translated", - "value": "I miei dispositivi" + "value": "Quando è abilitata, cmux avvolge il comando pi e carica l'estensione di sessione inclusa senza modificare la configurazione di Pi. Disabilitala se preferisci gestire autonomamente gli hook di Pi." } }, "km": { "stringUnit": { "state": "translated", - "value": "ឧបករណ៍របស់ខ្ញុំ" + "value": "នៅពេលបើកដំណើរការ cmux នឹងរុំពាក្យបញ្ជា pi ហើយផ្ទុកផ្នែកបន្ថែមសម័យដែលភ្ជាប់មកជាមួយ ដោយមិនផ្លាស់ប្តូរការកំណត់ Pi របស់អ្នក។ បិទវា ប្រសិនបើអ្នកចង់គ្រប់គ្រង hooks របស់ Pi ដោយខ្លួនឯង។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Mine enheter" + "value": "Når dette er aktivert, pakker cmux inn pi-kommandoen og laster den medfølgende øktutvidelsen uten å endre Pi-konfigurasjonen din. Deaktiver hvis du vil administrere Pi-hookene selv." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Moje urządzenia" + "value": "Po włączeniu cmux opakuje polecenie pi i załaduje dołączone rozszerzenie sesji bez zmieniania konfiguracji Pi. Wyłącz tę opcję, jeśli wolisz samodzielnie zarządzać hookami Pi." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Meus dispositivos" + "value": "Quando ativado, o cmux envolve o comando pi e carrega a extensão de sessão incluída sem alterar sua configuração do Pi. Desative se preferir gerenciar os hooks do Pi por conta própria." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Мои устройства" + "value": "При включении cmux оборачивает команду pi и загружает встроенное расширение сеанса, не изменяя конфигурацию Pi. Отключите этот параметр, если предпочитаете управлять хуками Pi самостоятельно." } }, "th": { "stringUnit": { "state": "translated", - "value": "อุปกรณ์ของฉัน" + "value": "เมื่อเปิดใช้งาน cmux จะครอบคำสั่ง pi และโหลดส่วนขยายเซสชันที่มาพร้อมกับโปรแกรมโดยไม่เปลี่ยนการตั้งค่า Pi ของคุณ ปิดใช้งานหากต้องการจัดการ hooks ของ Pi เอง" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Cihazlarım" + "value": "Etkinleştirildiğinde cmux, Pi yapılandırmanızı değiştirmeden pi komutunu sarar ve birlikte gelen oturum uzantısını yükler. Pi kancalarını kendiniz yönetmeyi tercih ediyorsanız devre dışı bırakın." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Мої пристрої" + "value": "Якщо ввімкнено, cmux обгортає команду pi й завантажує вбудоване розширення сеансу, не змінюючи конфігурацію Pi. Вимкніть цей параметр, якщо хочете самостійно керувати хуками Pi." } } } }, - "machines.listUnavailable.stale": { + "settings.automation.pi.subtitleOff": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Machine list unavailable — showing last known" + "value": "Pi runs without cmux integration." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "يعمل Pi بدون تكامل cmux." } }, "de": { "stringUnit": { "state": "translated", - "value": "Maschinenliste nicht verfügbar – zeige letzten bekannten Stand" + "value": "Pi läuft ohne cmux-Integration." } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "Liste des machines indisponible — affichage des dernières informations connues" + "value": "Pi se ejecuta sin integración con cmux." } }, - "ar": { + "fr": { "stringUnit": { "state": "translated", - "value": "قائمة الأجهزة غير متاحة — يتم عرض آخر حالة معروفة" + "value": "Pi s’exécute sans intégration cmux." } }, - "es": { + "ja": { "stringUnit": { "state": "translated", - "value": "Lista de máquinas no disponible — se muestra el último estado conocido" + "value": "Piはcmux連携なしで実行されます。" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "無法取得機器清單 — 顯示上次已知的狀態" + "value": "Pi가 cmux 연동 없이 실행됩니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "机器列表不可用 —— 显示的是最后已知状态" + "value": "Pi 在没有 cmux 集成的情况下运行。" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "머신 목록을 사용할 수 없음 — 마지막으로 확인된 상태 표시 중" + "value": "Pi 會在不使用 cmux 整合的情況下執行。" } }, - "ja": { + "bs": { "stringUnit": { "state": "translated", - "value": "マシン一覧を取得できません — 最後の状態を表示中" + "value": "Pi radi bez cmux integracije." } - } - } - }, - "machines.listUnavailable.subtitle": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Your machines are unchanged. cmux couldn’t load the list from the Cloud service and retries on its own." + "value": "Pi kører uden cmux-integration." } }, - "de": { + "it": { "stringUnit": { "state": "translated", - "value": "Deine Maschinen sind unverändert. cmux konnte die Liste nicht vom Cloud-Dienst laden und versucht es selbstständig erneut." + "value": "Pi viene eseguito senza l'integrazione con cmux." } }, - "fr": { + "km": { "stringUnit": { "state": "translated", - "value": "Vos machines ne sont pas modifiées. cmux n’a pas pu charger la liste depuis le service Cloud et va réessayer automatiquement." + "value": "Pi ដំណើរការដោយគ្មានការរួមបញ្ចូល cmux។" } }, - "ar": { + "nb": { "stringUnit": { "state": "translated", - "value": "لم تتغير أجهزتك. تعذر على cmux تحميل القائمة من الخدمة السحابية، وسيعيد المحاولة تلقائيًا." + "value": "Pi kjører uten cmux-integrasjon." } }, - "es": { + "pl": { "stringUnit": { "state": "translated", - "value": "Tus máquinas no han cambiado. cmux no pudo cargar la lista desde el servicio de la nube y volverá a intentarlo automáticamente." + "value": "Pi działa bez integracji z cmux." } }, - "zh-Hant": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "您的機器沒有任何變動。cmux 無法從雲端服務載入清單,會自動重試。" + "value": "O Pi é executado sem a integração com o cmux." } }, - "zh-Hans": { + "ru": { "stringUnit": { "state": "translated", - "value": "你的机器没有任何变化。cmux 无法从云端服务加载列表,会自动重试。" + "value": "Pi работает без интеграции с cmux." } }, - "ko": { + "th": { "stringUnit": { "state": "translated", - "value": "머신은 변경되지 않았습니다. cmux가 클라우드 서비스에서 목록을 불러오지 못했으며 자동으로 다시 시도합니다." + "value": "Pi ทำงานโดยไม่มีการผสานรวมกับ cmux" } }, - "ja": { + "tr": { "stringUnit": { "state": "translated", - "value": "マシンは変更されていません。cmux はクラウドサービスから一覧を読み込めませんでした。自動的に再試行します。" + "value": "Pi, cmux entegrasyonu olmadan çalışır." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Pi працює без інтеграції з cmux." } } } }, - "machines.listUnavailable.title": { + "settings.automation.pi.subtitleOn": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Can’t load the machine list" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Maschinenliste kann nicht geladen werden" + "value": "Sidebar shows Pi session status and notifications." } }, - "fr": { + "ar": { "stringUnit": { "state": "translated", - "value": "Impossible de charger la liste des machines" + "value": "يعرض الشريط الجانبي حالة جلسة Pi والإشعارات." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "تعذر تحميل قائمة الأجهزة" + "value": "Die Seitenleiste zeigt den Pi-Sitzungsstatus und Benachrichtigungen an." } }, "es": { "stringUnit": { "state": "translated", - "value": "No se puede cargar la lista de máquinas" + "value": "La barra lateral muestra el estado de la sesión de Pi y las notificaciones." } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "無法載入機器清單" + "value": "La barre latérale affiche le statut de la session Pi et les notifications." } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "无法加载机器列表" + "value": "サイドバーにPiセッションのステータスと通知が表示されます。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "머신 목록을 불러올 수 없습니다" + "value": "사이드바에 Pi 세션 상태와 알림이 표시됩니다." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "マシン一覧を読み込めません" - } - } - } - }, - "machines.offline.stale": { - "extractionState": "manual", - "localizations": { - "en": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Offline — showing last known" + "value": "侧边栏显示 Pi 会话状态和通知。" } }, - "de": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Offline – zeige letzten bekannten Stand" + "value": "側邊欄顯示 Pi 工作階段狀態和通知。" } }, - "fr": { + "bs": { "stringUnit": { "state": "translated", - "value": "Hors ligne — affichage des dernières informations connues" + "value": "Bočna traka prikazuje status Pi sesije i obavijesti." } }, - "ar": { + "da": { "stringUnit": { "state": "translated", - "value": "غير متصل — يتم عرض آخر حالة معروفة" + "value": "Sidepanelet viser Pi-sessionens status og notifikationer." } }, - "es": { + "it": { "stringUnit": { "state": "translated", - "value": "Sin conexión — se muestra el último estado conocido" + "value": "La barra laterale mostra lo stato della sessione Pi e le notifiche." } }, - "zh-Hant": { + "km": { "stringUnit": { "state": "translated", - "value": "離線 — 顯示上次已知的狀態" + "value": "របារចំហៀងបង្ហាញស្ថានភាពសម័យ Pi និងការជូនដំណឹង។" } }, - "zh-Hans": { + "nb": { "stringUnit": { "state": "translated", - "value": "离线 —— 显示的是最后已知状态" + "value": "Sidepanelet viser status og varsler for Pi-økten." } }, - "ko": { + "pl": { "stringUnit": { "state": "translated", - "value": "오프라인 — 마지막으로 확인된 상태 표시 중" + "value": "Pasek boczny pokazuje stan sesji Pi i powiadomienia." } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "オフライン — 最後の状態を表示中" - } - } - } - }, - "machines.offline.subtitle": { - "extractionState": "manual", - "localizations": { - "en": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Cloud machines load when this Mac is back online." + "value": "A barra lateral mostra o status da sessão do Pi e as notificações." } }, - "de": { + "ru": { "stringUnit": { "state": "translated", - "value": "Cloud-Maschinen werden geladen, sobald dieser Mac wieder online ist." + "value": "На боковой панели отображаются состояние сеанса Pi и уведомления." } }, - "fr": { + "th": { "stringUnit": { "state": "translated", - "value": "Les machines Cloud se chargeront dès que ce Mac sera de nouveau en ligne." + "value": "แถบด้านข้างจะแสดงสถานะเซสชัน Pi และการแจ้งเตือน" } }, - "ar": { + "tr": { "stringUnit": { "state": "translated", - "value": "سيتم تحميل الأجهزة السحابية عندما يعود جهاز Mac هذا إلى الاتصال بالإنترنت." + "value": "Kenar çubuğu, Pi oturumunun durumunu ve bildirimleri gösterir." } }, - "es": { + "uk": { "stringUnit": { "state": "translated", - "value": "Las máquinas en la nube se cargarán cuando este Mac vuelva a estar en línea." + "value": "Бічна панель показує стан сеансу Pi та сповіщення." } - }, - "zh-Hant": { + } + } + }, + "settings.search.alias.setting.automation.pi": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "這台 Mac 恢復連線後,就會載入雲端機器。" + "value": "automation.piIntegration pi hooks agent integration status notifications" } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "这台 Mac 恢复联网后,就会加载云端机器。" + "value": "automation.piIntegration تكامل Pi خطافات وكيل حالة إشعارات" } }, - "ko": { + "bs": { "stringUnit": { "state": "translated", - "value": "이 Mac이 다시 온라인 상태가 되면 클라우드 머신을 불러옵니다." + "value": "automation.piIntegration Pi kukice integracija agenta status obavijesti" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "この Mac がオンラインに戻ると Cloud マシンを読み込みます。" - } - } - } - }, - "machines.offline.title": { - "extractionState": "manual", - "localizations": { - "en": { + "da": { "stringUnit": { "state": "translated", - "value": "Waiting for network" + "value": "automation.piIntegration Pi-hooks agentintegration status notifikationer" } }, "de": { "stringUnit": { "state": "translated", - "value": "Warte auf Netzwerk" + "value": "automation.piIntegration Pi Hooks Agent Integration Status Benachrichtigungen" } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "En attente du réseau" + "value": "automation.piIntegration Pi hooks integración de agente estado notificaciones" } }, - "ar": { + "fr": { "stringUnit": { "state": "translated", - "value": "في انتظار الشبكة" + "value": "automation.piIntegration Pi hooks intégration agent état notifications" } }, - "es": { + "it": { "stringUnit": { "state": "translated", - "value": "Esperando la red" + "value": "automation.piIntegration hook Pi integrazione agente stato notifiche" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "正在等待網路" + "value": "automation.piIntegration Pi フック エージェント連携 ステータス 通知" } }, - "zh-Hans": { + "km": { "stringUnit": { "state": "translated", - "value": "正在等待网络" + "value": "automation.piIntegration hooks Pi ការរួមបញ្ចូលភ្នាក់ងារ ស្ថានភាព ការជូនដំណឹង" } }, "ko": { "stringUnit": { "state": "translated", - "value": "네트워크 대기 중" + "value": "automation.piIntegration Pi 훅 에이전트 연동 상태 알림" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ネットワークを待機中" - } - } - } - }, - "machines.reconnecting.title": { - "extractionState": "manual", - "localizations": { - "en": { + "nb": { "stringUnit": { "state": "translated", - "value": "Reconnecting to Cloud…" + "value": "automation.piIntegration Pi-hook agentintegrasjon status varsler" } }, - "de": { + "pl": { "stringUnit": { "state": "translated", - "value": "Verbindung zur Cloud wird wiederhergestellt…" + "value": "automation.piIntegration hooki Pi integracja agenta stan powiadomienia" } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Reconnexion au Cloud…" + "value": "automation.piIntegration hooks do Pi integração do agente status notificações" } }, - "ar": { + "ru": { "stringUnit": { "state": "translated", - "value": "جارٍ إعادة الاتصال بالسحابة…" + "value": "automation.piIntegration хуки Pi интеграция агента состояние уведомления" } }, - "es": { + "th": { "stringUnit": { "state": "translated", - "value": "Reconectando con la nube…" + "value": "automation.piIntegration hooks ของ Pi การผสานรวมเอเจนต์ สถานะ การแจ้งเตือน" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "正在重新連線至雲端…" + "value": "automation.piIntegration Pi kancaları aracı entegrasyonu durum bildirimler" } }, - "zh-Hans": { + "uk": { "stringUnit": { "state": "translated", - "value": "正在重新连接云端…" + "value": "automation.piIntegration хуки Pi інтеграція агента стан сповіщення" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "클라우드에 다시 연결하는 중…" + "value": "automation.piIntegration Pi 钩子 代理集成 状态 通知" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "クラウドに再接続中…" + "value": "automation.piIntegration Pi 掛鉤 代理程式整合 狀態 通知" } } } }, - "devices.link.error.notDiscoverable": { + "cli.hooks.setup.wrapperNote": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "This Mac isn’t discoverable. On that Mac, turn on “Make this Mac discoverable” in Settings › Devices." + "value": " (Claude Code and Pi hooks are injected automatically via their cmux wrappers)" } }, "ar": { "stringUnit": { "state": "translated", - "value": "جهاز Mac هذا غير قابل للاكتشاف. على ذلك الجهاز، فعّل «جعل جهاز Mac هذا قابلاً للاكتشاف» في الإعدادات › الأجهزة." + "value": " (يتم حقن خطافات Claude Code وPi تلقائيًا عبر أغلفة cmux)" } }, - "de": { + "bs": { "stringUnit": { "state": "translated", - "value": "Dieser Mac ist nicht auffindbar. Aktiviere auf diesem Mac unter „Einstellungen › Geräte“ die Option „Diesen Mac auffindbar machen“." + "value": " (Claude Code i Pi kukice se automatski ubacuju putem cmux omotača)" } }, - "es": { + "da": { "stringUnit": { "state": "translated", - "value": "Este Mac no es detectable. En ese Mac, activa «Hacer que este Mac sea detectable» en Ajustes › Dispositivos." + "value": " (Claude Code- og Pi-hooks indsættes automatisk via deres cmux-wrappere)" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Ce Mac n’est pas détectable. Sur ce Mac, activez « Rendre ce Mac détectable » dans Réglages › Appareils." + "value": " (Claude-Code- und Pi-Hooks werden automatisch über ihre cmux-Wrapper eingefügt)" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "このMacは検出可能になっていません。そのMacの「設定 › デバイス」で「このMacを検出可能にする」をオンにしてください。" + "value": " (Los hooks de Claude Code y Pi se inyectan automáticamente mediante sus wrappers de cmux)" } }, - "ko": { + "fr": { "stringUnit": { "state": "translated", - "value": "이 Mac을 검색할 수 없습니다. 해당 Mac의 설정 › 기기에서 “이 Mac을 검색할 수 있도록 설정”을 켜세요." + "value": " (Les hooks de Claude Code et Pi sont injectés automatiquement par leurs wrappers cmux)" } }, - "zh-Hans": { + "it": { "stringUnit": { "state": "translated", - "value": "这台 Mac 无法被发现。请在该 Mac 的“设置 › 设备”中开启“允许发现此 Mac”。" + "value": " (Gli hook di Claude Code e Pi vengono iniettati automaticamente tramite i rispettivi wrapper cmux)" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "這部 Mac 無法被探索。請在該 Mac 的「設定 › 裝置」中開啟「允許探索此 Mac」。" + "value": " (Claude Code と Pi のフックは cmux ラッパーによって自動的に注入されます)" } }, - "bs": { + "km": { "stringUnit": { "state": "translated", - "value": "Ovaj Mac nije vidljiv. Na tom Macu uključite „Učini ovaj Mac vidljivim” u Postavke › Uređaji." + "value": " (hooks របស់ Claude Code និង Pi ត្រូវបានបញ្ចូលដោយស្វ័យប្រវត្តិតាមរយៈ wrapper របស់ cmux)" } }, - "da": { + "ko": { "stringUnit": { "state": "translated", - "value": "Denne Mac kan ikke findes. Slå “Gør denne Mac synlig” til på den Mac under Indstillinger › Enheder." + "value": " (Claude Code 및 Pi 훅은 cmux 래퍼를 통해 자동으로 주입됩니다)" } }, - "it": { + "nb": { "stringUnit": { "state": "translated", - "value": "Questo Mac non è individuabile. Su quel Mac, attiva “Rendi individuabile questo Mac” in Impostazioni › Dispositivi." + "value": " (Claude Code- og Pi-hooker settes inn automatisk via cmux-innpakningene)" } }, - "km": { + "pl": { "stringUnit": { "state": "translated", - "value": "Mac នេះមិនអាចរកឃើញបានទេ។ នៅលើ Mac នោះ សូមបើក “ធ្វើឲ្យ Mac នេះអាចរកឃើញ” ក្នុងការកំណត់ › ឧបករណ៍។" + "value": " (Hooki Claude Code i Pi są automatycznie wstrzykiwane przez ich opakowania cmux)" } }, - "nb": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Denne Macen er ikke synlig. Slå på «Gjør denne Macen synlig» på den Macen under Innstillinger › Enheter." + "value": " (Os hooks do Claude Code e do Pi são injetados automaticamente pelos respectivos wrappers do cmux)" } }, - "pl": { + "ru": { "stringUnit": { "state": "translated", - "value": "Ten Mac nie jest wykrywalny. Na tym Macu włącz „Uczyń ten Mac wykrywalnym” w Ustawienia › Urządzenia." + "value": " (Хуки Claude Code и Pi автоматически внедряются их оболочками cmux)" } }, - "pt-BR": { + "th": { "stringUnit": { "state": "translated", - "value": "Este Mac não está detectável. Nesse Mac, ative “Tornar este Mac detectável” em Ajustes › Dispositivos." + "value": " (hooks ของ Claude Code และ Pi จะถูกฉีดโดยอัตโนมัติผ่าน wrapper ของ cmux)" } }, - "ru": { + "tr": { "stringUnit": { "state": "translated", - "value": "Этот Mac недоступен для обнаружения. На том Mac включите «Сделать этот Mac доступным для обнаружения» в разделе Настройки › Устройства." + "value": " (Claude Code ve Pi kancaları, cmux sarmalayıcıları aracılığıyla otomatik olarak eklenir)" } }, - "th": { + "uk": { "stringUnit": { "state": "translated", - "value": "Mac เครื่องนี้ไม่สามารถค้นพบได้ บน Mac เครื่องนั้น ให้เปิด “ทำให้ Mac เครื่องนี้ค้นพบได้” ในการตั้งค่า › อุปกรณ์" + "value": " (Хуки Claude Code і Pi автоматично додаються їхніми обгортками cmux)" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Bu Mac keşfedilebilir değil. O Mac’te Ayarlar › Cihazlar bölümünden “Bu Mac’i keşfedilebilir yap” seçeneğini açın." + "value": " (Claude Code 和 Pi 的钩子会通过各自的 cmux 包装器自动注入)" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Цей Mac недоступний для виявлення. На тому Mac увімкніть «Зробити цей Mac доступним для виявлення» у розділі Налаштування › Пристрої." + "value": " (Claude Code 和 Pi 的掛鉤會透過各自的 cmux 包裝器自動注入)" } } } }, - "settings.automation.pi": { + "devices.link.error.notDiscoverable": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Pi Integration" + "value": "This Mac isn’t discoverable. On that Mac, turn on “Make this Mac discoverable” in Settings › Devices." } }, "ar": { "stringUnit": { "state": "translated", - "value": "تكامل Pi" + "value": "جهاز Mac هذا غير قابل للاكتشاف. على ذلك الجهاز، فعّل «جعل جهاز Mac هذا قابلاً للاكتشاف» في الإعدادات › الأجهزة." } }, "de": { "stringUnit": { "state": "translated", - "value": "Pi-Integration" + "value": "Dieser Mac ist nicht auffindbar. Aktiviere auf diesem Mac unter „Einstellungen › Geräte“ die Option „Diesen Mac auffindbar machen“." } }, "es": { "stringUnit": { "state": "translated", - "value": "Integración de Pi" + "value": "Este Mac no es detectable. En ese Mac, activa «Hacer que este Mac sea detectable» en Ajustes › Dispositivos." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Intégration de Pi" + "value": "Ce Mac n’est pas détectable. Sur ce Mac, activez « Rendre ce Mac détectable » dans Réglages › Appareils." } }, "ja": { "stringUnit": { "state": "translated", - "value": "Pi連携" + "value": "このMacは検出可能になっていません。そのMacの「設定 › デバイス」で「このMacを検出可能にする」をオンにしてください。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Pi 연동" + "value": "이 Mac을 검색할 수 없습니다. 해당 Mac의 설정 › 기기에서 “이 Mac을 검색할 수 있도록 설정”을 켜세요." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Pi 集成" + "value": "这台 Mac 无法被发现。请在该 Mac 的“设置 › 设备”中开启“允许发现此 Mac”。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Pi 整合" + "value": "這部 Mac 無法被探索。請在該 Mac 的「設定 › 裝置」中開啟「允許探索此 Mac」。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Pi integracija" + "value": "Ovaj Mac nije vidljiv. Na tom Macu uključite „Učini ovaj Mac vidljivim” u Postavke › Uređaji." } }, "da": { "stringUnit": { "state": "translated", - "value": "Pi-integration" + "value": "Denne Mac kan ikke findes. Slå “Gør denne Mac synlig” til på den Mac under Indstillinger › Enheder." } }, "it": { "stringUnit": { "state": "translated", - "value": "Integrazione di Pi" + "value": "Questo Mac non è individuabile. Su quel Mac, attiva “Rendi individuabile questo Mac” in Impostazioni › Dispositivi." } }, "km": { "stringUnit": { "state": "translated", - "value": "ការរួមបញ្ចូល Pi" + "value": "Mac នេះមិនអាចរកឃើញបានទេ។ នៅលើ Mac នោះ សូមបើក “ធ្វើឲ្យ Mac នេះអាចរកឃើញ” ក្នុងការកំណត់ › ឧបករណ៍។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Pi-integrasjon" + "value": "Denne Macen er ikke synlig. Slå på «Gjør denne Macen synlig» på den Macen under Innstillinger › Enheter." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Integracja Pi" + "value": "Ten Mac nie jest wykrywalny. Na tym Macu włącz „Uczyń ten Mac wykrywalnym” w Ustawienia › Urządzenia." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Integração do Pi" + "value": "Este Mac não está detectável. Nesse Mac, ative “Tornar este Mac detectável” em Ajustes › Dispositivos." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Интеграция Pi" + "value": "Этот Mac недоступен для обнаружения. На том Mac включите «Сделать этот Mac доступным для обнаружения» в разделе Настройки › Устройства." } }, "th": { "stringUnit": { "state": "translated", - "value": "การผสานรวม Pi" + "value": "Mac เครื่องนี้ไม่สามารถค้นพบได้ บน Mac เครื่องนั้น ให้เปิด “ทำให้ Mac เครื่องนี้ค้นพบได้” ในการตั้งค่า › อุปกรณ์" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Pi entegrasyonu" + "value": "Bu Mac keşfedilebilir değil. O Mac’te Ayarlar › Cihazlar bölümünden “Bu Mac’i keşfedilebilir yap” seçeneğini açın." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Інтеграція Pi" + "value": "Цей Mac недоступний для виявлення. На тому Mac увімкніть «Зробити цей Mac доступним для виявлення» у розділі Налаштування › Пристрої." } } } }, - "settings.automation.pi.note": { + "cli.auth.status.teamNotLoaded": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "When enabled, cmux wraps the pi command and loads its bundled session extension without changing your Pi configuration. Disable if you prefer to manage Pi hooks yourself." + "value": " team: not loaded" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "عند التفعيل، يغلّف cmux أمر pi ويحمّل امتداد الجلسة المضمّن دون تغيير إعدادات Pi. عطّل هذا الخيار إذا كنت تفضّل إدارة خطافات Pi بنفسك." + "value": " チーム: 未読み込み" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Wenn aktiviert, umhüllt cmux den pi-Befehl und lädt seine gebündelte Sitzungserweiterung, ohne deine Pi-Konfiguration zu ändern. Deaktiviere dies, wenn du die Pi-Hooks selbst verwalten möchtest." + "value": " 团队: 未加载" } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "Cuando está activado, cmux envuelve el comando pi y carga su extensión de sesión integrada sin cambiar tu configuración de Pi. Desactívalo si prefieres gestionar tú mismo los hooks de Pi." + "value": " Team: nicht geladen" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Lorsque cette option est activée, cmux encapsule la commande pi et charge son extension de session intégrée sans modifier votre configuration Pi. Désactivez-la si vous préférez gérer les hooks Pi vous-même." + "value": " équipe: non chargée" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "有効にすると、cmuxはpiコマンドをラップし、Piの設定を変更せずにバンドルされたセッション拡張機能を読み込みます。Piのフックを自分で管理する場合は無効にしてください。" + "value": " الفريق: لم يتم تحميله" } }, - "ko": { + "es": { "stringUnit": { "state": "translated", - "value": "활성화하면 cmux가 pi 명령을 래핑하고 Pi 설정을 변경하지 않고 번들 세션 확장을 로드합니다. Pi 훅을 직접 관리하려면 비활성화하세요." + "value": " equipo: no cargado" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "启用后,cmux 会包装 pi 命令并加载内置会话扩展,不会更改你的 Pi 配置。如果你希望自行管理 Pi 钩子,请禁用此选项。" + "value": " 團隊: 未載入" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "啟用後,cmux 會包裝 pi 指令並載入內建工作階段擴充功能,不會變更你的 Pi 設定。若偏好自行管理 Pi 掛鉤,請停用此選項。" + "value": " 팀: 로드되지 않음" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Kada je omogućeno, cmux obavija naredbu pi i učitava ugrađeno proširenje sesije bez mijenjanja vaše Pi konfiguracije. Onemogućite ako želite sami upravljati Pi kukama." + "value": " tim: nije učitan" } }, "da": { "stringUnit": { "state": "translated", - "value": "Når funktionen er aktiveret, indpakker cmux pi-kommandoen og indlæser den medfølgende sessionsudvidelse uden at ændre din Pi-konfiguration. Deaktiver den, hvis du selv vil administrere Pi-hooks." + "value": " team: ikke indlæst" } }, "it": { "stringUnit": { "state": "translated", - "value": "Quando è abilitata, cmux avvolge il comando pi e carica l'estensione di sessione inclusa senza modificare la configurazione di Pi. Disabilitala se preferisci gestire autonomamente gli hook di Pi." + "value": " team: non caricato" } }, "km": { "stringUnit": { "state": "translated", - "value": "នៅពេលបើកដំណើរការ cmux នឹងរុំពាក្យបញ្ជា pi ហើយផ្ទុកផ្នែកបន្ថែមសម័យដែលភ្ជាប់មកជាមួយ ដោយមិនផ្លាស់ប្តូរការកំណត់ Pi របស់អ្នក។ បិទវា ប្រសិនបើអ្នកចង់គ្រប់គ្រង hooks របស់ Pi ដោយខ្លួនឯង។" + "value": " ក្រុម៖ មិនទាន់បានផ្ទុក" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Når dette er aktivert, pakker cmux inn pi-kommandoen og laster den medfølgende øktutvidelsen uten å endre Pi-konfigurasjonen din. Deaktiver hvis du vil administrere Pi-hookene selv." + "value": " team: ikke lastet" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Po włączeniu cmux opakuje polecenie pi i załaduje dołączone rozszerzenie sesji bez zmieniania konfiguracji Pi. Wyłącz tę opcję, jeśli wolisz samodzielnie zarządzać hookami Pi." + "value": " zespół: nie załadowano" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Quando ativado, o cmux envolve o comando pi e carrega a extensão de sessão incluída sem alterar sua configuração do Pi. Desative se preferir gerenciar os hooks do Pi por conta própria." + "value": " equipe: não carregada" } }, "ru": { "stringUnit": { "state": "translated", - "value": "При включении cmux оборачивает команду pi и загружает встроенное расширение сеанса, не изменяя конфигурацию Pi. Отключите этот параметр, если предпочитаете управлять хуками Pi самостоятельно." + "value": " команда: не загружена" } }, "th": { "stringUnit": { "state": "translated", - "value": "เมื่อเปิดใช้งาน cmux จะครอบคำสั่ง pi และโหลดส่วนขยายเซสชันที่มาพร้อมกับโปรแกรมโดยไม่เปลี่ยนการตั้งค่า Pi ของคุณ ปิดใช้งานหากต้องการจัดการ hooks ของ Pi เอง" + "value": " ทีม: ยังไม่ได้โหลด" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Etkinleştirildiğinde cmux, Pi yapılandırmanızı değiştirmeden pi komutunu sarar ve birlikte gelen oturum uzantısını yükler. Pi kancalarını kendiniz yönetmeyi tercih ediyorsanız devre dışı bırakın." + "value": " ekip: yüklenmedi" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Якщо ввімкнено, cmux обгортає команду pi й завантажує вбудоване розширення сеансу, не змінюючи конфігурацію Pi. Вимкніть цей параметр, якщо хочете самостійно керувати хуками Pi." + "value": " команда: не завантажена" } } } }, - "settings.automation.pi.subtitleOff": { + "cli.auth.status.teamNotLoadedRetrying": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Pi runs without cmux integration." + "value": " team: not loaded (retrying)" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "يعمل Pi بدون تكامل cmux." + "value": " チーム: 未読み込み(再試行中)" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Pi läuft ohne cmux-Integration." + "value": " 团队: 未加载(正在重试)" } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "Pi se ejecuta sin integración con cmux." + "value": " Team: nicht geladen (wird erneut versucht)" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Pi s’exécute sans intégration cmux." + "value": " équipe: non chargée (nouvel essai)" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "Piはcmux連携なしで実行されます。" + "value": " الفريق: لم يتم تحميله (جارٍ إعادة المحاولة)" } }, - "ko": { + "es": { "stringUnit": { "state": "translated", - "value": "Pi가 cmux 연동 없이 실행됩니다." + "value": " equipo: no cargado (reintentando)" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Pi 在没有 cmux 集成的情况下运行。" + "value": " 團隊: 未載入(重試中)" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "Pi 會在不使用 cmux 整合的情況下執行。" + "value": " 팀: 로드되지 않음 (재시도 중)" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Pi radi bez cmux integracije." + "value": " tim: nije učitan (ponovni pokušaj)" } }, "da": { "stringUnit": { "state": "translated", - "value": "Pi kører uden cmux-integration." + "value": " team: ikke indlæst (prøver igen)" } }, "it": { "stringUnit": { "state": "translated", - "value": "Pi viene eseguito senza l'integrazione con cmux." + "value": " team: non caricato (nuovo tentativo)" } }, "km": { "stringUnit": { "state": "translated", - "value": "Pi ដំណើរការដោយគ្មានការរួមបញ្ចូល cmux។" + "value": " ក្រុម៖ មិនទាន់បានផ្ទុក (កំពុងព្យាយាមម្ដងទៀត)" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Pi kjører uten cmux-integrasjon." + "value": " team: ikke lastet (prøver igjen)" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Pi działa bez integracji z cmux." + "value": " zespół: nie załadowano (ponawianie próby)" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "O Pi é executado sem a integração com o cmux." + "value": " equipe: não carregada (tentando novamente)" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Pi работает без интеграции с cmux." + "value": " команда: не загружена (повторная попытка)" } }, "th": { "stringUnit": { "state": "translated", - "value": "Pi ทำงานโดยไม่มีการผสานรวมกับ cmux" + "value": " ทีม: ยังไม่ได้โหลด (กำลังลองอีกครั้ง)" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Pi, cmux entegrasyonu olmadan çalışır." + "value": " ekip: yüklenmedi (yeniden deneniyor)" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Pi працює без інтеграції з cmux." + "value": " команда: не завантажена (повторна спроба)" } } } }, - "settings.automation.pi.subtitleOn": { + "mobile.pairing.error.teamUnavailable": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Sidebar shows Pi session status and notifications." + "value": "Could not load your cmux team. Check your internet connection, then try again." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "يعرض الشريط الجانبي حالة جلسة Pi والإشعارات." + "value": "cmux チームを読み込めませんでした。インターネット接続を確認してから、もう一度お試しください。" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Die Seitenleiste zeigt den Pi-Sitzungsstatus und Benachrichtigungen an." + "value": "无法加载你的 cmux 团队。请检查网络连接,然后重试。" } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "La barra lateral muestra el estado de la sesión de Pi y las notificaciones." + "value": "Dein cmux-Team konnte nicht geladen werden. Prüfe deine Internetverbindung und versuche es erneut." } }, "fr": { "stringUnit": { "state": "translated", - "value": "La barre latérale affiche le statut de la session Pi et les notifications." + "value": "Impossible de charger votre équipe cmux. Vérifiez votre connexion Internet, puis réessayez." } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "サイドバーにPiセッションのステータスと通知が表示されます。" + "value": "تعذّر تحميل فريق cmux الخاص بك. تحقّق من اتصالك بالإنترنت، ثم حاول مرة أخرى." } }, - "ko": { + "es": { "stringUnit": { "state": "translated", - "value": "사이드바에 Pi 세션 상태와 알림이 표시됩니다." + "value": "No se pudo cargar tu equipo de cmux. Comprueba tu conexión a internet e inténtalo de nuevo." } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "侧边栏显示 Pi 会话状态和通知。" + "value": "無法載入你的 cmux 團隊。請檢查網路連線,然後再試一次。" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "側邊欄顯示 Pi 工作階段狀態和通知。" + "value": "cmux 팀을 불러올 수 없습니다. 인터넷 연결을 확인한 후 다시 시도하세요." } }, "bs": { "stringUnit": { "state": "translated", - "value": "Bočna traka prikazuje status Pi sesije i obavijesti." + "value": "Nije moguće učitati vaš cmux tim. Provjerite internetsku vezu i pokušajte ponovo." } }, "da": { "stringUnit": { "state": "translated", - "value": "Sidepanelet viser Pi-sessionens status og notifikationer." + "value": "Din cmux-team kunne ikke indlæses. Kontrollér din internetforbindelse, og prøv igen." } }, "it": { "stringUnit": { "state": "translated", - "value": "La barra laterale mostra lo stato della sessione Pi e le notifiche." + "value": "Impossibile caricare il tuo team cmux. Controlla la connessione Internet e riprova." } }, "km": { "stringUnit": { "state": "translated", - "value": "របារចំហៀងបង្ហាញស្ថានភាពសម័យ Pi និងការជូនដំណឹង។" + "value": "មិនអាចផ្ទុកក្រុម cmux របស់អ្នកបានទេ។ សូមពិនិត្យការតភ្ជាប់អ៊ីនធឺណិត ហើយព្យាយាមម្ដងទៀត។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Sidepanelet viser status og varsler for Pi-økten." + "value": "Kunne ikke laste inn cmux-teamet ditt. Kontroller internettilkoblingen, og prøv igjen." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Pasek boczny pokazuje stan sesji Pi i powiadomienia." + "value": "Nie udało się załadować Twojego zespołu cmux. Sprawdź połączenie z internetem i spróbuj ponownie." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "A barra lateral mostra o status da sessão do Pi e as notificações." + "value": "Não foi possível carregar sua equipe cmux. Verifique sua conexão com a internet e tente novamente." } }, "ru": { "stringUnit": { "state": "translated", - "value": "На боковой панели отображаются состояние сеанса Pi и уведомления." + "value": "Не удалось загрузить вашу команду cmux. Проверьте подключение к интернету и попробуйте ещё раз." } }, "th": { "stringUnit": { "state": "translated", - "value": "แถบด้านข้างจะแสดงสถานะเซสชัน Pi และการแจ้งเตือน" + "value": "ไม่สามารถโหลดทีม cmux ของคุณได้ ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตแล้วลองอีกครั้ง" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Kenar çubuğu, Pi oturumunun durumunu ve bildirimleri gösterir." + "value": "cmux ekibiniz yüklenemedi. İnternet bağlantınızı kontrol edip tekrar deneyin." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Бічна панель показує стан сеансу Pi та сповіщення." + "value": "Не вдалося завантажити вашу команду cmux. Перевірте підключення до інтернету й спробуйте ще раз." } } } }, - "settings.search.alias.setting.automation.pi": { + "command.newPaneAutoLayout.title": { "extractionState": "manual", "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "automation.piIntegration pi hooks agent integration status notifications" - } - }, "ar": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration تكامل Pi خطافات وكيل حالة إشعارات" + "value": "لوحة جديدة (تخطيط تلقائي)" } }, "bs": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration Pi kukice integracija agenta status obavijesti" + "value": "Novi panel (automatski raspored)" } }, "da": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration Pi-hooks agentintegration status notifikationer" + "value": "Nyt panel (automatisk layout)" } }, "de": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration Pi Hooks Agent Integration Status Benachrichtigungen" + "value": "Neuer Bereich (automatisches Layout)" } }, - "es": { + "en": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration Pi hooks integración de agente estado notificaciones" + "value": "New Pane (Auto Layout)" } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration Pi hooks intégration agent état notifications" + "value": "Nuevo panel (diseño automático)" } }, - "it": { + "fr": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration hook Pi integrazione agente stato notifiche" + "value": "Nouveau panneau (disposition automatique)" } }, - "ja": { + "it": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration Pi フック エージェント連携 ステータス 通知" + "value": "Nuovo pannello (layout automatico)" } }, - "km": { + "ja": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration hooks Pi ការរួមបញ្ចូលភ្នាក់ងារ ស្ថានភាព ការជូនដំណឹង" + "value": "新しいペイン(自動レイアウト)" } }, "ko": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration Pi 훅 에이전트 연동 상태 알림" + "value": "새 패널 (자동 레이아웃)" } }, "nb": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration Pi-hook agentintegrasjon status varsler" + "value": "Nytt panel (automatisk oppsett)" } }, "pl": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration hooki Pi integracja agenta stan powiadomienia" + "value": "Nowy panel (układ automatyczny)" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration hooks do Pi integração do agente status notificações" + "value": "Novo Painel (Layout Automático)" } }, "ru": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration хуки Pi интеграция агента состояние уведомления" + "value": "Новая панель (автоматическая раскладка)" } }, "th": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration hooks ของ Pi การผสานรวมเอเจนต์ สถานะ การแจ้งเตือน" + "value": "บานหน้าต่างใหม่ (จัดวางอัตโนมัติ)" } }, "tr": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration Pi kancaları aracı entegrasyonu durum bildirimler" + "value": "Yeni Bölme (Otomatik Düzen)" } }, "uk": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration хуки Pi інтеграція агента стан сповіщення" + "value": "Нова панель (автоматичне розташування)" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration Pi 钩子 代理集成 状态 通知" + "value": "新建窗格(自动布局)" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "automation.piIntegration Pi 掛鉤 代理程式整合 狀態 通知" + "value": "新增窗格(自動佈局)" } } } }, - "cli.hooks.setup.wrapperNote": { + "shortcut.newPaneAutoLayout.label": { "extractionState": "manual", "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": " (Claude Code and Pi hooks are injected automatically via their cmux wrappers)" - } - }, "ar": { "stringUnit": { "state": "translated", - "value": " (يتم حقن خطافات Claude Code وPi تلقائيًا عبر أغلفة cmux)" + "value": "لوحة جديدة (تخطيط تلقائي)" } }, "bs": { "stringUnit": { "state": "translated", - "value": " (Claude Code i Pi kukice se automatski ubacuju putem cmux omotača)" + "value": "Novi panel (automatski raspored)" } }, "da": { "stringUnit": { "state": "translated", - "value": " (Claude Code- og Pi-hooks indsættes automatisk via deres cmux-wrappere)" + "value": "Nyt panel (automatisk layout)" } }, "de": { "stringUnit": { "state": "translated", - "value": " (Claude-Code- und Pi-Hooks werden automatisch über ihre cmux-Wrapper eingefügt)" + "value": "Neuer Bereich (automatisches Layout)" } }, - "es": { + "en": { "stringUnit": { "state": "translated", - "value": " (Los hooks de Claude Code y Pi se inyectan automáticamente mediante sus wrappers de cmux)" + "value": "New Pane (Auto Layout)" } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": " (Les hooks de Claude Code et Pi sont injectés automatiquement par leurs wrappers cmux)" + "value": "Nuevo panel (diseño automático)" } }, - "it": { + "fr": { "stringUnit": { "state": "translated", - "value": " (Gli hook di Claude Code e Pi vengono iniettati automaticamente tramite i rispettivi wrapper cmux)" + "value": "Nouveau panneau (disposition automatique)" } }, - "ja": { + "it": { "stringUnit": { "state": "translated", - "value": " (Claude Code と Pi のフックは cmux ラッパーによって自動的に注入されます)" + "value": "Nuovo pannello (layout automatico)" } }, - "km": { + "ja": { "stringUnit": { "state": "translated", - "value": " (hooks របស់ Claude Code និង Pi ត្រូវបានបញ្ចូលដោយស្វ័យប្រវត្តិតាមរយៈ wrapper របស់ cmux)" + "value": "新しいペイン(自動レイアウト)" } }, "ko": { "stringUnit": { "state": "translated", - "value": " (Claude Code 및 Pi 훅은 cmux 래퍼를 통해 자동으로 주입됩니다)" + "value": "새 패널 (자동 레이아웃)" } }, "nb": { "stringUnit": { "state": "translated", - "value": " (Claude Code- og Pi-hooker settes inn automatisk via cmux-innpakningene)" + "value": "Nytt panel (automatisk oppsett)" } }, "pl": { "stringUnit": { "state": "translated", - "value": " (Hooki Claude Code i Pi są automatycznie wstrzykiwane przez ich opakowania cmux)" + "value": "Nowy panel (układ automatyczny)" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": " (Os hooks do Claude Code e do Pi são injetados automaticamente pelos respectivos wrappers do cmux)" + "value": "Novo Painel (Layout Automático)" } }, "ru": { "stringUnit": { "state": "translated", - "value": " (Хуки Claude Code и Pi автоматически внедряются их оболочками cmux)" + "value": "Новая панель (автоматическая раскладка)" } }, "th": { "stringUnit": { "state": "translated", - "value": " (hooks ของ Claude Code และ Pi จะถูกฉีดโดยอัตโนมัติผ่าน wrapper ของ cmux)" + "value": "บานหน้าต่างใหม่ (จัดวางอัตโนมัติ)" } }, "tr": { "stringUnit": { "state": "translated", - "value": " (Claude Code ve Pi kancaları, cmux sarmalayıcıları aracılığıyla otomatik olarak eklenir)" + "value": "Yeni Bölme (Otomatik Düzen)" } }, "uk": { "stringUnit": { "state": "translated", - "value": " (Хуки Claude Code і Pi автоматично додаються їхніми обгортками cmux)" + "value": "Нова панель (автоматичне розташування)" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": " (Claude Code 和 Pi 的钩子会通过各自的 cmux 包装器自动注入)" + "value": "新建窗格(自动布局)" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": " (Claude Code 和 Pi 的掛鉤會透過各自的 cmux 包裝器自動注入)" + "value": "新增窗格(自動佈局)" } } } @@ -564940,70 +565600,70 @@ "value": "cmux 重新開啟後仍在還原此終端機,並確認要恢復哪個代理工作階段。請幾秒後再試。" } }, - "bs" : { - "stringUnit" : { - "state" : "translated", - "value" : "cmux još vraća terminal nakon ponovnog otvaranja i provjerava koju sesiju agenta treba nastaviti. Pokušajte ponovo za nekoliko sekundi." + "bs": { + "stringUnit": { + "state": "translated", + "value": "cmux još vraća terminal nakon ponovnog otvaranja i provjerava koju sesiju agenta treba nastaviti. Pokušajte ponovo za nekoliko sekundi." } }, - "da" : { - "stringUnit" : { - "state" : "translated", - "value" : "cmux gendanner stadig terminalen efter genåbning og tjekker, hvilken agentsession der skal genoptages. Prøv igen om et par sekunder." + "da": { + "stringUnit": { + "state": "translated", + "value": "cmux gendanner stadig terminalen efter genåbning og tjekker, hvilken agentsession der skal genoptages. Prøv igen om et par sekunder." } }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "cmux sta ancora ripristinando il terminale dopo la riapertura e verifica quale sessione dell’agente riprendere. Riprova tra qualche secondo." + "it": { + "stringUnit": { + "state": "translated", + "value": "cmux sta ancora ripristinando il terminale dopo la riapertura e verifica quale sessione dell’agente riprendere. Riprova tra qualche secondo." } }, - "km" : { - "stringUnit" : { - "state" : "translated", - "value" : "cmux នៅតែកំពុងស្ដារទែមីណាល់ឡើងវិញ បន្ទាប់ពីបើកម្ដងទៀត ហើយកំពុងពិនិត្យមើលថាត្រូវបន្តវគ្គភ្នាក់ងារមួយណា។ សូមព្យាយាមម្ដងទៀតក្នុងរយៈពេលពីរបីវិនាទី។" + "km": { + "stringUnit": { + "state": "translated", + "value": "cmux នៅតែកំពុងស្ដារទែមីណាល់ឡើងវិញ បន្ទាប់ពីបើកម្ដងទៀត ហើយកំពុងពិនិត្យមើលថាត្រូវបន្តវគ្គភ្នាក់ងារមួយណា។ សូមព្យាយាមម្ដងទៀតក្នុងរយៈពេលពីរបីវិនាទី។" } }, - "nb" : { - "stringUnit" : { - "state" : "translated", - "value" : "cmux gjenoppretter fortsatt terminalen etter at den ble åpnet på nytt, og sjekker hvilken agentøkt som skal gjenopptas. Prøv igjen om noen sekunder." + "nb": { + "stringUnit": { + "state": "translated", + "value": "cmux gjenoppretter fortsatt terminalen etter at den ble åpnet på nytt, og sjekker hvilken agentøkt som skal gjenopptas. Prøv igjen om noen sekunder." } }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "cmux wciąż przywraca terminal po ponownym otwarciu i sprawdza, którą sesję agenta wznowić. Spróbuj ponownie za kilka sekund." + "pl": { + "stringUnit": { + "state": "translated", + "value": "cmux wciąż przywraca terminal po ponownym otwarciu i sprawdza, którą sesję agenta wznowić. Spróbuj ponownie za kilka sekund." } }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "O cmux ainda está restaurando o terminal após ser reaberto e verificando qual sessão do agente retomar. Tente novamente em alguns segundos." + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "O cmux ainda está restaurando o terminal após ser reaberto e verificando qual sessão do agente retomar. Tente novamente em alguns segundos." } }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "cmux ещё восстанавливает терминал после повторного открытия и проверяет, какой сеанс агента возобновить. Повторите попытку через несколько секунд." + "ru": { + "stringUnit": { + "state": "translated", + "value": "cmux ещё восстанавливает терминал после повторного открытия и проверяет, какой сеанс агента возобновить. Повторите попытку через несколько секунд." } }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "cmux ยังคงกู้คืนเทอร์มินัลหลังจากเปิดใหม่ และกำลังตรวจสอบว่าจะทำเซสชันเอเจนต์ใดต่อ ลองอีกครั้งในอีกไม่กี่วินาที" + "th": { + "stringUnit": { + "state": "translated", + "value": "cmux ยังคงกู้คืนเทอร์มินัลหลังจากเปิดใหม่ และกำลังตรวจสอบว่าจะทำเซสชันเอเจนต์ใดต่อ ลองอีกครั้งในอีกไม่กี่วินาที" } }, - "tr" : { - "stringUnit" : { - "state" : "translated", - "value" : "cmux yeniden açıldıktan sonra terminali hâlâ geri yüklüyor ve hangi ajan oturumunun sürdürüleceğini denetliyor. Birkaç saniye sonra yeniden deneyin." + "tr": { + "stringUnit": { + "state": "translated", + "value": "cmux yeniden açıldıktan sonra terminali hâlâ geri yüklüyor ve hangi ajan oturumunun sürdürüleceğini denetliyor. Birkaç saniye sonra yeniden deneyin." } }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "cmux ще відновлює термінал після повторного відкриття та перевіряє, який сеанс агента відновити. Спробуйте ще раз за кілька секунд." + "uk": { + "stringUnit": { + "state": "translated", + "value": "cmux ще відновлює термінал після повторного відкриття та перевіряє, який сеанс агента відновити. Спробуйте ще раз за кілька секунд." } } } @@ -565065,70 +565725,70 @@ "value": "此終端機正在關閉,無法讀取。" } }, - "bs" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminal se zatvara i ne može se pročitati." + "bs": { + "stringUnit": { + "state": "translated", + "value": "Terminal se zatvara i ne može se pročitati." } }, - "da" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminalen lukkes og kan ikke læses." + "da": { + "stringUnit": { + "state": "translated", + "value": "Terminalen lukkes og kan ikke læses." } }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Il terminale si sta chiudendo e non può essere letto." + "it": { + "stringUnit": { + "state": "translated", + "value": "Il terminale si sta chiudendo e non può essere letto." } }, - "km" : { - "stringUnit" : { - "state" : "translated", - "value" : "ទែមីណាល់កំពុងបិទ ហើយមិនអាចអានបានទេ។" + "km": { + "stringUnit": { + "state": "translated", + "value": "ទែមីណាល់កំពុងបិទ ហើយមិនអាចអានបានទេ។" } }, - "nb" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminalen lukkes og kan ikke leses." + "nb": { + "stringUnit": { + "state": "translated", + "value": "Terminalen lukkes og kan ikke leses." } }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminal jest zamykany i nie można go odczytać." + "pl": { + "stringUnit": { + "state": "translated", + "value": "Terminal jest zamykany i nie można go odczytać." } }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "O terminal está sendo fechado e não pode ser lido." + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "O terminal está sendo fechado e não pode ser lido." } }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Терминал закрывается, и его нельзя прочитать." + "ru": { + "stringUnit": { + "state": "translated", + "value": "Терминал закрывается, и его нельзя прочитать." } }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "เทอร์มินัลกำลังปิดและไม่สามารถอ่านได้" + "th": { + "stringUnit": { + "state": "translated", + "value": "เทอร์มินัลกำลังปิดและไม่สามารถอ่านได้" } }, - "tr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminal kapanıyor ve okunamıyor." + "tr": { + "stringUnit": { + "state": "translated", + "value": "Terminal kapanıyor ve okunamıyor." } }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Термінал закривається, і його не можна прочитати." + "uk": { + "stringUnit": { + "state": "translated", + "value": "Термінал закривається, і його не можна прочитати." } } } @@ -565190,70 +565850,70 @@ "value": "此終端機已休眠:cmux 暫停了其閒置的代理以節省記憶體。顯示它即可喚醒(這會將其視窗帶到最前面),然後再試一次:%@" } }, - "bs" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminal je u hibernaciji: cmux je pauzirao njegovog neaktivnog agenta radi uštede memorije. Probudite ga tako što ćete ga prikazati (njegov prozor prelazi u prvi plan), pa pokušajte ponovo: %@" + "bs": { + "stringUnit": { + "state": "translated", + "value": "Terminal je u hibernaciji: cmux je pauzirao njegovog neaktivnog agenta radi uštede memorije. Probudite ga tako što ćete ga prikazati (njegov prozor prelazi u prvi plan), pa pokušajte ponovo: %@" } }, - "da" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminalen er i dvale: cmux har sat dens inaktive agent på pause for at spare hukommelse. Væk den ved at vise den (dens vindue kommer forrest), og prøv igen: %@" + "da": { + "stringUnit": { + "state": "translated", + "value": "Terminalen er i dvale: cmux har sat dens inaktive agent på pause for at spare hukommelse. Væk den ved at vise den (dens vindue kommer forrest), og prøv igen: %@" } }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Il terminale è ibernato: cmux ha sospeso il suo agente inattivo per risparmiare memoria. Riattivalo mostrandolo (la sua finestra passa in primo piano), quindi riprova: %@" + "it": { + "stringUnit": { + "state": "translated", + "value": "Il terminale è ibernato: cmux ha sospeso il suo agente inattivo per risparmiare memoria. Riattivalo mostrandolo (la sua finestra passa in primo piano), quindi riprova: %@" } }, - "km" : { - "stringUnit" : { - "state" : "translated", - "value" : "ទែមីណាល់កំពុងសម្រាក៖ cmux បានផ្អាកភ្នាក់ងារដែលទំនេររបស់វា ដើម្បីសន្សំអង្គចងចាំ។ ដាស់វាដោយបង្ហាញវា (បង្អួចរបស់វានឹងមកខាងមុខ) រួចព្យាយាមម្ដងទៀត៖ %@" + "km": { + "stringUnit": { + "state": "translated", + "value": "ទែមីណាល់កំពុងសម្រាក៖ cmux បានផ្អាកភ្នាក់ងារដែលទំនេររបស់វា ដើម្បីសន្សំអង្គចងចាំ។ ដាស់វាដោយបង្ហាញវា (បង្អួចរបស់វានឹងមកខាងមុខ) រួចព្យាយាមម្ដងទៀត៖ %@" } }, - "nb" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminalen er i dvale: cmux har satt den inaktive agenten på pause for å spare minne. Vekk den ved å vise den (vinduet kommer i forgrunnen), og prøv igjen: %@" + "nb": { + "stringUnit": { + "state": "translated", + "value": "Terminalen er i dvale: cmux har satt den inaktive agenten på pause for å spare minne. Vekk den ved å vise den (vinduet kommer i forgrunnen), og prøv igjen: %@" } }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminal jest uśpiony: cmux wstrzymał jego bezczynnego agenta, aby oszczędzić pamięć. Wybudź go, wyświetlając go (jego okno przejdzie na pierwszy plan), a potem spróbuj ponownie: %@" + "pl": { + "stringUnit": { + "state": "translated", + "value": "Terminal jest uśpiony: cmux wstrzymał jego bezczynnego agenta, aby oszczędzić pamięć. Wybudź go, wyświetlając go (jego okno przejdzie na pierwszy plan), a potem spróbuj ponownie: %@" } }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "O terminal está hibernado: o cmux suspendeu o agente ocioso para economizar memória. Desperte-o exibindo-o (a janela vem para a frente) e tente novamente: %@" + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "O terminal está hibernado: o cmux suspendeu o agente ocioso para economizar memória. Desperte-o exibindo-o (a janela vem para a frente) e tente novamente: %@" } }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Терминал в спящем режиме: cmux приостановил неактивного агента, чтобы сэкономить память. Разбудите его, показав терминал (его окно выйдет на передний план), и повторите попытку: %@" + "ru": { + "stringUnit": { + "state": "translated", + "value": "Терминал в спящем режиме: cmux приостановил неактивного агента, чтобы сэкономить память. Разбудите его, показав терминал (его окно выйдет на передний план), и повторите попытку: %@" } }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "เทอร์มินัลอยู่ในโหมดพัก: cmux หยุดเอเจนต์ที่ไม่ได้ใช้งานชั่วคราวเพื่อประหยัดหน่วยความจำ ปลุกโดยแสดงเทอร์มินัล (หน้าต่างจะมาอยู่ด้านหน้า) แล้วลองอีกครั้ง: %@" + "th": { + "stringUnit": { + "state": "translated", + "value": "เทอร์มินัลอยู่ในโหมดพัก: cmux หยุดเอเจนต์ที่ไม่ได้ใช้งานชั่วคราวเพื่อประหยัดหน่วยความจำ ปลุกโดยแสดงเทอร์มินัล (หน้าต่างจะมาอยู่ด้านหน้า) แล้วลองอีกครั้ง: %@" } }, - "tr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminal hazırda bekliyor: cmux bellek tasarrufu için boştaki ajanını askıya aldı. Onu göstererek uyandırın (penceresi öne gelir), ardından yeniden deneyin: %@" + "tr": { + "stringUnit": { + "state": "translated", + "value": "Terminal hazırda bekliyor: cmux bellek tasarrufu için boştaki ajanını askıya aldı. Onu göstererek uyandırın (penceresi öne gelir), ardından yeniden deneyin: %@" } }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Термінал у режимі сну: cmux призупинив неактивного агента, щоб заощадити пам’ять. Розбудіть його, показавши термінал (його вікно перейде на передній план), і спробуйте ще раз: %@" + "uk": { + "stringUnit": { + "state": "translated", + "value": "Термінал у режимі сну: cmux призупинив неактивного агента, щоб заощадити пам’ять. Розбудіть його, показавши термінал (його вікно перейде на передній план), і спробуйте ще раз: %@" } } } @@ -565315,70 +565975,70 @@ "value": "此終端機已休眠:cmux 暫停了其閒置的代理以節省記憶體。請在 cmux 中顯示此終端機以喚醒它,然後再試一次。" } }, - "bs" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminal je u hibernaciji: cmux je pauzirao njegovog neaktivnog agenta radi uštede memorije. Prikažite terminal u cmuxu da ga probudite, pa pokušajte ponovo." + "bs": { + "stringUnit": { + "state": "translated", + "value": "Terminal je u hibernaciji: cmux je pauzirao njegovog neaktivnog agenta radi uštede memorije. Prikažite terminal u cmuxu da ga probudite, pa pokušajte ponovo." } }, - "da" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminalen er i dvale: cmux har sat dens inaktive agent på pause for at spare hukommelse. Vis terminalen i cmux for at vække den, og prøv igen." + "da": { + "stringUnit": { + "state": "translated", + "value": "Terminalen er i dvale: cmux har sat dens inaktive agent på pause for at spare hukommelse. Vis terminalen i cmux for at vække den, og prøv igen." } }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Il terminale è ibernato: cmux ha sospeso il suo agente inattivo per risparmiare memoria. Mostra il terminale in cmux per riattivarlo, quindi riprova." + "it": { + "stringUnit": { + "state": "translated", + "value": "Il terminale è ibernato: cmux ha sospeso il suo agente inattivo per risparmiare memoria. Mostra il terminale in cmux per riattivarlo, quindi riprova." } }, - "km" : { - "stringUnit" : { - "state" : "translated", - "value" : "ទែមីណាល់កំពុងសម្រាក៖ cmux បានផ្អាកភ្នាក់ងារដែលទំនេររបស់វា ដើម្បីសន្សំអង្គចងចាំ។ បង្ហាញទែមីណាល់នៅក្នុង cmux ដើម្បីដាស់វា រួចព្យាយាមម្ដងទៀត។" + "km": { + "stringUnit": { + "state": "translated", + "value": "ទែមីណាល់កំពុងសម្រាក៖ cmux បានផ្អាកភ្នាក់ងារដែលទំនេររបស់វា ដើម្បីសន្សំអង្គចងចាំ។ បង្ហាញទែមីណាល់នៅក្នុង cmux ដើម្បីដាស់វា រួចព្យាយាមម្ដងទៀត។" } }, - "nb" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminalen er i dvale: cmux har satt den inaktive agenten på pause for å spare minne. Vis terminalen i cmux for å vekke den, og prøv igjen." + "nb": { + "stringUnit": { + "state": "translated", + "value": "Terminalen er i dvale: cmux har satt den inaktive agenten på pause for å spare minne. Vis terminalen i cmux for å vekke den, og prøv igjen." } }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminal jest uśpiony: cmux wstrzymał jego bezczynnego agenta, aby oszczędzić pamięć. Wyświetl terminal w cmux, aby go wybudzić, a potem spróbuj ponownie." + "pl": { + "stringUnit": { + "state": "translated", + "value": "Terminal jest uśpiony: cmux wstrzymał jego bezczynnego agenta, aby oszczędzić pamięć. Wyświetl terminal w cmux, aby go wybudzić, a potem spróbuj ponownie." } }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "O terminal está hibernado: o cmux suspendeu o agente ocioso para economizar memória. Mostre o terminal no cmux para despertá-lo e tente novamente." + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "O terminal está hibernado: o cmux suspendeu o agente ocioso para economizar memória. Mostre o terminal no cmux para despertá-lo e tente novamente." } }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Терминал в спящем режиме: cmux приостановил неактивного агента, чтобы сэкономить память. Покажите терминал в cmux, чтобы разбудить его, и повторите попытку." + "ru": { + "stringUnit": { + "state": "translated", + "value": "Терминал в спящем режиме: cmux приостановил неактивного агента, чтобы сэкономить память. Покажите терминал в cmux, чтобы разбудить его, и повторите попытку." } }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "เทอร์มินัลอยู่ในโหมดพัก: cmux หยุดเอเจนต์ที่ไม่ได้ใช้งานชั่วคราวเพื่อประหยัดหน่วยความจำ แสดงเทอร์มินัลใน cmux เพื่อปลุก แล้วลองอีกครั้ง" + "th": { + "stringUnit": { + "state": "translated", + "value": "เทอร์มินัลอยู่ในโหมดพัก: cmux หยุดเอเจนต์ที่ไม่ได้ใช้งานชั่วคราวเพื่อประหยัดหน่วยความจำ แสดงเทอร์มินัลใน cmux เพื่อปลุก แล้วลองอีกครั้ง" } }, - "tr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminal hazırda bekliyor: cmux bellek tasarrufu için boştaki ajanını askıya aldı. Uyandırmak için terminali cmux'ta gösterin, ardından yeniden deneyin." + "tr": { + "stringUnit": { + "state": "translated", + "value": "Terminal hazırda bekliyor: cmux bellek tasarrufu için boştaki ajanını askıya aldı. Uyandırmak için terminali cmux'ta gösterin, ardından yeniden deneyin." } }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Термінал у режимі сну: cmux призупинив неактивного агента, щоб заощадити пам’ять. Покажіть термінал у cmux, щоб розбудити його, і спробуйте ще раз." + "uk": { + "stringUnit": { + "state": "translated", + "value": "Термінал у режимі сну: cmux призупинив неактивного агента, щоб заощадити пам’ять. Покажіть термінал у cmux, щоб розбудити його, і спробуйте ще раз." } } } @@ -565440,14240 +566100,13436 @@ "value": "此終端機尚未啟動。請幾秒後再試。" } }, - "bs" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminal se još nije pokrenuo. Pokušajte ponovo za nekoliko sekundi." + "bs": { + "stringUnit": { + "state": "translated", + "value": "Terminal se još nije pokrenuo. Pokušajte ponovo za nekoliko sekundi." } }, - "da" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminalen er ikke startet endnu. Prøv igen om et par sekunder." + "da": { + "stringUnit": { + "state": "translated", + "value": "Terminalen er ikke startet endnu. Prøv igen om et par sekunder." } }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Il terminale non è ancora stato avviato. Riprova tra qualche secondo." + "it": { + "stringUnit": { + "state": "translated", + "value": "Il terminale non è ancora stato avviato. Riprova tra qualche secondo." } }, - "km" : { - "stringUnit" : { - "state" : "translated", - "value" : "ទែមីណាល់មិនទាន់បានចាប់ផ្តើមនៅឡើយទេ។ សូមព្យាយាមម្ដងទៀតក្នុងរយៈពេលពីរបីវិនាទី។" + "km": { + "stringUnit": { + "state": "translated", + "value": "ទែមីណាល់មិនទាន់បានចាប់ផ្តើមនៅឡើយទេ។ សូមព្យាយាមម្ដងទៀតក្នុងរយៈពេលពីរបីវិនាទី។" } }, - "nb" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminalen har ikke startet ennå. Prøv igjen om noen sekunder." + "nb": { + "stringUnit": { + "state": "translated", + "value": "Terminalen har ikke startet ennå. Prøv igjen om noen sekunder." } }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminal jeszcze się nie uruchomił. Spróbuj ponownie za kilka sekund." + "pl": { + "stringUnit": { + "state": "translated", + "value": "Terminal jeszcze się nie uruchomił. Spróbuj ponownie za kilka sekund." } }, - "pt-BR" : { - "stringUnit" : { - "state" : "translated", - "value" : "O terminal ainda não foi iniciado. Tente novamente em alguns segundos." + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "O terminal ainda não foi iniciado. Tente novamente em alguns segundos." } }, - "ru" : { - "stringUnit" : { - "state" : "translated", - "value" : "Терминал ещё не запущен. Повторите попытку через несколько секунд." + "ru": { + "stringUnit": { + "state": "translated", + "value": "Терминал ещё не запущен. Повторите попытку через несколько секунд." } }, - "th" : { - "stringUnit" : { - "state" : "translated", - "value" : "เทอร์มินัลยังไม่ได้เริ่มทำงาน ลองอีกครั้งในอีกไม่กี่วินาที" + "th": { + "stringUnit": { + "state": "translated", + "value": "เทอร์มินัลยังไม่ได้เริ่มทำงาน ลองอีกครั้งในอีกไม่กี่วินาที" } }, - "tr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Terminal henüz başlamadı. Birkaç saniye sonra yeniden deneyin." + "tr": { + "stringUnit": { + "state": "translated", + "value": "Terminal henüz başlamadı. Birkaç saniye sonra yeniden deneyin." } }, - "uk" : { - "stringUnit" : { - "state" : "translated", - "value" : "Термінал ще не запущено. Спробуйте ще раз за кілька секунд." + "uk": { + "stringUnit": { + "state": "translated", + "value": "Термінал ще не запущено. Спробуйте ще раз за кілька секунд." } } } }, - "cli.restore.error.routedLauncherNotFound": { + "cli.restoreSession.help": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "restore: this session was started with '%1$@ claude proxy', but '%1$@' is not on PATH in this shell. Add it to PATH, then retry." + "value": "Usage: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\nReopen the previous saved cmux session.\n\nIf the app is already running, this restores the last saved session into the current app.\nIf the app is not running, this launches cmux and lets startup restore reopen the saved session.\n\nEach cmux install (stable, nightly, rc, staging, tagged debug builds) saves its own session.\n--from Reopen another install's saved session in this running cmux, for example\n after trying nightly and switching back to stable. The session opens as\n additional windows; the other install's saved file is only read.\n--from Reopen a session file written by --export.\n--export Write this cmux's saved session to a file. Pass --force to replace an\n existing file.\n\n--from and --export require cmux to be running." } }, - "ja": { + "de": { "stringUnit": { "state": "translated", - "value": "restore: このセッションは「%1$@ claude proxy」で起動されましたが、このシェルの PATH に「%1$@」がありません。PATH に追加してから、再試行してください。" + "value": "Verwendung: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\nDie zuletzt gespeicherte cmux-Sitzung erneut öffnen.\n\nLäuft die App bereits, wird die zuletzt gespeicherte Sitzung in der aktuellen App wiederhergestellt.\nLäuft die App nicht, wird cmux gestartet und die gespeicherte Sitzung beim Start wiederhergestellt.\n\nJede cmux-Installation (stable, nightly, rc, staging, getaggte Debug-Builds) speichert ihre eigene Sitzung.\n--from Die gespeicherte Sitzung einer anderen Installation in diesem laufenden cmux öffnen,\n z. B. nachdem Sie nightly ausprobiert haben und zu stable zurückkehren. Die Sitzung\n öffnet sich in zusätzlichen Fenstern; die Datei der anderen Installation wird nur gelesen.\n--from Eine mit --export geschriebene Sitzungsdatei öffnen.\n--export Die gespeicherte Sitzung dieses cmux in eine Datei schreiben. Mit --force wird eine\n vorhandene Datei ersetzt.\n\n--from und --export setzen ein laufendes cmux voraus." } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "restore:此会话是通过“%1$@ claude proxy”启动的,但此 shell 的 PATH 中没有“%1$@”。请将其添加到 PATH,然后重试。" + "value": "Utilisation : cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\nRouvrir la dernière session cmux enregistrée.\n\nSi l'app est déjà ouverte, la dernière session enregistrée est restaurée dans l'app actuelle.\nSi l'app n'est pas ouverte, cmux est lancé et la restauration au démarrage rouvre la session enregistrée.\n\nChaque installation de cmux (stable, nightly, rc, staging, builds debug avec tag) enregistre sa propre session.\n--from Rouvrir la session enregistrée d'une autre installation dans ce cmux en cours, par exemple\n après avoir essayé nightly puis être revenu à stable. La session s'ouvre dans des fenêtres\n supplémentaires ; le fichier de l'autre installation est seulement lu.\n--from Rouvrir un fichier de session écrit par --export.\n--export Écrire la session enregistrée de ce cmux dans un fichier. Ajoutez --force pour remplacer\n un fichier existant.\n\n--from et --export nécessitent que cmux soit ouvert." } }, - "de": { + "es": { "stringUnit": { "state": "translated", - "value": "restore: Diese Sitzung wurde mit „%1$@ claude proxy“ gestartet, aber „%1$@“ ist in dieser Shell nicht im PATH. Fügen Sie es zum PATH hinzu und versuchen Sie es dann erneut." + "value": "Uso: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\nVuelve a abrir la última sesión guardada de cmux.\n\nSi la app ya está abierta, restaura la última sesión guardada en la app actual.\nSi la app no está abierta, inicia cmux y deja que la restauración de inicio vuelva a abrir la sesión guardada.\n\nCada instalación de cmux (stable, nightly, rc, staging, builds de depuración con etiqueta) guarda su propia sesión.\n--from Abre en este cmux la sesión guardada de otra instalación, por ejemplo después de\n probar nightly y volver a stable. La sesión se abre en ventanas adicionales; el archivo\n de la otra instalación solo se lee.\n--from Abre un archivo de sesión escrito con --export.\n--export Escribe en un archivo la sesión guardada de este cmux. Usa --force para reemplazar un\n archivo existente.\n\n--from y --export requieren que cmux esté abierto." } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "restore : cette session a été démarrée avec « %1$@ claude proxy », mais « %1$@ » n'est pas dans le PATH de ce shell. Ajoutez-le au PATH, puis réessayez." + "value": "使い方: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\n前回保存した cmux セッションを再度開きます。\n\nアプリがすでに起動している場合は、最後に保存したセッションを現在のアプリに復元します。\nアプリが起動していない場合は、cmux を起動し、起動時の復元で保存済みセッションを開きます。\n\ncmux の各インストール(stable、nightly、rc、staging、タグ付き debug ビルド)はそれぞれ独自のセッションを保存します。\n--from 別のインストールで保存したセッションを、起動中のこの cmux で開きます。たとえば nightly を\n 試したあと stable に戻る場合に使います。セッションは追加のウインドウとして開き、別の\n インストールのファイルは読み取るだけです。\n--from --export で書き出したセッションファイルを開きます。\n--export この cmux の保存済みセッションをファイルに書き出します。既存のファイルを置き換えるには\n --force を指定します。\n\n--from と --export を使うには cmux が起動している必要があります。" } }, "ar": { "stringUnit": { "state": "translated", - "value": "restore: بدأت هذه الجلسة باستخدام '%1$@ claude proxy'، لكن '%1$@' غير موجود في PATH في هذه الصدفة. أضفه إلى PATH، ثم أعد المحاولة." + "value": "الاستخدام: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\nأعد فتح آخر جلسة cmux محفوظة.\n\nإذا كان التطبيق يعمل بالفعل، فستُستعاد آخر جلسة محفوظة في التطبيق الحالي.\nإذا لم يكن التطبيق يعمل، فسيُشغَّل cmux وتعيد استعادة بدء التشغيل فتح الجلسة المحفوظة.\n\nيحفظ كل تثبيت من cmux (stable وnightly وrc وstaging وإصدارات debug الموسومة) جلسته الخاصة.\n--from افتح الجلسة المحفوظة لتثبيت آخر في cmux الذي يعمل الآن، مثلًا\n بعد تجربة nightly والعودة إلى stable. تُفتح الجلسة في\n نوافذ إضافية، ويُقرأ ملف التثبيت الآخر فقط.\n--from افتح ملف جلسة كتبه الأمر --export.\n--export اكتب الجلسة المحفوظة لهذا cmux في ملف. استخدم --force لاستبدال\n ملف موجود.\n\nيتطلب --from و--export أن يكون cmux قيد التشغيل." } }, - "es": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "restore: esta sesión se inició con '%1$@ claude proxy', pero '%1$@' no está en el PATH de este shell. Agréguelo al PATH y vuelva a intentarlo." + "value": "用法: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\n重新開啟上次儲存的 cmux 工作階段。\n\n如果 App 已在執行,會將上次儲存的工作階段還原到目前的 App 中。\n如果 App 未執行,會啟動 cmux,並由啟動還原重新開啟已儲存的工作階段。\n\n每個 cmux 安裝(stable、nightly、rc、staging、帶標籤的 debug 建置)都會儲存自己的工作階段。\n--from 在執行中的 cmux 開啟另一個安裝儲存的工作階段,例如\n 試用 nightly 後切回 stable。工作階段會以\n 額外視窗開啟;另一個安裝的檔案只會被讀取。\n--from 開啟由 --export 寫出的工作階段檔案。\n--export 將此 cmux 儲存的工作階段寫入檔案。使用 --force 可取代\n 既有檔案。\n\n--from 和 --export 需要 cmux 正在執行。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "restore:此工作階段是以「%1$@ claude proxy」啟動的,但此 shell 的 PATH 中沒有「%1$@」。請將其加入 PATH,然後重試。" + "value": "用法: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\n重新打开上次保存的 cmux 会话。\n\n如果应用已在运行,会将上次保存的会话恢复到当前应用中。\n如果应用未运行,会启动 cmux,并由启动恢复重新打开保存的会话。\n\n每个 cmux 安装(stable、nightly、rc、staging、带标签的 debug 构建)都会保存自己的会话。\n--from 在正在运行的 cmux 中打开另一个安装保存的会话,例如\n 试用 nightly 后切回 stable。会话会以\n 额外窗口打开;另一个安装的会话文件只会被读取。\n--from 打开由 --export 写出的会话文件。\n--export 将此 cmux 保存的会话写入文件。使用 --force 可替换\n 已有文件。\n\n--from 和 --export 需要 cmux 正在运行。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "restore: 이 세션은 '%1$@ claude proxy'로 시작되었지만 이 셸의 PATH에 '%1$@'이(가) 없습니다. PATH에 추가한 후 다시 시도하십시오." + "value": "사용법: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\n마지막으로 저장된 cmux 세션을 다시 엽니다.\n\n앱이 이미 실행 중이면 마지막으로 저장된 세션을 현재 앱에 복원합니다.\n앱이 실행 중이 아니면 cmux를 실행하고 시작 복원이 저장된 세션을 다시 열도록 합니다.\n\n각 cmux 설치(stable, nightly, rc, staging, 태그가 지정된 debug 빌드)는 자체 세션을 저장합니다.\n--from 다른 설치에 저장된 세션을 실행 중인 이 cmux에서 엽니다. 예를 들어\n nightly를 사용해 본 뒤 stable로 돌아올 때 사용합니다. 세션은\n 추가 창으로 열리며, 다른 설치의 파일은 읽기만 합니다.\n--from --export로 작성한 세션 파일을 엽니다.\n--export 이 cmux에 저장된 세션을 파일로 씁니다. 기존 파일을 바꾸려면\n --force를 사용하세요.\n\n--from과 --export를 사용하려면 cmux가 실행 중이어야 합니다." } } } }, - "settings.terminal.textEditingCommandMovesByWord": { + "session.export.error.destinationExists": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Command Moves by Word" + "value": "%@ already exists. Pass --force to replace it." } }, "ar": { "stringUnit": { "state": "translated", - "value": "Command ينقل حسب الكلمة" + "value": "%@ موجود بالفعل. استخدم --force لاستبداله." } }, "de": { "stringUnit": { "state": "translated", - "value": "Befehlstaste bewegt wortweise" + "value": "%@ ist bereits vorhanden. Verwenden Sie --force, um die Datei zu ersetzen." } }, "es": { "stringUnit": { "state": "translated", - "value": "Comando mueve por palabra" + "value": "%@ ya existe. Usa --force para reemplazarlo." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Commande déplace par mot" + "value": "%@ existe déjà. Ajoutez --force pour le remplacer." } }, "ja": { "stringUnit": { "state": "translated", - "value": "Command で単語単位に移動" + "value": "%@ はすでに存在します。置き換えるには --force を指定してください。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Command로 단어 단위 이동" + "value": "%@ 파일이 이미 있습니다. 바꾸려면 --force를 사용하세요." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Command 按词移动" + "value": "%@ 已存在。使用 --force 以替换它。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Command 依字移動" + "value": "%@ 已存在。使用 --force 以取代它。" } } } }, - "settings.terminal.textEditingCommandMovesByWord.subtitleOn": { + "session.export.error.destinationIsLive": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Command arrow and delete keys move and delete by word, like Option. Control Left and Right Arrow move to the start and end of the line." + "value": "%@ is this cmux's own session file. Choose another path." } }, "ar": { "stringUnit": { "state": "translated", - "value": "تنقل مفاتيح الأسهم والحذف مع Command وتحذف حسب الكلمة، مثل Option. وينقل Control مع السهمين الأيسر والأيمن إلى بداية السطر ونهايته." + "value": "%@ هو ملف الجلسة الخاص بهذا الـ cmux. اختر مسارًا آخر." } }, "de": { "stringUnit": { "state": "translated", - "value": "Befehlstaste mit Pfeil- und Löschtasten bewegt und löscht wortweise, wie die Wahltaste. Control mit Links- und Rechtspfeil springt an Anfang und Ende der Zeile." + "value": "%@ ist die eigene Sitzungsdatei dieses cmux. Wählen Sie einen anderen Pfad." } }, "es": { "stringUnit": { "state": "translated", - "value": "Las flechas y la tecla Eliminar con Comando mueven y borran por palabra, como Opción. Control con las flechas izquierda y derecha va al inicio y al final de la línea." + "value": "%@ es el archivo de sesión de este cmux. Elige otra ruta." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Les flèches et la touche Supprimer avec Commande déplacent et suppriment par mot, comme Option. Contrôle avec les flèches gauche et droite va au début et à la fin de la ligne." + "value": "%@ est le fichier de session de ce cmux. Choisissez un autre chemin." } }, "ja": { "stringUnit": { "state": "translated", - "value": "Command と矢印キー・削除キーで、Option と同じく単語単位に移動・削除します。Control と左右矢印キーで行頭・行末に移動します。" + "value": "%@ はこの cmux 自身のセッションファイルです。別のパスを指定してください。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Command 화살표 및 삭제 키가 Option처럼 단어 단위로 이동하고 삭제합니다. Control 왼쪽 및 오른쪽 화살표는 줄의 시작과 끝으로 이동합니다." + "value": "%@ 파일은 이 cmux의 세션 파일입니다. 다른 경로를 선택하세요." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Command 加方向键和删除键按词移动和删除,与 Option 相同。Control 加左右方向键移到行首和行尾。" + "value": "%@ 是此 cmux 自己的会话文件。请选择其他路径。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Command 加方向鍵與刪除鍵會依字移動與刪除,與 Option 相同。Control 加左右方向鍵會移到行首與行尾。" + "value": "%@ 是此 cmux 本身的工作階段檔案。請選擇其他路徑。" } } } }, - "settings.terminal.textEditingCommandMovesByWord.subtitleOff": { + "session.export.error.noSnapshot": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Command arrow and delete keys move and delete by line, as in macOS text fields." + "value": "cmux has not saved a session yet. Try again in a few seconds." } }, "ar": { "stringUnit": { "state": "translated", - "value": "تنقل مفاتيح الأسهم والحذف مع Command وتحذف حسب السطر، كما في حقول النص في macOS." + "value": "لم يحفظ cmux أي جلسة بعد. حاول مرة أخرى بعد بضع ثوانٍ." } }, "de": { "stringUnit": { "state": "translated", - "value": "Befehlstaste mit Pfeil- und Löschtasten bewegt und löscht zeilenweise, wie in macOS-Textfeldern." + "value": "cmux hat noch keine Sitzung gespeichert. Versuchen Sie es in ein paar Sekunden erneut." } }, "es": { "stringUnit": { "state": "translated", - "value": "Las flechas y la tecla Eliminar con Comando mueven y borran por línea, como en los campos de texto de macOS." + "value": "cmux aún no ha guardado ninguna sesión. Inténtalo de nuevo en unos segundos." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Les flèches et la touche Supprimer avec Commande déplacent et suppriment par ligne, comme dans les champs de texte de macOS." + "value": "cmux n'a pas encore enregistré de session. Réessayez dans quelques secondes." } }, "ja": { "stringUnit": { "state": "translated", - "value": "Command と矢印キー・削除キーで、macOS のテキストフィールドと同じく行単位に移動・削除します。" + "value": "cmux はまだセッションを保存していません。数秒後にもう一度お試しください。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Command 화살표 및 삭제 키가 macOS 텍스트 필드처럼 줄 단위로 이동하고 삭제합니다." + "value": "cmux가 아직 세션을 저장하지 않았습니다. 몇 초 후에 다시 시도하세요." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Command 加方向键和删除键按行移动和删除,与 macOS 文本框相同。" + "value": "cmux 尚未保存会话。请几秒后再试。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Command 加方向鍵與刪除鍵會依行移動與刪除,與 macOS 文字欄位相同。" + "value": "cmux 尚未儲存工作階段。請過幾秒再試一次。" } } } }, - "settings.terminal.textEditingGesturesInFullScreenApps": { + "session.export.error.writeFailed": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Text Editing Gestures in Full-Screen Apps" + "value": "Could not write %@." } }, "ar": { "stringUnit": { "state": "translated", - "value": "إيماءات تحرير النص في التطبيقات بملء الشاشة" + "value": "تعذّرت كتابة %@." } }, "de": { "stringUnit": { "state": "translated", - "value": "Textbearbeitungsgesten in Vollbild-Apps" + "value": "%@ konnte nicht geschrieben werden." } }, "es": { "stringUnit": { "state": "translated", - "value": "Gestos de edición de texto en apps a pantalla completa" + "value": "No se pudo escribir %@." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Gestes d’édition de texte dans les apps plein écran" + "value": "Impossible d'écrire %@." } }, "ja": { "stringUnit": { "state": "translated", - "value": "フルスクリーンアプリでのテキスト編集ジェスチャー" + "value": "%@ を書き込めませんでした。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "전체 화면 앱에서 텍스트 편집 제스처" + "value": "%@ 파일을 쓸 수 없습니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "全屏应用中的文本编辑手势" + "value": "无法写入 %@。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "全螢幕 App 中的文字編輯手勢" + "value": "無法寫入 %@。" } } } }, - "settings.terminal.textEditingGesturesInFullScreenApps.subtitle": { + "session.import.error.fileNotFound": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Gestures also apply while a full-screen app such as vim, less, or tmux is running, so they keep working at a shell inside tmux, screen, or zellij." + "value": "No saved cmux session at %@." } }, "ar": { "stringUnit": { "state": "translated", - "value": "تنطبق الإيماءات أيضًا أثناء تشغيل تطبيق بملء الشاشة مثل vim أو less أو tmux، فتظل تعمل في الصدفة داخل tmux أو screen أو zellij." + "value": "لا توجد جلسة cmux محفوظة في %@." } }, "de": { "stringUnit": { "state": "translated", - "value": "Gesten gelten auch, während eine Vollbild-App wie vim, less oder tmux läuft, und funktionieren so weiter an einer Shell in tmux, screen oder zellij." + "value": "Unter %@ gibt es keine gespeicherte cmux-Sitzung." } }, "es": { "stringUnit": { "state": "translated", - "value": "Los gestos también se aplican mientras se ejecuta una app a pantalla completa como vim, less o tmux, así que siguen funcionando en una shell dentro de tmux, screen o zellij." + "value": "No hay ninguna sesión de cmux guardada en %@." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Les gestes s’appliquent aussi lorsqu’une app plein écran comme vim, less ou tmux est en cours d’exécution, et continuent donc de fonctionner dans un shell sous tmux, screen ou zellij." + "value": "Aucune session cmux enregistrée à l'emplacement %@." } }, "ja": { "stringUnit": { "state": "translated", - "value": "vim、less、tmux などのフルスクリーンアプリの実行中もジェスチャーが有効になるため、tmux、screen、zellij 内のシェルでも引き続き使えます。" + "value": "%@ に保存された cmux セッションはありません。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "vim, less, tmux 같은 전체 화면 앱이 실행 중일 때도 제스처가 적용되므로 tmux, screen, zellij 안의 셸에서도 계속 작동합니다." + "value": "%@ 위치에 저장된 cmux 세션이 없습니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "在 vim、less 或 tmux 等全屏应用运行时手势也会生效,因此在 tmux、screen 或 zellij 中的 shell 里仍可使用。" + "value": "%@ 没有已保存的 cmux 会话。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "在 vim、less 或 tmux 等全螢幕 App 執行時手勢也會生效,因此在 tmux、screen 或 zellij 中的 shell 裡仍可使用。" + "value": "%@ 沒有已儲存的 cmux 工作階段。" } } } }, - "cloud.ports.vpnOff.explanation": { + "session.import.error.newerSchema": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Ports open in cmux without setup. To use private addresses in other apps, set up Cloud VPN." - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Ports lassen sich in cmux ohne Einrichtung öffnen. Richte Cloud-VPN ein, um private Adressen in anderen Apps zu verwenden." + "value": "%1$@ was saved by a newer cmux (session format %2$@, this cmux reads %3$@). Update cmux to import it." } }, - "fr": { + "ar": { "stringUnit": { "state": "translated", - "value": "Les ports s’ouvrent dans cmux sans configuration. Pour utiliser les adresses privées dans d’autres apps, configurez le VPN Cloud." + "value": "حُفظ %1$@ بواسطة إصدار أحدث من cmux (تنسيق الجلسة %2$@، ويقرأ هذا الـ cmux التنسيق %3$@). حدّث cmux لاستيراده." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "تُفتح المنافذ في cmux دون إعداد. لاستخدام العناوين الخاصة في التطبيقات الأخرى، أعدّ Cloud VPN." + "value": "%1$@ wurde von einem neueren cmux gespeichert (Sitzungsformat %2$@, dieses cmux liest %3$@). Aktualisieren Sie cmux, um die Datei zu importieren." } }, "es": { "stringUnit": { "state": "translated", - "value": "Los puertos se abren en cmux sin configuración. Para usar direcciones privadas en otras apps, configura Cloud VPN." + "value": "%1$@ se guardó con un cmux más reciente (formato de sesión %2$@; este cmux lee el %3$@). Actualiza cmux para importarlo." } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "無需設定即可在 cmux 中開啟連接埠。如要在其他 App 使用私有位址,請設定 Cloud VPN。" + "value": "%1$@ a été enregistré par une version plus récente de cmux (format de session %2$@, ce cmux lit le format %3$@). Mettez cmux à jour pour l'importer." } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "无需设置即可在 cmux 中打开端口。要在其他应用中使用私有地址,请设置云 VPN。" + "value": "%1$@ は新しい cmux で保存されています(セッション形式 %2$@、この cmux が読める形式は %3$@)。読み込むには cmux をアップデートしてください。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "별도 설정 없이 cmux에서 포트를 열 수 있습니다. 다른 앱에서 비공개 주소를 사용하려면 Cloud VPN을 설정하세요." + "value": "%1$@ 파일은 더 새로운 cmux에서 저장되었습니다(세션 형식 %2$@, 이 cmux는 %3$@ 형식을 읽음). 가져오려면 cmux를 업데이트하세요." } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "設定なしで cmux 内のポートを開けます。他のアプリでプライベートアドレスを使うには、Cloud VPN を設定してください。" - } - }, - "bs": { - "stringUnit": { - "state": "needs_review", - "value": "Portovi se otvaraju u cmux-u bez podešavanja. Za korištenje privatnih adresa u drugim aplikacijama podesite Cloud VPN." + "value": "%1$@ 由较新版本的 cmux 保存(会话格式 %2$@,此 cmux 读取 %3$@)。请更新 cmux 后再导入。" } }, - "da": { + "zh-Hant": { "stringUnit": { - "state": "needs_review", - "value": "Porte åbnes i cmux uden opsætning. Opsæt Cloud VPN for at bruge private adresser i andre apps." + "state": "translated", + "value": "%1$@ 是由較新版本的 cmux 儲存(工作階段格式 %2$@,此 cmux 讀取 %3$@)。請更新 cmux 後再匯入。" } - }, - "it": { + } + } + }, + "session.import.error.noWindows": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { - "state": "needs_review", - "value": "Le porte si aprono in cmux senza configurazione. Per usare gli indirizzi privati in altre app, configura Cloud VPN." + "state": "translated", + "value": "%@ has no windows to restore." } }, - "km": { + "ar": { "stringUnit": { - "state": "needs_review", - "value": "ច្រកអាចបើកក្នុង cmux ដោយមិនចាំបាច់រៀបចំ។ ដើម្បីប្រើអាសយដ្ឋានឯកជនក្នុងកម្មវិធីផ្សេងទៀត សូមរៀបចំ Cloud VPN។" + "state": "translated", + "value": "لا يحتوي %@ على نوافذ لاستعادتها." } }, - "nb": { + "de": { "stringUnit": { - "state": "needs_review", - "value": "Porter åpnes i cmux uten oppsett. Sett opp Cloud VPN for å bruke private adresser i andre apper." + "state": "translated", + "value": "%@ enthält keine Fenster zum Wiederherstellen." } }, - "pl": { + "es": { "stringUnit": { - "state": "needs_review", - "value": "Porty otwierają się w cmux bez konfiguracji. Aby używać prywatnych adresów w innych aplikacjach, skonfiguruj Cloud VPN." + "state": "translated", + "value": "%@ no tiene ventanas que restaurar." } }, - "pt-BR": { + "fr": { "stringUnit": { - "state": "needs_review", - "value": "As portas abrem no cmux sem configuração. Para usar endereços privados em outros apps, configure o Cloud VPN." + "state": "translated", + "value": "%@ ne contient aucune fenêtre à restaurer." } }, - "ru": { + "ja": { "stringUnit": { - "state": "needs_review", - "value": "Порты открываются в cmux без настройки. Чтобы использовать приватные адреса в других приложениях, настройте Cloud VPN." + "state": "translated", + "value": "%@ には復元できるウインドウがありません。" } }, - "th": { + "ko": { "stringUnit": { - "state": "needs_review", - "value": "เปิดพอร์ตใน cmux ได้โดยไม่ต้องตั้งค่า หากต้องการใช้ที่อยู่ส่วนตัวในแอปอื่น ให้ตั้งค่า Cloud VPN" + "state": "translated", + "value": "%@ 파일에 복원할 창이 없습니다." } }, - "tr": { + "zh-Hans": { "stringUnit": { - "state": "needs_review", - "value": "Bağlantı noktaları cmux içinde kurulum gerektirmeden açılır. Diğer uygulamalarda özel adresleri kullanmak için Cloud VPN’i kurun." + "state": "translated", + "value": "%@ 没有可恢复的窗口。" } }, - "uk": { + "zh-Hant": { "stringUnit": { - "state": "needs_review", - "value": "Порти відкриваються в cmux без налаштування. Щоб використовувати приватні адреси в інших застосунках, налаштуйте Cloud VPN." + "state": "translated", + "value": "%@ 沒有可還原的視窗。" } } } }, - "cloud.ports.vpnOff.title": { + "session.import.error.notASnapshot": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Optional: Cloud VPN" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Optional: Cloud-VPN" + "value": "%@ is not a cmux session snapshot." } }, - "fr": { + "ar": { "stringUnit": { "state": "translated", - "value": "Facultatif : VPN Cloud" + "value": "%@ ليس لقطة جلسة cmux." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "اختياري: Cloud VPN" + "value": "%@ ist keine cmux-Sitzungsdatei." } }, "es": { "stringUnit": { "state": "translated", - "value": "Opcional: Cloud VPN" + "value": "%@ no es una instantánea de sesión de cmux." } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "選用:Cloud VPN" + "value": "%@ n'est pas un instantané de session cmux." } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "可选:云 VPN" + "value": "%@ は cmux のセッションスナップショットではありません。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "선택 사항: Cloud VPN" + "value": "%@ 파일은 cmux 세션 스냅샷이 아닙니다." } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "任意:Cloud VPN" - } - }, - "bs": { - "stringUnit": { - "state": "needs_review", - "value": "Opcionalno: Cloud VPN" + "value": "%@ 不是 cmux 会话快照。" } }, - "da": { + "zh-Hant": { "stringUnit": { - "state": "needs_review", - "value": "Valgfrit: Cloud VPN" + "state": "translated", + "value": "%@ 不是 cmux 工作階段快照。" } - }, - "it": { + } + } + }, + "session.import.error.nothingRestored": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { - "state": "needs_review", - "value": "Facoltativo: Cloud VPN" + "state": "translated", + "value": "Nothing in %@ could be reopened." } }, - "km": { + "ar": { "stringUnit": { - "state": "needs_review", - "value": "ជាជម្រើស៖ Cloud VPN" + "state": "translated", + "value": "تعذّر إعادة فتح أي شيء من %@." } }, - "nb": { + "de": { "stringUnit": { - "state": "needs_review", - "value": "Valgfritt: Cloud VPN" + "state": "translated", + "value": "Aus %@ konnte nichts wieder geöffnet werden." } }, - "pl": { + "es": { "stringUnit": { - "state": "needs_review", - "value": "Opcjonalnie: Cloud VPN" + "state": "translated", + "value": "No se pudo volver a abrir nada de %@." } }, - "pt-BR": { + "fr": { "stringUnit": { - "state": "needs_review", - "value": "Opcional: Cloud VPN" + "state": "translated", + "value": "Aucun élément de %@ n'a pu être rouvert." } }, - "ru": { + "ja": { "stringUnit": { - "state": "needs_review", - "value": "Необязательно: Cloud VPN" + "state": "translated", + "value": "%@ から再度開けるものはありませんでした。" } }, - "th": { + "ko": { "stringUnit": { - "state": "needs_review", - "value": "ตัวเลือกเพิ่มเติม: Cloud VPN" + "state": "translated", + "value": "%@ 파일에서 다시 열 수 있는 항목이 없습니다." } }, - "tr": { + "zh-Hans": { "stringUnit": { - "state": "needs_review", - "value": "İsteğe bağlı: Cloud VPN" + "state": "translated", + "value": "无法重新打开 %@ 中的任何内容。" } }, - "uk": { + "zh-Hant": { "stringUnit": { - "state": "needs_review", - "value": "Необов’язково: Cloud VPN" + "state": "translated", + "value": "無法重新開啟 %@ 中的任何內容。" } } } }, - "cloud.vpn.setup.address.body": { + "session.import.error.olderSchema": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Each machine has its own private IP. Two machines may both expose port 3000, for example 10.40.0.10:3000 and 10.40.0.11:3000. Right-click a Cloud port and choose Copy Private Address URL after connecting. These addresses are private, not public share links." + "value": "%1$@ uses an older session format (%2$@) that this cmux no longer reads (%3$@)." } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Jede Maschine hat eine eigene private IP. Zwei Maschinen können beide Port 3000 verwenden, etwa 10.40.0.10:3000 und 10.40.0.11:3000. Klicken Sie nach dem Verbinden mit der rechten Maustaste auf einen Cloud-Port und wählen Sie URL der privaten Adresse kopieren. Diese Adressen sind privat und keine öffentlichen Freigabelinks." + "value": "يستخدم %1$@ تنسيق جلسة أقدم (%2$@) لم يعد هذا الـ cmux يقرؤه (%3$@)." } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Chaque machine a sa propre IP privée. Deux machines peuvent utiliser le port 3000, par exemple 10.40.0.10:3000 et 10.40.0.11:3000. Après connexion, faites un clic droit sur un port Cloud et choisissez Copier l’URL de l’adresse privée. Ces adresses sont privées, ce ne sont pas des liens publics de partage." + "value": "%1$@ verwendet ein älteres Sitzungsformat (%2$@), das dieses cmux nicht mehr liest (%3$@)." } }, "es": { "stringUnit": { "state": "translated", - "value": "Cada máquina tiene su propia IP privada. Dos máquinas pueden usar el puerto 3000, como 10.40.0.10:3000 y 10.40.0.11:3000. Después de conectar, haz clic derecho en un puerto Cloud y elige Copiar URL de dirección privada. Estas direcciones son privadas, no enlaces públicos para compartir." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "各マシンには個別のプライベートIPがあります。2台のマシンがどちらもポート3000を使えます(例:10.40.0.10:3000と10.40.0.11:3000)。接続後にCloudポートを右クリックし、「プライベートアドレスURLをコピー」を選びます。これらはプライベートアドレスで、公開共有リンクではありません。" + "value": "%1$@ usa un formato de sesión anterior (%2$@) que este cmux ya no lee (%3$@)." } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "每台机器都有自己的私有 IP。两台机器可以同时使用端口 3000,例如 10.40.0.10:3000 和 10.40.0.11:3000。连接后右键点击 Cloud 端口,选择“复制私有地址 URL”。这些地址是私有地址,不是公开分享链接。" + "value": "%1$@ utilise un ancien format de session (%2$@) que ce cmux ne lit plus (%3$@)." } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "每台機器都有自己的私有 IP。兩台機器可以同時使用連接埠 3000,例如 10.40.0.10:3000 和 10.40.0.11:3000。連線後對 Cloud 連接埠按右鍵,選擇「複製私有位址 URL」。這些位址是私有位址,不是公開分享連結。" + "value": "%1$@ はこの cmux が読み込まなくなった古いセッション形式(%2$@)を使用しています(%3$@)。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "각 머신에는 고유한 비공개 IP가 있습니다. 두 머신 모두 포트 3000을 사용할 수 있습니다(예: 10.40.0.10:3000 및 10.40.0.11:3000). 연결 후 Cloud 포트를 오른쪽 클릭하고 비공개 주소 URL 복사를 선택하세요. 이 주소는 비공개이며 공개 공유 링크가 아닙니다." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "لكل جهاز عنوان IP خاص به. يمكن لجهازين استخدام المنفذ 3000، مثل 10.40.0.10:3000 و10.40.0.11:3000. بعد الاتصال، انقر بزر الماوس الأيمن على منفذ Cloud واختر نسخ رابط العنوان الخاص. هذه عناوين خاصة وليست روابط مشاركة عامة." + "value": "%1$@ 파일은 이 cmux가 더 이상 읽지 않는 이전 세션 형식(%2$@)을 사용합니다(%3$@)." } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Svaka mašina ima svoju privatnu IP adresu. Dvije mašine mogu koristiti port 3000, na primjer 10.40.0.10:3000 i 10.40.0.11:3000. Nakon povezivanja kliknite desnim dugmetom na Cloud port i izaberite Kopiraj URL privatne adrese. Ovo su privatne adrese, a ne javne veze za dijeljenje." + "value": "%1$@ 使用较旧的会话格式(%2$@),此 cmux 已不再读取(%3$@)。" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Hver maskine har sin egen private IP. To maskiner kan begge bruge port 3000, f.eks. 10.40.0.10:3000 og 10.40.0.11:3000. Højreklik på en Cloud-port efter tilslutning, og vælg Kopiér URL til privat adresse. Adresserne er private, ikke offentlige delelinks." + "value": "%1$@ 使用較舊的工作階段格式(%2$@),此 cmux 已不再讀取(%3$@)。" } - }, - "it": { + } + } + }, + "session.import.error.unknownChannel": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Ogni macchina ha il proprio IP privato. Due macchine possono usare entrambe la porta 3000, ad esempio 10.40.0.10:3000 e 10.40.0.11:3000. Dopo la connessione fai clic destro su una porta Cloud e scegli Copia URL indirizzo privato. Sono indirizzi privati, non link pubblici." + "value": "Unknown cmux channel \"%@\". Use stable, nightly, rc, staging, debug:, or a path to a session file." } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "ម៉ាស៊ីននីមួយៗមាន IP ឯកជនផ្ទាល់ខ្លួន។ ម៉ាស៊ីនពីរអាចប្រើច្រក 3000 ដូចគ្នា ឧទាហរណ៍ 10.40.0.10:3000 និង 10.40.0.11:3000។ បន្ទាប់ពីភ្ជាប់ ចុចខាងស្តាំលើច្រក Cloud ហើយជ្រើស ចម្លង URL អាសយដ្ឋានឯកជន។ ទាំងនេះជាអាសយដ្ឋានឯកជន មិនមែនតំណចែករំលែកសាធារណៈទេ។" + "value": "قناة cmux غير معروفة \"%@\". استخدم stable أو nightly أو rc أو staging أو debug: أو مسار ملف جلسة." } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Hver maskin har sin egen private IP. To maskiner kan bruke port 3000, for eksempel 10.40.0.10:3000 og 10.40.0.11:3000. Høyreklikk en Cloud-port etter tilkobling og velg Kopier URL for privat adresse. Adressene er private, ikke offentlige delingslenker." + "value": "Unbekannter cmux-Kanal \"%@\". Verwenden Sie stable, nightly, rc, staging, debug: oder einen Pfad zu einer Sitzungsdatei." } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Każda maszyna ma własny prywatny adres IP. Dwie maszyny mogą używać portu 3000, na przykład 10.40.0.10:3000 i 10.40.0.11:3000. Po połączeniu kliknij prawym przyciskiem port Cloud i wybierz Kopiuj URL prywatnego adresu. To prywatne adresy, nie publiczne linki udostępniania." + "value": "Canal de cmux desconocido \"%@\". Usa stable, nightly, rc, staging, debug: o la ruta de un archivo de sesión." } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Cada máquina tem seu próprio IP privado. Duas máquinas podem usar a porta 3000, por exemplo 10.40.0.10:3000 e 10.40.0.11:3000. Depois de conectar, clique com o botão direito em uma porta Cloud e escolha Copiar URL do endereço privado. Esses endereços são privados, não links públicos de compartilhamento." + "value": "Canal cmux inconnu « %@ ». Utilisez stable, nightly, rc, staging, debug: ou le chemin d'un fichier de session." } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "У каждой машины свой частный IP. Две машины могут использовать порт 3000, например 10.40.0.10:3000 и 10.40.0.11:3000. После подключения щёлкните правой кнопкой мыши порт Cloud и выберите Скопировать URL частного адреса. Это частные адреса, а не публичные ссылки." + "value": "不明な cmux チャンネル「%@」です。stable、nightly、rc、staging、debug:、またはセッションファイルのパスを指定してください。" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "แต่ละเครื่องมี IP ส่วนตัวของตนเอง สองเครื่องสามารถใช้พอร์ต 3000 ได้ เช่น 10.40.0.10:3000 และ 10.40.0.11:3000 หลังเชื่อมต่อ คลิกขวาที่พอร์ต Cloud แล้วเลือกคัดลอก URL ที่อยู่ส่วนตัว ที่อยู่เหล่านี้เป็นส่วนตัว ไม่ใช่ลิงก์สาธารณะ" + "value": "알 수 없는 cmux 채널 \"%@\"입니다. stable, nightly, rc, staging, debug: 또는 세션 파일 경로를 사용하세요." } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Her makinenin kendi özel IP’si vardır. İki makine 3000 bağlantı noktasını kullanabilir; örneğin 10.40.0.10:3000 ve 10.40.0.11:3000. Bağlandıktan sonra bir Cloud portuna sağ tıklayın ve Özel Adres URL’sini Kopyala’yı seçin. Bunlar özel adreslerdir, herkese açık paylaşım bağlantıları değildir." + "value": "未知的 cmux 渠道“%@”。请使用 stable、nightly、rc、staging、debug: 或会话文件路径。" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Кожна машина має власну приватну IP-адресу. Дві машини можуть використовувати порт 3000, наприклад 10.40.0.10:3000 і 10.40.0.11:3000. Після підключення клацніть правою кнопкою миші порт Cloud і виберіть Копіювати URL приватної адреси. Це приватні адреси, а не публічні посилання для спільного доступу." + "value": "未知的 cmux 通道「%@」。請使用 stable、nightly、rc、staging、debug: 或工作階段檔案路徑。" } } } }, - "cloud.vpn.setup.cancel": { + "session.import.error.unreadable": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cancel" + "value": "Could not read %@." } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Abbrechen" + "value": "تعذّرت قراءة %@." } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Annuler" + "value": "%@ konnte nicht gelesen werden." } }, "es": { "stringUnit": { "state": "translated", - "value": "Cancelar" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "キャンセル" + "value": "No se pudo leer %@." } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "取消" + "value": "Impossible de lire %@." } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "取消" + "value": "%@ を読み込めませんでした。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "취소" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "إلغاء" + "value": "%@ 파일을 읽을 수 없습니다." } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Otkaži" + "value": "无法读取 %@。" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Annuller" + "value": "無法讀取 %@。" } - }, - "it": { + } + } + }, + "session.import.error.liveSnapshot": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Annulla" + "value": "%@ is the session this cmux is saving right now. Run cmux restore-session without --from to reopen the previous launch." } }, - "km": { + "de": { "stringUnit": { "state": "translated", - "value": "បោះបង់" + "value": "%@ ist die Sitzung, die dieses cmux gerade speichert. Führen Sie cmux restore-session ohne --from aus, um den vorherigen Start wieder zu öffnen." } }, - "nb": { + "fr": { "stringUnit": { "state": "translated", - "value": "Avbryt" + "value": "%@ est la session que ce cmux enregistre actuellement. Exécutez cmux restore-session sans --from pour rouvrir le lancement précédent." } }, - "pl": { + "ar": { "stringUnit": { "state": "translated", - "value": "Anuluj" + "value": "%@ هي الجلسة التي يحفظها cmux هذا الآن. شغّل cmux restore-session دون --from لإعادة فتح التشغيل السابق." } }, - "pt-BR": { + "es": { "stringUnit": { "state": "translated", - "value": "Cancelar" + "value": "%@ es la sesión que este cmux está guardando ahora. Ejecuta cmux restore-session sin --from para volver a abrir el inicio anterior." } }, - "ru": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Отменить" + "value": "%@ 是此 cmux 目前正在儲存的工作階段。執行不含 --from 的 cmux restore-session 以重新開啟上次啟動的內容。" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "ยกเลิก" + "value": "%@ 是此 cmux 当前正在保存的会话。运行不带 --from 的 cmux restore-session 以重新打开上次启动的内容。" } }, - "tr": { + "ko": { "stringUnit": { "state": "translated", - "value": "İptal" + "value": "%@ 파일은 이 cmux가 지금 저장 중인 세션입니다. 이전 실행을 다시 열려면 --from 없이 cmux restore-session을 실행하세요." } }, - "uk": { + "ja": { "stringUnit": { "state": "translated", - "value": "Скасувати" + "value": "%@ はこの cmux が現在保存しているセッションです。前回の起動を再度開くには、--from を付けずに cmux restore-session を実行してください。" } } } }, - "cloud.vpn.setup.connect": { + "machines.requiresPro.upgrade.short": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Connect Cloud VPN" + "value": "Upgrade" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Cloud-VPN verbinden" + "value": "ترقية" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Connecter le VPN Cloud" + "value": "Upgraden" } }, "es": { "stringUnit": { "state": "translated", - "value": "Conectar VPN de Cloud" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Cloud VPNに接続" + "value": "Actualizar" } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "连接 Cloud VPN" + "value": "Mettre à niveau" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "連接 Cloud VPN" + "value": "アップグレード" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Cloud VPN 연결" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "توصيل VPN الخاص بـ Cloud" + "value": "업그레이드" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Poveži Cloud VPN" + "value": "升级" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Forbind Cloud VPN" + "value": "升級" } - }, - "it": { + } + } + }, + "machines.sessionRejected.signInAgain.short": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Connetti VPN Cloud" + "value": "Sign In" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "ភ្ជាប់ Cloud VPN" + "value": "تسجيل الدخول" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Koble til Cloud VPN" + "value": "Anmelden" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Połącz z Cloud VPN" + "value": "Iniciar sesión" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Conectar Cloud VPN" + "value": "Se reconnecter" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Подключить Cloud VPN" + "value": "再サインイン" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "เชื่อมต่อ Cloud VPN" + "value": "다시 로그인" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud VPN’e bağlan" + "value": "重新登录" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Підключити Cloud VPN" + "value": "重新登入" } } } }, - "cloud.vpn.setup.connected": { + "machines.requiresPro.stale": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Connected" + "value": "Cloud machines need cmux Pro, showing last known" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Verbunden" + "value": "تتطلب الأجهزة السحابية إصدار cmux Pro، يتم عرض آخر حالة معروفة" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Connecté" + "value": "Cloud-Maschinen erfordern cmux Pro, zeige letzten bekannten Stand" } }, "es": { "stringUnit": { "state": "translated", - "value": "Conectada" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "接続済み" + "value": "Las máquinas en la nube requieren cmux Pro, se muestra el último estado conocido" } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "已连接" + "value": "Les machines Cloud nécessitent cmux Pro, affichage des dernières informations connues" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "已連線" + "value": "Cloud マシンには cmux Pro が必要です。最後の状態を表示中" } }, "ko": { "stringUnit": { "state": "translated", - "value": "연결됨" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "متصل" + "value": "클라우드 머신을 사용하려면 cmux Pro가 필요함, 마지막으로 확인된 상태 표시 중" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Povezano" + "value": "云端机器需要 cmux Pro,显示的是最后已知状态" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Forbundet" + "value": "雲端機器需要 cmux Pro,顯示上次已知的狀態" } - }, - "it": { + } + } + }, + "machines.sessionRejected.stale": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Connessa" + "value": "Sign-in needs a refresh, showing last known" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "បានភ្ជាប់" + "value": "يحتاج تسجيل الدخول إلى تحديث، يتم عرض آخر حالة معروفة" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Tilkoblet" + "value": "Anmeldung muss aktualisiert werden, zeige letzten bekannten Stand" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Połączono" + "value": "Es necesario actualizar el inicio de sesión, se muestra el último estado conocido" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Conectada" + "value": "La connexion doit être actualisée, affichage des dernières informations connues" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Подключено" + "value": "再サインインが必要です。最後の状態を表示中" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "เชื่อมต่อแล้ว" + "value": "로그인 갱신 필요, 마지막으로 확인된 상태 표시 중" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Bağlandı" + "value": "登录状态需要刷新,显示的是最后已知状态" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Підключено" + "value": "登入狀態需要重新整理,顯示上次已知的狀態" } } } }, - "cloud.vpn.setup.disconnect": { + "cli.session.help": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Disconnect" + "value": "Usage: cmux session restore [--list] [--session ]...\n\nReopen Claude sessions that were running when cmux last quit unexpectedly.\ncmux finds them in the agent journal, skips any that are running or already\nopen, and resumes each in its own workspace through the launcher that started\nit.\n\nWithout --session, restore acts only after an unexpected quit.\n\nOptions:\n --list Show the sessions without restoring them.\n --session Restore only this session (repeatable)." } }, "de": { "stringUnit": { "state": "translated", - "value": "Trennen" + "value": "Verwendung: cmux session restore [--list] [--session ]...\n\nÖffnet Claude-Sitzungen erneut, die liefen, als cmux zuletzt unerwartet beendet wurde.\ncmux findet sie im Agent-Journal, überspringt laufende oder bereits geöffnete\nund setzt jede in einem eigenen Workspace\nüber den Launcher fort, der sie gestartet hat.\n\nOhne --session stellt restore nur nach einem unerwarteten Beenden wieder her.\n\nOptionen:\n --list Sitzungen anzeigen, ohne sie wiederherzustellen.\n --session Nur diese Sitzung wiederherstellen (wiederholbar)." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Déconnecter" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Desconectar" + "value": "Utilisation : cmux session restore [--list] [--session ]...\n\nRouvre les sessions Claude en cours lorsque cmux s’est fermé de façon inattendue.\ncmux les trouve dans le journal des agents, ignore celles qui tournent ou sont déjà\nouvertes, et reprend chacune dans son propre espace de travail via le lanceur qui l’a\ndémarrée.\n\nSans --session, restore n’agit qu’après une fermeture inattendue.\n\nOptions :\n --list Afficher les sessions sans les restaurer.\n --session Restaurer uniquement cette session (répétable)." } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "切断" + "value": "الاستخدام: cmux session restore [--list] [--session ]...\n\nيعيد فتح جلسات Claude التي كانت قيد التشغيل عندما أُغلق cmux بشكل غير متوقع آخر مرة.\nيعثر cmux عليها في سجل الوكيل، ويتخطى ما يعمل منها أو المفتوح بالفعل،\nويستأنف كل جلسة في مساحة عمل خاصة بها\nعبر المشغّل الذي بدأها.\n\nبدون --session، لا تعمل الاستعادة إلا بعد إغلاق غير متوقع.\n\nالخيارات:\n --list عرض الجلسات دون استعادتها.\n --session استعادة هذه الجلسة فقط (قابل للتكرار)." } }, - "zh-Hans": { + "es": { "stringUnit": { "state": "translated", - "value": "断开连接" + "value": "Uso: cmux session restore [--list] [--session ]...\n\nVuelve a abrir las sesiones de Claude que estaban en ejecución cuando cmux se cerró inesperadamente.\ncmux las encuentra en el diario de agentes, omite las que están en ejecución o ya\nabiertas, y reanuda cada una en su propio espacio de trabajo mediante el lanzador que\nla inició.\n\nSin --session, restore solo actúa tras un cierre inesperado.\n\nOpciones:\n --list Mostrar las sesiones sin restaurarlas.\n --session Restaurar solo esta sesión (repetible)." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "中斷連線" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "연결 해제" + "value": "用法: cmux session restore [--list] [--session ]...\n\n重新開啟 cmux 上次意外結束時仍在執行的 Claude 工作階段。\ncmux 會從代理日誌中找出它們,略過仍在執行或已開啟的工作階段,\n並透過原本啟動它的啟動器\n在各自的工作區中繼續。\n\n未指定 --session 時,restore 只會在意外結束後執行。\n\n選項:\n --list 只列出工作階段,不還原。\n --session 只還原此工作階段(可重複)。" } }, - "ar": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "قطع الاتصال" + "value": "用法: cmux session restore [--list] [--session ]...\n\n重新打开 cmux 上次意外退出时仍在运行的 Claude 会话。\ncmux 会从代理日志中找到它们,跳过仍在运行或已打开的会话,\n并通过最初启动它的启动器\n在各自的工作区中继续。\n\n未指定 --session 时,restore 只会在意外退出后执行。\n\n选项:\n --list 只列出会话,不恢复。\n --session 只恢复此会话(可重复)。" } }, - "bs": { + "ko": { "stringUnit": { "state": "translated", - "value": "Prekini vezu" + "value": "사용법: cmux session restore [--list] [--session ]...\n\ncmux가 마지막으로 예기치 않게 종료될 때 실행 중이던 Claude 세션을 다시 엽니다.\ncmux는 에이전트 저널에서 세션을 찾고, 실행 중이거나 이미 열려 있는 세션은 건너뛰며,\n각 세션을 시작한 런처를 통해\n자체 워크스페이스에서 이어갑니다.\n\n--session이 없으면 restore는 예기치 않은 종료 후에만 동작합니다.\n\n옵션:\n --list 복원하지 않고 세션만 표시합니다.\n --session 이 세션만 복원합니다(반복 가능)." } }, - "da": { + "ja": { "stringUnit": { "state": "translated", - "value": "Afbryd" + "value": "使用法: cmux session restore [--list] [--session ]...\n\ncmux が前回予期せず終了したときに実行中だった Claude セッションを再び開きます。\ncmux はエージェントジャーナルからセッションを見つけ、実行中または既に開いている\nものはスキップし、それぞれを起動したランチャー経由で\n専用のワークスペースで再開します。\n\n--session を指定しない場合、restore は予期しない終了の後にのみ動作します。\n\nオプション:\n --list 復元せずにセッションを表示します。\n --session このセッションのみ復元します(複数指定可)。" } - }, - "it": { + } + } + }, + "cli.session.error.expectedRestore": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Disconnetti" + "value": "session: expected 'restore' (see cmux help session)" } }, - "km": { + "de": { "stringUnit": { "state": "translated", - "value": "ផ្តាច់" + "value": "session: 'restore' erwartet (siehe cmux help session)" } }, - "nb": { + "fr": { "stringUnit": { "state": "translated", - "value": "Koble fra" + "value": "session : « restore » attendu (voir cmux help session)" } }, - "pl": { + "ar": { "stringUnit": { "state": "translated", - "value": "Rozłącz" + "value": "session: كان المتوقع 'restore' (راجع cmux help session)" } }, - "pt-BR": { + "es": { "stringUnit": { "state": "translated", - "value": "Desconectar" + "value": "session: se esperaba 'restore' (consulta cmux help session)" } }, - "ru": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Отключить" + "value": "session:應為 'restore'(請參閱 cmux help session)" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "ตัดการเชื่อมต่อ" + "value": "session:应为 'restore'(请参阅 cmux help session)" } }, - "tr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Bağlantıyı kes" + "value": "session: 'restore'가 필요합니다(cmux help session 참조)" } }, - "uk": { + "ja": { "stringUnit": { "state": "translated", - "value": "Від’єднати" + "value": "session: 'restore' が必要です(cmux help session を参照)" } } } }, - "cloud.vpn.setup.entry.subtitle": { + "cli.session.error.sessionRequiresId": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Optional private IP access for other apps" + "value": "session restore: --session requires an id" } }, "de": { "stringUnit": { "state": "translated", - "value": "Optionaler Zugriff auf private IPs für andere Apps" + "value": "session restore: --session erfordert eine ID" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Accès facultatif aux IP privées pour les autres apps" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Acceso opcional a IP privadas para otras apps" + "value": "session restore : --session nécessite un identifiant" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "ほかのアプリからプライベートIPへアクセスする任意の設定" + "value": "session restore: يتطلب --session معرّفًا" } }, - "zh-Hans": { + "es": { "stringUnit": { "state": "translated", - "value": "为其他应用提供可选的私有 IP 访问" + "value": "session restore: --session requiere un id" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "為其他 App 提供選用的私有 IP 存取" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "다른 앱의 비공개 IP 접근을 위한 선택 설정" + "value": "session restore:--session 需要一個 ID" } }, - "ar": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "وصول اختياري إلى عناوين IP الخاصة للتطبيقات الأخرى" + "value": "session restore:--session 需要一个 ID" } }, - "bs": { + "ko": { "stringUnit": { "state": "translated", - "value": "Opcionalni pristup privatnim IP adresama za druge aplikacije" + "value": "session restore: --session에는 ID가 필요합니다" } }, - "da": { + "ja": { "stringUnit": { "state": "translated", - "value": "Valgfri privat IP-adgang for andre apps" + "value": "session restore: --session には ID が必要です" } - }, - "it": { + } + } + }, + "cli.session.error.unknownArgument": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Accesso facoltativo agli IP privati per altre app" + "value": "session restore: unknown argument '%@'" } }, - "km": { + "de": { "stringUnit": { "state": "translated", - "value": "ចូលប្រើ IP ឯកជនសម្រាប់កម្មវិធីផ្សេងៗជាជម្រើស" + "value": "session restore: unbekanntes Argument '%@'" } }, - "nb": { + "fr": { "stringUnit": { "state": "translated", - "value": "Valgfri privat IP-tilgang for andre apper" + "value": "session restore : argument inconnu « %@ »" } }, - "pl": { + "ar": { "stringUnit": { "state": "translated", - "value": "Opcjonalny dostęp innych aplikacji do prywatnych adresów IP" + "value": "session restore: وسيط غير معروف '%@'" } }, - "pt-BR": { + "es": { "stringUnit": { "state": "translated", - "value": "Acesso opcional a IPs privados para outros apps" + "value": "session restore: argumento desconocido '%@'" } }, - "ru": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Необязательный доступ других приложений к частным IP" + "value": "session restore:未知的參數 '%@'" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "การเข้าถึง IP ส่วนตัวสำหรับแอปอื่นแบบไม่บังคับ" + "value": "session restore:未知参数 '%@'" } }, - "tr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Diğer uygulamalar için isteğe bağlı özel IP erişimi" + "value": "session restore: 알 수 없는 인수 '%@'" } }, - "uk": { + "ja": { "stringUnit": { "state": "translated", - "value": "Необов’язковий доступ інших програм до приватних IP" + "value": "session restore: 不明な引数 '%@'" } } } }, - "cloud.vpn.setup.failed": { + "cli.session.list.empty": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Needs attention" + "value": "No agent sessions to restore." } }, "de": { "stringUnit": { "state": "translated", - "value": "Aktion erforderlich" + "value": "Keine Agent-Sitzungen zum Wiederherstellen." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Action requise" + "value": "Aucune session d’agent à restaurer." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Requiere atención" + "value": "لا توجد جلسات وكيل لاستعادتها." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "対応が必要" + "value": "No hay sesiones de agente para restaurar." } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "需要处理" + "value": "沒有可還原的代理工作階段。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "需要處理" + "value": "没有可恢复的代理会话。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "조치 필요" + "value": "복원할 에이전트 세션이 없습니다." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "يتطلب إجراءً" + "value": "復元するエージェントセッションはありません。" } - }, - "bs": { + } + } + }, + "cli.session.restore.cleanQuit": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Potrebna pažnja" + "value": "No agent sessions restored: cmux last quit normally. To restore one anyway, pass --session from --list." } }, - "da": { + "de": { "stringUnit": { "state": "translated", - "value": "Kræver opmærksomhed" + "value": "Keine Agent-Sitzungen wiederhergestellt: cmux wurde zuletzt normal beendet. Um trotzdem eine wiederherzustellen, übergib --session aus --list." } }, - "it": { + "fr": { "stringUnit": { "state": "translated", - "value": "Richiede attenzione" + "value": "Aucune session d’agent restaurée : cmux s’est fermé normalement la dernière fois. Pour en restaurer une quand même, passez --session depuis --list." } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "ត្រូវការការយកចិត្តទុកដាក់" + "value": "لم تتم استعادة أي جلسات وكيل: أُغلق cmux بشكل طبيعي آخر مرة. لاستعادة جلسة على أي حال، مرّر --session من --list." } }, - "nb": { + "es": { "stringUnit": { "state": "translated", - "value": "Krever handling" + "value": "No se restauró ninguna sesión de agente: cmux se cerró normalmente la última vez. Para restaurar una de todos modos, pasa --session de --list." } }, - "pl": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Wymaga uwagi" + "value": "未還原任何代理工作階段:cmux 上次是正常結束。若仍要還原,請傳入 --list 中的 --session 。" } }, - "pt-BR": { - "stringUnit": { - "state": "translated", - "value": "Requer atenção" - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Требуется действие" - } - }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "ต้องดำเนินการ" + "value": "未恢复任何代理会话:cmux 上次是正常退出。若仍要恢复,请传入 --list 中的 --session 。" } }, - "tr": { + "ko": { "stringUnit": { "state": "translated", - "value": "İlgilenilmeli" + "value": "복원된 에이전트 세션이 없습니다. cmux가 마지막에 정상적으로 종료되었습니다. 그래도 복원하려면 --list에서 확인한 --session 를 전달하세요." } }, - "uk": { + "ja": { "stringUnit": { "state": "translated", - "value": "Потрібна увага" + "value": "エージェントセッションは復元されませんでした。cmux は前回正常に終了しています。それでも復元する場合は、--list の --session を指定してください。" } } } }, - "cloud.vpn.setup.off": { + "cli.session.restore.empty": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Off" + "value": "No agent sessions restored." } }, "de": { "stringUnit": { "state": "translated", - "value": "Aus" + "value": "Keine Agent-Sitzungen wiederhergestellt." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Désactivé" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Desactivada" + "value": "Aucune session d’agent restaurée." } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "オフ" + "value": "لم تتم استعادة أي جلسات وكيل." } }, - "zh-Hans": { + "es": { "stringUnit": { "state": "translated", - "value": "已关闭" + "value": "No se restauró ninguna sesión de agente." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "已關閉" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "꺼짐" + "value": "未還原任何代理工作階段。" } }, - "ar": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "متوقف" + "value": "未恢复任何代理会话。" } }, - "bs": { + "ko": { "stringUnit": { "state": "translated", - "value": "Isključeno" + "value": "복원된 에이전트 세션이 없습니다." } }, - "da": { + "ja": { "stringUnit": { "state": "translated", - "value": "Fra" + "value": "エージェントセッションは復元されませんでした。" } - }, - "it": { + } + } + }, + "cli.session.restore.done": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Disattivata" + "value": "Agent sessions restored: %lld" } }, - "km": { + "de": { "stringUnit": { "state": "translated", - "value": "បិទ" + "value": "Wiederhergestellte Agent-Sitzungen: %lld" } }, - "nb": { + "fr": { "stringUnit": { "state": "translated", - "value": "Av" + "value": "Sessions d’agent restaurées : %lld" } }, - "pl": { + "ar": { "stringUnit": { "state": "translated", - "value": "Wyłączona" + "value": "جلسات الوكيل المستعادة: %lld" } }, - "pt-BR": { + "es": { "stringUnit": { "state": "translated", - "value": "Desativada" + "value": "Sesiones de agente restauradas: %lld" } }, - "ru": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Выключено" + "value": "已還原的代理工作階段:%lld" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "ปิด" + "value": "已恢复的代理会话:%lld" } }, - "tr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Kapalı" + "value": "복원된 에이전트 세션: %lld" } }, - "uk": { + "ja": { "stringUnit": { "state": "translated", - "value": "Вимкнено" + "value": "復元したエージェントセッション: %lld" } } } }, - "cloud.vpn.setup.openUnavailable": { + "agentRecovery.alert.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud VPN setup is unavailable" + "value": "Restore agent sessions?" } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud-VPN-Einrichtung ist nicht verfügbar" + "value": "Agent-Sitzungen wiederherstellen?" } }, "fr": { "stringUnit": { "state": "translated", - "value": "La configuration du VPN Cloud est indisponible" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "La configuración de VPN de Cloud no está disponible" + "value": "Restaurer les sessions d’agent ?" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "Cloud VPN設定は利用できません" + "value": "هل تريد استعادة جلسات الوكيل؟" } }, - "zh-Hans": { + "es": { "stringUnit": { "state": "translated", - "value": "Cloud VPN 设置不可用" + "value": "¿Restaurar las sesiones de agente?" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "無法使用 Cloud VPN 設定" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "Cloud VPN 설정을 사용할 수 없습니다" + "value": "要還原代理工作階段嗎?" } }, - "ar": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "إعداد VPN الخاص بـ Cloud غير متاح" + "value": "要恢复代理会话吗?" } }, - "bs": { + "ko": { "stringUnit": { "state": "translated", - "value": "Podešavanje Cloud VPN-a nije dostupno" + "value": "에이전트 세션을 복원할까요?" } }, - "da": { + "ja": { "stringUnit": { "state": "translated", - "value": "Cloud VPN-opsætning er ikke tilgængelig" + "value": "エージェントセッションを復元しますか?" } - }, - "it": { + } + } + }, + "agentRecovery.alert.message": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "La configurazione VPN Cloud non è disponibile" + "value": "cmux quit unexpectedly while agent sessions were running. Sessions to restore: %lld. Each one reopens in its own workspace and resumes where it left off." } }, - "km": { + "de": { "stringUnit": { "state": "translated", - "value": "ការរៀបចំ Cloud VPN មិនអាចប្រើបាន" + "value": "cmux wurde unerwartet beendet, während Agent-Sitzungen liefen. Wiederherzustellende Sitzungen: %lld. Jede wird in einem eigenen Workspace geöffnet und dort fortgesetzt, wo sie aufgehört hat." } }, - "nb": { + "fr": { "stringUnit": { "state": "translated", - "value": "Cloud VPN-oppsett er ikke tilgjengelig" + "value": "cmux s’est fermé de façon inattendue pendant que des sessions d’agent étaient en cours. Sessions à restaurer : %lld. Chacune rouvre dans son propre espace de travail et reprend là où elle s’était arrêtée." } }, - "pl": { + "ar": { "stringUnit": { "state": "translated", - "value": "Konfiguracja Cloud VPN jest niedostępna" + "value": "أُغلق cmux بشكل غير متوقع أثناء تشغيل جلسات الوكيل. الجلسات المطلوب استعادتها: %lld. تُفتح كل جلسة في مساحة عمل خاصة بها وتُستأنف من حيث توقفت." } }, - "pt-BR": { + "es": { "stringUnit": { "state": "translated", - "value": "A configuração do Cloud VPN não está disponível" + "value": "cmux se cerró inesperadamente mientras había sesiones de agente en ejecución. Sesiones por restaurar: %lld. Cada una se abre en su propio espacio de trabajo y continúa donde se quedó." } }, - "ru": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Настройка Cloud VPN недоступна" + "value": "cmux 在代理工作階段執行時意外結束。要還原的工作階段:%lld。每個工作階段都會在各自的工作區重新開啟,並從中斷處繼續。" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "การตั้งค่า Cloud VPN ไม่พร้อมใช้งาน" + "value": "cmux 在代理会话运行时意外退出。要恢复的会话:%lld。每个会话都会在各自的工作区重新打开,并从中断处继续。" } }, - "tr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Cloud VPN kurulumu kullanılamıyor" + "value": "에이전트 세션이 실행 중일 때 cmux가 예기치 않게 종료되었습니다. 복원할 세션: %lld. 각 세션은 자체 워크스페이스에서 다시 열리고 중단된 곳에서 이어집니다." } }, - "uk": { + "ja": { "stringUnit": { "state": "translated", - "value": "Налаштування Cloud VPN недоступне" + "value": "エージェントセッションの実行中に cmux が予期せず終了しました。復元するセッション: %lld。各セッションは専用のワークスペースで再び開き、中断したところから再開します。" } } } }, - "cloud.vpn.setup.permission.body": { + "agentRecovery.alert.restore": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The VPN software is included in cmux. You do not need another app. macOS may require your password or Touch ID during approval." + "value": "Restore Agent Sessions" } }, "de": { "stringUnit": { "state": "translated", - "value": "Die VPN-Software ist in cmux enthalten. Sie brauchen keine weitere App. macOS kann bei der Genehmigung Ihr Passwort oder Touch ID verlangen." + "value": "Agent-Sitzungen wiederherstellen" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Le logiciel VPN est inclus dans cmux. Aucune autre app n’est nécessaire. macOS peut demander votre mot de passe ou Touch ID lors de l’autorisation." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "El software VPN está incluido en cmux. No necesitas otra app. macOS puede solicitar tu contraseña o Touch ID durante la autorización." + "value": "Restaurer les sessions d’agent" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "VPNソフトウェアはcmuxに含まれています。別のアプリは不要です。承認時にmacOSがパスワードまたはTouch IDを求めることがあります。" + "value": "استعادة جلسات الوكيل" } }, - "zh-Hans": { + "es": { "stringUnit": { "state": "translated", - "value": "cmux 已包含 VPN 软件,无需其他应用。批准时,macOS 可能要求您输入密码或使用触控 ID。" + "value": "Restaurar sesiones de agente" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux 已包含 VPN 軟體,不需要其他 App。核准時,macOS 可能要求您輸入密碼或使用 Touch ID。" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "VPN 소프트웨어는 cmux에 포함되어 있습니다. 다른 앱은 필요하지 않습니다. 승인 시 macOS에서 암호 또는 Touch ID를 요청할 수 있습니다." + "value": "還原代理工作階段" } }, - "ar": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "برنامج VPN مضمن في cmux. لا تحتاج إلى تطبيق آخر. قد يطلب macOS كلمة المرور أو Touch ID أثناء الموافقة." + "value": "恢复代理会话" } }, - "bs": { + "ko": { "stringUnit": { "state": "translated", - "value": "VPN softver je uključen u cmux. Nije potrebna druga aplikacija. macOS može zatražiti lozinku ili Touch ID tokom odobravanja." + "value": "에이전트 세션 복원" } }, - "da": { + "ja": { "stringUnit": { "state": "translated", - "value": "VPN-softwaren er inkluderet i cmux. Du behøver ingen anden app. macOS kan bede om din adgangskode eller Touch ID under godkendelsen." + "value": "エージェントセッションを復元" } - }, - "it": { + } + } + }, + "agentRecovery.alert.notNow": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Il software VPN è incluso in cmux. Non serve un’altra app. macOS potrebbe chiedere la password o Touch ID durante l’autorizzazione." + "value": "Not Now" } }, - "km": { + "de": { "stringUnit": { "state": "translated", - "value": "កម្មវិធី VPN មាននៅក្នុង cmux។ អ្នកមិនត្រូវការកម្មវិធីផ្សេងទៀតទេ។ macOS អាចស្នើពាក្យសម្ងាត់ ឬ Touch ID ក្នុងពេលអនុម័ត។" + "value": "Nicht jetzt" } }, - "nb": { + "fr": { "stringUnit": { "state": "translated", - "value": "VPN-programvaren er inkludert i cmux. Du trenger ingen annen app. macOS kan be om passord eller Touch ID under godkjenningen." + "value": "Pas maintenant" } }, - "pl": { + "ar": { "stringUnit": { "state": "translated", - "value": "Oprogramowanie VPN jest zawarte w cmux. Nie potrzebujesz innej aplikacji. macOS może poprosić o hasło lub Touch ID podczas zatwierdzania." + "value": "ليس الآن" } }, - "pt-BR": { + "es": { "stringUnit": { "state": "translated", - "value": "O software VPN vem incluído no cmux. Você não precisa de outro app. O macOS pode pedir sua senha ou Touch ID durante a aprovação." + "value": "Ahora no" } }, - "ru": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "VPN-программа уже входит в cmux. Другие приложения не нужны. Во время подтверждения macOS может запросить пароль или Touch ID." + "value": "稍後" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "ซอฟต์แวร์ VPN รวมอยู่ใน cmux แล้ว ไม่ต้องใช้แอปอื่น macOS อาจขอรหัสผ่านหรือ Touch ID ระหว่างการอนุมัติ" + "value": "以后再说" } }, - "tr": { + "ko": { "stringUnit": { "state": "translated", - "value": "VPN yazılımı cmux içinde bulunur. Başka bir uygulama gerekmez. macOS onay sırasında parolanızı veya Touch ID’yi isteyebilir." + "value": "나중에" } }, - "uk": { + "ja": { "stringUnit": { "state": "translated", - "value": "Програмне забезпечення VPN входить до cmux. Інша програма не потрібна. Під час схвалення macOS може попросити пароль або Touch ID." + "value": "後で" } } } }, - "cloud.vpn.setup.status.title": { + "settings.notifications.soundWhenFocused.subtitle": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Private network status" + "value": "Play the notification sound even when the pane that notified is already focused. When off, a focused pane shows its ring without a sound." } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Status des privaten Netzwerks" + "value": "شغّل صوت الإشعار حتى عندما تكون اللوحة التي أرسلت الإشعار في موضع التركيز بالفعل. عند إيقافه، تعرض اللوحة المُركَّز عليها حلقتها دون صوت." } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "État du réseau privé" + "value": "Den Benachrichtigungston auch abspielen, wenn der benachrichtigende Bereich bereits fokussiert ist. Wenn aus, zeigt ein fokussierter Bereich seinen Ring ohne Ton." } }, "es": { "stringUnit": { "state": "translated", - "value": "Estado de la red privada" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "プライベートネットワークの状態" + "value": "Reproduce el sonido de notificación incluso cuando el panel que notificó ya tiene el foco. Si está desactivado, un panel con foco muestra su anillo sin sonido." } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "私有网络状态" + "value": "Jouer le son de notification même lorsque le panneau à l’origine de la notification a déjà le focus. Désactivé, un panneau actif affiche son anneau sans son." } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "私有網路狀態" + "value": "通知を送ったペインがすでにフォーカスされている場合でも通知音を鳴らします。オフの場合、フォーカス中のペインは音を鳴らさずにリングを表示します。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "비공개 네트워크 상태" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "حالة الشبكة الخاصة" + "value": "알림을 보낸 패널이 이미 포커스된 상태여도 알림음을 재생합니다. 끄면 포커스된 패널은 소리 없이 링만 표시합니다." } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Status privatne mreže" + "value": "即使发出通知的窗格已处于焦点状态,也播放通知声音。关闭时,处于焦点的窗格会显示光环但不发出声音。" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Status for privat netværk" + "value": "即使發出通知的窗格已在焦點中,也播放通知聲音。關閉時,焦點中的窗格會顯示光環但不發出聲音。" } - }, - "it": { + } + } + }, + "settings.notifications.soundWhenFocused.title": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Stato della rete privata" + "value": "Sound for Focused Pane" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "ស្ថានភាពបណ្តាញឯកជន" + "value": "صوت للوحة المُركَّز عليها" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Status for privat nettverk" + "value": "Ton für fokussierten Bereich" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Stan sieci prywatnej" + "value": "Sonido para el panel con foco" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Status da rede privada" + "value": "Son pour le panneau actif" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Состояние частной сети" + "value": "フォーカス中のペインの通知音" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "สถานะเครือข่ายส่วนตัว" + "value": "포커스된 패널 소리" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Özel ağ durumu" + "value": "焦点窗格的声音" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Стан приватної мережі" + "value": "焦點窗格的聲音" } } } }, - "cloud.vpn.setup.title": { + "agent.claude.stopFailure.body.generic": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "Claude Code stopped on an API error" } }, - "de": { + "ja": { "stringUnit": { "state": "translated", - "value": "Cloud-VPN" + "value": "Claude Code は API エラーで停止しました" } }, - "fr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "VPN Cloud" + "value": "Claude Code 因 API 错误而停止" } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "VPN de Cloud" + "value": "Claude Code wurde wegen eines API-Fehlers gestoppt" } }, - "ja": { + "fr": { "stringUnit": { "state": "translated", - "value": "クラウドVPN" + "value": "Claude Code s'est arrêté sur une erreur d'API" } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "云端 VPN" + "value": "توقف Claude Code بسبب خطأ في واجهة API" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Claude Code se detuvo por un error de la API" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "雲端 VPN" + "value": "Claude Code 因 API 錯誤而停止" } }, "ko": { "stringUnit": { "state": "translated", - "value": "클라우드 VPN" + "value": "Claude Code가 API 오류로 중지되었습니다" + } + } + } + }, + "agent.claude.stopFailure.status.apiError": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "API error" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "شبكة Cloud الخاصة" + "value": "API エラー" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "API 错误" } }, - "da": { + "de": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "API-Fehler" } }, - "it": { + "fr": { "stringUnit": { "state": "translated", - "value": "VPN Cloud" + "value": "Erreur d'API" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "خطأ في واجهة API" } }, - "nb": { + "es": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "Error de la API" } }, - "pl": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "API 錯誤" } }, - "pt-BR": { + "ko": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "API 오류" + } + } + } + }, + "agent.claude.stopFailure.status.authentication": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Auth error" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "認証エラー" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "认证错误" } }, - "tr": { + "de": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "Authentifizierungsfehler" } }, - "uk": { + "fr": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "Erreur d'authentification" } - } - } - }, - "cloud.vpn.setup.unavailable": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "ar": { "stringUnit": { "state": "translated", - "value": "This copy of cmux does not include a signed VPN extension. Use a cmux release with Cloud VPN support. Cloud terminals, Ports, and Desktop remain available without the VPN." + "value": "خطأ في المصادقة" } }, - "de": { + "es": { "stringUnit": { "state": "translated", - "value": "Diese cmux-Version enthält keine signierte VPN-Erweiterung. Verwenden Sie eine cmux-Version mit Cloud-VPN-Unterstützung. Cloud-Terminals, Ports und Desktop bleiben ohne VPN verfügbar." + "value": "Error de autenticación" } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Cette copie de cmux ne contient pas d’extension VPN signée. Utilisez une version de cmux qui prend en charge le VPN Cloud. Les terminaux Cloud, Ports et Bureau restent disponibles sans VPN." + "value": "驗證錯誤" } }, - "es": { + "ko": { "stringUnit": { "state": "translated", - "value": "Esta copia de cmux no incluye una extensión VPN firmada. Usa una versión de cmux compatible con VPN de Cloud. Los terminales Cloud, Puertos y Escritorio siguen disponibles sin VPN." + "value": "인증 오류" + } + } + } + }, + "agent.claude.stopFailure.status.billing": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Billing error" } }, "ja": { "stringUnit": { "state": "translated", - "value": "このcmuxには署名済みのVPN機能拡張が含まれていません。Cloud VPN対応のcmuxリリースを使用してください。Cloudのターミナル、ポート、デスクトップはVPNなしでも使えます。" + "value": "請求エラー" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "此 cmux 副本未包含已签名的 VPN 扩展。请使用支持 Cloud VPN 的 cmux 版本。Cloud 终端、端口和桌面无需 VPN 仍可使用。" + "value": "账单错误" } }, - "zh-Hant": { + "de": { "stringUnit": { "state": "translated", - "value": "此 cmux 副本未包含已簽署的 VPN 延伸功能。請使用支援 Cloud VPN 的 cmux 版本。Cloud 終端機、連接埠和桌面不需要 VPN 仍可使用。" + "value": "Abrechnungsfehler" } }, - "ko": { + "fr": { "stringUnit": { "state": "translated", - "value": "이 cmux에는 서명된 VPN 확장이 포함되어 있지 않습니다. Cloud VPN을 지원하는 cmux 릴리스를 사용하세요. Cloud 터미널, 포트 및 데스크탑은 VPN 없이도 사용할 수 있습니다." + "value": "Erreur de facturation" } }, "ar": { "stringUnit": { "state": "translated", - "value": "لا تتضمن هذه النسخة من cmux امتداد VPN موقعًا. استخدم إصدار cmux يدعم VPN الخاص بـ Cloud. تظل طرفيات Cloud والمنافذ وسطح المكتب متاحة بدون VPN." + "value": "خطأ في الفوترة" } }, - "bs": { + "es": { "stringUnit": { "state": "translated", - "value": "Ova kopija cmux-a nema potpisani VPN dodatak. Koristite cmux izdanje sa Cloud VPN podrškom. Cloud terminali, portovi i radna površina ostaju dostupni bez VPN-a." + "value": "Error de facturación" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Denne cmux-kopi indeholder ikke en signeret VPN-udvidelse. Brug en cmux-udgave med Cloud VPN-understøttelse. Cloud-terminaler, porte og skrivebord er stadig tilgængelige uden VPN." + "value": "帳單錯誤" } }, - "it": { + "ko": { "stringUnit": { "state": "translated", - "value": "Questa copia di cmux non include un’estensione VPN firmata. Usa una versione di cmux con supporto Cloud VPN. Terminali Cloud, porte e desktop restano disponibili senza VPN." + "value": "결제 오류" + } + } + } + }, + "agent.claude.stopFailure.status.connectionDropped": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Connection dropped" } }, - "km": { + "ja": { "stringUnit": { "state": "translated", - "value": "cmux ច្បាប់នេះមិនមានផ្នែកបន្ថែម VPN ដែលបានចុះហត្ថលេខាទេ។ ប្រើកំណែ cmux ដែលគាំទ្រ Cloud VPN។ Terminal, Ports និង Desktop របស់ Cloud នៅតែប្រើបានដោយគ្មាន VPN។" + "value": "接続が切断されました" } }, - "nb": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Denne cmux-kopien har ingen signert VPN-utvidelse. Bruk en cmux-versjon med Cloud VPN-støtte. Cloud-terminaler, porter og skrivebord er tilgjengelige uten VPN." + "value": "连接已断开" } }, - "pl": { + "de": { "stringUnit": { "state": "translated", - "value": "Ta kopia cmux nie zawiera podpisanego rozszerzenia VPN. Użyj wydania cmux z obsługą Cloud VPN. Terminale Cloud, porty i pulpit pozostają dostępne bez VPN." + "value": "Verbindung abgebrochen" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Esta cópia do cmux não inclui uma extensão VPN assinada. Use uma versão do cmux com suporte a Cloud VPN. Terminais Cloud, portas e área de trabalho continuam disponíveis sem VPN." + "value": "Connexion interrompue" } }, - "ru": { + "ar": { "stringUnit": { "state": "translated", - "value": "В этой копии cmux нет подписанного VPN-расширения. Используйте выпуск cmux с поддержкой Cloud VPN. Cloud-терминалы, порты и рабочий стол доступны без VPN." + "value": "انقطع الاتصال" } }, - "th": { + "es": { "stringUnit": { "state": "translated", - "value": "cmux รุ่นนี้ไม่มีส่วนขยาย VPN ที่ลงนามแล้ว ใช้รุ่น cmux ที่รองรับ Cloud VPN เทอร์มินัล Cloud พอร์ต และเดสก์ท็อปยังใช้ได้โดยไม่ต้องมี VPN" + "value": "Conexión perdida" } }, - "tr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Bu cmux kopyasında imzalı VPN uzantısı bulunmuyor. Cloud VPN destekli bir cmux sürümü kullanın. Cloud terminalleri, portlar ve masaüstü VPN olmadan da kullanılabilir." + "value": "連線已中斷" } }, - "uk": { + "ko": { "stringUnit": { "state": "translated", - "value": "Ця копія cmux не містить підписаного VPN-розширення. Використовуйте випуск cmux із підтримкою Cloud VPN. Cloud-термінали, порти й робочий стіл доступні без VPN." + "value": "연결 끊김" } } } }, - "cloud.vpn.setup.waiting": { + "agent.claude.stopFailure.status.outputLimit": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Waiting" + "value": "Output limit" } }, - "de": { + "ja": { "stringUnit": { "state": "translated", - "value": "Warten" + "value": "出力上限" } }, - "fr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "En attente" + "value": "输出上限" } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "En espera" + "value": "Ausgabelimit" } }, - "ja": { + "fr": { "stringUnit": { "state": "translated", - "value": "待機中" + "value": "Limite de sortie" } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "等待中" + "value": "حد المخرجات" } }, - "zh-Hant": { + "es": { "stringUnit": { "state": "translated", - "value": "等待中" + "value": "Límite de salida" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "대기 중" + "value": "輸出上限" } }, - "ar": { + "ko": { "stringUnit": { "state": "translated", - "value": "قيد الانتظار" + "value": "출력 한도" } - }, - "bs": { + } + } + }, + "agent.claude.stopFailure.status.overloaded": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Čekanje" + "value": "API overloaded" } }, - "da": { + "ja": { "stringUnit": { "state": "translated", - "value": "Venter" + "value": "API 過負荷" } }, - "it": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "In attesa" + "value": "API 过载" } }, - "km": { + "de": { "stringUnit": { "state": "translated", - "value": "កំពុងរង់ចាំ" + "value": "API überlastet" } }, - "nb": { + "fr": { "stringUnit": { "state": "translated", - "value": "Venter" + "value": "API surchargée" } }, - "pl": { + "ar": { "stringUnit": { "state": "translated", - "value": "Oczekiwanie" + "value": "واجهة API محمّلة فوق طاقتها" } }, - "pt-BR": { + "es": { "stringUnit": { "state": "translated", - "value": "Aguardando" + "value": "API sobrecargada" } }, - "ru": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Ожидание" + "value": "API 過載" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "กำลังรอ" + "value": "API 과부하" } - }, - "tr": { + } + } + }, + "agent.claude.stopFailure.status.rateLimited": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Bekliyor" + "value": "Rate limited" } }, - "uk": { + "ja": { "stringUnit": { "state": "translated", - "value": "Очікування" + "value": "レート制限中" } - } - } - }, - "cloudTree.ports.action.wake": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Wake Machine" + "value": "已限速" } }, "de": { "stringUnit": { "state": "translated", - "value": "Maschine aktivieren" + "value": "Ratenbegrenzt" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Réveiller la machine" + "value": "Limite de requêtes atteinte" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إيقاظ الجهاز" + "value": "تم تقييد المعدل" } }, "es": { "stringUnit": { "state": "translated", - "value": "Activar máquina" + "value": "Límite de frecuencia alcanzado" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "喚醒機器" + "value": "已限速" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "唤醒机器" + "value": "속도 제한됨" } - }, - "ko": { + } + } + }, + "agent.claude.stopFailure.status.usageLimit": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "머신 깨우기" + "value": "Usage limit" } }, "ja": { "stringUnit": { "state": "translated", - "value": "マシンを起動" + "value": "使用量の上限" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Probudi mašinu" + "value": "用量上限" } }, - "da": { + "de": { "stringUnit": { "state": "translated", - "value": "Væk maskine" + "value": "Nutzungslimit" } }, - "it": { + "fr": { "stringUnit": { "state": "translated", - "value": "Riattiva macchina" + "value": "Limite d'utilisation" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "ដាស់ម៉ាស៊ីន" + "value": "حد الاستخدام" } }, - "nb": { + "es": { "stringUnit": { "state": "translated", - "value": "Vekk maskin" + "value": "Límite de uso" } }, - "pl": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Wybudź maszynę" + "value": "用量上限" } }, - "pt-BR": { + "ko": { "stringUnit": { "state": "translated", - "value": "Despertar máquina" + "value": "사용량 한도" + } + } + } + }, + "agent.claude.stopFailure.status.usageLimitResets": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Usage limit, resets %@" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Разбудить машину" + "value": "使用量の上限、%@ にリセット" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "ปลุกเครื่อง" + "value": "用量上限,%@ 重置" } }, - "tr": { + "de": { "stringUnit": { "state": "translated", - "value": "Makineyi uyandır" + "value": "Nutzungslimit, Reset %@" } }, - "uk": { + "fr": { "stringUnit": { "state": "translated", - "value": "Розбудити машину" + "value": "Limite d'utilisation, réinitialisation %@" } - } - } - }, - "cloudTree.ports.asleep.detail": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "ar": { "stringUnit": { "state": "translated", - "value": "Wake the machine to check its services. cmux’s in-app forwarding does not need Cloud VPN." + "value": "حد الاستخدام، يُعاد التعيين %@" } }, - "de": { + "es": { "stringUnit": { "state": "translated", - "value": "Aktivieren Sie die Maschine, um ihre Dienste zu prüfen. Die Weiterleitung in cmux benötigt kein Cloud-VPN." + "value": "Límite de uso, se restablece %@" } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Réveillez la machine pour vérifier ses services. Le transfert intégré à cmux ne nécessite pas de VPN Cloud." + "value": "用量上限,%@ 重設" } }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "사용량 한도, %@에 초기화" + } + } + } + }, + "settings.app.reorderOnNotification.mode.agentActivity": { + "extractionState": "manual", + "localizations": { "ar": { "stringUnit": { "state": "translated", - "value": "أيقظ الجهاز لفحص خدماته. لا تحتاج إعادة التوجيه داخل cmux إلى Cloud VPN." + "value": "نشاط الوكيل" } }, - "es": { + "bs": { "stringUnit": { "state": "translated", - "value": "Activa la máquina para comprobar sus servicios. El reenvío integrado de cmux no necesita Cloud VPN." + "value": "Aktivnost agenata" } }, - "zh-Hant": { + "da": { "stringUnit": { "state": "translated", - "value": "喚醒機器以檢查其服務。cmux 的應用程式內轉送不需要 Cloud VPN。" + "value": "Agentaktivitet" } }, - "zh-Hans": { + "de": { "stringUnit": { "state": "translated", - "value": "唤醒机器以检查其服务。cmux 的应用内转发无需 Cloud VPN。" + "value": "Agentenaktivität" } }, - "ko": { + "en": { "stringUnit": { "state": "translated", - "value": "머신을 깨워 서비스를 확인하세요. cmux 앱 내 전달에는 Cloud VPN이 필요하지 않습니다." + "value": "Agent Activity" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "マシンを起動してサービスを確認してください。cmux のアプリ内転送に Cloud VPN は不要です。" + "value": "Actividad de agentes" } }, - "bs": { + "fr": { "stringUnit": { "state": "translated", - "value": "Probudite mašinu da provjerite njene servise. Prosljeđivanje unutar cmux-a ne treba Cloud VPN." + "value": "Activité des agents" } }, - "da": { + "it": { "stringUnit": { "state": "translated", - "value": "Væk maskinen for at kontrollere dens tjenester. Videresendelse i cmux kræver ikke Cloud VPN." + "value": "Attività degli agenti" } }, - "it": { + "ja": { "stringUnit": { "state": "translated", - "value": "Riattiva la macchina per controllarne i servizi. L’inoltro all’interno di cmux non richiede la VPN Cloud." + "value": "エージェントのアクティビティ" } }, - "km": { + "ko": { "stringUnit": { "state": "translated", - "value": "ដាស់ម៉ាស៊ីនដើម្បីពិនិត្យសេវាកម្មរបស់វា។ ការបញ្ជូនបន្តនៅក្នុង cmux មិនត្រូវការ Cloud VPN ទេ។" + "value": "에이전트 활동" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Vekk maskinen for å sjekke tjenestene. Videresending i cmux trenger ikke Cloud VPN." + "value": "Agentaktivitet" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Wybudź maszynę, aby sprawdzić jej usługi. Przekierowywanie w cmux nie wymaga Cloud VPN." + "value": "Aktywność agentów" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Desperte a máquina para verificar os serviços. O encaminhamento dentro do cmux não precisa do Cloud VPN." + "value": "Atividade dos agentes" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Разбудите машину, чтобы проверить её службы. Перенаправлению внутри cmux Cloud VPN не нужен." + "value": "Активность агентов" } }, "th": { "stringUnit": { "state": "translated", - "value": "ปลุกเครื่องเพื่อตรวจสอบบริการ การส่งต่อภายใน cmux ไม่ต้องใช้ Cloud VPN" + "value": "กิจกรรมของเอเจนต์" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Hizmetlerini denetlemek için makineyi uyandırın. cmux içi yönlendirme Cloud VPN gerektirmez." + "value": "Ajan etkinliği" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Розбудіть машину, щоб перевірити її служби. Перенаправлення всередині cmux не потребує Cloud VPN." - } - } - } - }, - "cloudTree.ports.available.title": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Listening services" + "value": "Активність агентів" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Lauschende Dienste" + "value": "代理活动" } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Services en écoute" + "value": "代理活動" } - }, + } + } + }, + "settings.app.reorderOnNotification.mode.notifications": { + "extractionState": "manual", + "localizations": { "ar": { "stringUnit": { "state": "translated", - "value": "الخدمات المستمعة" + "value": "الإشعارات" } }, - "es": { + "bs": { "stringUnit": { "state": "translated", - "value": "Servicios en escucha" + "value": "Obavještenja" } }, - "zh-Hant": { + "da": { "stringUnit": { "state": "translated", - "value": "監聽中的服務" + "value": "Notifikationer" } }, - "zh-Hans": { + "de": { "stringUnit": { "state": "translated", - "value": "监听中的服务" + "value": "Benachrichtigungen" } }, - "ko": { + "en": { "stringUnit": { "state": "translated", - "value": "수신 대기 서비스" + "value": "Notifications" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "待ち受け中のサービス" + "value": "Notificaciones" } }, - "bs": { + "fr": { "stringUnit": { "state": "translated", - "value": "Servisi koji slušaju" + "value": "Sur notification" } }, - "da": { + "it": { "stringUnit": { "state": "translated", - "value": "Lyttende tjenester" + "value": "Notifiche" } }, - "it": { + "ja": { "stringUnit": { "state": "translated", - "value": "Servizi in ascolto" + "value": "通知" } }, - "km": { + "ko": { "stringUnit": { "state": "translated", - "value": "សេវាកម្មដែលកំពុងស្តាប់" + "value": "알림" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Lyttende tjenester" + "value": "Varsler" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Nasłuchujące usługi" + "value": "Powiadomienia" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Serviços em escuta" + "value": "Notificações" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Прослушивающие службы" + "value": "Уведомления" } }, "th": { "stringUnit": { "state": "translated", - "value": "บริการที่กำลังรับฟัง" + "value": "การแจ้งเตือน" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Dinleyen hizmetler" + "value": "Bildirimler" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Служби, що прослуховують" - } - } - } - }, - "cloudTree.ports.binding.detail": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "cmux’s browser route connects to 127.0.0.1 on the machine. Bind the service to 127.0.0.1 or 0.0.0.0, then refresh. Turning on Cloud VPN does not change this route." + "value": "Сповіщення" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Die Browser-Verbindung von cmux verwendet 127.0.0.1 auf der Maschine. Binden Sie den Dienst an 127.0.0.1 oder 0.0.0.0 und aktualisieren Sie. Cloud-VPN ändert diese Route nicht." + "value": "通知" } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Le navigateur cmux se connecte à 127.0.0.1 sur la machine. Liez le service à 127.0.0.1 ou 0.0.0.0, puis actualisez. Activer le VPN Cloud ne change pas cette route." + "value": "通知" } - }, + } + } + }, + "settings.app.reorderOnNotification.mode.off": { + "extractionState": "manual", + "localizations": { "ar": { "stringUnit": { "state": "translated", - "value": "يتصل مسار متصفح cmux بالعنوان 127.0.0.1 على الجهاز. اربط الخدمة بالعنوان 127.0.0.1 أو 0.0.0.0 ثم حدّث. تشغيل Cloud VPN لا يغير هذا المسار." + "value": "إيقاف" } }, - "es": { + "bs": { "stringUnit": { "state": "translated", - "value": "La ruta del navegador de cmux conecta a 127.0.0.1 en la máquina. Enlaza el servicio a 127.0.0.1 o 0.0.0.0 y actualiza. Activar Cloud VPN no cambia esta ruta." + "value": "Isključeno" } }, - "zh-Hant": { + "da": { "stringUnit": { "state": "translated", - "value": "cmux 的瀏覽器路徑會連線到機器上的 127.0.0.1。請將服務繫結至 127.0.0.1 或 0.0.0.0 後重新整理。開啟 Cloud VPN 不會改變此路徑。" + "value": "Fra" } }, - "zh-Hans": { + "de": { "stringUnit": { "state": "translated", - "value": "cmux 的浏览器路由连接到机器上的 127.0.0.1。请将服务绑定到 127.0.0.1 或 0.0.0.0 后刷新。开启 Cloud VPN 不会改变此路由。" + "value": "Aus" } }, - "ko": { + "en": { "stringUnit": { "state": "translated", - "value": "cmux 브라우저 경로는 머신의 127.0.0.1에 연결합니다. 서비스를 127.0.0.1 또는 0.0.0.0에 바인딩한 후 새로 고치세요. Cloud VPN을 켜도 이 경로는 바뀌지 않습니다." + "value": "Off" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "cmux のブラウザはマシン上の 127.0.0.1 に接続します。サービスを 127.0.0.1 または 0.0.0.0 にバインドして更新してください。Cloud VPN を有効にしてもこの経路は変わりません。" + "value": "Desactivado" } }, - "bs": { + "fr": { "stringUnit": { "state": "translated", - "value": "Ruta preglednika u cmux-u povezuje se na 127.0.0.1 na mašini. Vežite servis na 127.0.0.1 ili 0.0.0.0, zatim osvježite. Uključivanje Cloud VPN-a ne mijenja ovu rutu." + "value": "Désactivé" } }, - "da": { + "it": { "stringUnit": { "state": "translated", - "value": "cmux’ browserrute forbinder til 127.0.0.1 på maskinen. Bind tjenesten til 127.0.0.1 eller 0.0.0.0, og opdater derefter. Aktivering af Cloud VPN ændrer ikke denne rute." + "value": "Disattivato" } }, - "it": { + "ja": { "stringUnit": { "state": "translated", - "value": "Il percorso del browser di cmux si connette a 127.0.0.1 sulla macchina. Associa il servizio a 127.0.0.1 o 0.0.0.0, quindi aggiorna. L’attivazione della VPN Cloud non modifica questo percorso." + "value": "オフ" } }, - "km": { + "ko": { "stringUnit": { "state": "translated", - "value": "ផ្លូវកម្មវិធីរុករករបស់ cmux ភ្ជាប់ទៅ 127.0.0.1 នៅលើម៉ាស៊ីន។ ចងសេវាកម្មទៅ 127.0.0.1 ឬ 0.0.0.0 រួចផ្ទុកឡើងវិញ។ ការបើក Cloud VPN មិនផ្លាស់ប្តូរផ្លូវនេះទេ។" + "value": "끔" } }, "nb": { "stringUnit": { "state": "translated", - "value": "cmux sin nettleserrute kobler til 127.0.0.1 på maskinen. Bind tjenesten til 127.0.0.1 eller 0.0.0.0, og oppdater deretter. Å slå på Cloud VPN endrer ikke denne ruten." + "value": "Av" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Trasa przeglądarki cmux łączy się z 127.0.0.1 na maszynie. Powiąż usługę z 127.0.0.1 lub 0.0.0.0, a następnie odśwież. Włączenie Cloud VPN nie zmienia tej trasy." + "value": "Wyłączone" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "A rota de navegador do cmux se conecta a 127.0.0.1 na máquina. Vincule o serviço a 127.0.0.1 ou 0.0.0.0 e atualize. Ativar o Cloud VPN não altera essa rota." + "value": "Desativado" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Браузерный маршрут cmux подключается к 127.0.0.1 на машине. Привяжите службу к 127.0.0.1 или 0.0.0.0, затем обновите. Включение Cloud VPN не меняет этот маршрут." + "value": "Выкл." } }, "th": { "stringUnit": { "state": "translated", - "value": "เส้นทางเบราว์เซอร์ของ cmux เชื่อมต่อกับ 127.0.0.1 บนเครื่อง ผูกบริการกับ 127.0.0.1 หรือ 0.0.0.0 แล้วรีเฟรช การเปิด Cloud VPN ไม่ได้เปลี่ยนเส้นทางนี้" + "value": "ปิด" } }, "tr": { "stringUnit": { "state": "translated", - "value": "cmux’un tarayıcı yolu makinedeki 127.0.0.1 adresine bağlanır. Hizmeti 127.0.0.1 veya 0.0.0.0 adresine bağlayın, ardından yenileyin. Cloud VPN’i açmak bu yolu değiştirmez." + "value": "Kapalı" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Браузерний маршрут cmux підключається до 127.0.0.1 на машині. Прив’яжіть службу до 127.0.0.1 або 0.0.0.0, потім оновіть. Увімкнення Cloud VPN не змінює цей маршрут." + "value": "Вимкнено" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "关闭" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "關閉" } } } }, - "cloudTree.ports.binding.title": { + "settings.app.reorderOnNotification.modeSubtitle": { "extractionState": "manual", "localizations": { - "en": { + "ar": { "stringUnit": { "state": "translated", - "value": "Services use another interface" + "value": "ينقل مساحات العمل إلى الأعلى عندما تتلقى إشعارًا. مع نشاط الوكيل، ينقلها أيضًا عندما ترسل مطالبة أو ينهي وكيل دورة أو يحتاج إلى إدخال أو يفشل، لكن ليس أبدًا أثناء وجود المؤشر فوق الشريط الجانبي. الإيقاف يحافظ على ثبات مواضع الاختصارات." } }, - "de": { + "bs": { "stringUnit": { "state": "translated", - "value": "Dienste verwenden eine andere Schnittstelle" + "value": "Pomjera radne prostore na vrh kada prime obavještenje. Aktivnost agenata ih pomjera i kada pošaljete upit ili agent završi potez, treba unos ili ne uspije, ali nikad dok je pokazivač iznad bočne trake. Isključeno čuva stabilne pozicije prečica." } }, - "fr": { + "da": { "stringUnit": { "state": "translated", - "value": "Les services utilisent une autre interface" + "value": "Flytter arbejdsområder til toppen, når de modtager en notifikation. Agentaktivitet flytter dem også, når du sender en prompt eller en agent afslutter en tur, har brug for input eller fejler, men aldrig mens markøren er over sidepanelet. Fra holder genvejspositionerne stabile." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "تستخدم الخدمات واجهة أخرى" + "value": "Verschiebt Workspaces nach oben, wenn sie eine Benachrichtigung erhalten. Mit Agentenaktivität auch dann, wenn Sie einen Prompt senden oder ein Agent einen Durchlauf beendet, eine Eingabe braucht oder fehlschlägt, aber nie, während der Zeiger über der Seitenleiste ist. Aus hält die Positionen der Tastenkürzel stabil." } }, - "es": { + "en": { "stringUnit": { "state": "translated", - "value": "Los servicios usan otra interfaz" + "value": "Move workspaces to the top when they receive a notification. Agent Activity also moves them when you send a prompt or an agent finishes a turn, needs input, or fails, but never while you point at the sidebar. Off keeps shortcut positions stable." } }, - "zh-Hant": { + "es": { "stringUnit": { "state": "translated", - "value": "服務使用其他介面" + "value": "Mueve los espacios de trabajo arriba cuando reciben una notificación. Con Actividad de agentes, también cuando envías un prompt o un agente termina un turno, necesita una respuesta o falla, pero nunca mientras el puntero está sobre la barra lateral. Desactivado mantiene estables las posiciones de los atajos." } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "服务使用其他接口" + "value": "Place les espaces de travail en haut lorsqu’ils reçoivent une notification. Avec Activité des agents, aussi lorsque vous envoyez un prompt ou qu’un agent termine un tour, attend une saisie ou échoue, mais jamais pendant que le pointeur survole la barre latérale. Désactivé garde les positions des raccourcis stables." } }, - "ko": { + "it": { "stringUnit": { "state": "translated", - "value": "서비스가 다른 인터페이스를 사용함" + "value": "Sposta gli spazi di lavoro in cima quando ricevono una notifica. Attività degli agenti li sposta anche quando invii un prompt o un agente termina un turno, attende un input o fallisce, ma mai mentre il puntatore è sulla barra laterale. Disattivato mantiene stabili le posizioni delle scorciatoie." } }, "ja": { "stringUnit": { "state": "translated", - "value": "サービスが別のインターフェイスを使用しています" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Servisi koriste drugi interfejs" + "value": "通知を受け取ったワークスペースを先頭に移動します。「エージェントのアクティビティ」では、プロンプトを送信したときや、エージェントがターンを終えたとき、入力を待っているとき、失敗したときにも移動しますが、ポインタがサイドバー上にある間は移動しません。「オフ」ではショートカットの位置が変わりません。" } }, - "da": { + "ko": { "stringUnit": { "state": "translated", - "value": "Tjenester bruger en anden grænseflade" + "value": "알림을 받으면 워크스페이스를 맨 위로 옮깁니다. 에이전트 활동을 선택하면 프롬프트를 보내거나 에이전트가 턴을 마치거나 입력이 필요하거나 실패할 때도 옮기지만, 포인터가 사이드바 위에 있을 때는 옮기지 않습니다. 끔은 단축키 위치를 고정합니다." } }, - "it": { + "nb": { "stringUnit": { "state": "translated", - "value": "I servizi usano un’altra interfaccia" + "value": "Flytter arbeidsområder til toppen når de mottar et varsel. Agentaktivitet flytter dem også når du sender en ledetekst eller en agent fullfører en runde, trenger input eller feiler, men aldri mens pekeren er over sidefeltet. Av holder snarveisposisjonene stabile." } }, - "km": { + "pl": { "stringUnit": { "state": "translated", - "value": "សេវាកម្មប្រើចំណុចប្រទាក់ផ្សេង" + "value": "Przenosi obszary robocze na górę, gdy otrzymają powiadomienie. Aktywność agentów przenosi je także, gdy wyślesz prompt lub agent zakończy turę, potrzebuje danych lub zakończy się błędem, ale nigdy, gdy wskaźnik jest nad paskiem bocznym. Wyłączone zachowuje stałe pozycje skrótów." } }, - "nb": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Tjenester bruker et annet grensesnitt" + "value": "Move os espaços de trabalho para o topo quando recebem uma notificação. Atividade dos agentes também os move quando você envia um prompt ou um agente termina um turno, precisa de uma resposta ou falha, mas nunca enquanto o ponteiro está sobre a barra lateral. Desativado mantém as posições dos atalhos estáveis." } }, - "pl": { + "ru": { "stringUnit": { "state": "translated", - "value": "Usługi używają innego interfejsu" + "value": "Перемещает рабочие области наверх, когда они получают уведомление. «Активность агентов» также перемещает их, когда вы отправляете запрос или агент завершает ход, ждёт ввода или завершается с ошибкой, но никогда, пока указатель находится над боковой панелью. «Выкл.» сохраняет позиции сочетаний клавиш." } }, - "pt-BR": { + "th": { "stringUnit": { "state": "translated", - "value": "Os serviços usam outra interface" + "value": "ย้ายเวิร์กสเปซขึ้นด้านบนเมื่อได้รับการแจ้งเตือน กิจกรรมของเอเจนต์จะย้ายเมื่อคุณส่งพรอมต์หรือเอเจนต์จบรอบ ต้องการข้อมูล หรือล้มเหลวด้วย แต่จะไม่ย้ายขณะที่ตัวชี้อยู่เหนือแถบด้านข้าง ปิดจะคงตำแหน่งของทางลัดไว้" } }, - "ru": { + "tr": { "stringUnit": { "state": "translated", - "value": "Службы используют другой интерфейс" + "value": "Bildirim aldıklarında çalışma alanlarını en üste taşır. Ajan etkinliği, bir istem gönderdiğinizde, bir ajan turunu bitirdiğinde, girdi beklediğinde veya başarısız olduğunda da taşır, ancak işaretçi kenar çubuğunun üzerindeyken asla taşımaz. Kapalı, kısayol konumlarını sabit tutar." } }, - "th": { + "uk": { "stringUnit": { "state": "translated", - "value": "บริการใช้อินเทอร์เฟซอื่น" + "value": "Переміщує робочі області вгору, коли вони отримують сповіщення. «Активність агентів» також переміщує їх, коли ви надсилаєте запит або агент завершує хід, чекає на введення або завершується з помилкою, але ніколи, поки вказівник над бічною панеллю. «Вимкнено» зберігає позиції скорочень." } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Hizmetler başka bir arabirim kullanıyor" + "value": "工作区收到通知时移到顶部。选择“代理活动”时,你发送提示词或代理完成一轮、需要输入或失败时也会移动,但指针停在侧边栏上时绝不移动。关闭可让快捷键位置保持不变。" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Служби використовують інший інтерфейс" + "value": "工作區收到通知時移到頂部。選擇「代理活動」時,你送出提示詞或代理完成一輪、需要輸入或失敗時也會移動,但指標停在側邊欄上時絕不移動。關閉可讓快捷鍵位置保持不變。" } } } }, - "cloudTree.ports.empty.noService": { + "cli.restore.notice.routedLauncherUnavailable": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Start a web server on this machine, then refresh." + "value": "restore: this session was started through the routed launcher '%@', which is not on PATH. Resuming the agent directly instead." } }, - "de": { + "ja": { "stringUnit": { "state": "translated", - "value": "Starte einen Webserver auf diesem Rechner und aktualisiere dann die Liste." + "value": "restore: このセッションはルーティングされたランチャー「%@」経由で開始されましたが、PATH にありません。代わりにエージェントを直接再開します。" } }, - "fr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Démarrez un serveur web sur cette machine, puis actualisez." + "value": "restore:此会话是通过路由启动器“%@”启动的,但它不在 PATH 中。将改为直接恢复该代理。" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "شغّل خادم ويب على هذا الجهاز، ثم حدّث القائمة." + "value": "restore: Diese Sitzung wurde über den weitergeleiteten Launcher „%@“ gestartet, der nicht im PATH liegt. Der Agent wird stattdessen direkt fortgesetzt." } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "Inicia un servidor web en esta máquina y luego actualiza." + "value": "restore : cette session a été lancée via le lanceur routé « %@ », qui est introuvable dans le PATH. Reprise directe de l'agent à la place." } }, - "zh-Hant": { + "ar": { "stringUnit": { "state": "translated", - "value": "在這台機器上啟動網頁伺服器,然後重新整理。" + "value": "restore: بدأت هذه الجلسة عبر المشغّل الموجَّه '%@'، وهو غير موجود في PATH. سيتم استئناف الوكيل مباشرةً بدلاً من ذلك." } }, - "zh-Hans": { + "es": { "stringUnit": { "state": "translated", - "value": "在此机器上启动网页服务器,然后刷新。" + "value": "restore: esta sesión se inició mediante el lanzador enrutado '%@', que no está en el PATH. Se reanudará el agente directamente." } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "이 머신에서 웹 서버를 시작한 다음 새로 고치세요." + "value": "restore:此工作階段是透過路由啟動器「%@」啟動的,但它不在 PATH 中。將改為直接繼續該代理程式。" } }, - "ja": { + "ko": { "stringUnit": { "state": "translated", - "value": "このマシンで Web サーバーを起動してから、更新してください。" - } - }, - "bs": { - "stringUnit": { - "state": "needs_review", - "value": "Pokrenite web server na ovoj mašini, zatim osvježite." - } - }, - "da": { - "stringUnit": { - "state": "needs_review", - "value": "Start en webserver på denne maskine, og opdater derefter." + "value": "restore: 이 세션은 라우팅된 런처 '%@'를 통해 시작되었지만 PATH에 없습니다. 대신 에이전트를 직접 재개합니다." } - }, - "it": { + } + } + }, + "sidebar.extensions.action.noSpaceForPane": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { - "state": "needs_review", - "value": "Avvia un server web su questa macchina, poi aggiorna." + "state": "translated", + "value": "No space for new pane" } }, - "km": { + "ar": { "stringUnit": { - "state": "needs_review", - "value": "ចាប់ផ្តើមម៉ាស៊ីនមេបណ្តាញនៅលើម៉ាស៊ីននេះ រួចផ្ទុកឡើងវិញ។" + "state": "translated", + "value": "لا توجد مساحة للوحة جديدة" } }, - "nb": { + "de": { "stringUnit": { - "state": "needs_review", - "value": "Start en webserver på denne maskinen, og oppdater deretter." + "state": "translated", + "value": "Kein Platz für einen neuen Bereich" } }, - "pl": { + "es": { "stringUnit": { - "state": "needs_review", - "value": "Uruchom serwer WWW na tej maszynie, a następnie odśwież." + "state": "translated", + "value": "No hay espacio para un panel nuevo" } }, - "pt-BR": { + "fr": { "stringUnit": { - "state": "needs_review", - "value": "Inicie um servidor web nesta máquina e atualize." + "state": "translated", + "value": "Pas de place pour un nouveau panneau" } }, - "ru": { + "ja": { "stringUnit": { - "state": "needs_review", - "value": "Запустите веб-сервер на этой машине, затем обновите список." + "state": "translated", + "value": "新しいペインを置く場所がありません" } }, - "th": { + "ko": { "stringUnit": { - "state": "needs_review", - "value": "เริ่มเว็บเซิร์ฟเวอร์บนเครื่องนี้ แล้วรีเฟรช" + "state": "translated", + "value": "새 창을 위한 공간이 없습니다" } }, - "tr": { + "zh-Hans": { "stringUnit": { - "state": "needs_review", - "value": "Bu makinede bir web sunucusu başlatın, ardından yenileyin." + "state": "translated", + "value": "没有空间容纳新窗格" } }, - "uk": { + "zh-Hant": { "stringUnit": { - "state": "needs_review", - "value": "Запустіть вебсервер на цій машині, а потім оновіть список." + "state": "translated", + "value": "沒有空間容納新窗格" } } } }, - "cloudTree.ports.hub.detail": { + "cli.focus.defaultHelp": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "This build cannot start cmux’s authenticated Cloud forward. Update cmux, then retry." + "value": "Default: focus when run interactively, stay in the background when run by an agent or script." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "既定: 対話的に実行した場合はフォーカスし、エージェントやスクリプトから実行した場合はバックグラウンドのままにします。" } }, "de": { "stringUnit": { "state": "translated", - "value": "Dieser Build kann die authentifizierte Cloud-Weiterleitung von cmux nicht starten. Aktualisieren Sie cmux und versuchen Sie es erneut." + "value": "Standard: bei interaktiver Ausführung fokussieren, bei Ausführung durch einen Agenten oder ein Skript im Hintergrund bleiben." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Cette version ne peut pas démarrer le transfert Cloud authentifié de cmux. Mettez cmux à jour, puis réessayez." + "value": "Par défaut : prend le focus en exécution interactive, reste en arrière-plan quand un agent ou un script l’exécute." } }, "ar": { "stringUnit": { "state": "translated", - "value": "لا يمكن لهذا الإصدار بدء إعادة توجيه Cloud الموثّقة من cmux. حدّث cmux ثم أعد المحاولة." + "value": "الافتراضي: التركيز عند التشغيل التفاعلي، والبقاء في الخلفية عند التشغيل بواسطة وكيل أو برنامج نصي." } }, "es": { "stringUnit": { "state": "translated", - "value": "Esta compilación no puede iniciar el reenvío autenticado de Cloud de cmux. Actualiza cmux y vuelve a intentarlo." + "value": "Predeterminado: enfoca al ejecutarse de forma interactiva y se queda en segundo plano cuando lo ejecuta un agente o un script." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "此版本無法啟動 cmux 的已驗證 Cloud 轉送。請更新 cmux 後重試。" + "value": "預設:互動執行時取得焦點;由代理程式或指令稿執行時保持在背景。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "此版本无法启动 cmux 的已验证 Cloud 转发。请更新 cmux 后重试。" + "value": "默认:交互式运行时获得焦点;由代理或脚本运行时保持在后台。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "이 빌드에서는 cmux 인증 Cloud 전달을 시작할 수 없습니다. cmux를 업데이트한 후 다시 시도하세요." + "value": "기본값: 대화형으로 실행하면 포커스를 가져오고, 에이전트나 스크립트가 실행하면 백그라운드에 머뭅니다." + } + } + } + }, + "cli.help.openFocusFlags": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Focus:\n --focus Switch to the new workspace\n --no-focus Open it in the background" } }, "ja": { "stringUnit": { "state": "translated", - "value": "このビルドでは cmux の認証済み Cloud 転送を開始できません。cmux を更新して再試行してください。" + "value": "フォーカス:\n --focus 新しいワークスペースに切り替えます\n --no-focus バックグラウンドで開きます" } }, - "bs": { + "de": { "stringUnit": { "state": "translated", - "value": "Ova verzija ne može pokrenuti autentificirano Cloud prosljeđivanje cmux-a. Ažurirajte cmux, zatim pokušajte ponovo." + "value": "Fokus:\n --focus Zum neuen Workspace wechseln\n --no-focus Im Hintergrund öffnen" } }, - "da": { + "fr": { "stringUnit": { "state": "translated", - "value": "Denne build kan ikke starte cmux’ godkendte Cloud-videresendelse. Opdater cmux, og prøv igen." + "value": "Focus :\n --focus Bascule vers le nouvel espace de travail\n --no-focus L’ouvre en arrière-plan" } }, - "it": { + "ar": { "stringUnit": { "state": "translated", - "value": "Questa build non può avviare l’inoltro Cloud autenticato di cmux. Aggiorna cmux, quindi riprova." + "value": "التركيز:\n --focus ينتقل إلى مساحة العمل الجديدة\n --no-focus يفتحها في الخلفية" } }, - "km": { + "es": { "stringUnit": { "state": "translated", - "value": "កំណែនេះមិនអាចចាប់ផ្តើមការបញ្ជូនបន្ត Cloud ដែលបានផ្ទៀងផ្ទាត់របស់ cmux បានទេ។ ធ្វើបច្ចុប្បន្នភាព cmux រួចព្យាយាមម្តងទៀត។" + "value": "Foco:\n --focus Cambia al nuevo espacio de trabajo\n --no-focus Lo abre en segundo plano" } }, - "nb": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Denne versjonen kan ikke starte cmux sin autentiserte Cloud-videresending. Oppdater cmux, og prøv igjen." + "value": "焦點:\n --focus 切換到新的工作區\n --no-focus 在背景開啟" } }, - "pl": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Ta kompilacja nie może uruchomić uwierzytelnionego przekierowania Cloud w cmux. Zaktualizuj cmux i spróbuj ponownie." + "value": "焦点:\n --focus 切换到新的工作区\n --no-focus 在后台打开" } }, - "pt-BR": { + "ko": { "stringUnit": { "state": "translated", - "value": "Esta versão não consegue iniciar o encaminhamento Cloud autenticado do cmux. Atualize o cmux e tente novamente." + "value": "포커스:\n --focus 새 워크스페이스로 전환합니다\n --no-focus 백그라운드에서 엽니다" + } + } + } + }, + "settings.app.compactAgentStatus": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Compact Agent Status" } }, - "ru": { + "ar": { "stringUnit": { "state": "translated", - "value": "Эта сборка не может запустить аутентифицированное перенаправление Cloud в cmux. Обновите cmux и повторите попытку." + "value": "حالة الوكيل المختصرة" } }, - "th": { + "de": { "stringUnit": { "state": "translated", - "value": "บิลด์นี้ไม่สามารถเริ่มการส่งต่อ Cloud ที่ยืนยันตัวตนแล้วของ cmux ได้ อัปเดต cmux แล้วลองอีกครั้ง" + "value": "Kompakter Agentenstatus" } }, - "tr": { + "es": { "stringUnit": { "state": "translated", - "value": "Bu derleme cmux’un kimliği doğrulanmış Cloud yönlendirmesini başlatamıyor. cmux’u güncelleyin, ardından yeniden deneyin." + "value": "Estado de agente compacto" } }, - "uk": { + "fr": { "stringUnit": { "state": "translated", - "value": "Ця збірка не може запустити автентифіковане перенаправлення Cloud у cmux. Оновіть cmux і повторіть спробу." + "value": "Statut d’agent compact" } - } - } - }, - "cloudTree.ports.link.detail": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "ja": { "stringUnit": { "state": "translated", - "value": "Port discovery could not connect to this machine. Existing cmux ports may still work. Refresh to reconnect; Cloud VPN is not required." + "value": "エージェント状態のコンパクト表示" } }, - "de": { + "ko": { "stringUnit": { "state": "translated", - "value": "Die Porterkennung konnte diese Maschine nicht erreichen. Bereits geöffnete cmux-Ports funktionieren möglicherweise weiter. Aktualisieren Sie zum erneuten Verbinden; Cloud-VPN ist nicht erforderlich." + "value": "간결한 에이전트 상태" } }, - "fr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "La découverte des ports n’a pas pu se connecter à cette machine. Les ports cmux existants peuvent encore fonctionner. Actualisez pour reconnecter ; le VPN Cloud n’est pas nécessaire." + "value": "精简代理状态" } }, - "ar": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "تعذر اتصال اكتشاف المنافذ بهذا الجهاز. قد تظل منافذ cmux الحالية تعمل. حدّث لإعادة الاتصال؛ Cloud VPN غير مطلوب." + "value": "精簡代理狀態" + } + } + } + }, + "settings.app.compactAgentStatus.subtitle": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Show a workspace's agent, unread and pull request state as one colored icon before the title instead of separate rows. Hover the icon for details." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "El descubrimiento de puertos no pudo conectar con esta máquina. Los puertos de cmux existentes pueden seguir funcionando. Actualiza para reconectar; Cloud VPN no es necesario." + "value": "إظهار حالة الوكيل والعناصر غير المقروءة وطلب السحب لمساحة العمل كأيقونة ملونة واحدة قبل العنوان بدلاً من صفوف منفصلة. مرّر المؤشر فوق الأيقونة لعرض التفاصيل." } }, - "zh-Hant": { + "de": { "stringUnit": { "state": "translated", - "value": "連接埠探索無法連線到此機器。現有 cmux 連接埠可能仍可使用。請重新整理以重新連線;不需要 Cloud VPN。" + "value": "Agenten-, Ungelesen- und Pull-Request-Status eines Workspace als ein farbiges Symbol vor dem Titel anzeigen statt in eigenen Zeilen. Details erscheinen, wenn du den Zeiger über das Symbol bewegst." } }, - "zh-Hans": { + "es": { "stringUnit": { "state": "translated", - "value": "端口发现无法连接到此机器。现有 cmux 端口可能仍可使用。请刷新以重新连接;无需 Cloud VPN。" + "value": "Mostrar el estado del agente, lo no leído y la pull request de un espacio de trabajo como un único icono de color antes del título, en lugar de filas separadas. Pasa el cursor sobre el icono para ver los detalles." } }, - "ko": { + "fr": { "stringUnit": { "state": "translated", - "value": "포트 검색이 이 머신에 연결하지 못했습니다. 기존 cmux 포트는 계속 작동할 수 있습니다. 새로 고쳐 다시 연결하세요. Cloud VPN은 필요하지 않습니다." + "value": "Afficher l’état de l’agent, des éléments non lus et de la pull request d’un espace de travail sous forme d’une seule icône colorée avant le titre, au lieu de lignes distinctes. Survolez l’icône pour voir les détails." } }, "ja": { "stringUnit": { "state": "translated", - "value": "ポート検出がこのマシンに接続できませんでした。既存の cmux ポートは引き続き動作する可能性があります。更新して再接続してください。Cloud VPN は不要です。" + "value": "ワークスペースのエージェント、未読、プルリクエストの状態を、個別の行ではなくタイトルの前の色付きアイコン1つで示します。詳細はアイコンにポインタを合わせると表示されます。" } }, - "bs": { + "ko": { "stringUnit": { "state": "translated", - "value": "Otkrivanje portova nije se moglo povezati s ovom mašinom. Postojeći cmux portovi možda i dalje rade. Osvježite za ponovno povezivanje; Cloud VPN nije potreban." + "value": "워크스페이스의 에이전트, 읽지 않음, 풀 리퀘스트 상태를 별도의 줄이 아니라 제목 앞의 색상 아이콘 하나로 나타냅니다. 자세한 내용은 아이콘 위에 포인터를 올려 확인하세요." } }, - "da": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Portregistrering kunne ikke oprette forbindelse til denne maskine. Eksisterende cmux-porte virker muligvis stadig. Opdater for at genoprette forbindelsen; Cloud VPN er ikke påkrævet." + "value": "用标题前的单个彩色图标表示工作区的代理、未读和拉取请求状态,而不是各自占一行。将指针悬停在图标上可查看详细信息。" } }, - "it": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Il rilevamento delle porte non è riuscito a connettersi a questa macchina. Le porte cmux esistenti potrebbero funzionare ancora. Aggiorna per riconnetterti; la VPN Cloud non è necessaria." + "value": "以標題前的單一彩色圖示表示工作區的代理、未讀與拉取請求狀態,而非各自佔一行。將游標移到圖示上可查看詳細資訊。" + } + } + } + }, + "settings.search.alias.setting.app.compact-agent-status": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex مختصر وكيل حالة أيقونة سطر العنوان" } }, - "km": { + "de": { "stringUnit": { "state": "translated", - "value": "ការស្វែងរកច្រកមិនអាចភ្ជាប់ទៅម៉ាស៊ីននេះបានទេ។ ច្រក cmux ដែលមានស្រាប់អាចនៅតែដំណើរការ។ ផ្ទុកឡើងវិញដើម្បីភ្ជាប់ម្តងទៀត; មិនត្រូវការ Cloud VPN ទេ។" + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex kompakt Agent Status Symbol Titelzeile" } }, - "nb": { + "en": { "stringUnit": { "state": "translated", - "value": "Portoppdagelse kunne ikke koble til denne maskinen. Eksisterende cmux-porter kan fortsatt fungere. Oppdater for å koble til på nytt; Cloud VPN er ikke nødvendig." + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Wykrywanie portów nie mogło połączyć się z tą maszyną. Istniejące porty cmux mogą nadal działać. Odśwież, aby połączyć ponownie; Cloud VPN nie jest wymagany." + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex compacto agente estado icono línea de título" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "A descoberta de portas não conseguiu se conectar a esta máquina. As portas existentes do cmux ainda podem funcionar. Atualize para reconectar; o Cloud VPN não é necessário." + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex compact agent statut icône ligne de titre" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Обнаружению портов не удалось подключиться к этой машине. Существующие порты cmux могут по-прежнему работать. Обновите, чтобы переподключиться; Cloud VPN не требуется." + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex コンパクト エージェント 状態 アイコン タイトル行" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "การค้นหาพอร์ตไม่สามารถเชื่อมต่อกับเครื่องนี้ได้ พอร์ต cmux ที่มีอยู่อาจยังใช้งานได้ รีเฟรชเพื่อเชื่อมต่อใหม่ ไม่จำเป็นต้องใช้ Cloud VPN" + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex 간결 에이전트 상태 아이콘 제목 줄" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Port keşfi bu makineye bağlanamadı. Mevcut cmux portları hâlâ çalışıyor olabilir. Yeniden bağlanmak için yenileyin; Cloud VPN gerekmez." + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex 精简 代理 状态 图标 标题行" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Виявленню портів не вдалося підключитися до цієї машини. Наявні порти cmux можуть і далі працювати. Оновіть, щоб підключитися знову; Cloud VPN не потрібен." + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex 精簡 代理 狀態 圖示 標題列" } } } }, - "cloudTree.ports.link.title": { + "sidebar.agentStatus.glyph.tooltip": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud link unavailable" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Cloud-Verbindung nicht verfügbar" + "value": "%1$@: %2$@" } }, - "fr": { + "ar": { "stringUnit": { "state": "translated", - "value": "Connexion Cloud indisponible" + "value": "%1$@: %2$@" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "اتصال Cloud غير متاح" + "value": "%1$@: %2$@" } }, "es": { "stringUnit": { "state": "translated", - "value": "Conexión de Cloud no disponible" + "value": "%1$@: %2$@" } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "Cloud 連線無法使用" + "value": "%1$@ : %2$@" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "Cloud 连接不可用" + "value": "%1$@:%2$@" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Cloud 연결을 사용할 수 없음" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Cloud 接続を利用できません" + "value": "%1$@: %2$@" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud veza nije dostupna" + "value": "%1$@:%2$@" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Cloud-forbindelse utilgængelig" + "value": "%1$@:%2$@" } - }, - "it": { + } + } + }, + "sidebar.compactStatus.profile": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Collegamento Cloud non disponibile" + "value": "Profile" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "តំណ Cloud មិនអាចប្រើបាន" + "value": "الملف الشخصي" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Cloud-tilkobling utilgjengelig" + "value": "Profil" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Połączenie Cloud niedostępne" + "value": "Perfil" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Conexão Cloud indisponível" + "value": "Profil" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Связь с Cloud недоступна" + "value": "プロファイル" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "ลิงก์ Cloud ไม่พร้อมใช้งาน" + "value": "프로필" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud bağlantısı kullanılamıyor" + "value": "配置文件" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Зв’язок із Cloud недоступний" + "value": "設定檔" } } } }, - "cloudTree.ports.loading.detail": { + "terminal.clipboardReadConfirmation.deny": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Checking services through cmux’s authenticated Cloud link. No system VPN is needed." + "value": "Deny" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Dienste werden über die authentifizierte Cloud-Verbindung von cmux geprüft. Ein System-VPN ist nicht erforderlich." + "value": "رفض" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Vérification des services via la connexion Cloud authentifiée de cmux. Aucun VPN système n’est nécessaire." + "value": "Ablehnen" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "جارٍ فحص الخدمات عبر اتصال Cloud الموثّق من cmux. لا حاجة إلى VPN النظام." + "value": "Denegar" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "Comprobando servicios mediante la conexión autenticada de Cloud de cmux. No se necesita una VPN del sistema." + "value": "Refuser" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "正在透過 cmux 的已驗證 Cloud 連線檢查服務。不需要系統 VPN。" + "value": "拒否" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "正在通过 cmux 的已验证 Cloud 连接检查服务。无需系统 VPN。" + "value": "거부" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux의 인증된 Cloud 연결로 서비스를 확인하고 있습니다. 시스템 VPN은 필요하지 않습니다." + "value": "拒绝" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux の認証済み Cloud 接続でサービスを確認しています。システム VPN は不要です。" + "value": "拒絕" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Provjera servisa putem autentificirane Cloud veze cmux-a. Sistemski VPN nije potreban." + "value": "Odbij" } }, "da": { "stringUnit": { "state": "translated", - "value": "Kontrollerer tjenester via cmux’ godkendte Cloud-forbindelse. Der kræves ingen system-VPN." + "value": "Afvis" } }, "it": { "stringUnit": { "state": "translated", - "value": "Controllo dei servizi tramite il collegamento Cloud autenticato di cmux. Non serve una VPN di sistema." + "value": "Nega" } }, "km": { "stringUnit": { "state": "translated", - "value": "កំពុងពិនិត្យសេវាកម្មតាមរយៈតំណ Cloud ដែលបានផ្ទៀងផ្ទាត់របស់ cmux។ មិនត្រូវការ VPN របស់ប្រព័ន្ធទេ។" + "value": "បដិសេធ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Sjekker tjenester via cmux sin autentiserte Cloud-tilkobling. Ingen system-VPN er nødvendig." + "value": "Avslå" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Sprawdzanie usług przez uwierzytelnione połączenie Cloud w cmux. Systemowa sieć VPN nie jest potrzebna." + "value": "Odmów" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Verificando serviços pela conexão Cloud autenticada do cmux. Nenhuma VPN do sistema é necessária." + "value": "Negar" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Проверка служб через аутентифицированную связь cmux с Cloud. Системный VPN не нужен." + "value": "Запретить" } }, "th": { "stringUnit": { "state": "translated", - "value": "กำลังตรวจสอบบริการผ่านลิงก์ Cloud ที่ยืนยันตัวตนแล้วของ cmux ไม่ต้องใช้ VPN ของระบบ" + "value": "ปฏิเสธ" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Hizmetler cmux’un kimliği doğrulanmış Cloud bağlantısı üzerinden denetleniyor. Sistem VPN’i gerekmez." + "value": "Reddet" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Перевірка служб через автентифікований зв’язок cmux із Cloud. Системний VPN не потрібен." + "value": "Заборонити" } } } }, - "cloudTree.ports.loopback.detail": { + "terminal.clipboardReadConfirmation.message": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "These services open in cmux without Cloud VPN. They listen on the machine’s loopback address, so other apps cannot reach them through its private IP, even with VPN connected." + "value": "A program in this terminal wants to read your clipboard. Allow it only if you trust the program." } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Diese Dienste lassen sich in cmux ohne Cloud-VPN öffnen. Sie lauschen auf der Loopback-Adresse der Maschine. Andere Apps erreichen sie daher auch mit VPN nicht über deren private IP." + "value": "يريد برنامج في هذه الطرفية قراءة الحافظة. اسمح بذلك فقط إذا كنت تثق بالبرنامج." } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Ces services s’ouvrent dans cmux sans VPN Cloud. Ils écoutent sur l’adresse locale de la machine : les autres apps ne peuvent pas y accéder via son IP privée, même avec le VPN." + "value": "Ein Programm in diesem Terminal möchte deine Zwischenablage lesen. Erlaube es nur, wenn du dem Programm vertraust." } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "تُفتح هذه الخدمات داخل cmux دون Cloud VPN. وهي تستمع على عنوان الواجهة المحلية للجهاز، لذا لا تستطيع التطبيقات الأخرى الوصول إليها عبر عنوان IP الخاص به حتى مع اتصال VPN." + "value": "Un programa de esta terminal quiere leer tu portapapeles. Permítelo solo si confías en el programa." } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "Estos servicios se abren en cmux sin Cloud VPN. Escuchan en la dirección de bucle local de la máquina, por lo que otras apps no pueden acceder por su IP privada, incluso con la VPN conectada." + "value": "Un programme de ce terminal veut lire votre presse-papiers. Ne l’autorisez que si vous faites confiance à ce programme." } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "這些服務可在 cmux 中開啟,不需要 Cloud VPN。它們在機器的迴路位址上監聽,因此即使已連線 VPN,其他 App 也無法透過其私人 IP 存取。" + "value": "このターミナルのプログラムがクリップボードを読み取ろうとしています。信頼できるプログラムの場合にのみ許可してください。" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "这些服务可在 cmux 中打开,无需 Cloud VPN。它们监听机器的回环地址,因此即使已连接 VPN,其他应用也无法通过其专用 IP 访问。" + "value": "이 터미널의 프로그램이 클립보드를 읽으려고 합니다. 프로그램을 신뢰할 수 있을 때만 허용하세요." } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "이 서비스는 Cloud VPN 없이 cmux에서 열립니다. 머신의 루프백 주소에서 수신 대기하므로 VPN에 연결해도 다른 앱은 비공개 IP로 접근할 수 없습니다." + "value": "此终端中的程序想要读取你的剪贴板。只有在你信任该程序时才允许。" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "これらのサービスは Cloud VPN なしで cmux から開けます。マシンのループバックアドレスで待ち受けるため、VPN 接続中でも他のアプリからプライベート IP 経由ではアクセスできません。" + "value": "此終端機中的程式想要讀取你的剪貼簿。只有在你信任該程式時才允許。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Ovi servisi se otvaraju u cmux-u bez Cloud VPN-a. Slušaju na loopback adresi mašine, pa ih druge aplikacije ne mogu dosegnuti preko njene privatne IP adrese, čak ni uz povezan VPN." + "value": "Program u ovom terminalu želi čitati vaš međuspremnik. Dozvolite samo ako vjerujete programu." } }, "da": { "stringUnit": { "state": "translated", - "value": "Disse tjenester åbnes i cmux uden Cloud VPN. De lytter på maskinens loopback-adresse, så andre apps kan ikke nå dem via dens private IP, heller ikke med VPN forbundet." + "value": "Et program i denne terminal vil læse din udklipsholder. Tillad det kun, hvis du har tillid til programmet." } }, "it": { "stringUnit": { "state": "translated", - "value": "Questi servizi si aprono in cmux senza VPN Cloud. Sono in ascolto sull’indirizzo di loopback della macchina, quindi le altre app non possono raggiungerli tramite il suo IP privato, nemmeno con la VPN connessa." + "value": "Un programma in questo terminale vuole leggere gli appunti. Consentilo solo se ti fidi del programma." } }, "km": { "stringUnit": { "state": "translated", - "value": "សេវាកម្មទាំងនេះបើកនៅក្នុង cmux ដោយមិនត្រូវការ Cloud VPN។ ពួកវាស្តាប់នៅលើអាសយដ្ឋាន loopback របស់ម៉ាស៊ីន ដូច្នេះកម្មវិធីផ្សេងទៀតមិនអាចចូលដល់ពួកវាតាមរយៈ IP ឯកជនរបស់វាបានទេ ទោះបីភ្ជាប់ VPN ក៏ដោយ។" + "value": "កម្មវិធីក្នុងស្ថានីយនេះចង់អានក្ដារតម្បៀតខ្ទាស់របស់អ្នក។ អនុញ្ញាតតែបើអ្នកទុកចិត្តកម្មវិធីនេះ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Disse tjenestene åpnes i cmux uten Cloud VPN. De lytter på maskinens loopback-adresse, så andre apper kan ikke nå dem via den private IP-adressen, selv med VPN tilkoblet." + "value": "Et program i denne terminalen vil lese utklippstavlen din. Tillat det bare hvis du stoler på programmet." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Te usługi otwierają się w cmux bez Cloud VPN. Nasłuchują na adresie pętli zwrotnej maszyny, więc inne aplikacje nie mogą do nich dotrzeć przez jej prywatny adres IP, nawet przy połączonym VPN." + "value": "Program w tym terminalu chce odczytać schowek. Zezwól tylko, jeśli ufasz temu programowi." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Esses serviços abrem no cmux sem o Cloud VPN. Eles escutam no endereço de loopback da máquina, então outros apps não conseguem alcançá-los pelo IP privado dela, mesmo com a VPN conectada." + "value": "Um programa neste terminal quer ler sua área de transferência. Permita somente se você confiar no programa." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Эти службы открываются в cmux без Cloud VPN. Они прослушивают loopback-адрес машины, поэтому другие приложения не могут обратиться к ним через её частный IP даже при подключённом VPN." + "value": "Программа в этом терминале хочет прочитать буфер обмена. Разрешайте только программам, которым доверяете." } }, "th": { "stringUnit": { "state": "translated", - "value": "บริการเหล่านี้เปิดใน cmux ได้โดยไม่ต้องใช้ Cloud VPN บริการรับฟังบนที่อยู่ loopback ของเครื่อง แอปอื่นจึงเข้าถึงผ่าน IP ส่วนตัวของเครื่องไม่ได้ แม้จะเชื่อมต่อ VPN แล้วก็ตาม" + "value": "โปรแกรมในเทอร์มินัลนี้ต้องการอ่านคลิปบอร์ดของคุณ อนุญาตเฉพาะเมื่อคุณเชื่อถือโปรแกรมนี้" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Bu hizmetler cmux’ta Cloud VPN olmadan açılır. Makinenin geri döngü adresinde dinledikleri için diğer uygulamalar, VPN bağlıyken bile makinenin özel IP’si üzerinden onlara ulaşamaz." + "value": "Bu terminaldeki bir program panonuzu okumak istiyor. Yalnızca programa güveniyorsanız izin verin." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Ці служби відкриваються в cmux без Cloud VPN. Вони прослуховують loopback-адресу машини, тому інші застосунки не можуть дістатися до них через її приватну IP-адресу, навіть із підключеним VPN." + "value": "Програма в цьому терміналі хоче прочитати ваш буфер обміну. Дозволяйте, лише якщо довіряєте програмі." } } } }, - "cloudTree.ports.loopback.title": { + "terminal.clipboardReadConfirmation.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Loopback services available" + "value": "Allow Clipboard Access?" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Loopback-Dienste verfügbar" + "value": "السماح بالوصول إلى الحافظة؟" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Services locaux disponibles" + "value": "Zugriff auf die Zwischenablage erlauben?" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "خدمات الواجهة المحلية متاحة" + "value": "¿Permitir el acceso al portapapeles?" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "Servicios de bucle local disponibles" + "value": "Autoriser l’accès au presse-papiers ?" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "可使用迴路服務" + "value": "クリップボードへのアクセスを許可しますか?" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "回环服务可用" + "value": "클립보드 접근을 허용하시겠습니까?" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "루프백 서비스 사용 가능" + "value": "允许访问剪贴板?" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "ループバックのサービスを利用できます" + "value": "允許存取剪貼簿?" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Dostupni loopback servisi" + "value": "Dozvoliti pristup međuspremniku?" } }, "da": { "stringUnit": { "state": "translated", - "value": "Loopback-tjenester tilgængelige" + "value": "Tillad adgang til udklipsholderen?" } }, "it": { "stringUnit": { "state": "translated", - "value": "Servizi di loopback disponibili" + "value": "Consentire l'accesso agli appunti?" } }, "km": { "stringUnit": { "state": "translated", - "value": "មានសេវាកម្ម loopback" + "value": "អនុញ្ញាតឱ្យចូលប្រើក្ដារតម្បៀតខ្ទាស់?" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Loopback-tjenester tilgjengelige" + "value": "Tillat tilgang til utklippstavlen?" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Dostępne usługi pętli zwrotnej" + "value": "Zezwolić na dostęp do schowka?" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Serviços de loopback disponíveis" + "value": "Permitir acesso à área de transferência?" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Доступны loopback-службы" + "value": "Разрешить доступ к буферу обмена?" } }, "th": { "stringUnit": { "state": "translated", - "value": "มีบริการ loopback พร้อมใช้งาน" + "value": "อนุญาตให้เข้าถึงคลิปบอร์ดหรือไม่?" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Geri döngü hizmetleri kullanılabilir" + "value": "Panoya erişime izin verilsin mi?" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Доступні loopback-служби" + "value": "Дозволити доступ до буфера обміну?" } } } }, - "cloudTree.ports.notRequested.title": { + "notification.remoteRelay.hostFallback": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Ports not checked yet" + "value": "Remote host" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Ports noch nicht geprüft" + "value": "مضيف بعيد" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Ports pas encore vérifiés" + "value": "Remote-Host" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "لم يتم فحص المنافذ بعد" + "value": "Host remoto" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "Puertos aún sin comprobar" + "value": "Hôte distant" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "尚未檢查連接埠" + "value": "リモートホスト" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "尚未检查端口" + "value": "원격 호스트" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "아직 포트를 확인하지 않음" + "value": "远程主机" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "ポートは未確認です" + "value": "遠端主機" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Portovi još nisu provjereni" + "value": "Udaljeni host" } }, "da": { "stringUnit": { "state": "translated", - "value": "Porte er ikke kontrolleret endnu" + "value": "Fjernvært" } }, "it": { "stringUnit": { "state": "translated", - "value": "Porte non ancora controllate" + "value": "Host remoto" } }, "km": { "stringUnit": { "state": "translated", - "value": "មិនទាន់បានពិនិត្យច្រកនៅឡើយ" + "value": "ម៉ាស៊ីនពីចម្ងាយ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Porter er ikke sjekket ennå" + "value": "Ekstern vert" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Porty nie zostały jeszcze sprawdzone" + "value": "Zdalny host" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Portas ainda não verificadas" + "value": "Host remoto" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Порты ещё не проверены" + "value": "Удалённый хост" } }, "th": { "stringUnit": { "state": "translated", - "value": "ยังไม่ได้ตรวจสอบพอร์ต" + "value": "โฮสต์ระยะไกล" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Portlar henüz denetlenmedi" + "value": "Uzak ana bilgisayar" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Порти ще не перевірено" + "value": "Віддалений хост" } } } }, - "cloudTree.ports.privateAddress": { + "notification.remoteRelay.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Private address unavailable" + "value": "%1$@: %2$@" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Private Adresse nicht verfügbar" + "value": "%1$@: %2$@" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Adresse privée indisponible" + "value": "%1$@: %2$@" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "العنوان الخاص غير متاح" + "value": "%1$@: %2$@" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "Dirección privada no disponible" + "value": "%1$@: %2$@" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "私人位址無法使用" + "value": "%1$@: %2$@" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "专用地址不可用" + "value": "%1$@: %2$@" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "비공개 주소를 사용할 수 없음" + "value": "%1$@: %2$@" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "プライベートアドレスを利用できません" + "value": "%1$@: %2$@" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Privatna adresa nije dostupna" + "value": "%1$@: %2$@" } }, "da": { "stringUnit": { "state": "translated", - "value": "Privat adresse utilgængelig" + "value": "%1$@: %2$@" } }, "it": { "stringUnit": { "state": "translated", - "value": "Indirizzo privato non disponibile" + "value": "%1$@: %2$@" } }, "km": { "stringUnit": { "state": "translated", - "value": "អាសយដ្ឋានឯកជនមិនអាចប្រើបាន" + "value": "%1$@: %2$@" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Privat adresse utilgjengelig" + "value": "%1$@: %2$@" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Adres prywatny niedostępny" + "value": "%1$@: %2$@" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Endereço privado indisponível" + "value": "%1$@: %2$@" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Частный адрес недоступен" + "value": "%1$@: %2$@" } }, "th": { "stringUnit": { "state": "translated", - "value": "ไม่มีที่อยู่ส่วนตัว" + "value": "%1$@: %2$@" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Özel adres kullanılamıyor" + "value": "%1$@: %2$@" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Приватна адреса недоступна" + "value": "%1$@: %2$@" } } } }, - "cloudTree.ports.privateAddress.detail": { + "socket.mainActorHop.timeout.mayHaveRun": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "cmux’s authenticated route needs this machine’s private address. Refresh to retrieve it. Turning on Cloud VPN does not assign a missing address." + "value": "cmux did not respond within 10 seconds after the command started, so its result is unknown. Check the effect before retrying." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "コマンドの開始後 10 秒以内に cmux が応答しなかったため、結果は不明です。再試行する前に効果を確認してください。" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "命令开始后 10 秒内 cmux 没有响应,因此结果未知。请先确认效果再重试。" } }, "de": { "stringUnit": { "state": "translated", - "value": "Die authentifizierte Route von cmux benötigt die private Adresse dieser Maschine. Aktualisieren Sie, um sie abzurufen. Cloud-VPN weist keine fehlende Adresse zu." + "value": "cmux hat innerhalb von 10 Sekunden nach dem Start des Befehls nicht geantwortet, das Ergebnis ist daher unbekannt. Prüfe die Auswirkung, bevor du es erneut versuchst." } }, "fr": { "stringUnit": { "state": "translated", - "value": "La route authentifiée de cmux nécessite l’adresse privée de cette machine. Actualisez pour la récupérer. Activer le VPN Cloud n’attribue pas d’adresse manquante." + "value": "cmux n’a pas répondu dans les 10 secondes suivant le démarrage de la commande, son résultat est donc inconnu. Vérifiez l’effet avant de réessayer." } }, "ar": { "stringUnit": { "state": "translated", - "value": "يحتاج مسار cmux الموثّق إلى العنوان الخاص لهذا الجهاز. حدّث لاسترجاعه. تشغيل Cloud VPN لا يعيّن عنوانًا مفقودًا." + "value": "لم يستجب cmux خلال 10 ثوانٍ بعد بدء الأمر، لذا فإن نتيجته غير معروفة. تحقق من الأثر قبل إعادة المحاولة." } }, "es": { "stringUnit": { "state": "translated", - "value": "La ruta autenticada de cmux necesita la dirección privada de esta máquina. Actualiza para obtenerla. Activar Cloud VPN no asigna una dirección que falta." + "value": "cmux no respondió en los 10 segundos posteriores al inicio del comando, por lo que su resultado es desconocido. Comprueba el efecto antes de reintentar." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux 的已驗證路徑需要此機器的私人位址。請重新整理以取得位址。開啟 Cloud VPN 不會指派缺少的位址。" + "value": "命令開始後 10 秒內 cmux 沒有回應,因此結果未知。請先確認效果再重試。" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "cmux 的已验证路由需要此机器的专用地址。请刷新以获取地址。开启 Cloud VPN 不会分配缺失的地址。" + "value": "명령이 시작된 후 10초 안에 cmux가 응답하지 않아 결과를 알 수 없습니다. 다시 시도하기 전에 효과를 확인하세요." } - }, - "ko": { + } + } + }, + "socket.mainActorHop.timeout.notRun": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "cmux의 인증된 경로에는 이 머신의 비공개 주소가 필요합니다. 새로 고쳐 주소를 가져오세요. Cloud VPN을 켜도 누락된 주소가 할당되지는 않습니다." + "value": "cmux did not respond within 10 seconds, so the command was not run. Retry in a moment." } }, "ja": { "stringUnit": { "state": "translated", - "value": "cmux の認証済み経路にはこのマシンのプライベートアドレスが必要です。更新して取得してください。Cloud VPN を有効にしても不足しているアドレスは割り当てられません。" + "value": "cmux が 10 秒以内に応答しなかったため、コマンドは実行されませんでした。しばらくしてから再試行してください。" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Autentificirana ruta cmux-a treba privatnu adresu ove mašine. Osvježite da je preuzmete. Uključivanje Cloud VPN-a ne dodjeljuje adresu koja nedostaje." + "value": "cmux 在 10 秒内没有响应,因此未运行该命令。请稍后重试。" } }, - "da": { + "de": { "stringUnit": { "state": "translated", - "value": "cmux’ godkendte rute kræver denne maskines private adresse. Opdater for at hente den. Aktivering af Cloud VPN tildeler ikke en manglende adresse." + "value": "cmux hat innerhalb von 10 Sekunden nicht geantwortet, der Befehl wurde daher nicht ausgeführt. Versuche es gleich noch einmal." } }, - "it": { + "fr": { "stringUnit": { "state": "translated", - "value": "Il percorso autenticato di cmux richiede l’indirizzo privato di questa macchina. Aggiorna per recuperarlo. L’attivazione della VPN Cloud non assegna un indirizzo mancante." + "value": "cmux n’a pas répondu dans les 10 secondes, la commande n’a donc pas été exécutée. Réessayez dans un instant." } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "ផ្លូវដែលបានផ្ទៀងផ្ទាត់របស់ cmux ត្រូវការអាសយដ្ឋានឯកជនរបស់ម៉ាស៊ីននេះ។ ផ្ទុកឡើងវិញដើម្បីទាញយកវា។ ការបើក Cloud VPN មិនផ្តល់អាសយដ្ឋានដែលបាត់ទេ។" + "value": "لم يستجب cmux خلال 10 ثوانٍ، لذا لم يتم تنفيذ الأمر. أعد المحاولة بعد لحظات." } }, - "nb": { + "es": { "stringUnit": { "state": "translated", - "value": "cmux sin autentiserte rute trenger denne maskinens private adresse. Oppdater for å hente den. Å slå på Cloud VPN tildeler ikke en manglende adresse." + "value": "cmux no respondió en 10 segundos, por lo que el comando no se ejecutó. Reintenta en un momento." } }, - "pl": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Uwierzytelniona trasa cmux wymaga prywatnego adresu tej maszyny. Odśwież, aby go pobrać. Włączenie Cloud VPN nie przypisuje brakującego adresu." + "value": "cmux 在 10 秒內沒有回應,因此未執行該命令。請稍後重試。" } }, - "pt-BR": { + "ko": { "stringUnit": { "state": "translated", - "value": "A rota autenticada do cmux precisa do endereço privado desta máquina. Atualize para obtê-lo. Ativar o Cloud VPN não atribui um endereço ausente." + "value": "cmux가 10초 안에 응답하지 않아 명령이 실행되지 않았습니다. 잠시 후 다시 시도하세요." } - }, - "ru": { + } + } + }, + "socket.overloaded.message": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Аутентифицированному маршруту cmux нужен частный адрес этой машины. Обновите, чтобы получить его. Включение Cloud VPN не назначает отсутствующий адрес." + "value": "cmux is handling too many control-socket requests right now, so this one was not run. Retry in a moment." } }, - "th": { + "ja": { "stringUnit": { "state": "translated", - "value": "เส้นทางที่ยืนยันตัวตนแล้วของ cmux ต้องใช้ที่อยู่ส่วนตัวของเครื่องนี้ รีเฟรชเพื่อดึงข้อมูล การเปิด Cloud VPN ไม่ได้กำหนดที่อยู่ที่ขาดหายไป" + "value": "cmux は現在、制御ソケットの要求を処理しきれないため、この要求は実行されませんでした。しばらくしてから再試行してください。" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux’un kimliği doğrulanmış yolu bu makinenin özel adresine ihtiyaç duyar. Adresi almak için yenileyin. Cloud VPN’i açmak eksik bir adres atamaz." + "value": "cmux 当前正在处理过多的控制套接字请求,因此未运行此请求。请稍后重试。" } }, - "uk": { + "de": { "stringUnit": { "state": "translated", - "value": "Автентифікованому маршруту cmux потрібна приватна адреса цієї машини. Оновіть, щоб отримати її. Увімкнення Cloud VPN не призначає відсутню адресу." + "value": "cmux verarbeitet gerade zu viele Control-Socket-Anfragen, diese wurde daher nicht ausgeführt. Versuche es gleich noch einmal." } - } - } - }, - "cloudTree.ports.routeNote": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "fr": { "stringUnit": { "state": "translated", - "value": "cmux forwards ports without Cloud VPN. Web browsers and other Mac apps need Cloud VPN to reach services bound to the machine’s private address." + "value": "cmux traite actuellement trop de requêtes du socket de contrôle, celle-ci n’a donc pas été exécutée. Réessayez dans un instant." } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "cmux leitet Ports ohne Cloud-VPN weiter. Webbrowser und andere Mac-Apps benötigen Cloud-VPN, um Dienste an der privaten Adresse der Maschine zu erreichen." + "value": "يعالج cmux حاليًا عددًا كبيرًا جدًا من طلبات مقبس التحكم، لذا لم يتم تنفيذ هذا الطلب. أعد المحاولة بعد لحظات." } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "cmux transfère les ports sans VPN Cloud. Les navigateurs web et les autres apps Mac ont besoin du VPN Cloud pour atteindre les services liés à l’adresse privée de la machine." + "value": "cmux está gestionando demasiadas solicitudes del socket de control ahora mismo, por lo que esta no se ejecutó. Reintenta en un momento." } }, - "ar": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "يعيد cmux توجيه المنافذ دون Cloud VPN. تحتاج متصفحات الويب وتطبيقات Mac الأخرى إلى Cloud VPN للوصول إلى الخدمات المرتبطة بالعنوان الخاص للجهاز." + "value": "cmux 目前正在處理過多的控制 socket 請求,因此未執行此請求。請稍後重試。" } }, - "es": { + "ko": { "stringUnit": { "state": "translated", - "value": "cmux reenvía puertos sin Cloud VPN. Los navegadores web y otras apps de Mac necesitan Cloud VPN para acceder a servicios enlazados a la dirección privada de la máquina." + "value": "cmux가 지금 너무 많은 제어 소켓 요청을 처리하고 있어 이 요청은 실행되지 않았습니다. 잠시 후 다시 시도하세요." + } + } + } + }, + "socket.request.cancelled": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Request was cancelled" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "cmux 可轉送連接埠,不需要 Cloud VPN。網頁瀏覽器和其他 Mac App 需要 Cloud VPN,才能存取繫結至機器私人位址的服務。" + "value": "リクエストはキャンセルされました" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux 可转发端口,无需 Cloud VPN。网页浏览器和其他 Mac 应用需要 Cloud VPN,才能访问绑定到机器专用地址的服务。" + "value": "请求已取消" } }, - "ko": { + "de": { "stringUnit": { "state": "translated", - "value": "cmux는 Cloud VPN 없이 포트를 전달합니다. 웹 브라우저 및 다른 Mac 앱이 머신의 비공개 주소에 바인딩된 서비스에 접근하려면 Cloud VPN이 필요합니다." + "value": "Die Anfrage wurde abgebrochen" } }, - "ja": { + "fr": { "stringUnit": { "state": "translated", - "value": "cmux は Cloud VPN なしでポートを転送します。Web ブラウザやその他の Mac アプリからマシンのプライベートアドレスにバインドされたサービスにアクセスするには Cloud VPN が必要です。" + "value": "La requête a été annulée" } }, - "bs": { + "ar": { "stringUnit": { "state": "translated", - "value": "cmux prosljeđuje portove bez Cloud VPN-a. Web preglednicima i drugim Mac aplikacijama potreban je Cloud VPN za pristup servisima vezanim za privatnu adresu mašine." + "value": "تم إلغاء الطلب" } }, - "da": { + "es": { "stringUnit": { "state": "translated", - "value": "cmux videresender porte uden Cloud VPN. Webbrowsere og andre Mac-apps skal bruge Cloud VPN for at nå tjenester, der er bundet til maskinens private adresse." + "value": "Se canceló la solicitud" } }, - "it": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux inoltra le porte senza VPN Cloud. I browser web e le altre app per Mac hanno bisogno della VPN Cloud per raggiungere i servizi associati all’indirizzo privato della macchina." + "value": "請求已取消" } }, - "km": { + "ko": { "stringUnit": { "state": "translated", - "value": "cmux បញ្ជូនបន្តច្រកដោយមិនត្រូវការ Cloud VPN។ កម្មវិធីរុករកបណ្តាញ និងកម្មវិធី Mac ផ្សេងទៀតត្រូវការ Cloud VPN ដើម្បីចូលដល់សេវាកម្មដែលចងទៅអាសយដ្ឋានឯកជនរបស់ម៉ាស៊ីន។" + "value": "요청이 취소되었습니다" + } + } + } + }, + "socket.request.failedBeforeResult": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Request failed before returning a result" } }, - "nb": { + "ja": { "stringUnit": { "state": "translated", - "value": "cmux videresender porter uten Cloud VPN. Nettlesere og andre Mac-apper trenger Cloud VPN for å nå tjenester som er bundet til maskinens private adresse." + "value": "結果を返す前にリクエストが失敗しました" } }, - "pl": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux przekierowuje porty bez Cloud VPN. Przeglądarki internetowe i inne aplikacje na Maca potrzebują Cloud VPN, aby dotrzeć do usług powiązanych z prywatnym adresem maszyny." + "value": "请求在返回结果之前失败" } }, - "pt-BR": { + "de": { "stringUnit": { "state": "translated", - "value": "O cmux encaminha portas sem o Cloud VPN. Navegadores e outros apps do Mac precisam do Cloud VPN para acessar serviços vinculados ao endereço privado da máquina." + "value": "Die Anfrage ist fehlgeschlagen, bevor ein Ergebnis zurückgegeben wurde" } }, - "ru": { + "fr": { "stringUnit": { "state": "translated", - "value": "cmux перенаправляет порты без Cloud VPN. Веб-браузерам и другим приложениям Mac нужен Cloud VPN, чтобы обращаться к службам, привязанным к частному адресу машины." + "value": "La requête a échoué avant de renvoyer un résultat" } }, - "th": { + "ar": { "stringUnit": { "state": "translated", - "value": "cmux ส่งต่อพอร์ตได้โดยไม่ต้องใช้ Cloud VPN เว็บเบราว์เซอร์และแอป Mac อื่นๆ ต้องใช้ Cloud VPN เพื่อเข้าถึงบริการที่ผูกกับที่อยู่ส่วนตัวของเครื่อง" + "value": "فشل الطلب قبل إرجاع نتيجة" } }, - "tr": { + "es": { "stringUnit": { "state": "translated", - "value": "cmux, portları Cloud VPN olmadan yönlendirir. Web tarayıcıları ve diğer Mac uygulamaları, makinenin özel adresine bağlı hizmetlere ulaşmak için Cloud VPN’e ihtiyaç duyar." + "value": "La solicitud falló antes de devolver un resultado" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux перенаправляє порти без Cloud VPN. Веббраузерам та іншим застосункам Mac потрібен Cloud VPN, щоб звертатися до служб, прив’язаних до приватної адреси машини." + "value": "請求在傳回結果之前失敗" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "결과를 반환하기 전에 요청이 실패했습니다" } } } }, - "cloudTree.ports.setupVPN": { + "agent.codex.fork.notice.body": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Set Up VPN…" + "value": "cmux could not identify the new fork session. Start the fork again from the parent pane." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "cmux は新しいフォーク セッションを特定できませんでした。親ペインからもう一度フォークしてください。" } }, "de": { "stringUnit": { "state": "translated", - "value": "VPN einrichten…" + "value": "cmux konnte die neue Fork-Sitzung nicht erkennen. Starten Sie den Fork erneut im übergeordneten Pane." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Configurer le VPN…" + "value": "cmux n’a pas pu identifier la nouvelle session forkée. Relancez le fork depuis le volet parent." } }, "ar": { "stringUnit": { "state": "translated", - "value": "إعداد VPN…" + "value": "تعذر على cmux تحديد جلسة التفريع الجديدة. ابدأ التفريع مرة أخرى من الجزء الأصلي." } }, "es": { "stringUnit": { "state": "translated", - "value": "Configurar VPN…" + "value": "cmux no pudo identificar la nueva sesión bifurcada. Inicia el fork de nuevo desde el panel principal." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "設定 VPN…" + "value": "cmux 無法識別新的分支工作階段。請從父窗格重新開始分支。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "设置 VPN…" + "value": "cmux 无法识别新的分支会话。请从父窗格重新开始分支。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "VPN 설정…" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "VPN を設定…" + "value": "cmux가 새 포크 세션을 식별하지 못했습니다. 부모 패널에서 포크를 다시 시작하세요." } }, "bs": { "stringUnit": { "state": "translated", - "value": "Postavi VPN…" + "value": "cmux nije mogao prepoznati novu sesiju račvanja. Ponovo pokrenite račvanje iz nadređenog okna." } }, "da": { "stringUnit": { "state": "translated", - "value": "Konfigurer VPN…" + "value": "cmux kunne ikke identificere den nye forgreningssession. Start forgreningen igen fra forældreruden." } }, "it": { "stringUnit": { "state": "translated", - "value": "Configura VPN…" + "value": "cmux non ha potuto identificare la nuova sessione fork. Avvia di nuovo il fork dal riquadro principale." } }, "km": { "stringUnit": { "state": "translated", - "value": "រៀបចំ VPN…" + "value": "cmux មិនអាចកំណត់អត្តសញ្ញាណសម័យ fork ថ្មីបានទេ។ ចាប់ផ្ដើម fork ម្ដងទៀតពីផ្ទាំងមេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Konfigurer VPN…" + "value": "cmux kunne ikke identifisere den nye forgreningsøkten. Start forgreningen på nytt fra den overordnede ruten." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Skonfiguruj VPN…" + "value": "cmux nie mógł zidentyfikować nowej sesji forka. Uruchom fork ponownie z panelu nadrzędnego." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Configurar VPN…" + "value": "O cmux não conseguiu identificar a nova sessão bifurcada. Inicie o fork novamente no painel principal." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Настроить VPN…" + "value": "cmux не удалось определить новый сеанс форка. Запустите форк снова из родительской панели." } }, "th": { "stringUnit": { "state": "translated", - "value": "ตั้งค่า VPN…" + "value": "cmux ไม่สามารถระบุเซสชันที่แยกใหม่ได้ เริ่มการแยกอีกครั้งจากบานหน้าต่างหลัก" } }, "tr": { "stringUnit": { "state": "translated", - "value": "VPN’i Kur…" + "value": "cmux yeni fork oturumunu belirleyemedi. Fork'u üst panelden yeniden başlatın." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Налаштувати VPN…" + "value": "cmux не вдалося визначити новий сеанс форка. Запустіть форк ще раз із батьківської панелі." } } } }, - "cloudTree.ports.stale": { + "agent.codex.fork.notice.parentClearFailed.body": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Port list may be out of date" + "value": "cmux could not safely bind the new fork session. Retry the fork from the parent pane." } }, - "de": { + "ja": { "stringUnit": { "state": "translated", - "value": "Portliste möglicherweise veraltet" + "value": "cmux は新しいフォーク セッションを安全にバインドできませんでした。親ペインからもう一度フォークしてください。" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "La liste des ports peut être obsolète" + "value": "cmux konnte die neue Fork-Sitzung nicht sicher binden. Starten Sie den Fork erneut im übergeordneten Pane." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "cmux n’a pas pu lier la nouvelle session forkée en toute sécurité. Relancez le fork depuis le volet parent." } }, "ar": { "stringUnit": { "state": "translated", - "value": "قد تكون قائمة المنافذ قديمة" + "value": "تعذر على cmux ربط جلسة التفريع الجديدة بأمان. أعد بدء التفريع من الجزء الأصلي." } }, "es": { "stringUnit": { "state": "translated", - "value": "La lista de puertos puede estar desactualizada" + "value": "cmux no pudo vincular de forma segura la nueva sesión bifurcada. Inicia el fork de nuevo desde el panel principal." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "連接埠清單可能已過時" + "value": "cmux 無法安全繫結新的分支工作階段。請從父窗格重新開始分支。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "端口列表可能已过期" + "value": "cmux 无法安全绑定新的分支会话。请从父窗格重新开始分支。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "포트 목록이 오래되었을 수 있음" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ポートリストが古い可能性があります" + "value": "cmux가 새 포크 세션을 안전하게 연결하지 못했습니다. 부모 패널에서 포크를 다시 시작하세요." } }, "bs": { "stringUnit": { "state": "translated", - "value": "Lista portova je možda zastarjela" + "value": "cmux nije mogao sigurno povezati novu sesiju račvanja. Ponovo pokrenite račvanje iz nadređenog okna." } }, "da": { "stringUnit": { "state": "translated", - "value": "Portlisten er muligvis forældet" + "value": "cmux kunne ikke binde den nye forgreningssession sikkert. Start forgreningen igen fra forældreruden." } }, "it": { "stringUnit": { "state": "translated", - "value": "L’elenco delle porte potrebbe non essere aggiornato" + "value": "cmux non ha potuto associare in sicurezza la nuova sessione fork. Avvia di nuovo il fork dal riquadro principale." } }, "km": { "stringUnit": { "state": "translated", - "value": "បញ្ជីច្រកអាចហួសសម័យ" + "value": "cmux មិនអាចភ្ជាប់សម័យ fork ថ្មីដោយសុវត្ថិភាពបានទេ។ ចាប់ផ្ដើម fork ម្ដងទៀតពីផ្ទាំងមេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Portlisten kan være utdatert" + "value": "cmux kunne ikke binde den nye forgreningsøkten på en trygg måte. Start forgreningen på nytt fra den overordnede ruten." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Lista portów może być nieaktualna" + "value": "cmux nie mógł bezpiecznie powiązać nowej sesji forka. Uruchom fork ponownie z panelu nadrzędnego." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "A lista de portas pode estar desatualizada" + "value": "O cmux não conseguiu vincular com segurança a nova sessão bifurcada. Inicie o fork novamente no painel principal." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Список портов может быть устаревшим" + "value": "cmux не удалось безопасно привязать новый сеанс форка. Запустите форк снова из родительской панели." } }, "th": { "stringUnit": { "state": "translated", - "value": "รายการพอร์ตอาจไม่เป็นปัจจุบัน" + "value": "cmux ไม่สามารถผูกเซสชันที่แยกใหม่ได้อย่างปลอดภัย เริ่มการแยกอีกครั้งจากบานหน้าต่างหลัก" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Port listesi güncel olmayabilir" + "value": "cmux yeni fork oturumunu güvenli bir şekilde bağlayamadı. Fork'u üst panelden yeniden başlatın." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Список портів може бути застарілим" + "value": "cmux не вдалося безпечно прив’язати новий сеанс форка. Запустіть форк ще раз із батьківської панелі." } } } }, - "cloudTree.ports.stale.detail": { + "agent.codex.fork.notice.subtitle": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The last scan could not be refreshed. Listed services may have changed; refresh to check again. cmux forwarding does not need Cloud VPN." + "value": "Fork unavailable" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "フォークを利用できません" } }, "de": { "stringUnit": { "state": "translated", - "value": "Der letzte Scan konnte nicht aktualisiert werden. Die aufgeführten Dienste könnten sich geändert haben. Aktualisieren Sie erneut. Die cmux-Weiterleitung benötigt kein Cloud-VPN." + "value": "Fork nicht verfügbar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "La dernière analyse n’a pas pu être actualisée. Les services listés peuvent avoir changé ; actualisez pour vérifier. Le transfert cmux ne nécessite pas de VPN Cloud." + "value": "Fork indisponible" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تعذر تحديث آخر فحص. ربما تغيرت الخدمات المدرجة؛ حدّث للفحص مجددًا. لا تحتاج إعادة توجيه cmux إلى Cloud VPN." + "value": "التفريع غير متاح" } }, "es": { "stringUnit": { "state": "translated", - "value": "No se pudo actualizar el último escaneo. Los servicios listados pueden haber cambiado; actualiza para comprobarlos. El reenvío de cmux no necesita Cloud VPN." + "value": "Fork no disponible" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "無法重新整理上次掃描結果。列出的服務可能已變更;請重新整理以再次檢查。cmux 轉送不需要 Cloud VPN。" + "value": "無法使用分支" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "无法刷新上次扫描结果。列出的服务可能已更改;请刷新以再次检查。cmux 转发无需 Cloud VPN。" + "value": "分支不可用" } }, "ko": { "stringUnit": { "state": "translated", - "value": "마지막 검색 결과를 새로 고치지 못했습니다. 나열된 서비스가 변경되었을 수 있으니 새로 고쳐 확인하세요. cmux 전달에는 Cloud VPN이 필요하지 않습니다." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "前回のスキャンを更新できませんでした。表示されたサービスが変わっている可能性があります。更新して再確認してください。cmux の転送に Cloud VPN は不要です。" + "value": "포크를 사용할 수 없음" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Posljednje skeniranje nije se moglo osvježiti. Navedeni servisi su se možda promijenili; osvježite da ponovo provjerite. Prosljeđivanje u cmux-u ne treba Cloud VPN." + "value": "Račvanje nije dostupno" } }, "da": { "stringUnit": { "state": "translated", - "value": "Den seneste scanning kunne ikke opdateres. De viste tjenester kan have ændret sig; opdater for at kontrollere igen. Videresendelse i cmux kræver ikke Cloud VPN." + "value": "Fork ikke tilgængelig" } }, "it": { "stringUnit": { "state": "translated", - "value": "Non è stato possibile aggiornare l’ultima scansione. I servizi elencati potrebbero essere cambiati; aggiorna per controllare di nuovo. L’inoltro di cmux non richiede la VPN Cloud." + "value": "Fork non disponibile" } }, "km": { "stringUnit": { "state": "translated", - "value": "មិនអាចផ្ទុកការស្កេនចុងក្រោយឡើងវិញបានទេ។ សេវាកម្មដែលបានរាយអាចបានផ្លាស់ប្តូរ; ផ្ទុកឡើងវិញដើម្បីពិនិត្យម្តងទៀត។ ការបញ្ជូនបន្តរបស់ cmux មិនត្រូវការ Cloud VPN ទេ។" + "value": "មិនអាចប្រើការបំបែកបាន" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Den siste skanningen kunne ikke oppdateres. De oppførte tjenestene kan ha endret seg; oppdater for å sjekke på nytt. Videresending i cmux trenger ikke Cloud VPN." + "value": "Fork utilgjengelig" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Nie udało się odświeżyć ostatniego skanowania. Wymienione usługi mogły się zmienić; odśwież, aby sprawdzić ponownie. Przekierowywanie w cmux nie wymaga Cloud VPN." + "value": "Fork niedostępny" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Não foi possível atualizar a última verificação. Os serviços listados podem ter mudado; atualize para verificar de novo. O encaminhamento do cmux não precisa do Cloud VPN." + "value": "Fork indisponível" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Не удалось обновить последнее сканирование. Перечисленные службы могли измениться; обновите, чтобы проверить снова. Перенаправлению cmux Cloud VPN не нужен." + "value": "Форк недоступен" } }, "th": { "stringUnit": { "state": "translated", - "value": "ไม่สามารถรีเฟรชการสแกนครั้งล่าสุดได้ บริการที่แสดงอาจเปลี่ยนไปแล้ว รีเฟรชเพื่อตรวจสอบอีกครั้ง การส่งต่อของ cmux ไม่ต้องใช้ Cloud VPN" + "value": "ไม่สามารถใช้การแยกสาขาได้" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Son tarama yenilenemedi. Listelenen hizmetler değişmiş olabilir; yeniden denetlemek için yenileyin. cmux yönlendirmesi Cloud VPN gerektirmez." + "value": "Fork kullanılamıyor" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Не вдалося оновити останнє сканування. Перелічені служби могли змінитися; оновіть, щоб перевірити знову. Перенаправлення cmux не потребує Cloud VPN." + "value": "Форк недоступний" } } } }, - "cloudTree.ports.unavailable.detail": { + "agent.codex.fork.notice.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The port scan failed; this does not mean no service is listening. Existing cmux ports may still work. Refresh to retry; Cloud VPN is not required." + "value": "Agent fork" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "エージェントフォーク" } }, "de": { "stringUnit": { "state": "translated", - "value": "Der Portscan ist fehlgeschlagen; das bedeutet nicht, dass kein Dienst lauscht. Vorhandene cmux-Ports funktionieren möglicherweise weiter. Aktualisieren Sie; Cloud-VPN ist nicht erforderlich." + "value": "Agent-Fork" } }, "fr": { "stringUnit": { "state": "translated", - "value": "L’analyse des ports a échoué ; cela ne signifie pas qu’aucun service n’écoute. Les ports cmux existants peuvent encore fonctionner. Actualisez pour réessayer ; le VPN Cloud n’est pas nécessaire." + "value": "Fork d’agent" } }, "ar": { "stringUnit": { "state": "translated", - "value": "فشل فحص المنافذ؛ هذا لا يعني عدم وجود خدمة تستمع. قد تظل منافذ cmux الحالية تعمل. حدّث للمحاولة مجددًا؛ Cloud VPN غير مطلوب." + "value": "تفريع الوكيل" } }, "es": { "stringUnit": { "state": "translated", - "value": "Falló el escaneo de puertos; no significa que no haya servicios en escucha. Los puertos de cmux existentes pueden seguir funcionando. Actualiza para reintentar; Cloud VPN no es necesario." + "value": "Fork del agente" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "連接埠掃描失敗;這不代表沒有服務正在監聽。現有 cmux 連接埠可能仍可使用。請重新整理以重試;不需要 Cloud VPN。" + "value": "代理程式分支" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "端口扫描失败;这并不代表没有服务正在监听。现有 cmux 端口可能仍可使用。请刷新以重试;无需 Cloud VPN。" + "value": "代理分支" } }, "ko": { "stringUnit": { "state": "translated", - "value": "포트 검색이 실패했지만 수신 대기 서비스가 없다는 뜻은 아닙니다. 기존 cmux 포트는 계속 작동할 수 있습니다. 새로 고쳐 다시 시도하세요. Cloud VPN은 필요하지 않습니다." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ポートスキャンが失敗しましたが、サービスが待ち受けていないとは限りません。既存の cmux ポートは引き続き動作する可能性があります。更新して再試行してください。Cloud VPN は不要です。" + "value": "에이전트 포크" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Skeniranje portova nije uspjelo; to ne znači da nijedan servis ne sluša. Postojeći cmux portovi možda i dalje rade. Osvježite za ponovni pokušaj; Cloud VPN nije potreban." + "value": "Račvanje agenta" } }, "da": { "stringUnit": { "state": "translated", - "value": "Portscanningen mislykkedes; det betyder ikke, at ingen tjeneste lytter. Eksisterende cmux-porte virker muligvis stadig. Opdater for at prøve igen; Cloud VPN er ikke påkrævet." + "value": "Agentfork" } }, "it": { "stringUnit": { "state": "translated", - "value": "La scansione delle porte non è riuscita; ciò non significa che nessun servizio sia in ascolto. Le porte cmux esistenti potrebbero funzionare ancora. Aggiorna per riprovare; la VPN Cloud non è necessaria." + "value": "Fork dell'agente" } }, "km": { "stringUnit": { "state": "translated", - "value": "ការស្កេនច្រកបានបរាជ័យ; នេះមិនមានន័យថាគ្មានសេវាកម្មណាកំពុងស្តាប់ទេ។ ច្រក cmux ដែលមានស្រាប់អាចនៅតែដំណើរការ។ ផ្ទុកឡើងវិញដើម្បីព្យាយាមម្តងទៀត; មិនត្រូវការ Cloud VPN ទេ។" + "value": "ការបំបែកភ្នាក់ងារ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Portskanningen mislyktes; det betyr ikke at ingen tjeneste lytter. Eksisterende cmux-porter kan fortsatt fungere. Oppdater for å prøve igjen; Cloud VPN er ikke nødvendig." + "value": "Agentforgrening" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Skanowanie portów nie powiodło się; nie oznacza to, że żadna usługa nie nasłuchuje. Istniejące porty cmux mogą nadal działać. Odśwież, aby spróbować ponownie; Cloud VPN nie jest wymagany." + "value": "Fork agenta" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "A verificação de portas falhou; isso não significa que nenhum serviço esteja em escuta. As portas existentes do cmux ainda podem funcionar. Atualize para tentar de novo; o Cloud VPN não é necessário." + "value": "Fork do agente" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Сканирование портов не удалось; это не значит, что ни одна служба не прослушивает порты. Существующие порты cmux могут по-прежнему работать. Обновите, чтобы повторить; Cloud VPN не требуется." + "value": "Форк агента" } }, "th": { "stringUnit": { "state": "translated", - "value": "การสแกนพอร์ตล้มเหลว ไม่ได้หมายความว่าไม่มีบริการที่กำลังรับฟัง พอร์ต cmux ที่มีอยู่อาจยังใช้งานได้ รีเฟรชเพื่อลองอีกครั้ง ไม่จำเป็นต้องใช้ Cloud VPN" + "value": "การแยกสาขาของเอเจนต์" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Port taraması başarısız oldu; bu, dinleyen bir hizmet olmadığı anlamına gelmez. Mevcut cmux portları hâlâ çalışıyor olabilir. Yeniden denemek için yenileyin; Cloud VPN gerekmez." + "value": "Ajan çatalı" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Сканування портів не вдалося; це не означає, що жодна служба не прослуховує. Наявні порти cmux можуть і далі працювати. Оновіть, щоб повторити; Cloud VPN не потрібен." + "value": "Форк агента" } } } }, - "cloudTree.ports.unsupported": { + "socket.authTeam.committedStatusTimedOut": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Ports are not supported by this provider." - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Ports werden von diesem Anbieter nicht unterstützt." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Les ports ne sont pas pris en charge par ce fournisseur." + "value": "The team change was applied, but cmux did not report the updated status within 10 seconds. Run `cmux auth status` to confirm." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "لا يدعم هذا الموفر المنافذ." + "value": "チームの変更は適用されましたが、cmux は 10 秒以内に更新後のステータスを報告しませんでした。`cmux auth status` を実行して確認してください。" } }, - "es": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Este proveedor no admite puertos." + "value": "团队更改已应用,但 cmux 未能在 10 秒内报告更新后的状态。请运行 `cmux auth status` 确认。" } }, - "zh-Hant": { + "de": { "stringUnit": { "state": "translated", - "value": "此提供者不支援連接埠。" + "value": "Die Teamänderung wurde übernommen, aber cmux hat den aktualisierten Status nicht innerhalb von 10 Sekunden gemeldet. Führe `cmux auth status` aus, um es zu prüfen." } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "此提供商不支持端口。" + "value": "Le changement d’équipe a été appliqué, mais cmux n’a pas signalé le statut mis à jour dans les 10 secondes. Exécutez `cmux auth status` pour confirmer." } }, - "ko": { + "ar": { "stringUnit": { "state": "translated", - "value": "이 제공자는 포트를 지원하지 않습니다." + "value": "تم تطبيق تغيير الفريق، لكن cmux لم يُبلّغ عن الحالة المحدّثة خلال 10 ثوانٍ. شغّل `cmux auth status` للتأكيد." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "このプロバイダーはポートをサポートしていません。" + "value": "El cambio de equipo se aplicó, pero cmux no informó el estado actualizado en 10 segundos. Ejecuta `cmux auth status` para confirmarlo." } }, - "bs": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Ovaj pružalac ne podržava portove." + "value": "團隊變更已套用,但 cmux 未能在 10 秒內回報更新後的狀態。請執行 `cmux auth status` 確認。" } }, - "da": { + "ko": { "stringUnit": { "state": "translated", - "value": "Porte understøttes ikke af denne udbyder." + "value": "팀 변경은 적용되었지만 cmux가 10초 안에 업데이트된 상태를 보고하지 않았습니다. `cmux auth status`를 실행해 확인하세요." } - }, - "it": { + } + } + }, + "settings.mobile.browserTunnel.allowOtherHosts": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Le porte non sono supportate da questo provider." + "value": "iOS Browser Reaches Other Hosts" } }, - "km": { + "de": { "stringUnit": { "state": "translated", - "value": "អ្នកផ្តល់សេវានេះមិនគាំទ្រច្រកទេ។" + "value": "iOS-Browser erreicht andere Hosts" } }, - "nb": { + "fr": { "stringUnit": { "state": "translated", - "value": "Porter støttes ikke av denne leverandøren." + "value": "Le navigateur iOS accède aux autres hôtes" } }, - "pl": { + "ar": { "stringUnit": { "state": "translated", - "value": "Ten dostawca nie obsługuje portów." + "value": "متصفح iOS يصل إلى مضيفين آخرين" } }, - "pt-BR": { + "es": { "stringUnit": { "state": "translated", - "value": "Este provedor não oferece suporte a portas." + "value": "El navegador de iOS accede a otros hosts" } }, - "ru": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Этот провайдер не поддерживает порты." + "value": "iOS 瀏覽器可連線至其他主機" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "ผู้ให้บริการนี้ไม่รองรับพอร์ต" + "value": "iOS 浏览器可访问其他主机" } }, - "tr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Bu sağlayıcı portları desteklemiyor." + "value": "iOS 브라우저의 다른 호스트 접근" } }, - "uk": { + "ja": { "stringUnit": { "state": "translated", - "value": "Цей постачальник не підтримує порти." + "value": "iOSブラウザから他のホストに接続" } } } }, - "cloudTree.ports.unsupported.detail": { + "settings.mobile.browserTunnel.allowOtherHosts.subtitleOn": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "This provider has no supported in-app port route. Open a shell to access the service inside the machine. Cloud VPN does not add provider support." + "value": "The iOS browser can load LAN, VPN, and internet hosts through this Mac. Link-local and cloud metadata addresses never go through this Mac; the phone loads them itself." } }, "de": { "stringUnit": { "state": "translated", - "value": "Dieser Anbieter unterstützt keine Portverbindung in der App. Öffnen Sie eine Shell, um innerhalb der Maschine auf den Dienst zuzugreifen. Cloud-VPN fügt keine Anbieterunterstützung hinzu." + "value": "Der iOS-Browser kann LAN-, VPN- und Internet-Hosts über diesen Mac laden. Link-Local- und Cloud-Metadatenadressen laufen nie über diesen Mac; das iPhone lädt sie selbst." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ce fournisseur ne prend pas en charge les ports dans l’app. Ouvrez un shell pour accéder au service dans la machine. Le VPN Cloud n’ajoute pas cette prise en charge." + "value": "Le navigateur iOS peut charger des hôtes du réseau local, du VPN et d’Internet via ce Mac. Les adresses link-local et de métadonnées cloud ne passent jamais par ce Mac ; l’iPhone les charge lui-même." } }, "ar": { "stringUnit": { "state": "translated", - "value": "لا يدعم هذا الموفر مسار منافذ داخل التطبيق. افتح صدفة للوصول إلى الخدمة داخل الجهاز. لا يضيف Cloud VPN دعمًا للموفر." + "value": "يمكن لمتصفح iOS تحميل مضيفي الشبكة المحلية وVPN والإنترنت عبر جهاز Mac هذا. لا تمر عناوين الارتباط المحلي وعناوين بيانات التعريف السحابية عبر جهاز Mac هذا أبدًا؛ يحمّلها iPhone بنفسه." } }, "es": { "stringUnit": { "state": "translated", - "value": "Este proveedor no admite una ruta de puertos dentro de la app. Abre una shell para acceder al servicio dentro de la máquina. Cloud VPN no añade soporte al proveedor." + "value": "El navegador de iOS puede cargar hosts de la red local, VPN e internet a través de este Mac. Las direcciones link-local y de metadatos en la nube nunca pasan por este Mac; el iPhone las carga por sí mismo." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "此提供者不支援應用程式內連接埠路徑。請開啟 Shell 以在機器內存取服務。Cloud VPN 不會新增提供者支援。" + "value": "iOS 瀏覽器可透過這台 Mac 載入區域網路、VPN 與網際網路主機。連結本機位址與雲端中繼資料位址絕不經過這台 Mac,由 iPhone 自行載入。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "此提供商不支持应用内端口路由。请打开 Shell 以在机器内部访问服务。Cloud VPN 不会添加提供商支持。" + "value": "iOS 浏览器可通过这台 Mac 加载局域网、VPN 和互联网主机。链路本地地址和云元数据地址绝不经过这台 Mac,由 iPhone 自行加载。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "이 제공자는 앱 내 포트 경로를 지원하지 않습니다. 셸을 열어 머신 내부의 서비스에 접근하세요. Cloud VPN으로 제공자 지원이 추가되지는 않습니다." + "value": "iOS 브라우저가 이 Mac을 통해 LAN, VPN, 인터넷 호스트를 불러올 수 있습니다. 링크 로컬 및 클라우드 메타데이터 주소는 이 Mac을 거치지 않으며 iPhone이 직접 불러옵니다." } }, "ja": { "stringUnit": { "state": "translated", - "value": "このプロバイダーはアプリ内のポート経路に対応していません。シェルを開き、マシン内でサービスにアクセスしてください。Cloud VPN を有効にしても対応は追加されません。" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Ovaj pružalac nema podržanu rutu portova unutar aplikacije. Otvorite shell da pristupite servisu unutar mašine. Cloud VPN ne dodaje podršku pružaoca." - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "Denne udbyder har ingen understøttet portrute i appen. Åbn en shell for at få adgang til tjenesten inde i maskinen. Cloud VPN tilføjer ikke understøttelse for udbyderen." + "value": "iOSブラウザはこのMac経由でLAN、VPN、インターネット上のホストを読み込めます。リンクローカルとクラウドメタデータのアドレスはこのMacを経由せず、iPhoneが直接読み込みます。" } - }, - "it": { + } + } + }, + "settings.mobile.browserTunnel.allowOtherHosts.subtitleOff": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Questo provider non ha un percorso delle porte supportato nell’app. Apri una shell per accedere al servizio all’interno della macchina. La VPN Cloud non aggiunge il supporto del provider." + "value": "The iOS browser reaches only this Mac's localhost through this Mac. Other sites load over the phone's own network." } }, - "km": { + "de": { "stringUnit": { "state": "translated", - "value": "អ្នកផ្តល់សេវានេះគ្មានផ្លូវច្រកក្នុងកម្មវិធីដែលគាំទ្រទេ។ បើក shell ដើម្បីចូលប្រើសេវាកម្មនៅខាងក្នុងម៉ាស៊ីន។ Cloud VPN មិនបន្ថែមការគាំទ្រអ្នកផ្តល់សេវាទេ។" + "value": "Der iOS-Browser erreicht über diesen Mac nur dessen localhost. Andere Websites werden über das eigene Netzwerk des Telefons geladen." } }, - "nb": { + "fr": { "stringUnit": { "state": "translated", - "value": "Denne leverandøren har ingen støttet portrute i appen. Åpne et skall for å få tilgang til tjenesten inne i maskinen. Cloud VPN legger ikke til støtte for leverandøren." + "value": "Via ce Mac, le navigateur iOS n’accède qu’au localhost de ce Mac. Les autres sites se chargent via le réseau du téléphone." } }, - "pl": { + "ar": { "stringUnit": { "state": "translated", - "value": "Ten dostawca nie ma obsługiwanej trasy portów w aplikacji. Otwórz powłokę, aby uzyskać dostęp do usługi wewnątrz maszyny. Cloud VPN nie dodaje obsługi dostawcy." + "value": "لا يصل متصفح iOS عبر جهاز Mac هذا إلا إلى localhost الخاص به. تُحمَّل المواقع الأخرى عبر شبكة الهاتف نفسه." } }, - "pt-BR": { + "es": { "stringUnit": { "state": "translated", - "value": "Este provedor não tem uma rota de portas compatível no app. Abra um shell para acessar o serviço dentro da máquina. O Cloud VPN não adiciona suporte ao provedor." + "value": "A través de este Mac, el navegador de iOS solo accede a su localhost. Los demás sitios se cargan con la red del propio teléfono." } }, - "ru": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "У этого провайдера нет поддерживаемого маршрута портов в приложении. Откройте оболочку, чтобы получить доступ к службе внутри машины. Cloud VPN не добавляет поддержку провайдера." + "value": "iOS 瀏覽器只會透過這台 Mac 連線至它的 localhost。其他網站會透過手機本身的網路載入。" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "ผู้ให้บริการนี้ไม่มีเส้นทางพอร์ตในแอปที่รองรับ เปิดเชลล์เพื่อเข้าถึงบริการภายในเครื่อง Cloud VPN ไม่ได้เพิ่มการรองรับผู้ให้บริการ" + "value": "iOS 浏览器只会通过这台 Mac 访问它的 localhost。其他网站通过手机自身的网络加载。" } }, - "tr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Bu sağlayıcının desteklenen bir uygulama içi port yolu yok. Makinenin içindeki hizmete erişmek için bir kabuk açın. Cloud VPN sağlayıcı desteği eklemez." + "value": "iOS 브라우저는 이 Mac을 통해 이 Mac의 localhost에만 접근합니다. 다른 사이트는 휴대폰 자체 네트워크로 불러옵니다." } }, - "uk": { + "ja": { "stringUnit": { "state": "translated", - "value": "Цей постачальник не має підтримуваного маршруту портів у застосунку. Відкрийте оболонку, щоб отримати доступ до служби всередині машини. Cloud VPN не додає підтримку постачальника." + "value": "iOSブラウザがこのMac経由で接続するのは、このMacのlocalhostだけです。他のサイトは電話自身のネットワークで読み込みます。" } } } }, - "cli.auth.status.teamNotLoaded": { + "settings.search.alias.setting.mobile.browserTunnelAllowOtherHosts": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": " team: not loaded" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": " チーム: 未読み込み" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": " 团队: 未加载" + "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security" } }, "de": { "stringUnit": { "state": "translated", - "value": " Team: nicht geladen" + "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security mobil browser tunnel proxy lokales netzwerk hosts netzwerk sicherheit" } }, "fr": { "stringUnit": { "state": "translated", - "value": " équipe: non chargée" + "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security mobile navigateur tunnel proxy réseau local hôtes réseau sécurité" } }, "ar": { "stringUnit": { "state": "translated", - "value": " الفريق: لم يتم تحميله" + "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security متصفح نفق وكيل شبكة محلية مضيفون شبكة أمان" } }, "es": { "stringUnit": { "state": "translated", - "value": " equipo: no cargado" + "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security móvil navegador túnel proxy red local hosts red seguridad" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": " 團隊: 未載入" + "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security 行動裝置 瀏覽器 通道 代理 區域網路 主機 網路 安全性" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": " 팀: 로드되지 않음" + "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security 移动 浏览器 隧道 代理 局域网 主机 网络 安全" } }, - "bs": { + "ko": { "stringUnit": { "state": "translated", - "value": " tim: nije učitan" + "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security 모바일 브라우저 터널 프록시 로컬 네트워크 호스트 네트워크 보안" } }, - "da": { + "ja": { "stringUnit": { "state": "translated", - "value": " team: ikke indlæst" + "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security モバイル ブラウザ トンネル プロキシ ローカルネットワーク ホスト ネットワーク セキュリティ" } - }, - "it": { + } + } + }, + "cli.browser.inputFiles.error.usage": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": " team: non caricato" + "value": "set-input-files requires --selector and either --file (repeatable) or --clear" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": " ក្រុម៖ មិនទាន់បានផ្ទុក" + "value": "يتطلب set-input-files الخيار --selector مع --file (يمكن تكراره) أو --clear" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": " team: ikke lastet" + "value": "set-input-files benötigt --selector und entweder --file (wiederholbar) oder --clear" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": " zespół: nie załadowano" + "value": "set-input-files requiere --selector y --file (repetible) o --clear" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": " equipe: não carregada" + "value": "set-input-files nécessite --selector et soit --file (répétable), soit --clear" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": " команда: не загружена" + "value": "set-input-files には --selector と、--file (複数指定可)または --clear が必要です" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": " ทีม: ยังไม่ได้โหลด" + "value": "set-input-files에는 --selector 와 --file (반복 가능) 또는 --clear가 필요합니다" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": " ekip: yüklenmedi" + "value": "set-input-files 需要 --selector ,以及 --file (可重复)或 --clear" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": " команда: не завантажена" + "value": "set-input-files 需要 --selector ,以及 --file (可重複)或 --clear" } } } }, - "cli.auth.status.teamNotLoadedRetrying": { + "cli.browser.inputFiles.help": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": " team: not loaded (retrying)" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": " チーム: 未読み込み(再試行中)" + "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n Select local files (up to 128 files, 32 MiB total) or clear the selection. Directory uploads are unsupported." } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": " 团队: 未加载(正在重试)" + "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n اختر ملفات محلية (حتى 128 ملفًا بإجمالي 32 MiB) أو امسح الاختيار. رفع المجلدات غير مدعوم." } }, "de": { "stringUnit": { "state": "translated", - "value": " Team: nicht geladen (wird erneut versucht)" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": " équipe: non chargée (nouvel essai)" + "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n Lokale Dateien auswählen (bis zu 128 Dateien, insgesamt 32 MiB) oder die Auswahl leeren. Ordner-Uploads werden nicht unterstützt." } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": " الفريق: لم يتم تحميله (جارٍ إعادة المحاولة)" + "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n Selecciona archivos locales (hasta 128 archivos, 32 MiB en total) o borra la selección. No se admite subir carpetas." } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": " equipo: no cargado (reintentando)" + "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n Sélectionner des fichiers locaux (jusqu’à 128 fichiers, 32 MiB au total) ou effacer la sélection. L’envoi de dossiers n’est pas pris en charge." } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": " 團隊: 未載入(重試中)" + "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n ローカルファイルを選択(最大128個、合計32 MiB)するか、選択を解除します。ディレクトリのアップロードには対応していません。" } }, "ko": { "stringUnit": { "state": "translated", - "value": " 팀: 로드되지 않음 (재시도 중)" + "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n 로컬 파일을 선택하거나(최대 128개, 총 32 MiB) 선택을 지웁니다. 디렉터리 업로드는 지원되지 않습니다." } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": " tim: nije učitan (ponovni pokušaj)" + "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n 选择本地文件(最多 128 个文件,总计 32 MiB)或清除选择。不支持上传目录。" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": " team: ikke indlæst (prøver igen)" + "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n 選取本機檔案(最多 128 個檔案,總計 32 MiB)或清除選取。不支援上傳目錄。" } - }, - "it": { + } + } + }, + "browser.inputFiles.error.invalidTarget": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": " team: non caricato (nuovo tentativo)" + "value": "The selector must match a file input without directory selection" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": " ក្រុម៖ មិនទាន់បានផ្ទុក (កំពុងព្យាយាមម្ដងទៀត)" + "value": "يجب أن يطابق المحدد حقل إدخال ملفات لا يستخدم اختيار المجلدات" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": " team: ikke lastet (prøver igjen)" + "value": "Der Selektor muss ein Dateieingabefeld ohne Ordnerauswahl treffen" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": " zespół: nie załadowano (ponawianie próby)" + "value": "El selector debe coincidir con un campo de archivos sin selección de carpetas" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": " equipe: não carregada (tentando novamente)" + "value": "Le sélecteur doit correspondre à un champ de fichier sans sélection de dossier" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": " команда: не загружена (повторная попытка)" + "value": "セレクターはディレクトリ選択を使わないファイル入力欄に一致する必要があります" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": " ทีม: ยังไม่ได้โหลด (กำลังลองอีกครั้ง)" + "value": "선택자는 디렉터리 선택이 없는 파일 입력 요소와 일치해야 합니다" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": " ekip: yüklenmedi (yeniden deneniyor)" + "value": "选择器必须匹配未启用目录选择的文件输入字段" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": " команда: не завантажена (повторна спроба)" + "value": "選取器必須符合未啟用目錄選取的檔案輸入欄位" } } } }, - "mobile.pairing.error.teamUnavailable": { + "browser.inputFiles.error.multipleRequired": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Could not load your cmux team. Check your internet connection, then try again." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "cmux チームを読み込めませんでした。インターネット接続を確認してから、もう一度お試しください。" + "value": "This file input does not allow multiple files" } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "无法加载你的 cmux 团队。请检查网络连接,然后重试。" + "value": "لا يسمح حقل إدخال الملفات هذا باختيار عدة ملفات" } }, "de": { "stringUnit": { "state": "translated", - "value": "Dein cmux-Team konnte nicht geladen werden. Prüfe deine Internetverbindung und versuche es erneut." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Impossible de charger votre équipe cmux. Vérifiez votre connexion Internet, puis réessayez." + "value": "Dieses Dateieingabefeld erlaubt nicht mehrere Dateien" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "تعذّر تحميل فريق cmux الخاص بك. تحقّق من اتصالك بالإنترنت، ثم حاول مرة أخرى." + "value": "Este campo de archivos no permite seleccionar varios archivos" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "No se pudo cargar tu equipo de cmux. Comprueba tu conexión a internet e inténtalo de nuevo." + "value": "Ce champ de fichier ne permet pas de sélectionner plusieurs fichiers" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "無法載入你的 cmux 團隊。請檢查網路連線,然後再試一次。" + "value": "このファイル入力欄では複数のファイルを選択できません" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux 팀을 불러올 수 없습니다. 인터넷 연결을 확인한 후 다시 시도하세요." + "value": "이 파일 입력 요소는 여러 파일을 허용하지 않습니다" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Nije moguće učitati vaš cmux tim. Provjerite internetsku vezu i pokušajte ponovo." + "value": "此文件输入字段不允许选择多个文件" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Din cmux-team kunne ikke indlæses. Kontrollér din internetforbindelse, og prøv igen." + "value": "此檔案輸入欄位不允許選取多個檔案" } - }, - "it": { + } + } + }, + "browser.inputFiles.error.cancelled": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Impossibile caricare il tuo team cmux. Controlla la connessione Internet e riprova." + "value": "File upload preparation was cancelled" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "មិនអាចផ្ទុកក្រុម cmux របស់អ្នកបានទេ។ សូមពិនិត្យការតភ្ជាប់អ៊ីនធឺណិត ហើយព្យាយាមម្ដងទៀត។" + "value": "تم إلغاء تجهيز الملفات للرفع" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Kunne ikke laste inn cmux-teamet ditt. Kontroller internettilkoblingen, og prøv igjen." + "value": "Die Vorbereitung des Datei-Uploads wurde abgebrochen" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Nie udało się załadować Twojego zespołu cmux. Sprawdź połączenie z internetem i spróbuj ponownie." + "value": "Se canceló la preparación de los archivos para subir" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Não foi possível carregar sua equipe cmux. Verifique sua conexão com a internet e tente novamente." + "value": "La préparation des fichiers à envoyer a été annulée" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Не удалось загрузить вашу команду cmux. Проверьте подключение к интернету и попробуйте ещё раз." + "value": "ファイルのアップロード準備がキャンセルされました" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "ไม่สามารถโหลดทีม cmux ของคุณได้ ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตแล้วลองอีกครั้ง" + "value": "파일 업로드 준비가 취소되었습니다" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux ekibiniz yüklenemedi. İnternet bağlantınızı kontrol edip tekrar deneyin." + "value": "已取消准备上传文件" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Не вдалося завантажити вашу команду cmux. Перевірте підключення до інтернету й спробуйте ще раз." + "value": "已取消準備上傳檔案" } } } }, - "command.newPaneAutoLayout.title": { + "browser.inputFiles.error.invalidParameters": { "extractionState": "manual", "localizations": { - "ar": { - "stringUnit": { - "state": "translated", - "value": "لوحة جديدة (تخطيط تلقائي)" - } - }, - "bs": { + "en": { "stringUnit": { "state": "translated", - "value": "Novi panel (automatski raspored)" + "value": "set-input-files requires a selector and a files array of absolute paths" } }, - "da": { + "ar": { "stringUnit": { "state": "translated", - "value": "Nyt panel (automatisk layout)" + "value": "يتطلب set-input-files محددًا ومصفوفة files تحتوي على مسارات مطلقة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Neuer Bereich (automatisches Layout)" - } - }, - "en": { - "stringUnit": { - "state": "translated", - "value": "New Pane (Auto Layout)" + "value": "set-input-files benötigt einen Selektor und ein files-Array mit absoluten Pfaden" } }, "es": { "stringUnit": { "state": "translated", - "value": "Nuevo panel (diseño automático)" + "value": "set-input-files requiere un selector y una matriz files de rutas absolutas" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Nouveau panneau (disposition automatique)" - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "Nuovo pannello (layout automatico)" + "value": "set-input-files nécessite un sélecteur et un tableau files de chemins absolus" } }, "ja": { "stringUnit": { "state": "translated", - "value": "新しいペイン(自動レイアウト)" + "value": "set-input-files にはセレクターと絶対パスを含む files 配列が必要です" } }, "ko": { "stringUnit": { "state": "translated", - "value": "새 패널 (자동 레이아웃)" - } - }, - "nb": { - "stringUnit": { - "state": "translated", - "value": "Nytt panel (automatisk oppsett)" - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "value": "Nowy panel (układ automatyczny)" - } - }, - "pt-BR": { - "stringUnit": { - "state": "translated", - "value": "Novo Painel (Layout Automático)" - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Новая панель (автоматическая раскладка)" - } - }, - "th": { - "stringUnit": { - "state": "translated", - "value": "บานหน้าต่างใหม่ (จัดวางอัตโนมัติ)" - } - }, - "tr": { - "stringUnit": { - "state": "translated", - "value": "Yeni Bölme (Otomatik Düzen)" - } - }, - "uk": { - "stringUnit": { - "state": "translated", - "value": "Нова панель (автоматичне розташування)" + "value": "set-input-files에는 선택자와 절대 경로로 구성된 files 배열이 필요합니다" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "新建窗格(自动布局)" + "value": "set-input-files 需要选择器及包含绝对路径的 files 数组" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "新增窗格(自動佈局)" + "value": "set-input-files 需要選取器及包含絕對路徑的 files 陣列" } } } }, - "shortcut.newPaneAutoLayout.label": { + "browser.inputFiles.error.invalidSelection": { "extractionState": "manual", "localizations": { - "ar": { - "stringUnit": { - "state": "translated", - "value": "لوحة جديدة (تخطيط تلقائي)" - } - }, - "bs": { + "en": { "stringUnit": { "state": "translated", - "value": "Novi panel (automatski raspored)" + "value": "Select at most 128 files using absolute paths" } }, - "da": { + "ar": { "stringUnit": { "state": "translated", - "value": "Nyt panel (automatisk layout)" + "value": "اختر ما يصل إلى 128 ملفًا باستخدام مسارات مطلقة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Neuer Bereich (automatisches Layout)" - } - }, - "en": { - "stringUnit": { - "state": "translated", - "value": "New Pane (Auto Layout)" + "value": "Wählen Sie höchstens 128 Dateien mit absoluten Pfaden aus" } }, "es": { "stringUnit": { "state": "translated", - "value": "Nuevo panel (diseño automático)" + "value": "Selecciona como máximo 128 archivos mediante rutas absolutas" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Nouveau panneau (disposition automatique)" - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "Nuovo pannello (layout automatico)" + "value": "Sélectionnez au maximum 128 fichiers avec des chemins absolus" } }, "ja": { "stringUnit": { "state": "translated", - "value": "新しいペイン(自動レイアウト)" + "value": "絶対パスで最大128個のファイルを選択してください" } }, "ko": { "stringUnit": { "state": "translated", - "value": "새 패널 (자동 레이아웃)" - } - }, - "nb": { - "stringUnit": { - "state": "translated", - "value": "Nytt panel (automatisk oppsett)" - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "value": "Nowy panel (układ automatyczny)" - } - }, - "pt-BR": { - "stringUnit": { - "state": "translated", - "value": "Novo Painel (Layout Automático)" - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Новая панель (автоматическая раскладка)" - } - }, - "th": { - "stringUnit": { - "state": "translated", - "value": "บานหน้าต่างใหม่ (จัดวางอัตโนมัติ)" - } - }, - "tr": { - "stringUnit": { - "state": "translated", - "value": "Yeni Bölme (Otomatik Düzen)" - } - }, - "uk": { - "stringUnit": { - "state": "translated", - "value": "Нова панель (автоматичне розташування)" + "value": "절대 경로를 사용하여 최대 128개의 파일을 선택하세요" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "新建窗格(自动布局)" + "value": "请使用绝对路径选择最多 128 个文件" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "新增窗格(自動佈局)" + "value": "請使用絕對路徑選取最多 128 個檔案" } } } }, - "cli.restoreSession.help": { + "browser.inputFiles.error.timeout": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Usage: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\nReopen the previous saved cmux session.\n\nIf the app is already running, this restores the last saved session into the current app.\nIf the app is not running, this launches cmux and lets startup restore reopen the saved session.\n\nEach cmux install (stable, nightly, rc, staging, tagged debug builds) saves its own session.\n--from Reopen another install's saved session in this running cmux, for example\n after trying nightly and switching back to stable. The session opens as\n additional windows; the other install's saved file is only read.\n--from Reopen a session file written by --export.\n--export Write this cmux's saved session to a file. Pass --force to replace an\n existing file.\n\n--from and --export require cmux to be running." + "value": "Timed out preparing files for upload" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Verwendung: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\nDie zuletzt gespeicherte cmux-Sitzung erneut öffnen.\n\nLäuft die App bereits, wird die zuletzt gespeicherte Sitzung in der aktuellen App wiederhergestellt.\nLäuft die App nicht, wird cmux gestartet und die gespeicherte Sitzung beim Start wiederhergestellt.\n\nJede cmux-Installation (stable, nightly, rc, staging, getaggte Debug-Builds) speichert ihre eigene Sitzung.\n--from Die gespeicherte Sitzung einer anderen Installation in diesem laufenden cmux öffnen,\n z. B. nachdem Sie nightly ausprobiert haben und zu stable zurückkehren. Die Sitzung\n öffnet sich in zusätzlichen Fenstern; die Datei der anderen Installation wird nur gelesen.\n--from Eine mit --export geschriebene Sitzungsdatei öffnen.\n--export Die gespeicherte Sitzung dieses cmux in eine Datei schreiben. Mit --force wird eine\n vorhandene Datei ersetzt.\n\n--from und --export setzen ein laufendes cmux voraus." + "value": "انتهت مهلة تجهيز الملفات للرفع" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Utilisation : cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\nRouvrir la dernière session cmux enregistrée.\n\nSi l'app est déjà ouverte, la dernière session enregistrée est restaurée dans l'app actuelle.\nSi l'app n'est pas ouverte, cmux est lancé et la restauration au démarrage rouvre la session enregistrée.\n\nChaque installation de cmux (stable, nightly, rc, staging, builds debug avec tag) enregistre sa propre session.\n--from Rouvrir la session enregistrée d'une autre installation dans ce cmux en cours, par exemple\n après avoir essayé nightly puis être revenu à stable. La session s'ouvre dans des fenêtres\n supplémentaires ; le fichier de l'autre installation est seulement lu.\n--from Rouvrir un fichier de session écrit par --export.\n--export Écrire la session enregistrée de ce cmux dans un fichier. Ajoutez --force pour remplacer\n un fichier existant.\n\n--from et --export nécessitent que cmux soit ouvert." + "value": "Zeitüberschreitung beim Vorbereiten der Dateien für den Upload" } }, "es": { "stringUnit": { "state": "translated", - "value": "Uso: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\nVuelve a abrir la última sesión guardada de cmux.\n\nSi la app ya está abierta, restaura la última sesión guardada en la app actual.\nSi la app no está abierta, inicia cmux y deja que la restauración de inicio vuelva a abrir la sesión guardada.\n\nCada instalación de cmux (stable, nightly, rc, staging, builds de depuración con etiqueta) guarda su propia sesión.\n--from Abre en este cmux la sesión guardada de otra instalación, por ejemplo después de\n probar nightly y volver a stable. La sesión se abre en ventanas adicionales; el archivo\n de la otra instalación solo se lee.\n--from Abre un archivo de sesión escrito con --export.\n--export Escribe en un archivo la sesión guardada de este cmux. Usa --force para reemplazar un\n archivo existente.\n\n--from y --export requieren que cmux esté abierto." + "value": "Se agotó el tiempo de preparación de los archivos para subir" } }, - "ja": { + "fr": { "stringUnit": { "state": "translated", - "value": "使い方: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\n前回保存した cmux セッションを再度開きます。\n\nアプリがすでに起動している場合は、最後に保存したセッションを現在のアプリに復元します。\nアプリが起動していない場合は、cmux を起動し、起動時の復元で保存済みセッションを開きます。\n\ncmux の各インストール(stable、nightly、rc、staging、タグ付き debug ビルド)はそれぞれ独自のセッションを保存します。\n--from 別のインストールで保存したセッションを、起動中のこの cmux で開きます。たとえば nightly を\n 試したあと stable に戻る場合に使います。セッションは追加のウインドウとして開き、別の\n インストールのファイルは読み取るだけです。\n--from --export で書き出したセッションファイルを開きます。\n--export この cmux の保存済みセッションをファイルに書き出します。既存のファイルを置き換えるには\n --force を指定します。\n\n--from と --export を使うには cmux が起動している必要があります。" + "value": "Le délai de préparation des fichiers à envoyer a été dépassé" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "الاستخدام: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\nأعد فتح آخر جلسة cmux محفوظة.\n\nإذا كان التطبيق يعمل بالفعل، فستُستعاد آخر جلسة محفوظة في التطبيق الحالي.\nإذا لم يكن التطبيق يعمل، فسيُشغَّل cmux وتعيد استعادة بدء التشغيل فتح الجلسة المحفوظة.\n\nيحفظ كل تثبيت من cmux (stable وnightly وrc وstaging وإصدارات debug الموسومة) جلسته الخاصة.\n--from افتح الجلسة المحفوظة لتثبيت آخر في cmux الذي يعمل الآن، مثلًا\n بعد تجربة nightly والعودة إلى stable. تُفتح الجلسة في\n نوافذ إضافية، ويُقرأ ملف التثبيت الآخر فقط.\n--from افتح ملف جلسة كتبه الأمر --export.\n--export اكتب الجلسة المحفوظة لهذا cmux في ملف. استخدم --force لاستبدال\n ملف موجود.\n\nيتطلب --from و--export أن يكون cmux قيد التشغيل." + "value": "アップロードするファイルの準備がタイムアウトしました" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "用法: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\n重新開啟上次儲存的 cmux 工作階段。\n\n如果 App 已在執行,會將上次儲存的工作階段還原到目前的 App 中。\n如果 App 未執行,會啟動 cmux,並由啟動還原重新開啟已儲存的工作階段。\n\n每個 cmux 安裝(stable、nightly、rc、staging、帶標籤的 debug 建置)都會儲存自己的工作階段。\n--from 在執行中的 cmux 開啟另一個安裝儲存的工作階段,例如\n 試用 nightly 後切回 stable。工作階段會以\n 額外視窗開啟;另一個安裝的檔案只會被讀取。\n--from 開啟由 --export 寫出的工作階段檔案。\n--export 將此 cmux 儲存的工作階段寫入檔案。使用 --force 可取代\n 既有檔案。\n\n--from 和 --export 需要 cmux 正在執行。" + "value": "업로드할 파일 준비 시간이 초과되었습니다" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "用法: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\n重新打开上次保存的 cmux 会话。\n\n如果应用已在运行,会将上次保存的会话恢复到当前应用中。\n如果应用未运行,会启动 cmux,并由启动恢复重新打开保存的会话。\n\n每个 cmux 安装(stable、nightly、rc、staging、带标签的 debug 构建)都会保存自己的会话。\n--from 在正在运行的 cmux 中打开另一个安装保存的会话,例如\n 试用 nightly 后切回 stable。会话会以\n 额外窗口打开;另一个安装的会话文件只会被读取。\n--from 打开由 --export 写出的会话文件。\n--export 将此 cmux 保存的会话写入文件。使用 --force 可替换\n 已有文件。\n\n--from 和 --export 需要 cmux 正在运行。" + "value": "准备上传文件超时" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "사용법: cmux restore-session\n cmux restore-session --from |path>\n cmux restore-session --export [--force]\n\n마지막으로 저장된 cmux 세션을 다시 엽니다.\n\n앱이 이미 실행 중이면 마지막으로 저장된 세션을 현재 앱에 복원합니다.\n앱이 실행 중이 아니면 cmux를 실행하고 시작 복원이 저장된 세션을 다시 열도록 합니다.\n\n각 cmux 설치(stable, nightly, rc, staging, 태그가 지정된 debug 빌드)는 자체 세션을 저장합니다.\n--from 다른 설치에 저장된 세션을 실행 중인 이 cmux에서 엽니다. 예를 들어\n nightly를 사용해 본 뒤 stable로 돌아올 때 사용합니다. 세션은\n 추가 창으로 열리며, 다른 설치의 파일은 읽기만 합니다.\n--from --export로 작성한 세션 파일을 엽니다.\n--export 이 cmux에 저장된 세션을 파일로 씁니다. 기존 파일을 바꾸려면\n --force를 사용하세요.\n\n--from과 --export를 사용하려면 cmux가 실행 중이어야 합니다." + "value": "準備上傳檔案逾時" } } } }, - "session.export.error.destinationExists": { + "browser.inputFiles.error.tooLarge": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%@ already exists. Pass --force to replace it." + "value": "The combined upload must be no larger than 32 MiB" } }, "ar": { "stringUnit": { "state": "translated", - "value": "%@ موجود بالفعل. استخدم --force لاستبداله." + "value": "يجب ألا يتجاوز الحجم الإجمالي للملفات المرفوعة 32 MiB" } }, "de": { "stringUnit": { "state": "translated", - "value": "%@ ist bereits vorhanden. Verwenden Sie --force, um die Datei zu ersetzen." + "value": "Die Uploads dürfen insgesamt nicht größer als 32 MiB sein" } }, "es": { "stringUnit": { "state": "translated", - "value": "%@ ya existe. Usa --force para reemplazarlo." + "value": "El tamaño total de los archivos para subir no debe superar los 32 MiB" } }, "fr": { "stringUnit": { "state": "translated", - "value": "%@ existe déjà. Ajoutez --force pour le remplacer." + "value": "La taille totale des fichiers à envoyer ne doit pas dépasser 32 MiB" } }, "ja": { "stringUnit": { "state": "translated", - "value": "%@ はすでに存在します。置き換えるには --force を指定してください。" + "value": "アップロードするファイルの合計サイズは32 MiB以下にしてください" } }, "ko": { "stringUnit": { "state": "translated", - "value": "%@ 파일이 이미 있습니다. 바꾸려면 --force를 사용하세요." + "value": "전체 업로드 크기는 32 MiB를 초과할 수 없습니다" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%@ 已存在。使用 --force 以替换它。" + "value": "上传文件的总大小不得超过 32 MiB" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%@ 已存在。使用 --force 以取代它。" + "value": "上傳檔案的總大小不得超過 32 MiB" } } } }, - "session.export.error.destinationIsLive": { + "browser.inputFiles.error.unreadableFile": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%@ is this cmux's own session file. Choose another path." + "value": "Every upload path must be a readable regular file" } }, "ar": { "stringUnit": { "state": "translated", - "value": "%@ هو ملف الجلسة الخاص بهذا الـ cmux. اختر مسارًا آخر." + "value": "يجب أن يشير كل مسار للرفع إلى ملف عادي قابل للقراءة" } }, "de": { "stringUnit": { "state": "translated", - "value": "%@ ist die eigene Sitzungsdatei dieses cmux. Wählen Sie einen anderen Pfad." + "value": "Jeder Upload-Pfad muss auf eine lesbare reguläre Datei verweisen" } }, "es": { "stringUnit": { "state": "translated", - "value": "%@ es el archivo de sesión de este cmux. Elige otra ruta." + "value": "Cada ruta de subida debe apuntar a un archivo normal que se pueda leer" } }, "fr": { "stringUnit": { "state": "translated", - "value": "%@ est le fichier de session de ce cmux. Choisissez un autre chemin." + "value": "Chaque chemin à envoyer doit désigner un fichier ordinaire lisible" } }, "ja": { "stringUnit": { "state": "translated", - "value": "%@ はこの cmux 自身のセッションファイルです。別のパスを指定してください。" + "value": "各アップロードパスは読み取り可能な通常ファイルである必要があります" } }, "ko": { "stringUnit": { "state": "translated", - "value": "%@ 파일은 이 cmux의 세션 파일입니다. 다른 경로를 선택하세요." + "value": "모든 업로드 경로는 읽을 수 있는 일반 파일이어야 합니다" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%@ 是此 cmux 自己的会话文件。请选择其他路径。" + "value": "每个上传路径都必须指向可读取的普通文件" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%@ 是此 cmux 本身的工作階段檔案。請選擇其他路徑。" + "value": "每個上傳路徑都必須指向可讀取的一般檔案" } } } }, - "session.export.error.noSnapshot": { + "cloudTree.group.cloudMachines.usage": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "cmux has not saved a session yet. Try again in a few seconds." + "value": "%1$d/%2$d" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "لم يحفظ cmux أي جلسة بعد. حاول مرة أخرى بعد بضع ثوانٍ." + "value": "%1$d/%2$d" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "cmux hat noch keine Sitzung gespeichert. Versuchen Sie es in ein paar Sekunden erneut." + "value": "%1$d/%2$d" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "%1$d/%2$d" } }, "es": { "stringUnit": { "state": "translated", - "value": "cmux aún no ha guardado ninguna sesión. Inténtalo de nuevo en unos segundos." + "value": "%1$d/%2$d" } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux n'a pas encore enregistré de session. Réessayez dans quelques secondes." + "value": "%1$d/%2$d" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux はまだセッションを保存していません。数秒後にもう一度お試しください。" + "value": "%1$d/%2$d" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux가 아직 세션을 저장하지 않았습니다. 몇 초 후에 다시 시도하세요." + "value": "%1$d/%2$d" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "cmux 尚未保存会话。请几秒后再试。" + "value": "%1$d/%2$d" } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "cmux 尚未儲存工作階段。請過幾秒再試一次。" + "value": "%1$d/%2$d" } - } - } - }, - "session.export.error.writeFailed": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Could not write %@." + "value": "%1$d/%2$d" } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "تعذّرت كتابة %@." + "value": "%1$d/%2$d" } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "%@ konnte nicht geschrieben werden." + "value": "%1$d/%2$d" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "No se pudo escribir %@." + "value": "%1$d/%2$d" } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Impossible d'écrire %@." + "value": "%1$d/%2$d" } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "%@ を書き込めませんでした。" + "value": "%1$d/%2$d" } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "%@ 파일을 쓸 수 없습니다." + "value": "%1$d/%2$d" } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "无法写入 %@。" + "value": "%1$d/%2$d" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "無法寫入 %@。" + "value": "%1$d/%2$d" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "%1$d/%2$d" } } } }, - "session.import.error.fileNotFound": { + "cloud.ports.vpnOff.explanation": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "No saved cmux session at %@." + "value": "Ports open in cmux without setup. To use private addresses in other apps, set up Cloud VPN." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "لا توجد جلسة cmux محفوظة في %@." + "value": "Ports lassen sich in cmux ohne Einrichtung öffnen. Richte Cloud-VPN ein, um private Adressen in anderen Apps zu verwenden." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Unter %@ gibt es keine gespeicherte cmux-Sitzung." + "value": "Les ports s’ouvrent dans cmux sans configuration. Pour utiliser les adresses privées dans d’autres apps, configurez le VPN Cloud." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تُفتح المنافذ في cmux دون إعداد. لاستخدام العناوين الخاصة في التطبيقات الأخرى، أعدّ Cloud VPN." } }, "es": { "stringUnit": { "state": "translated", - "value": "No hay ninguna sesión de cmux guardada en %@." + "value": "Los puertos se abren en cmux sin configuración. Para usar direcciones privadas en otras apps, configura Cloud VPN." } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Aucune session cmux enregistrée à l'emplacement %@." + "value": "無需設定即可在 cmux 中開啟連接埠。如要在其他 App 使用私有位址,請設定 Cloud VPN。" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%@ に保存された cmux セッションはありません。" + "value": "无需设置即可在 cmux 中打开端口。要在其他应用中使用私有地址,请设置云 VPN。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "%@ 위치에 저장된 cmux 세션이 없습니다." + "value": "별도 설정 없이 cmux에서 포트를 열 수 있습니다. 다른 앱에서 비공개 주소를 사용하려면 Cloud VPN을 설정하세요." } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "%@ 没有已保存的 cmux 会话。" + "value": "設定なしで cmux 内のポートを開けます。他のアプリでプライベートアドレスを使うには、Cloud VPN を設定してください。" } }, - "zh-Hant": { + "bs": { "stringUnit": { - "state": "translated", - "value": "%@ 沒有已儲存的 cmux 工作階段。" + "state": "needs_review", + "value": "Portovi se otvaraju u cmux-u bez podešavanja. Za korištenje privatnih adresa u drugim aplikacijama podesite Cloud VPN." } - } - } - }, - "session.import.error.newerSchema": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { - "state": "translated", - "value": "%1$@ was saved by a newer cmux (session format %2$@, this cmux reads %3$@). Update cmux to import it." + "state": "needs_review", + "value": "Porte åbnes i cmux uden opsætning. Opsæt Cloud VPN for at bruge private adresser i andre apps." } }, - "ar": { + "it": { "stringUnit": { - "state": "translated", - "value": "حُفظ %1$@ بواسطة إصدار أحدث من cmux (تنسيق الجلسة %2$@، ويقرأ هذا الـ cmux التنسيق %3$@). حدّث cmux لاستيراده." + "state": "needs_review", + "value": "Le porte si aprono in cmux senza configurazione. Per usare gli indirizzi privati in altre app, configura Cloud VPN." } }, - "de": { + "km": { "stringUnit": { - "state": "translated", - "value": "%1$@ wurde von einem neueren cmux gespeichert (Sitzungsformat %2$@, dieses cmux liest %3$@). Aktualisieren Sie cmux, um die Datei zu importieren." + "state": "needs_review", + "value": "ច្រកអាចបើកក្នុង cmux ដោយមិនចាំបាច់រៀបចំ។ ដើម្បីប្រើអាសយដ្ឋានឯកជនក្នុងកម្មវិធីផ្សេងទៀត សូមរៀបចំ Cloud VPN។" } }, - "es": { + "nb": { "stringUnit": { - "state": "translated", - "value": "%1$@ se guardó con un cmux más reciente (formato de sesión %2$@; este cmux lee el %3$@). Actualiza cmux para importarlo." + "state": "needs_review", + "value": "Porter åpnes i cmux uten oppsett. Sett opp Cloud VPN for å bruke private adresser i andre apper." } }, - "fr": { + "pl": { "stringUnit": { - "state": "translated", - "value": "%1$@ a été enregistré par une version plus récente de cmux (format de session %2$@, ce cmux lit le format %3$@). Mettez cmux à jour pour l'importer." + "state": "needs_review", + "value": "Porty otwierają się w cmux bez konfiguracji. Aby używać prywatnych adresów w innych aplikacjach, skonfiguruj Cloud VPN." } }, - "ja": { + "pt-BR": { "stringUnit": { - "state": "translated", - "value": "%1$@ は新しい cmux で保存されています(セッション形式 %2$@、この cmux が読める形式は %3$@)。読み込むには cmux をアップデートしてください。" + "state": "needs_review", + "value": "As portas abrem no cmux sem configuração. Para usar endereços privados em outros apps, configure o Cloud VPN." } }, - "ko": { + "ru": { "stringUnit": { - "state": "translated", - "value": "%1$@ 파일은 더 새로운 cmux에서 저장되었습니다(세션 형식 %2$@, 이 cmux는 %3$@ 형식을 읽음). 가져오려면 cmux를 업데이트하세요." + "state": "needs_review", + "value": "Порты открываются в cmux без настройки. Чтобы использовать приватные адреса в других приложениях, настройте Cloud VPN." } }, - "zh-Hans": { + "th": { "stringUnit": { - "state": "translated", - "value": "%1$@ 由较新版本的 cmux 保存(会话格式 %2$@,此 cmux 读取 %3$@)。请更新 cmux 后再导入。" + "state": "needs_review", + "value": "เปิดพอร์ตใน cmux ได้โดยไม่ต้องตั้งค่า หากต้องการใช้ที่อยู่ส่วนตัวในแอปอื่น ให้ตั้งค่า Cloud VPN" } }, - "zh-Hant": { + "tr": { "stringUnit": { - "state": "translated", - "value": "%1$@ 是由較新版本的 cmux 儲存(工作階段格式 %2$@,此 cmux 讀取 %3$@)。請更新 cmux 後再匯入。" + "state": "needs_review", + "value": "Bağlantı noktaları cmux içinde kurulum gerektirmeden açılır. Diğer uygulamalarda özel adresleri kullanmak için Cloud VPN’i kurun." + } + }, + "uk": { + "stringUnit": { + "state": "needs_review", + "value": "Порти відкриваються в cmux без налаштування. Щоб використовувати приватні адреси в інших застосунках, налаштуйте Cloud VPN." } } } }, - "session.import.error.noWindows": { + "cloud.ports.vpnOff.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%@ has no windows to restore." + "value": "Optional: Cloud VPN" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "لا يحتوي %@ على نوافذ لاستعادتها." + "value": "Optional: Cloud-VPN" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "%@ enthält keine Fenster zum Wiederherstellen." + "value": "Facultatif : VPN Cloud" } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "%@ no tiene ventanas que restaurar." + "value": "اختياري: Cloud VPN" } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "%@ ne contient aucune fenêtre à restaurer." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "%@ には復元できるウインドウがありません。" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "%@ 파일에 복원할 창이 없습니다." - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "%@ 没有可恢复的窗口。" + "value": "Opcional: Cloud VPN" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%@ 沒有可還原的視窗。" - } - } - } - }, - "session.import.error.notASnapshot": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "%@ is not a cmux session snapshot." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "%@ ليس لقطة جلسة cmux." - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "%@ ist keine cmux-Sitzungsdatei." + "value": "選用:Cloud VPN" } }, - "es": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%@ no es una instantánea de sesión de cmux." + "value": "可选:云 VPN" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "%@ n'est pas un instantané de session cmux." + "value": "선택 사항: Cloud VPN" } }, "ja": { "stringUnit": { "state": "translated", - "value": "%@ は cmux のセッションスナップショットではありません。" + "value": "任意:Cloud VPN" } }, - "ko": { + "bs": { "stringUnit": { - "state": "translated", - "value": "%@ 파일은 cmux 세션 스냅샷이 아닙니다." + "state": "needs_review", + "value": "Opcionalno: Cloud VPN" } }, - "zh-Hans": { + "da": { "stringUnit": { - "state": "translated", - "value": "%@ 不是 cmux 会话快照。" + "state": "needs_review", + "value": "Valgfrit: Cloud VPN" } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "%@ 不是 cmux 工作階段快照。" - } - } - } - }, - "session.import.error.nothingRestored": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { - "state": "translated", - "value": "Nothing in %@ could be reopened." + "state": "needs_review", + "value": "Facoltativo: Cloud VPN" } }, - "ar": { + "km": { "stringUnit": { - "state": "translated", - "value": "تعذّر إعادة فتح أي شيء من %@." + "state": "needs_review", + "value": "ជាជម្រើស៖ Cloud VPN" } }, - "de": { + "nb": { "stringUnit": { - "state": "translated", - "value": "Aus %@ konnte nichts wieder geöffnet werden." + "state": "needs_review", + "value": "Valgfritt: Cloud VPN" } }, - "es": { + "pl": { "stringUnit": { - "state": "translated", - "value": "No se pudo volver a abrir nada de %@." + "state": "needs_review", + "value": "Opcjonalnie: Cloud VPN" } }, - "fr": { + "pt-BR": { "stringUnit": { - "state": "translated", - "value": "Aucun élément de %@ n'a pu être rouvert." + "state": "needs_review", + "value": "Opcional: Cloud VPN" } }, - "ja": { + "ru": { "stringUnit": { - "state": "translated", - "value": "%@ から再度開けるものはありませんでした。" + "state": "needs_review", + "value": "Необязательно: Cloud VPN" } }, - "ko": { + "th": { "stringUnit": { - "state": "translated", - "value": "%@ 파일에서 다시 열 수 있는 항목이 없습니다." + "state": "needs_review", + "value": "ตัวเลือกเพิ่มเติม: Cloud VPN" } }, - "zh-Hans": { + "tr": { "stringUnit": { - "state": "translated", - "value": "无法重新打开 %@ 中的任何内容。" + "state": "needs_review", + "value": "İsteğe bağlı: Cloud VPN" } }, - "zh-Hant": { + "uk": { "stringUnit": { - "state": "translated", - "value": "無法重新開啟 %@ 中的任何內容。" + "state": "needs_review", + "value": "Необов’язково: Cloud VPN" } } } }, - "session.import.error.olderSchema": { + "cloud.vpn.setup.address.body": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%1$@ uses an older session format (%2$@) that this cmux no longer reads (%3$@)." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "يستخدم %1$@ تنسيق جلسة أقدم (%2$@) لم يعد هذا الـ cmux يقرؤه (%3$@)." + "value": "Each machine has its own private IP. Two machines may both expose port 3000, for example 10.40.0.10:3000 and 10.40.0.11:3000. Right-click a Cloud port and choose Copy Private Address URL after connecting. These addresses are private, not public share links." } }, "de": { "stringUnit": { "state": "translated", - "value": "%1$@ verwendet ein älteres Sitzungsformat (%2$@), das dieses cmux nicht mehr liest (%3$@)." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "%1$@ usa un formato de sesión anterior (%2$@) que este cmux ya no lee (%3$@)." + "value": "Jede Maschine hat eine eigene private IP. Zwei Maschinen können beide Port 3000 verwenden, etwa 10.40.0.10:3000 und 10.40.0.11:3000. Klicken Sie nach dem Verbinden mit der rechten Maustaste auf einen Cloud-Port und wählen Sie URL der privaten Adresse kopieren. Diese Adressen sind privat und keine öffentlichen Freigabelinks." } }, "fr": { "stringUnit": { "state": "translated", - "value": "%1$@ utilise un ancien format de session (%2$@) que ce cmux ne lit plus (%3$@)." + "value": "Chaque machine a sa propre IP privée. Deux machines peuvent utiliser le port 3000, par exemple 10.40.0.10:3000 et 10.40.0.11:3000. Après connexion, faites un clic droit sur un port Cloud et choisissez Copier l’URL de l’adresse privée. Ces adresses sont privées, ce ne sont pas des liens publics de partage." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "%1$@ はこの cmux が読み込まなくなった古いセッション形式(%2$@)を使用しています(%3$@)。" + "value": "Cada máquina tiene su propia IP privada. Dos máquinas pueden usar el puerto 3000, como 10.40.0.10:3000 y 10.40.0.11:3000. Después de conectar, haz clic derecho en un puerto Cloud y elige Copiar URL de dirección privada. Estas direcciones son privadas, no enlaces públicos para compartir." } }, - "ko": { + "ja": { "stringUnit": { "state": "translated", - "value": "%1$@ 파일은 이 cmux가 더 이상 읽지 않는 이전 세션 형식(%2$@)을 사용합니다(%3$@)." + "value": "各マシンには個別のプライベートIPがあります。2台のマシンがどちらもポート3000を使えます(例:10.40.0.10:3000と10.40.0.11:3000)。接続後にCloudポートを右クリックし、「プライベートアドレスURLをコピー」を選びます。これらはプライベートアドレスで、公開共有リンクではありません。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%1$@ 使用较旧的会话格式(%2$@),此 cmux 已不再读取(%3$@)。" + "value": "每台机器都有自己的私有 IP。两台机器可以同时使用端口 3000,例如 10.40.0.10:3000 和 10.40.0.11:3000。连接后右键点击 Cloud 端口,选择“复制私有地址 URL”。这些地址是私有地址,不是公开分享链接。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%1$@ 使用較舊的工作階段格式(%2$@),此 cmux 已不再讀取(%3$@)。" - } - } - } - }, - "session.import.error.unknownChannel": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Unknown cmux channel \"%@\". Use stable, nightly, rc, staging, debug:, or a path to a session file." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "قناة cmux غير معروفة \"%@\". استخدم stable أو nightly أو rc أو staging أو debug: أو مسار ملف جلسة." - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Unbekannter cmux-Kanal \"%@\". Verwenden Sie stable, nightly, rc, staging, debug: oder einen Pfad zu einer Sitzungsdatei." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Canal de cmux desconocido \"%@\". Usa stable, nightly, rc, staging, debug: o la ruta de un archivo de sesión." + "value": "每台機器都有自己的私有 IP。兩台機器可以同時使用連接埠 3000,例如 10.40.0.10:3000 和 10.40.0.11:3000。連線後對 Cloud 連接埠按右鍵,選擇「複製私有位址 URL」。這些位址是私有位址,不是公開分享連結。" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Canal cmux inconnu « %@ ». Utilisez stable, nightly, rc, staging, debug: ou le chemin d'un fichier de session." + "value": "각 머신에는 고유한 비공개 IP가 있습니다. 두 머신 모두 포트 3000을 사용할 수 있습니다(예: 10.40.0.10:3000 및 10.40.0.11:3000). 연결 후 Cloud 포트를 오른쪽 클릭하고 비공개 주소 URL 복사를 선택하세요. 이 주소는 비공개이며 공개 공유 링크가 아닙니다." } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "不明な cmux チャンネル「%@」です。stable、nightly、rc、staging、debug:、またはセッションファイルのパスを指定してください。" + "value": "لكل جهاز عنوان IP خاص به. يمكن لجهازين استخدام المنفذ 3000، مثل 10.40.0.10:3000 و10.40.0.11:3000. بعد الاتصال، انقر بزر الماوس الأيمن على منفذ Cloud واختر نسخ رابط العنوان الخاص. هذه عناوين خاصة وليست روابط مشاركة عامة." } }, - "ko": { + "bs": { "stringUnit": { "state": "translated", - "value": "알 수 없는 cmux 채널 \"%@\"입니다. stable, nightly, rc, staging, debug: 또는 세션 파일 경로를 사용하세요." + "value": "Svaka mašina ima svoju privatnu IP adresu. Dvije mašine mogu koristiti port 3000, na primjer 10.40.0.10:3000 i 10.40.0.11:3000. Nakon povezivanja kliknite desnim dugmetom na Cloud port i izaberite Kopiraj URL privatne adrese. Ovo su privatne adrese, a ne javne veze za dijeljenje." } }, - "zh-Hans": { + "da": { "stringUnit": { "state": "translated", - "value": "未知的 cmux 渠道“%@”。请使用 stable、nightly、rc、staging、debug: 或会话文件路径。" + "value": "Hver maskine har sin egen private IP. To maskiner kan begge bruge port 3000, f.eks. 10.40.0.10:3000 og 10.40.0.11:3000. Højreklik på en Cloud-port efter tilslutning, og vælg Kopiér URL til privat adresse. Adresserne er private, ikke offentlige delelinks." } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "未知的 cmux 通道「%@」。請使用 stable、nightly、rc、staging、debug: 或工作階段檔案路徑。" - } - } - } - }, - "session.import.error.unreadable": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "Could not read %@." + "value": "Ogni macchina ha il proprio IP privato. Due macchine possono usare entrambe la porta 3000, ad esempio 10.40.0.10:3000 e 10.40.0.11:3000. Dopo la connessione fai clic destro su una porta Cloud e scegli Copia URL indirizzo privato. Sono indirizzi privati, non link pubblici." } }, - "ar": { + "km": { "stringUnit": { "state": "translated", - "value": "تعذّرت قراءة %@." + "value": "ម៉ាស៊ីននីមួយៗមាន IP ឯកជនផ្ទាល់ខ្លួន។ ម៉ាស៊ីនពីរអាចប្រើច្រក 3000 ដូចគ្នា ឧទាហរណ៍ 10.40.0.10:3000 និង 10.40.0.11:3000។ បន្ទាប់ពីភ្ជាប់ ចុចខាងស្តាំលើច្រក Cloud ហើយជ្រើស ចម្លង URL អាសយដ្ឋានឯកជន។ ទាំងនេះជាអាសយដ្ឋានឯកជន មិនមែនតំណចែករំលែកសាធារណៈទេ។" } }, - "de": { + "nb": { "stringUnit": { "state": "translated", - "value": "%@ konnte nicht gelesen werden." + "value": "Hver maskin har sin egen private IP. To maskiner kan bruke port 3000, for eksempel 10.40.0.10:3000 og 10.40.0.11:3000. Høyreklikk en Cloud-port etter tilkobling og velg Kopier URL for privat adresse. Adressene er private, ikke offentlige delingslenker." } }, - "es": { + "pl": { "stringUnit": { "state": "translated", - "value": "No se pudo leer %@." + "value": "Każda maszyna ma własny prywatny adres IP. Dwie maszyny mogą używać portu 3000, na przykład 10.40.0.10:3000 i 10.40.0.11:3000. Po połączeniu kliknij prawym przyciskiem port Cloud i wybierz Kopiuj URL prywatnego adresu. To prywatne adresy, nie publiczne linki udostępniania." } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Impossible de lire %@." + "value": "Cada máquina tem seu próprio IP privado. Duas máquinas podem usar a porta 3000, por exemplo 10.40.0.10:3000 e 10.40.0.11:3000. Depois de conectar, clique com o botão direito em uma porta Cloud e escolha Copiar URL do endereço privado. Esses endereços são privados, não links públicos de compartilhamento." } }, - "ja": { + "ru": { "stringUnit": { "state": "translated", - "value": "%@ を読み込めませんでした。" + "value": "У каждой машины свой частный IP. Две машины могут использовать порт 3000, например 10.40.0.10:3000 и 10.40.0.11:3000. После подключения щёлкните правой кнопкой мыши порт Cloud и выберите Скопировать URL частного адреса. Это частные адреса, а не публичные ссылки." } }, - "ko": { + "th": { "stringUnit": { "state": "translated", - "value": "%@ 파일을 읽을 수 없습니다." + "value": "แต่ละเครื่องมี IP ส่วนตัวของตนเอง สองเครื่องสามารถใช้พอร์ต 3000 ได้ เช่น 10.40.0.10:3000 และ 10.40.0.11:3000 หลังเชื่อมต่อ คลิกขวาที่พอร์ต Cloud แล้วเลือกคัดลอก URL ที่อยู่ส่วนตัว ที่อยู่เหล่านี้เป็นส่วนตัว ไม่ใช่ลิงก์สาธารณะ" } }, - "zh-Hans": { + "tr": { "stringUnit": { "state": "translated", - "value": "无法读取 %@。" + "value": "Her makinenin kendi özel IP’si vardır. İki makine 3000 bağlantı noktasını kullanabilir; örneğin 10.40.0.10:3000 ve 10.40.0.11:3000. Bağlandıktan sonra bir Cloud portuna sağ tıklayın ve Özel Adres URL’sini Kopyala’yı seçin. Bunlar özel adreslerdir, herkese açık paylaşım bağlantıları değildir." } }, - "zh-Hant": { + "uk": { "stringUnit": { "state": "translated", - "value": "無法讀取 %@。" + "value": "Кожна машина має власну приватну IP-адресу. Дві машини можуть використовувати порт 3000, наприклад 10.40.0.10:3000 і 10.40.0.11:3000. Після підключення клацніть правою кнопкою миші порт Cloud і виберіть Копіювати URL приватної адреси. Це приватні адреси, а не публічні посилання для спільного доступу." } } } }, - "session.import.error.liveSnapshot": { + "cloud.vpn.setup.cancel": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%@ is the session this cmux is saving right now. Run cmux restore-session without --from to reopen the previous launch." + "value": "Cancel" } }, "de": { "stringUnit": { "state": "translated", - "value": "%@ ist die Sitzung, die dieses cmux gerade speichert. Führen Sie cmux restore-session ohne --from aus, um den vorherigen Start wieder zu öffnen." + "value": "Abbrechen" } }, "fr": { "stringUnit": { "state": "translated", - "value": "%@ est la session que ce cmux enregistre actuellement. Exécutez cmux restore-session sans --from pour rouvrir le lancement précédent." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "%@ هي الجلسة التي يحفظها cmux هذا الآن. شغّل cmux restore-session دون --from لإعادة فتح التشغيل السابق." + "value": "Annuler" } }, "es": { "stringUnit": { "state": "translated", - "value": "%@ es la sesión que este cmux está guardando ahora. Ejecuta cmux restore-session sin --from para volver a abrir el inicio anterior." + "value": "Cancelar" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "%@ 是此 cmux 目前正在儲存的工作階段。執行不含 --from 的 cmux restore-session 以重新開啟上次啟動的內容。" + "value": "キャンセル" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%@ 是此 cmux 当前正在保存的会话。运行不带 --from 的 cmux restore-session 以重新打开上次启动的内容。" + "value": "取消" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%@ 파일은 이 cmux가 지금 저장 중인 세션입니다. 이전 실행을 다시 열려면 --from 없이 cmux restore-session을 실행하세요." + "value": "取消" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "%@ はこの cmux が現在保存しているセッションです。前回の起動を再度開くには、--from を付けずに cmux restore-session を実行してください。" - } - } - } - }, - "machines.requiresPro.upgrade.short": { - "extractionState": "manual", - "localizations": { - "en": { + "ko": { "stringUnit": { "state": "translated", - "value": "Upgrade" + "value": "취소" } }, "ar": { "stringUnit": { "state": "translated", - "value": "ترقية" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Upgraden" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Actualizar" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Mettre à niveau" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アップグレード" + "value": "إلغاء" } }, - "ko": { + "bs": { "stringUnit": { "state": "translated", - "value": "업그레이드" + "value": "Otkaži" } }, - "zh-Hans": { + "da": { "stringUnit": { "state": "translated", - "value": "升级" + "value": "Annuller" } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "升級" - } - } - } - }, - "machines.sessionRejected.signInAgain.short": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "Sign In" + "value": "Annulla" } }, - "ar": { + "km": { "stringUnit": { "state": "translated", - "value": "تسجيل الدخول" + "value": "បោះបង់" } }, - "de": { + "nb": { "stringUnit": { "state": "translated", - "value": "Anmelden" + "value": "Avbryt" } }, - "es": { + "pl": { "stringUnit": { "state": "translated", - "value": "Iniciar sesión" + "value": "Anuluj" } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Se reconnecter" + "value": "Cancelar" } }, - "ja": { + "ru": { "stringUnit": { "state": "translated", - "value": "再サインイン" + "value": "Отменить" } }, - "ko": { + "th": { "stringUnit": { "state": "translated", - "value": "다시 로그인" + "value": "ยกเลิก" } }, - "zh-Hans": { + "tr": { "stringUnit": { "state": "translated", - "value": "重新登录" + "value": "İptal" } }, - "zh-Hant": { + "uk": { "stringUnit": { "state": "translated", - "value": "重新登入" + "value": "Скасувати" } } } }, - "machines.requiresPro.stale": { + "cloud.vpn.setup.connect": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud machines need cmux Pro, showing last known" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "تتطلب الأجهزة السحابية إصدار cmux Pro، يتم عرض آخر حالة معروفة" + "value": "Connect Cloud VPN" } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud-Maschinen erfordern cmux Pro, zeige letzten bekannten Stand" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Las máquinas en la nube requieren cmux Pro, se muestra el último estado conocido" + "value": "Cloud-VPN verbinden" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Les machines Cloud nécessitent cmux Pro, affichage des dernières informations connues" + "value": "Connecter le VPN Cloud" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "Cloud マシンには cmux Pro が必要です。最後の状態を表示中" + "value": "Conectar VPN de Cloud" } }, - "ko": { + "ja": { "stringUnit": { "state": "translated", - "value": "클라우드 머신을 사용하려면 cmux Pro가 필요함, 마지막으로 확인된 상태 표시 중" + "value": "Cloud VPNに接続" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "云端机器需要 cmux Pro,显示的是最后已知状态" + "value": "连接 Cloud VPN" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "雲端機器需要 cmux Pro,顯示上次已知的狀態" - } - } - } - }, - "machines.sessionRejected.stale": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Sign-in needs a refresh, showing last known" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "يحتاج تسجيل الدخول إلى تحديث، يتم عرض آخر حالة معروفة" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Anmeldung muss aktualisiert werden, zeige letzten bekannten Stand" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Es necesario actualizar el inicio de sesión, se muestra el último estado conocido" + "value": "連接 Cloud VPN" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "La connexion doit être actualisée, affichage des dernières informations connues" + "value": "Cloud VPN 연결" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "再サインインが必要です。最後の状態を表示中" + "value": "توصيل VPN الخاص بـ Cloud" } }, - "ko": { + "bs": { "stringUnit": { "state": "translated", - "value": "로그인 갱신 필요, 마지막으로 확인된 상태 표시 중" + "value": "Poveži Cloud VPN" } }, - "zh-Hans": { + "da": { "stringUnit": { "state": "translated", - "value": "登录状态需要刷新,显示的是最后已知状态" + "value": "Forbind Cloud VPN" } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "登入狀態需要重新整理,顯示上次已知的狀態" - } - } - } - }, - "cli.session.help": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "Usage: cmux session restore [--list] [--session ]...\n\nReopen Claude sessions that were running when cmux last quit unexpectedly.\ncmux finds them in the agent journal, skips any that are running or already\nopen, and resumes each in its own workspace through the launcher that started\nit.\n\nWithout --session, restore acts only after an unexpected quit.\n\nOptions:\n --list Show the sessions without restoring them.\n --session Restore only this session (repeatable)." + "value": "Connetti VPN Cloud" } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "Verwendung: cmux session restore [--list] [--session ]...\n\nÖffnet Claude-Sitzungen erneut, die liefen, als cmux zuletzt unerwartet beendet wurde.\ncmux findet sie im Agent-Journal, überspringt laufende oder bereits geöffnete\nund setzt jede in einem eigenen Workspace\nüber den Launcher fort, der sie gestartet hat.\n\nOhne --session stellt restore nur nach einem unerwarteten Beenden wieder her.\n\nOptionen:\n --list Sitzungen anzeigen, ohne sie wiederherzustellen.\n --session Nur diese Sitzung wiederherstellen (wiederholbar)." + "value": "ភ្ជាប់ Cloud VPN" } }, - "fr": { + "nb": { "stringUnit": { "state": "translated", - "value": "Utilisation : cmux session restore [--list] [--session ]...\n\nRouvre les sessions Claude en cours lorsque cmux s’est fermé de façon inattendue.\ncmux les trouve dans le journal des agents, ignore celles qui tournent ou sont déjà\nouvertes, et reprend chacune dans son propre espace de travail via le lanceur qui l’a\ndémarrée.\n\nSans --session, restore n’agit qu’après une fermeture inattendue.\n\nOptions :\n --list Afficher les sessions sans les restaurer.\n --session Restaurer uniquement cette session (répétable)." + "value": "Koble til Cloud VPN" } }, - "ar": { + "pl": { "stringUnit": { "state": "translated", - "value": "الاستخدام: cmux session restore [--list] [--session ]...\n\nيعيد فتح جلسات Claude التي كانت قيد التشغيل عندما أُغلق cmux بشكل غير متوقع آخر مرة.\nيعثر cmux عليها في سجل الوكيل، ويتخطى ما يعمل منها أو المفتوح بالفعل،\nويستأنف كل جلسة في مساحة عمل خاصة بها\nعبر المشغّل الذي بدأها.\n\nبدون --session، لا تعمل الاستعادة إلا بعد إغلاق غير متوقع.\n\nالخيارات:\n --list عرض الجلسات دون استعادتها.\n --session استعادة هذه الجلسة فقط (قابل للتكرار)." + "value": "Połącz z Cloud VPN" } }, - "es": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Uso: cmux session restore [--list] [--session ]...\n\nVuelve a abrir las sesiones de Claude que estaban en ejecución cuando cmux se cerró inesperadamente.\ncmux las encuentra en el diario de agentes, omite las que están en ejecución o ya\nabiertas, y reanuda cada una en su propio espacio de trabajo mediante el lanzador que\nla inició.\n\nSin --session, restore solo actúa tras un cierre inesperado.\n\nOpciones:\n --list Mostrar las sesiones sin restaurarlas.\n --session Restaurar solo esta sesión (repetible)." + "value": "Conectar Cloud VPN" } }, - "zh-Hant": { + "ru": { "stringUnit": { "state": "translated", - "value": "用法: cmux session restore [--list] [--session ]...\n\n重新開啟 cmux 上次意外結束時仍在執行的 Claude 工作階段。\ncmux 會從代理日誌中找出它們,略過仍在執行或已開啟的工作階段,\n並透過原本啟動它的啟動器\n在各自的工作區中繼續。\n\n未指定 --session 時,restore 只會在意外結束後執行。\n\n選項:\n --list 只列出工作階段,不還原。\n --session 只還原此工作階段(可重複)。" + "value": "Подключить Cloud VPN" } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "用法: cmux session restore [--list] [--session ]...\n\n重新打开 cmux 上次意外退出时仍在运行的 Claude 会话。\ncmux 会从代理日志中找到它们,跳过仍在运行或已打开的会话,\n并通过最初启动它的启动器\n在各自的工作区中继续。\n\n未指定 --session 时,restore 只会在意外退出后执行。\n\n选项:\n --list 只列出会话,不恢复。\n --session 只恢复此会话(可重复)。" + "value": "เชื่อมต่อ Cloud VPN" } }, - "ko": { + "tr": { "stringUnit": { "state": "translated", - "value": "사용법: cmux session restore [--list] [--session ]...\n\ncmux가 마지막으로 예기치 않게 종료될 때 실행 중이던 Claude 세션을 다시 엽니다.\ncmux는 에이전트 저널에서 세션을 찾고, 실행 중이거나 이미 열려 있는 세션은 건너뛰며,\n각 세션을 시작한 런처를 통해\n자체 워크스페이스에서 이어갑니다.\n\n--session이 없으면 restore는 예기치 않은 종료 후에만 동작합니다.\n\n옵션:\n --list 복원하지 않고 세션만 표시합니다.\n --session 이 세션만 복원합니다(반복 가능)." + "value": "Cloud VPN’e bağlan" } }, - "ja": { + "uk": { "stringUnit": { "state": "translated", - "value": "使用法: cmux session restore [--list] [--session ]...\n\ncmux が前回予期せず終了したときに実行中だった Claude セッションを再び開きます。\ncmux はエージェントジャーナルからセッションを見つけ、実行中または既に開いている\nものはスキップし、それぞれを起動したランチャー経由で\n専用のワークスペースで再開します。\n\n--session を指定しない場合、restore は予期しない終了の後にのみ動作します。\n\nオプション:\n --list 復元せずにセッションを表示します。\n --session このセッションのみ復元します(複数指定可)。" + "value": "Підключити Cloud VPN" } } } }, - "cli.session.error.expectedRestore": { + "cloud.vpn.setup.connected": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "session: expected 'restore' (see cmux help session)" + "value": "Connected" } }, "de": { "stringUnit": { "state": "translated", - "value": "session: 'restore' erwartet (siehe cmux help session)" + "value": "Verbunden" } }, "fr": { "stringUnit": { "state": "translated", - "value": "session : « restore » attendu (voir cmux help session)" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "session: كان المتوقع 'restore' (راجع cmux help session)" + "value": "Connecté" } }, "es": { "stringUnit": { "state": "translated", - "value": "session: se esperaba 'restore' (consulta cmux help session)" + "value": "Conectada" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "session:應為 'restore'(請參閱 cmux help session)" + "value": "接続済み" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "session:应为 'restore'(请参阅 cmux help session)" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "session: 'restore'가 필요합니다(cmux help session 참조)" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "session: 'restore' が必要です(cmux help session を参照)" - } - } - } - }, - "cli.session.error.sessionRequiresId": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "session restore: --session requires an id" + "value": "已连接" } }, - "de": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "session restore: --session erfordert eine ID" + "value": "已連線" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "session restore : --session nécessite un identifiant" + "value": "연결됨" } }, "ar": { "stringUnit": { "state": "translated", - "value": "session restore: يتطلب --session معرّفًا" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "session restore: --session requiere un id" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "session restore:--session 需要一個 ID" + "value": "متصل" } }, - "zh-Hans": { + "bs": { "stringUnit": { "state": "translated", - "value": "session restore:--session 需要一个 ID" + "value": "Povezano" } }, - "ko": { + "da": { "stringUnit": { "state": "translated", - "value": "session restore: --session에는 ID가 필요합니다" + "value": "Forbundet" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "session restore: --session には ID が必要です" - } - } - } - }, - "cli.session.error.unknownArgument": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "session restore: unknown argument '%@'" + "value": "Connessa" } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "session restore: unbekanntes Argument '%@'" + "value": "បានភ្ជាប់" } }, - "fr": { + "nb": { "stringUnit": { "state": "translated", - "value": "session restore : argument inconnu « %@ »" + "value": "Tilkoblet" } }, - "ar": { + "pl": { "stringUnit": { "state": "translated", - "value": "session restore: وسيط غير معروف '%@'" + "value": "Połączono" } }, - "es": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "session restore: argumento desconocido '%@'" + "value": "Conectada" } }, - "zh-Hant": { + "ru": { "stringUnit": { "state": "translated", - "value": "session restore:未知的參數 '%@'" + "value": "Подключено" } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "session restore:未知参数 '%@'" + "value": "เชื่อมต่อแล้ว" } }, - "ko": { + "tr": { "stringUnit": { "state": "translated", - "value": "session restore: 알 수 없는 인수 '%@'" + "value": "Bağlandı" } }, - "ja": { + "uk": { "stringUnit": { "state": "translated", - "value": "session restore: 不明な引数 '%@'" + "value": "Підключено" } } } }, - "cli.session.list.empty": { + "cloud.vpn.setup.disconnect": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "No agent sessions to restore." + "value": "Disconnect" } }, "de": { "stringUnit": { "state": "translated", - "value": "Keine Agent-Sitzungen zum Wiederherstellen." + "value": "Trennen" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Aucune session d’agent à restaurer." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "لا توجد جلسات وكيل لاستعادتها." + "value": "Déconnecter" } }, "es": { "stringUnit": { "state": "translated", - "value": "No hay sesiones de agente para restaurar." + "value": "Desconectar" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "沒有可還原的代理工作階段。" + "value": "切断" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "没有可恢复的代理会话。" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "복원할 에이전트 세션이 없습니다." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "復元するエージェントセッションはありません。" - } - } - } - }, - "cli.session.restore.cleanQuit": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No agent sessions restored: cmux last quit normally. To restore one anyway, pass --session from --list." + "value": "断开连接" } }, - "de": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Keine Agent-Sitzungen wiederhergestellt: cmux wurde zuletzt normal beendet. Um trotzdem eine wiederherzustellen, übergib --session aus --list." + "value": "中斷連線" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Aucune session d’agent restaurée : cmux s’est fermé normalement la dernière fois. Pour en restaurer une quand même, passez --session depuis --list." + "value": "연결 해제" } }, "ar": { "stringUnit": { "state": "translated", - "value": "لم تتم استعادة أي جلسات وكيل: أُغلق cmux بشكل طبيعي آخر مرة. لاستعادة جلسة على أي حال، مرّر --session من --list." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se restauró ninguna sesión de agente: cmux se cerró normalmente la última vez. Para restaurar una de todos modos, pasa --session de --list." - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "未還原任何代理工作階段:cmux 上次是正常結束。若仍要還原,請傳入 --list 中的 --session 。" + "value": "قطع الاتصال" } }, - "zh-Hans": { + "bs": { "stringUnit": { "state": "translated", - "value": "未恢复任何代理会话:cmux 上次是正常退出。若仍要恢复,请传入 --list 中的 --session 。" + "value": "Prekini vezu" } }, - "ko": { + "da": { "stringUnit": { "state": "translated", - "value": "복원된 에이전트 세션이 없습니다. cmux가 마지막에 정상적으로 종료되었습니다. 그래도 복원하려면 --list에서 확인한 --session 를 전달하세요." + "value": "Afbryd" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "エージェントセッションは復元されませんでした。cmux は前回正常に終了しています。それでも復元する場合は、--list の --session を指定してください。" - } - } - } - }, - "cli.session.restore.empty": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "No agent sessions restored." + "value": "Disconnetti" } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "Keine Agent-Sitzungen wiederhergestellt." + "value": "ផ្តាច់" } }, - "fr": { + "nb": { "stringUnit": { "state": "translated", - "value": "Aucune session d’agent restaurée." + "value": "Koble fra" } }, - "ar": { + "pl": { "stringUnit": { "state": "translated", - "value": "لم تتم استعادة أي جلسات وكيل." + "value": "Rozłącz" } }, - "es": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "No se restauró ninguna sesión de agente." + "value": "Desconectar" } }, - "zh-Hant": { + "ru": { "stringUnit": { "state": "translated", - "value": "未還原任何代理工作階段。" + "value": "Отключить" } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "未恢复任何代理会话。" + "value": "ตัดการเชื่อมต่อ" } }, - "ko": { + "tr": { "stringUnit": { "state": "translated", - "value": "복원된 에이전트 세션이 없습니다." + "value": "Bağlantıyı kes" } }, - "ja": { + "uk": { "stringUnit": { "state": "translated", - "value": "エージェントセッションは復元されませんでした。" + "value": "Від’єднати" } } } }, - "cli.session.restore.done": { + "cloud.vpn.setup.entry.subtitle": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Agent sessions restored: %lld" + "value": "Optional private IP access for other apps" } }, "de": { "stringUnit": { "state": "translated", - "value": "Wiederhergestellte Agent-Sitzungen: %lld" + "value": "Optionaler Zugriff auf private IPs für andere Apps" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Sessions d’agent restaurées : %lld" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "جلسات الوكيل المستعادة: %lld" + "value": "Accès facultatif aux IP privées pour les autres apps" } }, "es": { "stringUnit": { "state": "translated", - "value": "Sesiones de agente restauradas: %lld" + "value": "Acceso opcional a IP privadas para otras apps" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "已還原的代理工作階段:%lld" + "value": "ほかのアプリからプライベートIPへアクセスする任意の設定" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "已恢复的代理会话:%lld" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "복원된 에이전트 세션: %lld" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "復元したエージェントセッション: %lld" - } - } - } - }, - "agentRecovery.alert.title": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Restore agent sessions?" + "value": "为其他应用提供可选的私有 IP 访问" } }, - "de": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Agent-Sitzungen wiederherstellen?" + "value": "為其他 App 提供選用的私有 IP 存取" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Restaurer les sessions d’agent ?" + "value": "다른 앱의 비공개 IP 접근을 위한 선택 설정" } }, "ar": { "stringUnit": { "state": "translated", - "value": "هل تريد استعادة جلسات الوكيل؟" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "¿Restaurar las sesiones de agente?" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "要還原代理工作階段嗎?" + "value": "وصول اختياري إلى عناوين IP الخاصة للتطبيقات الأخرى" } }, - "zh-Hans": { + "bs": { "stringUnit": { "state": "translated", - "value": "要恢复代理会话吗?" + "value": "Opcionalni pristup privatnim IP adresama za druge aplikacije" } }, - "ko": { + "da": { "stringUnit": { "state": "translated", - "value": "에이전트 세션을 복원할까요?" + "value": "Valgfri privat IP-adgang for andre apps" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "エージェントセッションを復元しますか?" - } - } - } - }, - "agentRecovery.alert.message": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "cmux quit unexpectedly while agent sessions were running. Sessions to restore: %lld. Each one reopens in its own workspace and resumes where it left off." + "value": "Accesso facoltativo agli IP privati per altre app" } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "cmux wurde unerwartet beendet, während Agent-Sitzungen liefen. Wiederherzustellende Sitzungen: %lld. Jede wird in einem eigenen Workspace geöffnet und dort fortgesetzt, wo sie aufgehört hat." + "value": "ចូលប្រើ IP ឯកជនសម្រាប់កម្មវិធីផ្សេងៗជាជម្រើស" } }, - "fr": { + "nb": { "stringUnit": { "state": "translated", - "value": "cmux s’est fermé de façon inattendue pendant que des sessions d’agent étaient en cours. Sessions à restaurer : %lld. Chacune rouvre dans son propre espace de travail et reprend là où elle s’était arrêtée." + "value": "Valgfri privat IP-tilgang for andre apper" } }, - "ar": { + "pl": { "stringUnit": { "state": "translated", - "value": "أُغلق cmux بشكل غير متوقع أثناء تشغيل جلسات الوكيل. الجلسات المطلوب استعادتها: %lld. تُفتح كل جلسة في مساحة عمل خاصة بها وتُستأنف من حيث توقفت." + "value": "Opcjonalny dostęp innych aplikacji do prywatnych adresów IP" } }, - "es": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "cmux se cerró inesperadamente mientras había sesiones de agente en ejecución. Sesiones por restaurar: %lld. Cada una se abre en su propio espacio de trabajo y continúa donde se quedó." + "value": "Acesso opcional a IPs privados para outros apps" } }, - "zh-Hant": { + "ru": { "stringUnit": { "state": "translated", - "value": "cmux 在代理工作階段執行時意外結束。要還原的工作階段:%lld。每個工作階段都會在各自的工作區重新開啟,並從中斷處繼續。" + "value": "Необязательный доступ других приложений к частным IP" } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "cmux 在代理会话运行时意外退出。要恢复的会话:%lld。每个会话都会在各自的工作区重新打开,并从中断处继续。" + "value": "การเข้าถึง IP ส่วนตัวสำหรับแอปอื่นแบบไม่บังคับ" } }, - "ko": { + "tr": { "stringUnit": { "state": "translated", - "value": "에이전트 세션이 실행 중일 때 cmux가 예기치 않게 종료되었습니다. 복원할 세션: %lld. 각 세션은 자체 워크스페이스에서 다시 열리고 중단된 곳에서 이어집니다." + "value": "Diğer uygulamalar için isteğe bağlı özel IP erişimi" } }, - "ja": { + "uk": { "stringUnit": { "state": "translated", - "value": "エージェントセッションの実行中に cmux が予期せず終了しました。復元するセッション: %lld。各セッションは専用のワークスペースで再び開き、中断したところから再開します。" + "value": "Необов’язковий доступ інших програм до приватних IP" } } } }, - "agentRecovery.alert.restore": { + "cloud.vpn.setup.failed": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Restore Agent Sessions" + "value": "Needs attention" } }, "de": { "stringUnit": { "state": "translated", - "value": "Agent-Sitzungen wiederherstellen" + "value": "Aktion erforderlich" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Restaurer les sessions d’agent" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "استعادة جلسات الوكيل" + "value": "Action requise" } }, "es": { "stringUnit": { "state": "translated", - "value": "Restaurar sesiones de agente" + "value": "Requiere atención" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "還原代理工作階段" + "value": "対応が必要" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "恢复代理会话" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "에이전트 세션 복원" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "エージェントセッションを復元" - } - } - } - }, - "agentRecovery.alert.notNow": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Not Now" + "value": "需要处理" } }, - "de": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Nicht jetzt" + "value": "需要處理" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Pas maintenant" + "value": "조치 필요" } }, "ar": { "stringUnit": { "state": "translated", - "value": "ليس الآن" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Ahora no" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "稍後" + "value": "يتطلب إجراءً" } }, - "zh-Hans": { + "bs": { "stringUnit": { "state": "translated", - "value": "以后再说" + "value": "Potrebna pažnja" } }, - "ko": { + "da": { "stringUnit": { "state": "translated", - "value": "나중에" + "value": "Kræver opmærksomhed" } }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "後で" - } - } - } - }, - "settings.notifications.soundWhenFocused.subtitle": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "Play the notification sound even when the pane that notified is already focused. When off, a focused pane shows its ring without a sound." + "value": "Richiede attenzione" } }, - "ar": { + "km": { "stringUnit": { "state": "translated", - "value": "شغّل صوت الإشعار حتى عندما تكون اللوحة التي أرسلت الإشعار في موضع التركيز بالفعل. عند إيقافه، تعرض اللوحة المُركَّز عليها حلقتها دون صوت." + "value": "ត្រូវការការយកចិត្តទុកដាក់" } }, - "de": { + "nb": { "stringUnit": { "state": "translated", - "value": "Den Benachrichtigungston auch abspielen, wenn der benachrichtigende Bereich bereits fokussiert ist. Wenn aus, zeigt ein fokussierter Bereich seinen Ring ohne Ton." + "value": "Krever handling" } }, - "es": { + "pl": { "stringUnit": { "state": "translated", - "value": "Reproduce el sonido de notificación incluso cuando el panel que notificó ya tiene el foco. Si está desactivado, un panel con foco muestra su anillo sin sonido." + "value": "Wymaga uwagi" } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Jouer le son de notification même lorsque le panneau à l’origine de la notification a déjà le focus. Désactivé, un panneau actif affiche son anneau sans son." + "value": "Requer atenção" } }, - "ja": { + "ru": { "stringUnit": { "state": "translated", - "value": "通知を送ったペインがすでにフォーカスされている場合でも通知音を鳴らします。オフの場合、フォーカス中のペインは音を鳴らさずにリングを表示します。" + "value": "Требуется действие" } }, - "ko": { + "th": { "stringUnit": { "state": "translated", - "value": "알림을 보낸 패널이 이미 포커스된 상태여도 알림음을 재생합니다. 끄면 포커스된 패널은 소리 없이 링만 표시합니다." + "value": "ต้องดำเนินการ" } }, - "zh-Hans": { + "tr": { "stringUnit": { "state": "translated", - "value": "即使发出通知的窗格已处于焦点状态,也播放通知声音。关闭时,处于焦点的窗格会显示光环但不发出声音。" + "value": "İlgilenilmeli" } }, - "zh-Hant": { + "uk": { "stringUnit": { "state": "translated", - "value": "即使發出通知的窗格已在焦點中,也播放通知聲音。關閉時,焦點中的窗格會顯示光環但不發出聲音。" + "value": "Потрібна увага" } } } }, - "settings.notifications.soundWhenFocused.title": { + "cloud.vpn.setup.off": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Sound for Focused Pane" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "صوت للوحة المُركَّز عليها" + "value": "Off" } }, "de": { "stringUnit": { "state": "translated", - "value": "Ton für fokussierten Bereich" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Sonido para el panel con foco" + "value": "Aus" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Son pour le panneau actif" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フォーカス中のペインの通知音" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "포커스된 패널 소리" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "焦点窗格的声音" + "value": "Désactivé" } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "焦點窗格的聲音" - } - } - } - }, - "agent.claude.stopFailure.body.generic": { - "extractionState": "manual", - "localizations": { - "en": { + "es": { "stringUnit": { "state": "translated", - "value": "Claude Code stopped on an API error" + "value": "Desactivada" } }, "ja": { "stringUnit": { "state": "translated", - "value": "Claude Code は API エラーで停止しました" + "value": "オフ" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Claude Code 因 API 错误而停止" + "value": "已关闭" } }, - "de": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Claude Code wurde wegen eines API-Fehlers gestoppt" + "value": "已關閉" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Claude Code s'est arrêté sur une erreur d'API" + "value": "꺼짐" } }, "ar": { "stringUnit": { "state": "translated", - "value": "توقف Claude Code بسبب خطأ في واجهة API" + "value": "متوقف" } }, - "es": { + "bs": { "stringUnit": { "state": "translated", - "value": "Claude Code se detuvo por un error de la API" + "value": "Isključeno" } }, - "zh-Hant": { + "da": { "stringUnit": { "state": "translated", - "value": "Claude Code 因 API 錯誤而停止" + "value": "Fra" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "Claude Code가 API 오류로 중지되었습니다" - } - } - } - }, - "agent.claude.stopFailure.status.apiError": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "API error" + "value": "Disattivata" } }, - "ja": { + "km": { "stringUnit": { "state": "translated", - "value": "API エラー" + "value": "បិទ" } }, - "zh-Hans": { + "nb": { "stringUnit": { "state": "translated", - "value": "API 错误" + "value": "Av" } }, - "de": { + "pl": { "stringUnit": { "state": "translated", - "value": "API-Fehler" + "value": "Wyłączona" } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Erreur d'API" + "value": "Desativada" } }, - "ar": { + "ru": { "stringUnit": { "state": "translated", - "value": "خطأ في واجهة API" + "value": "Выключено" } }, - "es": { + "th": { "stringUnit": { "state": "translated", - "value": "Error de la API" + "value": "ปิด" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "API 錯誤" + "value": "Kapalı" } }, - "ko": { + "uk": { "stringUnit": { "state": "translated", - "value": "API 오류" + "value": "Вимкнено" } } } }, - "agent.claude.stopFailure.status.authentication": { + "cloud.vpn.setup.openUnavailable": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Auth error" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "認証エラー" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "认证错误" + "value": "Cloud VPN setup is unavailable" } }, "de": { "stringUnit": { "state": "translated", - "value": "Authentifizierungsfehler" + "value": "Cloud-VPN-Einrichtung ist nicht verfügbar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Erreur d'authentification" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "خطأ في المصادقة" + "value": "La configuration du VPN Cloud est indisponible" } }, "es": { "stringUnit": { "state": "translated", - "value": "Error de autenticación" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "驗證錯誤" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "인증 오류" - } - } - } - }, - "agent.claude.stopFailure.status.billing": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Billing error" + "value": "La configuración de VPN de Cloud no está disponible" } }, "ja": { "stringUnit": { "state": "translated", - "value": "請求エラー" + "value": "Cloud VPN設定は利用できません" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "账单错误" + "value": "Cloud VPN 设置不可用" } }, - "de": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Abrechnungsfehler" + "value": "無法使用 Cloud VPN 設定" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Erreur de facturation" + "value": "Cloud VPN 설정을 사용할 수 없습니다" } }, "ar": { "stringUnit": { "state": "translated", - "value": "خطأ في الفوترة" + "value": "إعداد VPN الخاص بـ Cloud غير متاح" } }, - "es": { + "bs": { "stringUnit": { "state": "translated", - "value": "Error de facturación" + "value": "Podešavanje Cloud VPN-a nije dostupno" } }, - "zh-Hant": { + "da": { "stringUnit": { "state": "translated", - "value": "帳單錯誤" + "value": "Cloud VPN-opsætning er ikke tilgængelig" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "결제 오류" - } - } - } - }, - "agent.claude.stopFailure.status.connectionDropped": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "Connection dropped" + "value": "La configurazione VPN Cloud non è disponibile" } }, - "ja": { + "km": { "stringUnit": { "state": "translated", - "value": "接続が切断されました" + "value": "ការរៀបចំ Cloud VPN មិនអាចប្រើបាន" } }, - "zh-Hans": { + "nb": { "stringUnit": { "state": "translated", - "value": "连接已断开" + "value": "Cloud VPN-oppsett er ikke tilgjengelig" } }, - "de": { + "pl": { "stringUnit": { "state": "translated", - "value": "Verbindung abgebrochen" + "value": "Konfiguracja Cloud VPN jest niedostępna" } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Connexion interrompue" + "value": "A configuração do Cloud VPN não está disponível" } }, - "ar": { + "ru": { "stringUnit": { "state": "translated", - "value": "انقطع الاتصال" + "value": "Настройка Cloud VPN недоступна" } }, - "es": { + "th": { "stringUnit": { "state": "translated", - "value": "Conexión perdida" + "value": "การตั้งค่า Cloud VPN ไม่พร้อมใช้งาน" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "連線已中斷" + "value": "Cloud VPN kurulumu kullanılamıyor" } }, - "ko": { + "uk": { "stringUnit": { "state": "translated", - "value": "연결 끊김" + "value": "Налаштування Cloud VPN недоступне" } } } }, - "agent.claude.stopFailure.status.outputLimit": { + "cloud.vpn.setup.permission.body": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Output limit" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "出力上限" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "输出上限" + "value": "The VPN software is included in cmux. You do not need another app. macOS may require your password or Touch ID during approval." } }, "de": { "stringUnit": { "state": "translated", - "value": "Ausgabelimit" + "value": "Die VPN-Software ist in cmux enthalten. Sie brauchen keine weitere App. macOS kann bei der Genehmigung Ihr Passwort oder Touch ID verlangen." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Limite de sortie" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "حد المخرجات" + "value": "Le logiciel VPN est inclus dans cmux. Aucune autre app n’est nécessaire. macOS peut demander votre mot de passe ou Touch ID lors de l’autorisation." } }, "es": { "stringUnit": { "state": "translated", - "value": "Límite de salida" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "輸出上限" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "출력 한도" - } - } - } - }, - "agent.claude.stopFailure.status.overloaded": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "API overloaded" + "value": "El software VPN está incluido en cmux. No necesitas otra app. macOS puede solicitar tu contraseña o Touch ID durante la autorización." } }, "ja": { "stringUnit": { "state": "translated", - "value": "API 過負荷" + "value": "VPNソフトウェアはcmuxに含まれています。別のアプリは不要です。承認時にmacOSがパスワードまたはTouch IDを求めることがあります。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "API 过载" + "value": "cmux 已包含 VPN 软件,无需其他应用。批准时,macOS 可能要求您输入密码或使用触控 ID。" } }, - "de": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "API überlastet" + "value": "cmux 已包含 VPN 軟體,不需要其他 App。核准時,macOS 可能要求您輸入密碼或使用 Touch ID。" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "API surchargée" + "value": "VPN 소프트웨어는 cmux에 포함되어 있습니다. 다른 앱은 필요하지 않습니다. 승인 시 macOS에서 암호 또는 Touch ID를 요청할 수 있습니다." } }, "ar": { "stringUnit": { "state": "translated", - "value": "واجهة API محمّلة فوق طاقتها" + "value": "برنامج VPN مضمن في cmux. لا تحتاج إلى تطبيق آخر. قد يطلب macOS كلمة المرور أو Touch ID أثناء الموافقة." } }, - "es": { + "bs": { "stringUnit": { "state": "translated", - "value": "API sobrecargada" + "value": "VPN softver je uključen u cmux. Nije potrebna druga aplikacija. macOS može zatražiti lozinku ili Touch ID tokom odobravanja." } }, - "zh-Hant": { + "da": { "stringUnit": { "state": "translated", - "value": "API 過載" + "value": "VPN-softwaren er inkluderet i cmux. Du behøver ingen anden app. macOS kan bede om din adgangskode eller Touch ID under godkendelsen." } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "API 과부하" - } - } - } - }, - "agent.claude.stopFailure.status.rateLimited": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "Rate limited" + "value": "Il software VPN è incluso in cmux. Non serve un’altra app. macOS potrebbe chiedere la password o Touch ID durante l’autorizzazione." } }, - "ja": { + "km": { "stringUnit": { "state": "translated", - "value": "レート制限中" + "value": "កម្មវិធី VPN មាននៅក្នុង cmux។ អ្នកមិនត្រូវការកម្មវិធីផ្សេងទៀតទេ។ macOS អាចស្នើពាក្យសម្ងាត់ ឬ Touch ID ក្នុងពេលអនុម័ត។" } }, - "zh-Hans": { + "nb": { "stringUnit": { "state": "translated", - "value": "已限速" + "value": "VPN-programvaren er inkludert i cmux. Du trenger ingen annen app. macOS kan be om passord eller Touch ID under godkjenningen." } }, - "de": { + "pl": { "stringUnit": { "state": "translated", - "value": "Ratenbegrenzt" + "value": "Oprogramowanie VPN jest zawarte w cmux. Nie potrzebujesz innej aplikacji. macOS może poprosić o hasło lub Touch ID podczas zatwierdzania." } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Limite de requêtes atteinte" + "value": "O software VPN vem incluído no cmux. Você não precisa de outro app. O macOS pode pedir sua senha ou Touch ID durante a aprovação." } }, - "ar": { + "ru": { "stringUnit": { "state": "translated", - "value": "تم تقييد المعدل" + "value": "VPN-программа уже входит в cmux. Другие приложения не нужны. Во время подтверждения macOS может запросить пароль или Touch ID." } }, - "es": { + "th": { "stringUnit": { "state": "translated", - "value": "Límite de frecuencia alcanzado" + "value": "ซอฟต์แวร์ VPN รวมอยู่ใน cmux แล้ว ไม่ต้องใช้แอปอื่น macOS อาจขอรหัสผ่านหรือ Touch ID ระหว่างการอนุมัติ" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "已限速" + "value": "VPN yazılımı cmux içinde bulunur. Başka bir uygulama gerekmez. macOS onay sırasında parolanızı veya Touch ID’yi isteyebilir." } }, - "ko": { + "uk": { "stringUnit": { "state": "translated", - "value": "속도 제한됨" + "value": "Програмне забезпечення VPN входить до cmux. Інша програма не потрібна. Під час схвалення macOS може попросити пароль або Touch ID." } } } }, - "agent.claude.stopFailure.status.usageLimit": { + "cloud.vpn.setup.status.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Usage limit" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "使用量の上限" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "用量上限" + "value": "Private network status" } }, "de": { "stringUnit": { "state": "translated", - "value": "Nutzungslimit" + "value": "Status des privaten Netzwerks" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Limite d'utilisation" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "حد الاستخدام" + "value": "État du réseau privé" } }, "es": { "stringUnit": { "state": "translated", - "value": "Límite de uso" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "用量上限" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "사용량 한도" - } - } - } - }, - "agent.claude.stopFailure.status.usageLimitResets": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Usage limit, resets %@" + "value": "Estado de la red privada" } }, "ja": { "stringUnit": { "state": "translated", - "value": "使用量の上限、%@ にリセット" + "value": "プライベートネットワークの状態" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "用量上限,%@ 重置" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Nutzungslimit, Reset %@" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Limite d'utilisation, réinitialisation %@" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "حد الاستخدام، يُعاد التعيين %@" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Límite de uso, se restablece %@" + "value": "私有网络状态" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "用量上限,%@ 重設" + "value": "私有網路狀態" } }, "ko": { "stringUnit": { "state": "translated", - "value": "사용량 한도, %@에 초기화" + "value": "비공개 네트워크 상태" } - } - } - }, - "settings.app.reorderOnNotification.mode.agentActivity": { - "extractionState": "manual", - "localizations": { + }, "ar": { "stringUnit": { "state": "translated", - "value": "نشاط الوكيل" + "value": "حالة الشبكة الخاصة" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Aktivnost agenata" + "value": "Status privatne mreže" } }, "da": { "stringUnit": { "state": "translated", - "value": "Agentaktivitet" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Agentenaktivität" - } - }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Agent Activity" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Actividad de agentes" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Activité des agents" + "value": "Status for privat netværk" } }, "it": { "stringUnit": { "state": "translated", - "value": "Attività degli agenti" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "エージェントのアクティビティ" + "value": "Stato della rete privata" } }, - "ko": { + "km": { "stringUnit": { "state": "translated", - "value": "에이전트 활동" + "value": "ស្ថានភាពបណ្តាញឯកជន" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Agentaktivitet" + "value": "Status for privat nettverk" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Aktywność agentów" + "value": "Stan sieci prywatnej" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Atividade dos agentes" + "value": "Status da rede privada" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Активность агентов" + "value": "Состояние частной сети" } }, "th": { "stringUnit": { "state": "translated", - "value": "กิจกรรมของเอเจนต์" + "value": "สถานะเครือข่ายส่วนตัว" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Ajan etkinliği" + "value": "Özel ağ durumu" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Активність агентів" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "代理活动" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "代理活動" + "value": "Стан приватної мережі" } } } }, - "settings.app.reorderOnNotification.mode.notifications": { + "cloud.vpn.setup.title": { "extractionState": "manual", "localizations": { - "ar": { - "stringUnit": { - "state": "translated", - "value": "الإشعارات" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Obavještenja" - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "Notifikationer" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Benachrichtigungen" - } - }, "en": { "stringUnit": { "state": "translated", - "value": "Notifications" + "value": "Cloud VPN" } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "Notificaciones" + "value": "Cloud-VPN" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Sur notification" + "value": "VPN Cloud" } }, - "it": { + "es": { "stringUnit": { "state": "translated", - "value": "Notifiche" + "value": "VPN de Cloud" } }, "ja": { "stringUnit": { "state": "translated", - "value": "通知" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "알림" - } - }, - "nb": { - "stringUnit": { - "state": "translated", - "value": "Varsler" - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "value": "Powiadomienia" - } - }, - "pt-BR": { - "stringUnit": { - "state": "translated", - "value": "Notificações" - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Уведомления" - } - }, - "th": { - "stringUnit": { - "state": "translated", - "value": "การแจ้งเตือน" + "value": "クラウドVPN" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Bildirimler" + "value": "云端 VPN" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Сповіщення" + "value": "雲端 VPN" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "通知" + "value": "클라우드 VPN" } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "通知" - } - } - } - }, - "settings.app.reorderOnNotification.mode.off": { - "extractionState": "manual", - "localizations": { "ar": { "stringUnit": { "state": "translated", - "value": "إيقاف" + "value": "شبكة Cloud الخاصة" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Isključeno" + "value": "Cloud VPN" } }, "da": { "stringUnit": { "state": "translated", - "value": "Fra" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Aus" - } - }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Off" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Desactivado" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Désactivé" + "value": "Cloud VPN" } }, "it": { "stringUnit": { "state": "translated", - "value": "Disattivato" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "オフ" + "value": "VPN Cloud" } }, - "ko": { + "km": { "stringUnit": { "state": "translated", - "value": "끔" + "value": "Cloud VPN" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Av" + "value": "Cloud VPN" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Wyłączone" + "value": "Cloud VPN" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Desativado" + "value": "Cloud VPN" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Выкл." + "value": "Cloud VPN" } }, "th": { "stringUnit": { "state": "translated", - "value": "ปิด" + "value": "Cloud VPN" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Kapalı" + "value": "Cloud VPN" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Вимкнено" + "value": "Cloud VPN" + } + } + } + }, + "cloud.vpn.setup.unavailable": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "This copy of cmux does not include a signed VPN extension. Use a cmux release with Cloud VPN support. Cloud terminals, Ports, and Desktop remain available without the VPN." } }, - "zh-Hans": { + "de": { "stringUnit": { "state": "translated", - "value": "关闭" + "value": "Diese cmux-Version enthält keine signierte VPN-Erweiterung. Verwenden Sie eine cmux-Version mit Cloud-VPN-Unterstützung. Cloud-Terminals, Ports und Desktop bleiben ohne VPN verfügbar." } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "關閉" + "value": "Cette copie de cmux ne contient pas d’extension VPN signée. Utilisez une version de cmux qui prend en charge le VPN Cloud. Les terminaux Cloud, Ports et Bureau restent disponibles sans VPN." } - } - } - }, - "settings.app.reorderOnNotification.modeSubtitle": { - "extractionState": "manual", - "localizations": { - "ar": { + }, + "es": { "stringUnit": { "state": "translated", - "value": "ينقل مساحات العمل إلى الأعلى عندما تتلقى إشعارًا. مع نشاط الوكيل، ينقلها أيضًا عندما ترسل مطالبة أو ينهي وكيل دورة أو يحتاج إلى إدخال أو يفشل، لكن ليس أبدًا أثناء وجود المؤشر فوق الشريط الجانبي. الإيقاف يحافظ على ثبات مواضع الاختصارات." + "value": "Esta copia de cmux no incluye una extensión VPN firmada. Usa una versión de cmux compatible con VPN de Cloud. Los terminales Cloud, Puertos y Escritorio siguen disponibles sin VPN." } }, - "bs": { + "ja": { "stringUnit": { "state": "translated", - "value": "Pomjera radne prostore na vrh kada prime obavještenje. Aktivnost agenata ih pomjera i kada pošaljete upit ili agent završi potez, treba unos ili ne uspije, ali nikad dok je pokazivač iznad bočne trake. Isključeno čuva stabilne pozicije prečica." + "value": "このcmuxには署名済みのVPN機能拡張が含まれていません。Cloud VPN対応のcmuxリリースを使用してください。Cloudのターミナル、ポート、デスクトップはVPNなしでも使えます。" } }, - "da": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Flytter arbejdsområder til toppen, når de modtager en notifikation. Agentaktivitet flytter dem også, når du sender en prompt eller en agent afslutter en tur, har brug for input eller fejler, men aldrig mens markøren er over sidepanelet. Fra holder genvejspositionerne stabile." + "value": "此 cmux 副本未包含已签名的 VPN 扩展。请使用支持 Cloud VPN 的 cmux 版本。Cloud 终端、端口和桌面无需 VPN 仍可使用。" } }, - "de": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Verschiebt Workspaces nach oben, wenn sie eine Benachrichtigung erhalten. Mit Agentenaktivität auch dann, wenn Sie einen Prompt senden oder ein Agent einen Durchlauf beendet, eine Eingabe braucht oder fehlschlägt, aber nie, während der Zeiger über der Seitenleiste ist. Aus hält die Positionen der Tastenkürzel stabil." + "value": "此 cmux 副本未包含已簽署的 VPN 延伸功能。請使用支援 Cloud VPN 的 cmux 版本。Cloud 終端機、連接埠和桌面不需要 VPN 仍可使用。" } }, - "en": { + "ko": { "stringUnit": { "state": "translated", - "value": "Move workspaces to the top when they receive a notification. Agent Activity also moves them when you send a prompt or an agent finishes a turn, needs input, or fails, but never while you point at the sidebar. Off keeps shortcut positions stable." + "value": "이 cmux에는 서명된 VPN 확장이 포함되어 있지 않습니다. Cloud VPN을 지원하는 cmux 릴리스를 사용하세요. Cloud 터미널, 포트 및 데스크탑은 VPN 없이도 사용할 수 있습니다." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Mueve los espacios de trabajo arriba cuando reciben una notificación. Con Actividad de agentes, también cuando envías un prompt o un agente termina un turno, necesita una respuesta o falla, pero nunca mientras el puntero está sobre la barra lateral. Desactivado mantiene estables las posiciones de los atajos." + "value": "لا تتضمن هذه النسخة من cmux امتداد VPN موقعًا. استخدم إصدار cmux يدعم VPN الخاص بـ Cloud. تظل طرفيات Cloud والمنافذ وسطح المكتب متاحة بدون VPN." } }, - "fr": { + "bs": { "stringUnit": { "state": "translated", - "value": "Place les espaces de travail en haut lorsqu’ils reçoivent une notification. Avec Activité des agents, aussi lorsque vous envoyez un prompt ou qu’un agent termine un tour, attend une saisie ou échoue, mais jamais pendant que le pointeur survole la barre latérale. Désactivé garde les positions des raccourcis stables." + "value": "Ova kopija cmux-a nema potpisani VPN dodatak. Koristite cmux izdanje sa Cloud VPN podrškom. Cloud terminali, portovi i radna površina ostaju dostupni bez VPN-a." } }, - "it": { + "da": { "stringUnit": { "state": "translated", - "value": "Sposta gli spazi di lavoro in cima quando ricevono una notifica. Attività degli agenti li sposta anche quando invii un prompt o un agente termina un turno, attende un input o fallisce, ma mai mentre il puntatore è sulla barra laterale. Disattivato mantiene stabili le posizioni delle scorciatoie." + "value": "Denne cmux-kopi indeholder ikke en signeret VPN-udvidelse. Brug en cmux-udgave med Cloud VPN-understøttelse. Cloud-terminaler, porte og skrivebord er stadig tilgængelige uden VPN." } }, - "ja": { + "it": { "stringUnit": { "state": "translated", - "value": "通知を受け取ったワークスペースを先頭に移動します。「エージェントのアクティビティ」では、プロンプトを送信したときや、エージェントがターンを終えたとき、入力を待っているとき、失敗したときにも移動しますが、ポインタがサイドバー上にある間は移動しません。「オフ」ではショートカットの位置が変わりません。" + "value": "Questa copia di cmux non include un’estensione VPN firmata. Usa una versione di cmux con supporto Cloud VPN. Terminali Cloud, porte e desktop restano disponibili senza VPN." } }, - "ko": { + "km": { "stringUnit": { "state": "translated", - "value": "알림을 받으면 워크스페이스를 맨 위로 옮깁니다. 에이전트 활동을 선택하면 프롬프트를 보내거나 에이전트가 턴을 마치거나 입력이 필요하거나 실패할 때도 옮기지만, 포인터가 사이드바 위에 있을 때는 옮기지 않습니다. 끔은 단축키 위치를 고정합니다." + "value": "cmux ច្បាប់នេះមិនមានផ្នែកបន្ថែម VPN ដែលបានចុះហត្ថលេខាទេ។ ប្រើកំណែ cmux ដែលគាំទ្រ Cloud VPN។ Terminal, Ports និង Desktop របស់ Cloud នៅតែប្រើបានដោយគ្មាន VPN។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Flytter arbeidsområder til toppen når de mottar et varsel. Agentaktivitet flytter dem også når du sender en ledetekst eller en agent fullfører en runde, trenger input eller feiler, men aldri mens pekeren er over sidefeltet. Av holder snarveisposisjonene stabile." + "value": "Denne cmux-kopien har ingen signert VPN-utvidelse. Bruk en cmux-versjon med Cloud VPN-støtte. Cloud-terminaler, porter og skrivebord er tilgjengelige uten VPN." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Przenosi obszary robocze na górę, gdy otrzymają powiadomienie. Aktywność agentów przenosi je także, gdy wyślesz prompt lub agent zakończy turę, potrzebuje danych lub zakończy się błędem, ale nigdy, gdy wskaźnik jest nad paskiem bocznym. Wyłączone zachowuje stałe pozycje skrótów." + "value": "Ta kopia cmux nie zawiera podpisanego rozszerzenia VPN. Użyj wydania cmux z obsługą Cloud VPN. Terminale Cloud, porty i pulpit pozostają dostępne bez VPN." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Move os espaços de trabalho para o topo quando recebem uma notificação. Atividade dos agentes também os move quando você envia um prompt ou um agente termina um turno, precisa de uma resposta ou falha, mas nunca enquanto o ponteiro está sobre a barra lateral. Desativado mantém as posições dos atalhos estáveis." + "value": "Esta cópia do cmux não inclui uma extensão VPN assinada. Use uma versão do cmux com suporte a Cloud VPN. Terminais Cloud, portas e área de trabalho continuam disponíveis sem VPN." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Перемещает рабочие области наверх, когда они получают уведомление. «Активность агентов» также перемещает их, когда вы отправляете запрос или агент завершает ход, ждёт ввода или завершается с ошибкой, но никогда, пока указатель находится над боковой панелью. «Выкл.» сохраняет позиции сочетаний клавиш." + "value": "В этой копии cmux нет подписанного VPN-расширения. Используйте выпуск cmux с поддержкой Cloud VPN. Cloud-терминалы, порты и рабочий стол доступны без VPN." } }, "th": { "stringUnit": { "state": "translated", - "value": "ย้ายเวิร์กสเปซขึ้นด้านบนเมื่อได้รับการแจ้งเตือน กิจกรรมของเอเจนต์จะย้ายเมื่อคุณส่งพรอมต์หรือเอเจนต์จบรอบ ต้องการข้อมูล หรือล้มเหลวด้วย แต่จะไม่ย้ายขณะที่ตัวชี้อยู่เหนือแถบด้านข้าง ปิดจะคงตำแหน่งของทางลัดไว้" + "value": "cmux รุ่นนี้ไม่มีส่วนขยาย VPN ที่ลงนามแล้ว ใช้รุ่น cmux ที่รองรับ Cloud VPN เทอร์มินัล Cloud พอร์ต และเดสก์ท็อปยังใช้ได้โดยไม่ต้องมี VPN" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Bildirim aldıklarında çalışma alanlarını en üste taşır. Ajan etkinliği, bir istem gönderdiğinizde, bir ajan turunu bitirdiğinde, girdi beklediğinde veya başarısız olduğunda da taşır, ancak işaretçi kenar çubuğunun üzerindeyken asla taşımaz. Kapalı, kısayol konumlarını sabit tutar." + "value": "Bu cmux kopyasında imzalı VPN uzantısı bulunmuyor. Cloud VPN destekli bir cmux sürümü kullanın. Cloud terminalleri, portlar ve masaüstü VPN olmadan da kullanılabilir." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Переміщує робочі області вгору, коли вони отримують сповіщення. «Активність агентів» також переміщує їх, коли ви надсилаєте запит або агент завершує хід, чекає на введення або завершується з помилкою, але ніколи, поки вказівник над бічною панеллю. «Вимкнено» зберігає позиції скорочень." - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "工作区收到通知时移到顶部。选择“代理活动”时,你发送提示词或代理完成一轮、需要输入或失败时也会移动,但指针停在侧边栏上时绝不移动。关闭可让快捷键位置保持不变。" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "工作區收到通知時移到頂部。選擇「代理活動」時,你送出提示詞或代理完成一輪、需要輸入或失敗時也會移動,但指標停在側邊欄上時絕不移動。關閉可讓快捷鍵位置保持不變。" + "value": "Ця копія cmux не містить підписаного VPN-розширення. Використовуйте випуск cmux із підтримкою Cloud VPN. Cloud-термінали, порти й робочий стіл доступні без VPN." } } } }, - "cli.restore.notice.routedLauncherUnavailable": { + "cloud.vpn.setup.waiting": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "restore: this session was started through the routed launcher '%@', which is not on PATH. Resuming the agent directly instead." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "restore: このセッションはルーティングされたランチャー「%@」経由で開始されましたが、PATH にありません。代わりにエージェントを直接再開します。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "restore:此会话是通过路由启动器“%@”启动的,但它不在 PATH 中。将改为直接恢复该代理。" + "value": "Waiting" } }, "de": { "stringUnit": { "state": "translated", - "value": "restore: Diese Sitzung wurde über den weitergeleiteten Launcher „%@“ gestartet, der nicht im PATH liegt. Der Agent wird stattdessen direkt fortgesetzt." + "value": "Warten" } }, "fr": { "stringUnit": { "state": "translated", - "value": "restore : cette session a été lancée via le lanceur routé « %@ », qui est introuvable dans le PATH. Reprise directe de l'agent à la place." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "restore: بدأت هذه الجلسة عبر المشغّل الموجَّه '%@'، وهو غير موجود في PATH. سيتم استئناف الوكيل مباشرةً بدلاً من ذلك." + "value": "En attente" } }, "es": { "stringUnit": { "state": "translated", - "value": "restore: esta sesión se inició mediante el lanzador enrutado '%@', que no está en el PATH. Se reanudará el agente directamente." - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "restore:此工作階段是透過路由啟動器「%@」啟動的,但它不在 PATH 中。將改為直接繼續該代理程式。" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "restore: 이 세션은 라우팅된 런처 '%@'를 통해 시작되었지만 PATH에 없습니다. 대신 에이전트를 직접 재개합니다." - } - } - } - }, - "sidebar.extensions.action.noSpaceForPane": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "No space for new pane" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "لا توجد مساحة للوحة جديدة" + "value": "En espera" } }, - "de": { + "ja": { "stringUnit": { "state": "translated", - "value": "Kein Platz für einen neuen Bereich" + "value": "待機中" } }, - "es": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "No hay espacio para un panel nuevo" + "value": "等待中" } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Pas de place pour un nouveau panneau" + "value": "等待中" } }, - "ja": { + "ko": { "stringUnit": { "state": "translated", - "value": "新しいペインを置く場所がありません" + "value": "대기 중" } }, - "ko": { + "ar": { "stringUnit": { "state": "translated", - "value": "새 창을 위한 공간이 없습니다" + "value": "قيد الانتظار" } }, - "zh-Hans": { + "bs": { "stringUnit": { "state": "translated", - "value": "没有空间容纳新窗格" + "value": "Čekanje" } }, - "zh-Hant": { + "da": { "stringUnit": { "state": "translated", - "value": "沒有空間容納新窗格" + "value": "Venter" } - } - } - }, - "cli.focus.defaultHelp": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "it": { "stringUnit": { "state": "translated", - "value": "Default: focus when run interactively, stay in the background when run by an agent or script." + "value": "In attesa" } }, - "ja": { + "km": { "stringUnit": { "state": "translated", - "value": "既定: 対話的に実行した場合はフォーカスし、エージェントやスクリプトから実行した場合はバックグラウンドのままにします。" + "value": "កំពុងរង់ចាំ" } }, - "de": { + "nb": { "stringUnit": { "state": "translated", - "value": "Standard: bei interaktiver Ausführung fokussieren, bei Ausführung durch einen Agenten oder ein Skript im Hintergrund bleiben." + "value": "Venter" } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Par défaut : prend le focus en exécution interactive, reste en arrière-plan quand un agent ou un script l’exécute." + "value": "Oczekiwanie" } }, - "ar": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "الافتراضي: التركيز عند التشغيل التفاعلي، والبقاء في الخلفية عند التشغيل بواسطة وكيل أو برنامج نصي." + "value": "Aguardando" } }, - "es": { + "ru": { "stringUnit": { "state": "translated", - "value": "Predeterminado: enfoca al ejecutarse de forma interactiva y se queda en segundo plano cuando lo ejecuta un agente o un script." + "value": "Ожидание" } }, - "zh-Hant": { + "th": { "stringUnit": { "state": "translated", - "value": "預設:互動執行時取得焦點;由代理程式或指令稿執行時保持在背景。" + "value": "กำลังรอ" } }, - "zh-Hans": { + "tr": { "stringUnit": { "state": "translated", - "value": "默认:交互式运行时获得焦点;由代理或脚本运行时保持在后台。" + "value": "Bekliyor" } }, - "ko": { + "uk": { "stringUnit": { "state": "translated", - "value": "기본값: 대화형으로 실행하면 포커스를 가져오고, 에이전트나 스크립트가 실행하면 백그라운드에 머뭅니다." + "value": "Очікування" } } } }, - "cli.help.openFocusFlags": { + "cloudTree.ports.action.wake": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Focus:\n --focus Switch to the new workspace\n --no-focus Open it in the background" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フォーカス:\n --focus 新しいワークスペースに切り替えます\n --no-focus バックグラウンドで開きます" + "value": "Wake Machine" } }, "de": { "stringUnit": { "state": "translated", - "value": "Fokus:\n --focus Zum neuen Workspace wechseln\n --no-focus Im Hintergrund öffnen" + "value": "Maschine aktivieren" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Focus :\n --focus Bascule vers le nouvel espace de travail\n --no-focus L’ouvre en arrière-plan" + "value": "Réveiller la machine" } }, "ar": { "stringUnit": { "state": "translated", - "value": "التركيز:\n --focus ينتقل إلى مساحة العمل الجديدة\n --no-focus يفتحها في الخلفية" + "value": "إيقاظ الجهاز" } }, "es": { "stringUnit": { "state": "translated", - "value": "Foco:\n --focus Cambia al nuevo espacio de trabajo\n --no-focus Lo abre en segundo plano" + "value": "Activar máquina" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "焦點:\n --focus 切換到新的工作區\n --no-focus 在背景開啟" + "value": "喚醒機器" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "焦点:\n --focus 切换到新的工作区\n --no-focus 在后台打开" + "value": "唤醒机器" } }, "ko": { "stringUnit": { "state": "translated", - "value": "포커스:\n --focus 새 워크스페이스로 전환합니다\n --no-focus 백그라운드에서 엽니다" + "value": "머신 깨우기" } - } - } - }, - "settings.app.compactAgentStatus": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "ja": { "stringUnit": { "state": "translated", - "value": "Compact Agent Status" + "value": "マシンを起動" } }, - "ar": { + "bs": { "stringUnit": { "state": "translated", - "value": "حالة الوكيل المختصرة" + "value": "Probudi mašinu" } }, - "de": { + "da": { "stringUnit": { "state": "translated", - "value": "Kompakter Agentenstatus" + "value": "Væk maskine" } }, - "es": { + "it": { "stringUnit": { "state": "translated", - "value": "Estado de agente compacto" + "value": "Riattiva macchina" } }, - "fr": { + "km": { "stringUnit": { "state": "translated", - "value": "Statut d’agent compact" + "value": "ដាស់ម៉ាស៊ីន" } }, - "ja": { + "nb": { "stringUnit": { "state": "translated", - "value": "エージェント状態のコンパクト表示" + "value": "Vekk maskin" } }, - "ko": { + "pl": { "stringUnit": { "state": "translated", - "value": "간결한 에이전트 상태" + "value": "Wybudź maszynę" } }, - "zh-Hans": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "精简代理状态" + "value": "Despertar máquina" } }, - "zh-Hant": { + "ru": { "stringUnit": { "state": "translated", - "value": "精簡代理狀態" + "value": "Разбудить машину" + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "ปลุกเครื่อง" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Makineyi uyandır" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Розбудити машину" } } } }, - "settings.app.compactAgentStatus.subtitle": { + "cloudTree.ports.asleep.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Show a workspace's agent, unread and pull request state as one colored icon before the title instead of separate rows. Hover the icon for details." + "value": "Wake the machine to check its services. cmux’s in-app forwarding does not need Cloud VPN." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "إظهار حالة الوكيل والعناصر غير المقروءة وطلب السحب لمساحة العمل كأيقونة ملونة واحدة قبل العنوان بدلاً من صفوف منفصلة. مرّر المؤشر فوق الأيقونة لعرض التفاصيل." + "value": "Aktivieren Sie die Maschine, um ihre Dienste zu prüfen. Die Weiterleitung in cmux benötigt kein Cloud-VPN." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Agenten-, Ungelesen- und Pull-Request-Status eines Workspace als ein farbiges Symbol vor dem Titel anzeigen statt in eigenen Zeilen. Details erscheinen, wenn du den Zeiger über das Symbol bewegst." + "value": "Réveillez la machine pour vérifier ses services. Le transfert intégré à cmux ne nécessite pas de VPN Cloud." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "أيقظ الجهاز لفحص خدماته. لا تحتاج إعادة التوجيه داخل cmux إلى Cloud VPN." } }, "es": { "stringUnit": { "state": "translated", - "value": "Mostrar el estado del agente, lo no leído y la pull request de un espacio de trabajo como un único icono de color antes del título, en lugar de filas separadas. Pasa el cursor sobre el icono para ver los detalles." + "value": "Activa la máquina para comprobar sus servicios. El reenvío integrado de cmux no necesita Cloud VPN." } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Afficher l’état de l’agent, des éléments non lus et de la pull request d’un espace de travail sous forme d’une seule icône colorée avant le titre, au lieu de lignes distinctes. Survolez l’icône pour voir les détails." + "value": "喚醒機器以檢查其服務。cmux 的應用程式內轉送不需要 Cloud VPN。" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "ワークスペースのエージェント、未読、プルリクエストの状態を、個別の行ではなくタイトルの前の色付きアイコン1つで示します。詳細はアイコンにポインタを合わせると表示されます。" + "value": "唤醒机器以检查其服务。cmux 的应用内转发无需 Cloud VPN。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "워크스페이스의 에이전트, 읽지 않음, 풀 리퀘스트 상태를 별도의 줄이 아니라 제목 앞의 색상 아이콘 하나로 나타냅니다. 자세한 내용은 아이콘 위에 포인터를 올려 확인하세요." + "value": "머신을 깨워 서비스를 확인하세요. cmux 앱 내 전달에는 Cloud VPN이 필요하지 않습니다." } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "用标题前的单个彩色图标表示工作区的代理、未读和拉取请求状态,而不是各自占一行。将指针悬停在图标上可查看详细信息。" + "value": "マシンを起動してサービスを確認してください。cmux のアプリ内転送に Cloud VPN は不要です。" } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "以標題前的單一彩色圖示表示工作區的代理、未讀與拉取請求狀態,而非各自佔一行。將游標移到圖示上可查看詳細資訊。" + "value": "Probudite mašinu da provjerite njene servise. Prosljeđivanje unutar cmux-a ne treba Cloud VPN." } - } - } - }, - "settings.search.alias.setting.app.compact-agent-status": { - "extractionState": "manual", - "localizations": { - "ar": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex مختصر وكيل حالة أيقونة سطر العنوان" + "value": "Væk maskinen for at kontrollere dens tjenester. Videresendelse i cmux kræver ikke Cloud VPN." } }, - "de": { + "it": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex kompakt Agent Status Symbol Titelzeile" + "value": "Riattiva la macchina per controllarne i servizi. L’inoltro all’interno di cmux non richiede la VPN Cloud." } }, - "en": { + "km": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex" + "value": "ដាស់ម៉ាស៊ីនដើម្បីពិនិត្យសេវាកម្មរបស់វា។ ការបញ្ជូនបន្តនៅក្នុង cmux មិនត្រូវការ Cloud VPN ទេ។" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex compacto agente estado icono línea de título" + "value": "Vekk maskinen for å sjekke tjenestene. Videresending i cmux trenger ikke Cloud VPN." } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex compact agent statut icône ligne de titre" + "value": "Wybudź maszynę, aby sprawdzić jej usługi. Przekierowywanie w cmux nie wymaga Cloud VPN." } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex コンパクト エージェント 状態 アイコン タイトル行" + "value": "Desperte a máquina para verificar os serviços. O encaminhamento dentro do cmux não precisa do Cloud VPN." } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex 간결 에이전트 상태 아이콘 제목 줄" + "value": "Разбудите машину, чтобы проверить её службы. Перенаправлению внутри cmux Cloud VPN не нужен." } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex 精简 代理 状态 图标 标题行" + "value": "ปลุกเครื่องเพื่อตรวจสอบบริการ การส่งต่อภายใน cmux ไม่ต้องใช้ Cloud VPN" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex 精簡 代理 狀態 圖示 標題列" + "value": "Hizmetlerini denetlemek için makineyi uyandırın. cmux içi yönlendirme Cloud VPN gerektirmez." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Розбудіть машину, щоб перевірити її служби. Перенаправлення всередині cmux не потребує Cloud VPN." } } } }, - "sidebar.agentStatus.glyph.tooltip": { + "cloudTree.ports.available.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Listening services" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Lauschende Dienste" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Services en écoute" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "الخدمات المستمعة" } }, "es": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Servicios en escucha" } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%1$@ : %2$@" + "value": "監聽中的服務" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%1$@:%2$@" + "value": "监听中的服务" } }, "ko": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "수신 대기 서비스" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "%1$@:%2$@" + "value": "待ち受け中のサービス" } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "%1$@:%2$@" + "value": "Servisi koji slušaju" } - } - } - }, - "sidebar.compactStatus.profile": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Profile" + "value": "Lyttende tjenester" } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "الملف الشخصي" + "value": "Servizi in ascolto" } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "Profil" + "value": "សេវាកម្មដែលកំពុងស្តាប់" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Perfil" + "value": "Lyttende tjenester" } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Profil" + "value": "Nasłuchujące usługi" } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "プロファイル" + "value": "Serviços em escuta" } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "프로필" + "value": "Прослушивающие службы" } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "配置文件" + "value": "บริการที่กำลังรับฟัง" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "設定檔" + "value": "Dinleyen hizmetler" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Служби, що прослуховують" } } } }, - "cli.sshPtyAttach.launchAcknowledgementTimeoutRetry": { + "cloudTree.ports.binding.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux did not acknowledge the SSH launch; retrying %s in %ss." + "value": "cmux’s browser route connects to 127.0.0.1 on the machine. Bind the service to 127.0.0.1 or 0.0.0.0, then refresh. Turning on Cloud VPN does not change this route." } }, "de": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux hat den SSH-Start nicht bestätigt; neuer Versuch %s in %ss." + "value": "Die Browser-Verbindung von cmux verwendet 127.0.0.1 auf der Maschine. Binden Sie den Dienst an 127.0.0.1 oder 0.0.0.0 und aktualisieren Sie. Cloud-VPN ändert diese Route nicht." } }, "fr": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux n’a pas confirmé le démarrage SSH ; nouvelle tentative %s dans %ss." + "value": "Le navigateur cmux se connecte à 127.0.0.1 sur la machine. Liez le service à 127.0.0.1 ou 0.0.0.0, puis actualisez. Activer le VPN Cloud ne change pas cette route." } }, "ar": { "stringUnit": { "state": "translated", - "value": "[cmux] لم يؤكد cmux بدء SSH؛ ستتم إعادة المحاولة %s خلال %s ث." + "value": "يتصل مسار متصفح cmux بالعنوان 127.0.0.1 على الجهاز. اربط الخدمة بالعنوان 127.0.0.1 أو 0.0.0.0 ثم حدّث. تشغيل Cloud VPN لا يغير هذا المسار." } }, "es": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux no confirmó el inicio de SSH; reintentando %s en %ss." + "value": "La ruta del navegador de cmux conecta a 127.0.0.1 en la máquina. Enlaza el servicio a 127.0.0.1 o 0.0.0.0 y actualiza. Activar Cloud VPN no cambia esta ruta." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux 未確認 SSH 啟動;將在第 %s 次於 %s 秒後重試。" + "value": "cmux 的瀏覽器路徑會連線到機器上的 127.0.0.1。請將服務繫結至 127.0.0.1 或 0.0.0.0 後重新整理。開啟 Cloud VPN 不會改變此路徑。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux 未确认 SSH 启动;将在第 %s 次于 %s 秒后重试。" + "value": "cmux 的浏览器路由连接到机器上的 127.0.0.1。请将服务绑定到 127.0.0.1 或 0.0.0.0 后刷新。开启 Cloud VPN 不会改变此路由。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux가 SSH 시작을 확인하지 못했습니다. %s번째로 %s초 후 다시 시도합니다." + "value": "cmux 브라우저 경로는 머신의 127.0.0.1에 연결합니다. 서비스를 127.0.0.1 또는 0.0.0.0에 바인딩한 후 새로 고치세요. Cloud VPN을 켜도 이 경로는 바뀌지 않습니다." } }, "ja": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux が SSH の起動を確認できないため、%s 回目を %s 秒後に再試行します。" + "value": "cmux のブラウザはマシン上の 127.0.0.1 に接続します。サービスを 127.0.0.1 または 0.0.0.0 にバインドして更新してください。Cloud VPN を有効にしてもこの経路は変わりません。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux nije potvrdio SSH pokretanje; ponovni pokušaj %s za %ss." + "value": "Ruta preglednika u cmux-u povezuje se na 127.0.0.1 na mašini. Vežite servis na 127.0.0.1 ili 0.0.0.0, zatim osvježite. Uključivanje Cloud VPN-a ne mijenja ovu rutu." } }, "da": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux bekræftede ikke SSH-starten; prøver igen %s om %ss." + "value": "cmux’ browserrute forbinder til 127.0.0.1 på maskinen. Bind tjenesten til 127.0.0.1 eller 0.0.0.0, og opdater derefter. Aktivering af Cloud VPN ændrer ikke denne rute." } }, "it": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux non ha confermato l’avvio SSH; nuovo tentativo %s tra %ss." + "value": "Il percorso del browser di cmux si connette a 127.0.0.1 sulla macchina. Associa il servizio a 127.0.0.1 o 0.0.0.0, quindi aggiorna. L’attivazione della VPN Cloud non modifica questo percorso." } }, "km": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux មិនបានបញ្ជាក់ការចាប់ផ្តើម SSH ទេ; កំពុងព្យាយាមម្តងទៀត %s ក្នុងរយៈពេល %ss។" + "value": "ផ្លូវកម្មវិធីរុករករបស់ cmux ភ្ជាប់ទៅ 127.0.0.1 នៅលើម៉ាស៊ីន។ ចងសេវាកម្មទៅ 127.0.0.1 ឬ 0.0.0.0 រួចផ្ទុកឡើងវិញ។ ការបើក Cloud VPN មិនផ្លាស់ប្តូរផ្លូវនេះទេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux bekreftet ikke SSH-oppstarten; prøver på nytt %s om %ss." + "value": "cmux sin nettleserrute kobler til 127.0.0.1 på maskinen. Bind tjenesten til 127.0.0.1 eller 0.0.0.0, og oppdater deretter. Å slå på Cloud VPN endrer ikke denne ruten." } }, "pl": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux nie potwierdził uruchomienia SSH; ponawianie próby %s za %ss." + "value": "Trasa przeglądarki cmux łączy się z 127.0.0.1 na maszynie. Powiąż usługę z 127.0.0.1 lub 0.0.0.0, a następnie odśwież. Włączenie Cloud VPN nie zmienia tej trasy." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "[cmux] o cmux não confirmou o início do SSH; tentando novamente %s em %ss." + "value": "A rota de navegador do cmux se conecta a 127.0.0.1 na máquina. Vincule o serviço a 127.0.0.1 ou 0.0.0.0 e atualize. Ativar o Cloud VPN não altera essa rota." } }, "ru": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux не подтвердил запуск SSH; повторная попытка %s через %ss." + "value": "Браузерный маршрут cmux подключается к 127.0.0.1 на машине. Привяжите службу к 127.0.0.1 или 0.0.0.0, затем обновите. Включение Cloud VPN не меняет этот маршрут." } }, "th": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux ไม่ยืนยันการเริ่มต้น SSH; กำลังลองใหม่ครั้งที่ %s ในอีก %s วินาที" + "value": "เส้นทางเบราว์เซอร์ของ cmux เชื่อมต่อกับ 127.0.0.1 บนเครื่อง ผูกบริการกับ 127.0.0.1 หรือ 0.0.0.0 แล้วรีเฟรช การเปิด Cloud VPN ไม่ได้เปลี่ยนเส้นทางนี้" } }, "tr": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux SSH başlatmasını onaylamadı; %s saniye içinde %s. deneme yapılıyor." + "value": "cmux’un tarayıcı yolu makinedeki 127.0.0.1 adresine bağlanır. Hizmeti 127.0.0.1 veya 0.0.0.0 adresine bağlayın, ardından yenileyin. Cloud VPN’i açmak bu yolu değiştirmez." } }, "uk": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux не підтвердив запуск SSH; повторна спроба %s через %s с." + "value": "Браузерний маршрут cmux підключається до 127.0.0.1 на машині. Прив’яжіть службу до 127.0.0.1 або 0.0.0.0, потім оновіть. Увімкнення Cloud VPN не змінює цей маршрут." } } } }, - "cloudTree.port.openInCmux": { + "cloudTree.ports.binding.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open in cmux" + "value": "Services use another interface" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "فتح في cmux" + "value": "Dienste verwenden eine andere Schnittstelle" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "In cmux öffnen" + "value": "Les services utilisent une autre interface" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تستخدم الخدمات واجهة أخرى" } }, "es": { "stringUnit": { "state": "translated", - "value": "Abrir en cmux" + "value": "Los servicios usan otra interfaz" } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Ouvrir dans cmux" + "value": "服務使用其他介面" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmuxで開く" + "value": "服务使用其他接口" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux에서 열기" + "value": "서비스가 다른 인터페이스를 사용함" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "在 cmux 中打开" + "value": "サービスが別のインターフェイスを使用しています" } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "在 cmux 中開啟" + "value": "Servisi koriste drugi interfejs" } - } - } - }, - "cloudTree.port.openInCmux.help": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Open in cmux. No VPN setup needed." + "value": "Tjenester bruger en anden grænseflade" } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "افتح في cmux. لا يلزم إعداد VPN." + "value": "I servizi usano un’altra interfaccia" } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "In cmux öffnen. Keine VPN-Einrichtung nötig." + "value": "សេវាកម្មប្រើចំណុចប្រទាក់ផ្សេង" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Abrir en cmux. No hace falta configurar una VPN." + "value": "Tjenester bruker et annet grensesnitt" } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Ouvrir dans cmux. Aucune configuration VPN nécessaire." + "value": "Usługi używają innego interfejsu" } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "cmux で開きます。VPN の設定は不要です。" + "value": "Os serviços usam outra interface" } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "cmux에서 열기. VPN 설정이 필요하지 않습니다." + "value": "Службы используют другой интерфейс" } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "在 cmux 中打开。无需设置 VPN。" + "value": "บริการใช้อินเทอร์เฟซอื่น" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "在 cmux 中開啟。無需設定 VPN。" + "value": "Hizmetler başka bir arabirim kullanıyor" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Служби використовують інший інтерфейс" } } } }, - "cloudTree.port.title": { + "cloudTree.ports.empty.noService": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Port %@" + "value": "Start a web server on this machine, then refresh." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "المنفذ %@" + "value": "Starte einen Webserver auf diesem Rechner und aktualisiere dann die Liste." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Port-Nr. %@" + "value": "Démarrez un serveur web sur cette machine, puis actualisez." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "شغّل خادم ويب على هذا الجهاز، ثم حدّث القائمة." } }, "es": { "stringUnit": { "state": "translated", - "value": "Puerto %@" + "value": "Inicia un servidor web en esta máquina y luego actualiza." } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Port n° %@" + "value": "在這台機器上啟動網頁伺服器,然後重新整理。" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "ポート %@" + "value": "在此机器上启动网页服务器,然后刷新。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "포트 %@" + "value": "이 머신에서 웹 서버를 시작한 다음 새로 고치세요." } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "端口 %@" + "value": "このマシンで Web サーバーを起動してから、更新してください。" } }, - "zh-Hant": { + "bs": { "stringUnit": { - "state": "translated", - "value": "連接埠 %@" + "state": "needs_review", + "value": "Pokrenite web server na ovoj mašini, zatim osvježite." } - } - } - }, - "cloudTree.placeholder.deviceOffline": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { - "state": "translated", - "value": "Offline — its workspaces return when it does" + "state": "needs_review", + "value": "Start en webserver på denne maskine, og opdater derefter." } }, - "ar": { + "it": { "stringUnit": { - "state": "translated", - "value": "غير متصل — ستعود مساحات عمله عند اتصاله مجددًا" + "state": "needs_review", + "value": "Avvia un server web su questa macchina, poi aggiorna." } }, - "de": { + "km": { "stringUnit": { - "state": "translated", - "value": "Offline — die Arbeitsbereiche erscheinen wieder, sobald das Gerät online ist" + "state": "needs_review", + "value": "ចាប់ផ្តើមម៉ាស៊ីនមេបណ្តាញនៅលើម៉ាស៊ីននេះ រួចផ្ទុកឡើងវិញ។" } }, - "es": { + "nb": { "stringUnit": { - "state": "translated", - "value": "Sin conexión — sus espacios de trabajo volverán cuando se conecte" + "state": "needs_review", + "value": "Start en webserver på denne maskinen, og oppdater deretter." } }, - "fr": { + "pl": { "stringUnit": { - "state": "translated", - "value": "Hors ligne — ses espaces de travail réapparaîtront à sa reconnexion" + "state": "needs_review", + "value": "Uruchom serwer WWW na tej maszynie, a następnie odśwież." } }, - "ja": { + "pt-BR": { "stringUnit": { - "state": "translated", - "value": "オフライン — 再接続するとワークスペースが戻ります" + "state": "needs_review", + "value": "Inicie um servidor web nesta máquina e atualize." } }, - "ko": { + "ru": { "stringUnit": { - "state": "translated", - "value": "오프라인 — 다시 연결되면 작업 공간이 돌아옵니다" + "state": "needs_review", + "value": "Запустите веб-сервер на этой машине, затем обновите список." } }, - "zh-Hans": { + "th": { "stringUnit": { - "state": "translated", - "value": "离线 — 重新连接后会恢复工作区" + "state": "needs_review", + "value": "เริ่มเว็บเซิร์ฟเวอร์บนเครื่องนี้ แล้วรีเฟรช" } }, - "zh-Hant": { + "tr": { "stringUnit": { - "state": "translated", - "value": "離線 — 重新連線後會恢復工作區" + "state": "needs_review", + "value": "Bu makinede bir web sunucusu başlatın, ardından yenileyin." + } + }, + "uk": { + "stringUnit": { + "state": "needs_review", + "value": "Запустіть вебсервер на цій машині, а потім оновіть список." } } } }, - "socket.mainActorHop.timeout.mayHaveRun": { + "cloudTree.ports.hub.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "cmux did not respond within 10 seconds after the command started, so its result is unknown. Check the effect before retrying." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "コマンドの開始後 10 秒以内に cmux が応答しなかったため、結果は不明です。再試行する前に効果を確認してください。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "命令开始后 10 秒内 cmux 没有响应,因此结果未知。请先确认效果再重试。" + "value": "This build cannot start cmux’s authenticated Cloud forward. Update cmux, then retry." } }, "de": { "stringUnit": { "state": "translated", - "value": "cmux hat innerhalb von 10 Sekunden nach dem Start des Befehls nicht geantwortet, das Ergebnis ist daher unbekannt. Prüfe die Auswirkung, bevor du es erneut versuchst." + "value": "Dieser Build kann die authentifizierte Cloud-Weiterleitung von cmux nicht starten. Aktualisieren Sie cmux und versuchen Sie es erneut." } }, "fr": { "stringUnit": { "state": "translated", - "value": "cmux n’a pas répondu dans les 10 secondes suivant le démarrage de la commande, son résultat est donc inconnu. Vérifiez l’effet avant de réessayer." + "value": "Cette version ne peut pas démarrer le transfert Cloud authentifié de cmux. Mettez cmux à jour, puis réessayez." } }, "ar": { "stringUnit": { "state": "translated", - "value": "لم يستجب cmux خلال 10 ثوانٍ بعد بدء الأمر، لذا فإن نتيجته غير معروفة. تحقق من الأثر قبل إعادة المحاولة." + "value": "لا يمكن لهذا الإصدار بدء إعادة توجيه Cloud الموثّقة من cmux. حدّث cmux ثم أعد المحاولة." } }, "es": { "stringUnit": { "state": "translated", - "value": "cmux no respondió en los 10 segundos posteriores al inicio del comando, por lo que su resultado es desconocido. Comprueba el efecto antes de reintentar." + "value": "Esta compilación no puede iniciar el reenvío autenticado de Cloud de cmux. Actualiza cmux y vuelve a intentarlo." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "命令開始後 10 秒內 cmux 沒有回應,因此結果未知。請先確認效果再重試。" + "value": "此版本無法啟動 cmux 的已驗證 Cloud 轉送。請更新 cmux 後重試。" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "명령이 시작된 후 10초 안에 cmux가 응답하지 않아 결과를 알 수 없습니다. 다시 시도하기 전에 효과를 확인하세요." + "value": "此版本无法启动 cmux 的已验证 Cloud 转发。请更新 cmux 后重试。" } - } - } - }, - "socket.mainActorHop.timeout.notRun": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "ko": { "stringUnit": { "state": "translated", - "value": "cmux did not respond within 10 seconds, so the command was not run. Retry in a moment." + "value": "이 빌드에서는 cmux 인증 Cloud 전달을 시작할 수 없습니다. cmux를 업데이트한 후 다시 시도하세요." } }, "ja": { "stringUnit": { "state": "translated", - "value": "cmux が 10 秒以内に応答しなかったため、コマンドは実行されませんでした。しばらくしてから再試行してください。" + "value": "このビルドでは cmux の認証済み Cloud 転送を開始できません。cmux を更新して再試行してください。" } }, - "zh-Hans": { + "bs": { "stringUnit": { "state": "translated", - "value": "cmux 在 10 秒内没有响应,因此未运行该命令。请稍后重试。" + "value": "Ova verzija ne može pokrenuti autentificirano Cloud prosljeđivanje cmux-a. Ažurirajte cmux, zatim pokušajte ponovo." } }, - "de": { + "da": { "stringUnit": { "state": "translated", - "value": "cmux hat innerhalb von 10 Sekunden nicht geantwortet, der Befehl wurde daher nicht ausgeführt. Versuche es gleich noch einmal." + "value": "Denne build kan ikke starte cmux’ godkendte Cloud-videresendelse. Opdater cmux, og prøv igen." } }, - "fr": { + "it": { "stringUnit": { "state": "translated", - "value": "cmux n’a pas répondu dans les 10 secondes, la commande n’a donc pas été exécutée. Réessayez dans un instant." + "value": "Questa build non può avviare l’inoltro Cloud autenticato di cmux. Aggiorna cmux, quindi riprova." } }, - "ar": { + "km": { "stringUnit": { "state": "translated", - "value": "لم يستجب cmux خلال 10 ثوانٍ، لذا لم يتم تنفيذ الأمر. أعد المحاولة بعد لحظات." + "value": "កំណែនេះមិនអាចចាប់ផ្តើមការបញ្ជូនបន្ត Cloud ដែលបានផ្ទៀងផ្ទាត់របស់ cmux បានទេ។ ធ្វើបច្ចុប្បន្នភាព cmux រួចព្យាយាមម្តងទៀត។" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "cmux no respondió en 10 segundos, por lo que el comando no se ejecutó. Reintenta en un momento." + "value": "Denne versjonen kan ikke starte cmux sin autentiserte Cloud-videresending. Oppdater cmux, og prøv igjen." } }, - "zh-Hant": { + "pl": { "stringUnit": { "state": "translated", - "value": "cmux 在 10 秒內沒有回應,因此未執行該命令。請稍後重試。" + "value": "Ta kompilacja nie może uruchomić uwierzytelnionego przekierowania Cloud w cmux. Zaktualizuj cmux i spróbuj ponownie." } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "cmux가 10초 안에 응답하지 않아 명령이 실행되지 않았습니다. 잠시 후 다시 시도하세요." - } - } - } - }, - "socket.overloaded.message": { - "extractionState": "manual", - "localizations": { - "en": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "cmux is handling too many control-socket requests right now, so this one was not run. Retry in a moment." + "value": "Esta versão não consegue iniciar o encaminhamento Cloud autenticado do cmux. Atualize o cmux e tente novamente." } }, - "ja": { + "ru": { "stringUnit": { "state": "translated", - "value": "cmux は現在、制御ソケットの要求を処理しきれないため、この要求は実行されませんでした。しばらくしてから再試行してください。" + "value": "Эта сборка не может запустить аутентифицированное перенаправление Cloud в cmux. Обновите cmux и повторите попытку." } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "cmux 当前正在处理过多的控制套接字请求,因此未运行此请求。请稍后重试。" + "value": "บิลด์นี้ไม่สามารถเริ่มการส่งต่อ Cloud ที่ยืนยันตัวตนแล้วของ cmux ได้ อัปเดต cmux แล้วลองอีกครั้ง" } }, - "de": { + "tr": { "stringUnit": { "state": "translated", - "value": "cmux verarbeitet gerade zu viele Control-Socket-Anfragen, diese wurde daher nicht ausgeführt. Versuche es gleich noch einmal." + "value": "Bu derleme cmux’un kimliği doğrulanmış Cloud yönlendirmesini başlatamıyor. cmux’u güncelleyin, ardından yeniden deneyin." } }, - "fr": { + "uk": { "stringUnit": { "state": "translated", - "value": "cmux traite actuellement trop de requêtes du socket de contrôle, celle-ci n’a donc pas été exécutée. Réessayez dans un instant." + "value": "Ця збірка не може запустити автентифіковане перенаправлення Cloud у cmux. Оновіть cmux і повторіть спробу." } - }, - "ar": { + } + } + }, + "cloudTree.ports.link.detail": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "يعالج cmux حاليًا عددًا كبيرًا جدًا من طلبات مقبس التحكم، لذا لم يتم تنفيذ هذا الطلب. أعد المحاولة بعد لحظات." + "value": "Port discovery could not connect to this machine. Existing cmux ports may still work. Refresh to reconnect; Cloud VPN is not required." } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "cmux está gestionando demasiadas solicitudes del socket de control ahora mismo, por lo que esta no se ejecutó. Reintenta en un momento." + "value": "Die Porterkennung konnte diese Maschine nicht erreichen. Bereits geöffnete cmux-Ports funktionieren möglicherweise weiter. Aktualisieren Sie zum erneuten Verbinden; Cloud-VPN ist nicht erforderlich." } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "cmux 目前正在處理過多的控制 socket 請求,因此未執行此請求。請稍後重試。" + "value": "La découverte des ports n’a pas pu se connecter à cette machine. Les ports cmux existants peuvent encore fonctionner. Actualisez pour reconnecter ; le VPN Cloud n’est pas nécessaire." } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "cmux가 지금 너무 많은 제어 소켓 요청을 처리하고 있어 이 요청은 실행되지 않았습니다. 잠시 후 다시 시도하세요." - } - } - } - }, - "socket.request.cancelled": { - "extractionState": "manual", - "localizations": { - "en": { + "ar": { "stringUnit": { "state": "translated", - "value": "Request was cancelled" + "value": "تعذر اتصال اكتشاف المنافذ بهذا الجهاز. قد تظل منافذ cmux الحالية تعمل. حدّث لإعادة الاتصال؛ Cloud VPN غير مطلوب." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "リクエストはキャンセルされました" + "value": "El descubrimiento de puertos no pudo conectar con esta máquina. Los puertos de cmux existentes pueden seguir funcionando. Actualiza para reconectar; Cloud VPN no es necesario." } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "请求已取消" + "value": "連接埠探索無法連線到此機器。現有 cmux 連接埠可能仍可使用。請重新整理以重新連線;不需要 Cloud VPN。" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Die Anfrage wurde abgebrochen" + "value": "端口发现无法连接到此机器。现有 cmux 端口可能仍可使用。请刷新以重新连接;无需 Cloud VPN。" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "La requête a été annulée" + "value": "포트 검색이 이 머신에 연결하지 못했습니다. 기존 cmux 포트는 계속 작동할 수 있습니다. 새로 고쳐 다시 연결하세요. Cloud VPN은 필요하지 않습니다." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "تم إلغاء الطلب" + "value": "ポート検出がこのマシンに接続できませんでした。既存の cmux ポートは引き続き動作する可能性があります。更新して再接続してください。Cloud VPN は不要です。" } }, - "es": { + "bs": { "stringUnit": { "state": "translated", - "value": "Se canceló la solicitud" + "value": "Otkrivanje portova nije se moglo povezati s ovom mašinom. Postojeći cmux portovi možda i dalje rade. Osvježite za ponovno povezivanje; Cloud VPN nije potreban." } }, - "zh-Hant": { + "da": { "stringUnit": { "state": "translated", - "value": "請求已取消" + "value": "Portregistrering kunne ikke oprette forbindelse til denne maskine. Eksisterende cmux-porte virker muligvis stadig. Opdater for at genoprette forbindelsen; Cloud VPN er ikke påkrævet." } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "요청이 취소되었습니다" - } - } - } - }, - "socket.request.failedBeforeResult": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "Request failed before returning a result" + "value": "Il rilevamento delle porte non è riuscito a connettersi a questa macchina. Le porte cmux esistenti potrebbero funzionare ancora. Aggiorna per riconnetterti; la VPN Cloud non è necessaria." } }, - "ja": { + "km": { "stringUnit": { "state": "translated", - "value": "結果を返す前にリクエストが失敗しました" + "value": "ការស្វែងរកច្រកមិនអាចភ្ជាប់ទៅម៉ាស៊ីននេះបានទេ។ ច្រក cmux ដែលមានស្រាប់អាចនៅតែដំណើរការ។ ផ្ទុកឡើងវិញដើម្បីភ្ជាប់ម្តងទៀត; មិនត្រូវការ Cloud VPN ទេ។" } }, - "zh-Hans": { + "nb": { "stringUnit": { "state": "translated", - "value": "请求在返回结果之前失败" + "value": "Portoppdagelse kunne ikke koble til denne maskinen. Eksisterende cmux-porter kan fortsatt fungere. Oppdater for å koble til på nytt; Cloud VPN er ikke nødvendig." } }, - "de": { + "pl": { "stringUnit": { "state": "translated", - "value": "Die Anfrage ist fehlgeschlagen, bevor ein Ergebnis zurückgegeben wurde" + "value": "Wykrywanie portów nie mogło połączyć się z tą maszyną. Istniejące porty cmux mogą nadal działać. Odśwież, aby połączyć ponownie; Cloud VPN nie jest wymagany." } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "La requête a échoué avant de renvoyer un résultat" + "value": "A descoberta de portas não conseguiu se conectar a esta máquina. As portas existentes do cmux ainda podem funcionar. Atualize para reconectar; o Cloud VPN não é necessário." } }, - "ar": { + "ru": { "stringUnit": { "state": "translated", - "value": "فشل الطلب قبل إرجاع نتيجة" + "value": "Обнаружению портов не удалось подключиться к этой машине. Существующие порты cmux могут по-прежнему работать. Обновите, чтобы переподключиться; Cloud VPN не требуется." } }, - "es": { + "th": { "stringUnit": { "state": "translated", - "value": "La solicitud falló antes de devolver un resultado" + "value": "การค้นหาพอร์ตไม่สามารถเชื่อมต่อกับเครื่องนี้ได้ พอร์ต cmux ที่มีอยู่อาจยังใช้งานได้ รีเฟรชเพื่อเชื่อมต่อใหม่ ไม่จำเป็นต้องใช้ Cloud VPN" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "請求在傳回結果之前失敗" + "value": "Port keşfi bu makineye bağlanamadı. Mevcut cmux portları hâlâ çalışıyor olabilir. Yeniden bağlanmak için yenileyin; Cloud VPN gerekmez." } }, - "ko": { + "uk": { "stringUnit": { "state": "translated", - "value": "결과를 반환하기 전에 요청이 실패했습니다" + "value": "Виявленню портів не вдалося підключитися до цієї машини. Наявні порти cmux можуть і далі працювати. Оновіть, щоб підключитися знову; Cloud VPN не потрібен." } } } }, - "agent.codex.fork.notice.body": { + "cloudTree.ports.link.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "cmux could not identify the new fork session. Start the fork again from the parent pane." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "cmux は新しいフォーク セッションを特定できませんでした。親ペインからもう一度フォークしてください。" + "value": "Cloud link unavailable" } }, "de": { "stringUnit": { "state": "translated", - "value": "cmux konnte die neue Fork-Sitzung nicht erkennen. Starten Sie den Fork erneut im übergeordneten Pane." + "value": "Cloud-Verbindung nicht verfügbar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "cmux n’a pas pu identifier la nouvelle session forkée. Relancez le fork depuis le volet parent." + "value": "Connexion Cloud indisponible" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تعذر على cmux تحديد جلسة التفريع الجديدة. ابدأ التفريع مرة أخرى من الجزء الأصلي." + "value": "اتصال Cloud غير متاح" } }, "es": { "stringUnit": { "state": "translated", - "value": "cmux no pudo identificar la nueva sesión bifurcada. Inicia el fork de nuevo desde el panel principal." + "value": "Conexión de Cloud no disponible" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux 無法識別新的分支工作階段。請從父窗格重新開始分支。" + "value": "Cloud 連線無法使用" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux 无法识别新的分支会话。请从父窗格重新开始分支。" + "value": "Cloud 连接不可用" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux가 새 포크 세션을 식별하지 못했습니다. 부모 패널에서 포크를 다시 시작하세요." + "value": "Cloud 연결을 사용할 수 없음" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Cloud 接続を利用できません" } }, "bs": { "stringUnit": { "state": "translated", - "value": "cmux nije mogao prepoznati novu sesiju račvanja. Ponovo pokrenite račvanje iz nadređenog okna." + "value": "Cloud veza nije dostupna" } }, "da": { "stringUnit": { "state": "translated", - "value": "cmux kunne ikke identificere den nye forgreningssession. Start forgreningen igen fra forældreruden." + "value": "Cloud-forbindelse utilgængelig" } }, "it": { "stringUnit": { "state": "translated", - "value": "cmux non ha potuto identificare la nuova sessione fork. Avvia di nuovo il fork dal riquadro principale." + "value": "Collegamento Cloud non disponibile" } }, "km": { "stringUnit": { "state": "translated", - "value": "cmux មិនអាចកំណត់អត្តសញ្ញាណសម័យ fork ថ្មីបានទេ។ ចាប់ផ្ដើម fork ម្ដងទៀតពីផ្ទាំងមេ។" + "value": "តំណ Cloud មិនអាចប្រើបាន" } }, "nb": { "stringUnit": { "state": "translated", - "value": "cmux kunne ikke identifisere den nye forgreningsøkten. Start forgreningen på nytt fra den overordnede ruten." + "value": "Cloud-tilkobling utilgjengelig" } }, "pl": { "stringUnit": { "state": "translated", - "value": "cmux nie mógł zidentyfikować nowej sesji forka. Uruchom fork ponownie z panelu nadrzędnego." + "value": "Połączenie Cloud niedostępne" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "O cmux não conseguiu identificar a nova sessão bifurcada. Inicie o fork novamente no painel principal." + "value": "Conexão Cloud indisponível" } }, "ru": { "stringUnit": { "state": "translated", - "value": "cmux не удалось определить новый сеанс форка. Запустите форк снова из родительской панели." + "value": "Связь с Cloud недоступна" } }, "th": { "stringUnit": { "state": "translated", - "value": "cmux ไม่สามารถระบุเซสชันที่แยกใหม่ได้ เริ่มการแยกอีกครั้งจากบานหน้าต่างหลัก" + "value": "ลิงก์ Cloud ไม่พร้อมใช้งาน" } }, "tr": { "stringUnit": { "state": "translated", - "value": "cmux yeni fork oturumunu belirleyemedi. Fork'u üst panelden yeniden başlatın." + "value": "Cloud bağlantısı kullanılamıyor" } }, "uk": { "stringUnit": { "state": "translated", - "value": "cmux не вдалося визначити новий сеанс форка. Запустіть форк ще раз із батьківської панелі." + "value": "Зв’язок із Cloud недоступний" } } } }, - "agent.codex.fork.notice.parentClearFailed.body": { + "cloudTree.ports.loading.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "cmux could not safely bind the new fork session. Retry the fork from the parent pane." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "cmux は新しいフォーク セッションを安全にバインドできませんでした。親ペインからもう一度フォークしてください。" + "value": "Checking services through cmux’s authenticated Cloud link. No system VPN is needed." } }, "de": { "stringUnit": { "state": "translated", - "value": "cmux konnte die neue Fork-Sitzung nicht sicher binden. Starten Sie den Fork erneut im übergeordneten Pane." + "value": "Dienste werden über die authentifizierte Cloud-Verbindung von cmux geprüft. Ein System-VPN ist nicht erforderlich." } }, "fr": { "stringUnit": { "state": "translated", - "value": "cmux n’a pas pu lier la nouvelle session forkée en toute sécurité. Relancez le fork depuis le volet parent." + "value": "Vérification des services via la connexion Cloud authentifiée de cmux. Aucun VPN système n’est nécessaire." } }, "ar": { "stringUnit": { "state": "translated", - "value": "تعذر على cmux ربط جلسة التفريع الجديدة بأمان. أعد بدء التفريع من الجزء الأصلي." + "value": "جارٍ فحص الخدمات عبر اتصال Cloud الموثّق من cmux. لا حاجة إلى VPN النظام." } }, "es": { "stringUnit": { "state": "translated", - "value": "cmux no pudo vincular de forma segura la nueva sesión bifurcada. Inicia el fork de nuevo desde el panel principal." + "value": "Comprobando servicios mediante la conexión autenticada de Cloud de cmux. No se necesita una VPN del sistema." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux 無法安全繫結新的分支工作階段。請從父窗格重新開始分支。" + "value": "正在透過 cmux 的已驗證 Cloud 連線檢查服務。不需要系統 VPN。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux 无法安全绑定新的分支会话。请从父窗格重新开始分支。" + "value": "正在通过 cmux 的已验证 Cloud 连接检查服务。无需系统 VPN。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux가 새 포크 세션을 안전하게 연결하지 못했습니다. 부모 패널에서 포크를 다시 시작하세요." + "value": "cmux의 인증된 Cloud 연결로 서비스를 확인하고 있습니다. 시스템 VPN은 필요하지 않습니다." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "cmux の認証済み Cloud 接続でサービスを確認しています。システム VPN は不要です。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "cmux nije mogao sigurno povezati novu sesiju račvanja. Ponovo pokrenite račvanje iz nadređenog okna." + "value": "Provjera servisa putem autentificirane Cloud veze cmux-a. Sistemski VPN nije potreban." } }, "da": { "stringUnit": { "state": "translated", - "value": "cmux kunne ikke binde den nye forgreningssession sikkert. Start forgreningen igen fra forældreruden." + "value": "Kontrollerer tjenester via cmux’ godkendte Cloud-forbindelse. Der kræves ingen system-VPN." } }, "it": { "stringUnit": { "state": "translated", - "value": "cmux non ha potuto associare in sicurezza la nuova sessione fork. Avvia di nuovo il fork dal riquadro principale." + "value": "Controllo dei servizi tramite il collegamento Cloud autenticato di cmux. Non serve una VPN di sistema." } }, "km": { "stringUnit": { "state": "translated", - "value": "cmux មិនអាចភ្ជាប់សម័យ fork ថ្មីដោយសុវត្ថិភាពបានទេ។ ចាប់ផ្ដើម fork ម្ដងទៀតពីផ្ទាំងមេ។" + "value": "កំពុងពិនិត្យសេវាកម្មតាមរយៈតំណ Cloud ដែលបានផ្ទៀងផ្ទាត់របស់ cmux។ មិនត្រូវការ VPN របស់ប្រព័ន្ធទេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "cmux kunne ikke binde den nye forgreningsøkten på en trygg måte. Start forgreningen på nytt fra den overordnede ruten." + "value": "Sjekker tjenester via cmux sin autentiserte Cloud-tilkobling. Ingen system-VPN er nødvendig." } }, "pl": { "stringUnit": { "state": "translated", - "value": "cmux nie mógł bezpiecznie powiązać nowej sesji forka. Uruchom fork ponownie z panelu nadrzędnego." + "value": "Sprawdzanie usług przez uwierzytelnione połączenie Cloud w cmux. Systemowa sieć VPN nie jest potrzebna." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "O cmux não conseguiu vincular com segurança a nova sessão bifurcada. Inicie o fork novamente no painel principal." + "value": "Verificando serviços pela conexão Cloud autenticada do cmux. Nenhuma VPN do sistema é necessária." } }, "ru": { "stringUnit": { "state": "translated", - "value": "cmux не удалось безопасно привязать новый сеанс форка. Запустите форк снова из родительской панели." + "value": "Проверка служб через аутентифицированную связь cmux с Cloud. Системный VPN не нужен." } }, "th": { "stringUnit": { "state": "translated", - "value": "cmux ไม่สามารถผูกเซสชันที่แยกใหม่ได้อย่างปลอดภัย เริ่มการแยกอีกครั้งจากบานหน้าต่างหลัก" + "value": "กำลังตรวจสอบบริการผ่านลิงก์ Cloud ที่ยืนยันตัวตนแล้วของ cmux ไม่ต้องใช้ VPN ของระบบ" } }, "tr": { "stringUnit": { "state": "translated", - "value": "cmux yeni fork oturumunu güvenli bir şekilde bağlayamadı. Fork'u üst panelden yeniden başlatın." + "value": "Hizmetler cmux’un kimliği doğrulanmış Cloud bağlantısı üzerinden denetleniyor. Sistem VPN’i gerekmez." } }, "uk": { "stringUnit": { "state": "translated", - "value": "cmux не вдалося безпечно прив’язати новий сеанс форка. Запустіть форк ще раз із батьківської панелі." + "value": "Перевірка служб через автентифікований зв’язок cmux із Cloud. Системний VPN не потрібен." } } } }, - "agent.codex.fork.notice.subtitle": { + "cloudTree.ports.loopback.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Fork unavailable" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "フォークを利用できません" + "value": "These services open in cmux without Cloud VPN. They listen on the machine’s loopback address, so other apps cannot reach them through its private IP, even with VPN connected." } }, "de": { "stringUnit": { "state": "translated", - "value": "Fork nicht verfügbar" + "value": "Diese Dienste lassen sich in cmux ohne Cloud-VPN öffnen. Sie lauschen auf der Loopback-Adresse der Maschine. Andere Apps erreichen sie daher auch mit VPN nicht über deren private IP." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Fork indisponible" + "value": "Ces services s’ouvrent dans cmux sans VPN Cloud. Ils écoutent sur l’adresse locale de la machine : les autres apps ne peuvent pas y accéder via son IP privée, même avec le VPN." } }, "ar": { "stringUnit": { "state": "translated", - "value": "التفريع غير متاح" + "value": "تُفتح هذه الخدمات داخل cmux دون Cloud VPN. وهي تستمع على عنوان الواجهة المحلية للجهاز، لذا لا تستطيع التطبيقات الأخرى الوصول إليها عبر عنوان IP الخاص به حتى مع اتصال VPN." } }, "es": { "stringUnit": { "state": "translated", - "value": "Fork no disponible" + "value": "Estos servicios se abren en cmux sin Cloud VPN. Escuchan en la dirección de bucle local de la máquina, por lo que otras apps no pueden acceder por su IP privada, incluso con la VPN conectada." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "無法使用分支" + "value": "這些服務可在 cmux 中開啟,不需要 Cloud VPN。它們在機器的迴路位址上監聽,因此即使已連線 VPN,其他 App 也無法透過其私人 IP 存取。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "分支不可用" + "value": "这些服务可在 cmux 中打开,无需 Cloud VPN。它们监听机器的回环地址,因此即使已连接 VPN,其他应用也无法通过其专用 IP 访问。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "포크를 사용할 수 없음" + "value": "이 서비스는 Cloud VPN 없이 cmux에서 열립니다. 머신의 루프백 주소에서 수신 대기하므로 VPN에 연결해도 다른 앱은 비공개 IP로 접근할 수 없습니다." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "これらのサービスは Cloud VPN なしで cmux から開けます。マシンのループバックアドレスで待ち受けるため、VPN 接続中でも他のアプリからプライベート IP 経由ではアクセスできません。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Račvanje nije dostupno" + "value": "Ovi servisi se otvaraju u cmux-u bez Cloud VPN-a. Slušaju na loopback adresi mašine, pa ih druge aplikacije ne mogu dosegnuti preko njene privatne IP adrese, čak ni uz povezan VPN." } }, "da": { "stringUnit": { "state": "translated", - "value": "Fork ikke tilgængelig" + "value": "Disse tjenester åbnes i cmux uden Cloud VPN. De lytter på maskinens loopback-adresse, så andre apps kan ikke nå dem via dens private IP, heller ikke med VPN forbundet." } }, "it": { "stringUnit": { "state": "translated", - "value": "Fork non disponibile" + "value": "Questi servizi si aprono in cmux senza VPN Cloud. Sono in ascolto sull’indirizzo di loopback della macchina, quindi le altre app non possono raggiungerli tramite il suo IP privato, nemmeno con la VPN connessa." } }, "km": { "stringUnit": { "state": "translated", - "value": "មិនអាចប្រើការបំបែកបាន" + "value": "សេវាកម្មទាំងនេះបើកនៅក្នុង cmux ដោយមិនត្រូវការ Cloud VPN។ ពួកវាស្តាប់នៅលើអាសយដ្ឋាន loopback របស់ម៉ាស៊ីន ដូច្នេះកម្មវិធីផ្សេងទៀតមិនអាចចូលដល់ពួកវាតាមរយៈ IP ឯកជនរបស់វាបានទេ ទោះបីភ្ជាប់ VPN ក៏ដោយ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Fork utilgjengelig" + "value": "Disse tjenestene åpnes i cmux uten Cloud VPN. De lytter på maskinens loopback-adresse, så andre apper kan ikke nå dem via den private IP-adressen, selv med VPN tilkoblet." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Fork niedostępny" + "value": "Te usługi otwierają się w cmux bez Cloud VPN. Nasłuchują na adresie pętli zwrotnej maszyny, więc inne aplikacje nie mogą do nich dotrzeć przez jej prywatny adres IP, nawet przy połączonym VPN." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Fork indisponível" + "value": "Esses serviços abrem no cmux sem o Cloud VPN. Eles escutam no endereço de loopback da máquina, então outros apps não conseguem alcançá-los pelo IP privado dela, mesmo com a VPN conectada." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Форк недоступен" + "value": "Эти службы открываются в cmux без Cloud VPN. Они прослушивают loopback-адрес машины, поэтому другие приложения не могут обратиться к ним через её частный IP даже при подключённом VPN." } }, "th": { "stringUnit": { "state": "translated", - "value": "ไม่สามารถใช้การแยกสาขาได้" + "value": "บริการเหล่านี้เปิดใน cmux ได้โดยไม่ต้องใช้ Cloud VPN บริการรับฟังบนที่อยู่ loopback ของเครื่อง แอปอื่นจึงเข้าถึงผ่าน IP ส่วนตัวของเครื่องไม่ได้ แม้จะเชื่อมต่อ VPN แล้วก็ตาม" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Fork kullanılamıyor" + "value": "Bu hizmetler cmux’ta Cloud VPN olmadan açılır. Makinenin geri döngü adresinde dinledikleri için diğer uygulamalar, VPN bağlıyken bile makinenin özel IP’si üzerinden onlara ulaşamaz." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Форк недоступний" + "value": "Ці служби відкриваються в cmux без Cloud VPN. Вони прослуховують loopback-адресу машини, тому інші застосунки не можуть дістатися до них через її приватну IP-адресу, навіть із підключеним VPN." } } } }, - "agent.codex.fork.notice.title": { + "cloudTree.ports.loopback.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Agent fork" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "エージェントフォーク" + "value": "Loopback services available" } }, "de": { "stringUnit": { "state": "translated", - "value": "Agent-Fork" + "value": "Loopback-Dienste verfügbar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Fork d’agent" + "value": "Services locaux disponibles" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تفريع الوكيل" + "value": "خدمات الواجهة المحلية متاحة" } }, "es": { "stringUnit": { "state": "translated", - "value": "Fork del agente" + "value": "Servicios de bucle local disponibles" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "代理程式分支" + "value": "可使用迴路服務" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "代理分支" + "value": "回环服务可用" } }, "ko": { "stringUnit": { "state": "translated", - "value": "에이전트 포크" + "value": "루프백 서비스 사용 가능" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ループバックのサービスを利用できます" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Račvanje agenta" + "value": "Dostupni loopback servisi" } }, "da": { "stringUnit": { "state": "translated", - "value": "Agentfork" + "value": "Loopback-tjenester tilgængelige" } }, "it": { "stringUnit": { "state": "translated", - "value": "Fork dell'agente" + "value": "Servizi di loopback disponibili" } }, "km": { "stringUnit": { "state": "translated", - "value": "ការបំបែកភ្នាក់ងារ" + "value": "មានសេវាកម្ម loopback" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Agentforgrening" + "value": "Loopback-tjenester tilgjengelige" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Fork agenta" + "value": "Dostępne usługi pętli zwrotnej" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Fork do agente" + "value": "Serviços de loopback disponíveis" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Форк агента" + "value": "Доступны loopback-службы" } }, "th": { "stringUnit": { "state": "translated", - "value": "การแยกสาขาของเอเจนต์" + "value": "มีบริการ loopback พร้อมใช้งาน" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Ajan çatalı" + "value": "Geri döngü hizmetleri kullanılabilir" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Форк агента" + "value": "Доступні loopback-служби" } } } }, - "socket.authTeam.committedStatusTimedOut": { + "cloudTree.ports.notRequested.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The team change was applied, but cmux did not report the updated status within 10 seconds. Run `cmux auth status` to confirm." + "value": "Ports not checked yet" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Ports noch nicht geprüft" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ports pas encore vérifiés" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "لم يتم فحص المنافذ بعد" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Puertos aún sin comprobar" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "尚未檢查連接埠" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "尚未检查端口" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "아직 포트를 확인하지 않음" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ポートは未確認です" + } + }, + "bs": { + "stringUnit": { + "state": "translated", + "value": "Portovi još nisu provjereni" + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "Porte er ikke kontrolleret endnu" + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "Porte non ancora controllate" } }, - "ja": { + "km": { "stringUnit": { "state": "translated", - "value": "チームの変更は適用されましたが、cmux は 10 秒以内に更新後のステータスを報告しませんでした。`cmux auth status` を実行して確認してください。" + "value": "មិនទាន់បានពិនិត្យច្រកនៅឡើយ" } }, - "zh-Hans": { + "nb": { "stringUnit": { "state": "translated", - "value": "团队更改已应用,但 cmux 未能在 10 秒内报告更新后的状态。请运行 `cmux auth status` 确认。" + "value": "Porter er ikke sjekket ennå" } }, - "de": { + "pl": { "stringUnit": { "state": "translated", - "value": "Die Teamänderung wurde übernommen, aber cmux hat den aktualisierten Status nicht innerhalb von 10 Sekunden gemeldet. Führe `cmux auth status` aus, um es zu prüfen." + "value": "Porty nie zostały jeszcze sprawdzone" } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Le changement d’équipe a été appliqué, mais cmux n’a pas signalé le statut mis à jour dans les 10 secondes. Exécutez `cmux auth status` pour confirmer." + "value": "Portas ainda não verificadas" } }, - "ar": { + "ru": { "stringUnit": { "state": "translated", - "value": "تم تطبيق تغيير الفريق، لكن cmux لم يُبلّغ عن الحالة المحدّثة خلال 10 ثوانٍ. شغّل `cmux auth status` للتأكيد." + "value": "Порты ещё не проверены" } }, - "es": { + "th": { "stringUnit": { "state": "translated", - "value": "El cambio de equipo se aplicó, pero cmux no informó el estado actualizado en 10 segundos. Ejecuta `cmux auth status` para confirmarlo." + "value": "ยังไม่ได้ตรวจสอบพอร์ต" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "團隊變更已套用,但 cmux 未能在 10 秒內回報更新後的狀態。請執行 `cmux auth status` 確認。" + "value": "Portlar henüz denetlenmedi" } }, - "ko": { + "uk": { "stringUnit": { "state": "translated", - "value": "팀 변경은 적용되었지만 cmux가 10초 안에 업데이트된 상태를 보고하지 않았습니다. `cmux auth status`를 실행해 확인하세요." + "value": "Порти ще не перевірено" } } } }, - "settings.mobile.browserTunnel.allowOtherHosts": { + "cloudTree.ports.privateAddress": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "iOS Browser Reaches Other Hosts" + "value": "Private address unavailable" } }, "de": { "stringUnit": { "state": "translated", - "value": "iOS-Browser erreicht andere Hosts" + "value": "Private Adresse nicht verfügbar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Le navigateur iOS accède aux autres hôtes" + "value": "Adresse privée indisponible" } }, "ar": { "stringUnit": { "state": "translated", - "value": "متصفح iOS يصل إلى مضيفين آخرين" + "value": "العنوان الخاص غير متاح" } }, "es": { "stringUnit": { "state": "translated", - "value": "El navegador de iOS accede a otros hosts" + "value": "Dirección privada no disponible" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "iOS 瀏覽器可連線至其他主機" + "value": "私人位址無法使用" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "iOS 浏览器可访问其他主机" + "value": "专用地址不可用" } }, "ko": { "stringUnit": { "state": "translated", - "value": "iOS 브라우저의 다른 호스트 접근" + "value": "비공개 주소를 사용할 수 없음" } }, "ja": { "stringUnit": { "state": "translated", - "value": "iOSブラウザから他のホストに接続" + "value": "プライベートアドレスを利用できません" } - } - } - }, - "settings.mobile.browserTunnel.allowOtherHosts.subtitleOn": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "bs": { "stringUnit": { "state": "translated", - "value": "The iOS browser can load LAN, VPN, and internet hosts through this Mac. Link-local and cloud metadata addresses never go through this Mac; the phone loads them itself." + "value": "Privatna adresa nije dostupna" } }, - "de": { + "da": { "stringUnit": { "state": "translated", - "value": "Der iOS-Browser kann LAN-, VPN- und Internet-Hosts über diesen Mac laden. Link-Local- und Cloud-Metadatenadressen laufen nie über diesen Mac; das iPhone lädt sie selbst." + "value": "Privat adresse utilgængelig" } }, - "fr": { + "it": { "stringUnit": { "state": "translated", - "value": "Le navigateur iOS peut charger des hôtes du réseau local, du VPN et d’Internet via ce Mac. Les adresses link-local et de métadonnées cloud ne passent jamais par ce Mac ; l’iPhone les charge lui-même." + "value": "Indirizzo privato non disponibile" } }, - "ar": { + "km": { "stringUnit": { "state": "translated", - "value": "يمكن لمتصفح iOS تحميل مضيفي الشبكة المحلية وVPN والإنترنت عبر جهاز Mac هذا. لا تمر عناوين الارتباط المحلي وعناوين بيانات التعريف السحابية عبر جهاز Mac هذا أبدًا؛ يحمّلها iPhone بنفسه." + "value": "អាសយដ្ឋានឯកជនមិនអាចប្រើបាន" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "El navegador de iOS puede cargar hosts de la red local, VPN e internet a través de este Mac. Las direcciones link-local y de metadatos en la nube nunca pasan por este Mac; el iPhone las carga por sí mismo." + "value": "Privat adresse utilgjengelig" } }, - "zh-Hant": { + "pl": { "stringUnit": { "state": "translated", - "value": "iOS 瀏覽器可透過這台 Mac 載入區域網路、VPN 與網際網路主機。連結本機位址與雲端中繼資料位址絕不經過這台 Mac,由 iPhone 自行載入。" + "value": "Adres prywatny niedostępny" } }, - "zh-Hans": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "iOS 浏览器可通过这台 Mac 加载局域网、VPN 和互联网主机。链路本地地址和云元数据地址绝不经过这台 Mac,由 iPhone 自行加载。" + "value": "Endereço privado indisponível" } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "iOS 브라우저가 이 Mac을 통해 LAN, VPN, 인터넷 호스트를 불러올 수 있습니다. 링크 로컬 및 클라우드 메타데이터 주소는 이 Mac을 거치지 않으며 iPhone이 직접 불러옵니다." + "value": "Частный адрес недоступен" } }, - "ja": { + "th": { "stringUnit": { "state": "translated", - "value": "iOSブラウザはこのMac経由でLAN、VPN、インターネット上のホストを読み込めます。リンクローカルとクラウドメタデータのアドレスはこのMacを経由せず、iPhoneが直接読み込みます。" + "value": "ไม่มีที่อยู่ส่วนตัว" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Özel adres kullanılamıyor" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Приватна адреса недоступна" } } } }, - "settings.mobile.browserTunnel.allowOtherHosts.subtitleOff": { + "cloudTree.ports.privateAddress.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The iOS browser reaches only this Mac's localhost through this Mac. Other sites load over the phone's own network." + "value": "cmux’s authenticated route needs this machine’s private address. Refresh to retrieve it. Turning on Cloud VPN does not assign a missing address." } }, "de": { "stringUnit": { "state": "translated", - "value": "Der iOS-Browser erreicht über diesen Mac nur dessen localhost. Andere Websites werden über das eigene Netzwerk des Telefons geladen." + "value": "Die authentifizierte Route von cmux benötigt die private Adresse dieser Maschine. Aktualisieren Sie, um sie abzurufen. Cloud-VPN weist keine fehlende Adresse zu." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Via ce Mac, le navigateur iOS n’accède qu’au localhost de ce Mac. Les autres sites se chargent via le réseau du téléphone." + "value": "La route authentifiée de cmux nécessite l’adresse privée de cette machine. Actualisez pour la récupérer. Activer le VPN Cloud n’attribue pas d’adresse manquante." } }, "ar": { "stringUnit": { "state": "translated", - "value": "لا يصل متصفح iOS عبر جهاز Mac هذا إلا إلى localhost الخاص به. تُحمَّل المواقع الأخرى عبر شبكة الهاتف نفسه." + "value": "يحتاج مسار cmux الموثّق إلى العنوان الخاص لهذا الجهاز. حدّث لاسترجاعه. تشغيل Cloud VPN لا يعيّن عنوانًا مفقودًا." } }, "es": { "stringUnit": { "state": "translated", - "value": "A través de este Mac, el navegador de iOS solo accede a su localhost. Los demás sitios se cargan con la red del propio teléfono." + "value": "La ruta autenticada de cmux necesita la dirección privada de esta máquina. Actualiza para obtenerla. Activar Cloud VPN no asigna una dirección que falta." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "iOS 瀏覽器只會透過這台 Mac 連線至它的 localhost。其他網站會透過手機本身的網路載入。" + "value": "cmux 的已驗證路徑需要此機器的私人位址。請重新整理以取得位址。開啟 Cloud VPN 不會指派缺少的位址。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "iOS 浏览器只会通过这台 Mac 访问它的 localhost。其他网站通过手机自身的网络加载。" + "value": "cmux 的已验证路由需要此机器的专用地址。请刷新以获取地址。开启 Cloud VPN 不会分配缺失的地址。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "iOS 브라우저는 이 Mac을 통해 이 Mac의 localhost에만 접근합니다. 다른 사이트는 휴대폰 자체 네트워크로 불러옵니다." + "value": "cmux의 인증된 경로에는 이 머신의 비공개 주소가 필요합니다. 새로 고쳐 주소를 가져오세요. Cloud VPN을 켜도 누락된 주소가 할당되지는 않습니다." } }, "ja": { "stringUnit": { "state": "translated", - "value": "iOSブラウザがこのMac経由で接続するのは、このMacのlocalhostだけです。他のサイトは電話自身のネットワークで読み込みます。" + "value": "cmux の認証済み経路にはこのマシンのプライベートアドレスが必要です。更新して取得してください。Cloud VPN を有効にしても不足しているアドレスは割り当てられません。" } - } - } - }, - "settings.search.alias.setting.mobile.browserTunnelAllowOtherHosts": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "bs": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security" + "value": "Autentificirana ruta cmux-a treba privatnu adresu ove mašine. Osvježite da je preuzmete. Uključivanje Cloud VPN-a ne dodjeljuje adresu koja nedostaje." } }, - "de": { + "da": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security mobil browser tunnel proxy lokales netzwerk hosts netzwerk sicherheit" + "value": "cmux’ godkendte rute kræver denne maskines private adresse. Opdater for at hente den. Aktivering af Cloud VPN tildeler ikke en manglende adresse." } }, - "fr": { + "it": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security mobile navigateur tunnel proxy réseau local hôtes réseau sécurité" + "value": "Il percorso autenticato di cmux richiede l’indirizzo privato di questa macchina. Aggiorna per recuperarlo. L’attivazione della VPN Cloud non assegna un indirizzo mancante." } }, - "ar": { + "km": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security متصفح نفق وكيل شبكة محلية مضيفون شبكة أمان" + "value": "ផ្លូវដែលបានផ្ទៀងផ្ទាត់របស់ cmux ត្រូវការអាសយដ្ឋានឯកជនរបស់ម៉ាស៊ីននេះ។ ផ្ទុកឡើងវិញដើម្បីទាញយកវា។ ការបើក Cloud VPN មិនផ្តល់អាសយដ្ឋានដែលបាត់ទេ។" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security móvil navegador túnel proxy red local hosts red seguridad" + "value": "cmux sin autentiserte rute trenger denne maskinens private adresse. Oppdater for å hente den. Å slå på Cloud VPN tildeler ikke en manglende adresse." } }, - "zh-Hant": { + "pl": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security 行動裝置 瀏覽器 通道 代理 區域網路 主機 網路 安全性" + "value": "Uwierzytelniona trasa cmux wymaga prywatnego adresu tej maszyny. Odśwież, aby go pobrać. Włączenie Cloud VPN nie przypisuje brakującego adresu." } }, - "zh-Hans": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security 移动 浏览器 隧道 代理 局域网 主机 网络 安全" + "value": "A rota autenticada do cmux precisa do endereço privado desta máquina. Atualize para obtê-lo. Ativar o Cloud VPN não atribui um endereço ausente." } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security 모바일 브라우저 터널 프록시 로컬 네트워크 호스트 네트워크 보안" + "value": "Аутентифицированному маршруту cmux нужен частный адрес этой машины. Обновите, чтобы получить его. Включение Cloud VPN не назначает отсутствующий адрес." } }, - "ja": { + "th": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security モバイル ブラウザ トンネル プロキシ ローカルネットワーク ホスト ネットワーク セキュリティ" + "value": "เส้นทางที่ยืนยันตัวตนแล้วของ cmux ต้องใช้ที่อยู่ส่วนตัวของเครื่องนี้ รีเฟรชเพื่อดึงข้อมูล การเปิด Cloud VPN ไม่ได้กำหนดที่อยู่ที่ขาดหายไป" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "cmux’un kimliği doğrulanmış yolu bu makinenin özel adresine ihtiyaç duyar. Adresi almak için yenileyin. Cloud VPN’i açmak eksik bir adres atamaz." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Автентифікованому маршруту cmux потрібна приватна адреса цієї машини. Оновіть, щоб отримати її. Увімкнення Cloud VPN не призначає відсутню адресу." } } } }, - "cloud.vpn.setup.heading": { + "cloudTree.ports.routeNote": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Use Cloud machines from any app" + "value": "cmux forwards ports without Cloud VPN. Web browsers and other Mac apps need Cloud VPN to reach services bound to the machine’s private address." } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud-Maschinen aus jeder App verwenden" + "value": "cmux leitet Ports ohne Cloud-VPN weiter. Webbrowser und andere Mac-Apps benötigen Cloud-VPN, um Dienste an der privaten Adresse der Maschine zu erreichen." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Utiliser les machines Cloud depuis toute app" + "value": "cmux transfère les ports sans VPN Cloud. Les navigateurs web et les autres apps Mac ont besoin du VPN Cloud pour atteindre les services liés à l’adresse privée de la machine." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Usar máquinas Cloud desde cualquier app" + "value": "يعيد cmux توجيه المنافذ دون Cloud VPN. تحتاج متصفحات الويب وتطبيقات Mac الأخرى إلى Cloud VPN للوصول إلى الخدمات المرتبطة بالعنوان الخاص للجهاز." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "ほかのアプリからCloudマシンを使う" + "value": "cmux reenvía puertos sin Cloud VPN. Los navegadores web y otras apps de Mac necesitan Cloud VPN para acceder a servicios enlazados a la dirección privada de la máquina." } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "从任何应用使用 Cloud 机器" + "value": "cmux 可轉送連接埠,不需要 Cloud VPN。網頁瀏覽器和其他 Mac App 需要 Cloud VPN,才能存取繫結至機器私人位址的服務。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "從任何 App 使用 Cloud 機器" + "value": "cmux 可转发端口,无需 Cloud VPN。网页浏览器和其他 Mac 应用需要 Cloud VPN,才能访问绑定到机器专用地址的服务。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "모든 앱에서 Cloud 머신 사용" + "value": "cmux는 Cloud VPN 없이 포트를 전달합니다. 웹 브라우저 및 다른 Mac 앱이 머신의 비공개 주소에 바인딩된 서비스에 접근하려면 Cloud VPN이 필요합니다." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "استخدام أجهزة Cloud من أي تطبيق" + "value": "cmux は Cloud VPN なしでポートを転送します。Web ブラウザやその他の Mac アプリからマシンのプライベートアドレスにバインドされたサービスにアクセスするには Cloud VPN が必要です。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Koristite Cloud mašine iz bilo koje aplikacije" + "value": "cmux prosljeđuje portove bez Cloud VPN-a. Web preglednicima i drugim Mac aplikacijama potreban je Cloud VPN za pristup servisima vezanim za privatnu adresu mašine." } }, "da": { "stringUnit": { "state": "translated", - "value": "Brug Cloud-maskiner fra alle apps" + "value": "cmux videresender porte uden Cloud VPN. Webbrowsere og andre Mac-apps skal bruge Cloud VPN for at nå tjenester, der er bundet til maskinens private adresse." } }, "it": { "stringUnit": { "state": "translated", - "value": "Usa le macchine Cloud da qualsiasi app" + "value": "cmux inoltra le porte senza VPN Cloud. I browser web e le altre app per Mac hanno bisogno della VPN Cloud per raggiungere i servizi associati all’indirizzo privato della macchina." } }, "km": { "stringUnit": { "state": "translated", - "value": "ប្រើម៉ាស៊ីន Cloud ពីកម្មវិធីណាមួយ" + "value": "cmux បញ្ជូនបន្តច្រកដោយមិនត្រូវការ Cloud VPN។ កម្មវិធីរុករកបណ្តាញ និងកម្មវិធី Mac ផ្សេងទៀតត្រូវការ Cloud VPN ដើម្បីចូលដល់សេវាកម្មដែលចងទៅអាសយដ្ឋានឯកជនរបស់ម៉ាស៊ីន។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Bruk Cloud-maskiner fra alle apper" + "value": "cmux videresender porter uten Cloud VPN. Nettlesere og andre Mac-apper trenger Cloud VPN for å nå tjenester som er bundet til maskinens private adresse." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Używaj maszyn Cloud z dowolnej aplikacji" + "value": "cmux przekierowuje porty bez Cloud VPN. Przeglądarki internetowe i inne aplikacje na Maca potrzebują Cloud VPN, aby dotrzeć do usług powiązanych z prywatnym adresem maszyny." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Use máquinas Cloud em qualquer app" + "value": "O cmux encaminha portas sem o Cloud VPN. Navegadores e outros apps do Mac precisam do Cloud VPN para acessar serviços vinculados ao endereço privado da máquina." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Используйте Cloud-машины из любого приложения" + "value": "cmux перенаправляет порты без Cloud VPN. Веб-браузерам и другим приложениям Mac нужен Cloud VPN, чтобы обращаться к службам, привязанным к частному адресу машины." } }, "th": { "stringUnit": { "state": "translated", - "value": "ใช้เครื่อง Cloud จากทุกแอป" + "value": "cmux ส่งต่อพอร์ตได้โดยไม่ต้องใช้ Cloud VPN เว็บเบราว์เซอร์และแอป Mac อื่นๆ ต้องใช้ Cloud VPN เพื่อเข้าถึงบริการที่ผูกกับที่อยู่ส่วนตัวของเครื่อง" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Cloud makinelerini her uygulamadan kullanın" + "value": "cmux, portları Cloud VPN olmadan yönlendirir. Web tarayıcıları ve diğer Mac uygulamaları, makinenin özel adresine bağlı hizmetlere ulaşmak için Cloud VPN’e ihtiyaç duyar." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Використовуйте Cloud-машини з будь-якої програми" + "value": "cmux перенаправляє порти без Cloud VPN. Веббраузерам та іншим застосункам Mac потрібен Cloud VPN, щоб звертатися до служб, прив’язаних до приватної адреси машини." } } } }, - "cloud.vpn.setup.subtitle": { + "cloudTree.ports.setupVPN": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Optional access to each VM's private address and original ports, such as 10.40.0.10:3000." + "value": "Set Up VPN…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Optionaler Zugriff auf die private Adresse und die ursprünglichen Ports jeder VM, etwa 10.40.0.10:3000." + "value": "VPN einrichten…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Accès facultatif à chaque adresse privée et aux ports d’origine des VM, comme 10.40.0.10:3000." + "value": "Configurer le VPN…" } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Acceso opcional a la dirección privada y los puertos originales de cada VM, como 10.40.0.10:3000." + "value": "إعداد VPN…" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "各VMのプライベートアドレスと元のポート(例:10.40.0.10:3000)にアクセスするための任意の設定です。" + "value": "Configurar VPN…" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "可选设置,用于访问每台 VM 的私有地址和原始端口,例如 10.40.0.10:3000。" + "value": "設定 VPN…" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "選用設定,可存取每台 VM 的私有位址和原始連接埠,例如 10.40.0.10:3000。" + "value": "设置 VPN…" } }, "ko": { "stringUnit": { "state": "translated", - "value": "각 VM의 비공개 주소와 원래 포트(예: 10.40.0.10:3000)에 접근하기 위한 선택 설정입니다." + "value": "VPN 설정…" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "وصول اختياري إلى العنوان الخاص والمنافذ الأصلية لكل جهاز افتراضي، مثل 10.40.0.10:3000." + "value": "VPN を設定…" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Opcionalni pristup privatnoj adresi i izvornim portovima svake VM, na primjer 10.40.0.10:3000." + "value": "Postavi VPN…" } }, "da": { "stringUnit": { "state": "translated", - "value": "Valgfri adgang til hver VM’s private adresse og oprindelige porte, f.eks. 10.40.0.10:3000." + "value": "Konfigurer VPN…" } }, "it": { "stringUnit": { "state": "translated", - "value": "Accesso facoltativo all’indirizzo privato e alle porte originali di ogni VM, ad esempio 10.40.0.10:3000." + "value": "Configura VPN…" } }, "km": { "stringUnit": { "state": "translated", - "value": "ចូលប្រើអាសយដ្ឋានឯកជន និងច្រកដើមរបស់ VM នីមួយៗ ដូចជា 10.40.0.10:3000 ជាជម្រើស។" + "value": "រៀបចំ VPN…" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Valgfri tilgang til hver VMs private adresse og opprinnelige porter, som 10.40.0.10:3000." + "value": "Konfigurer VPN…" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Opcjonalny dostęp do prywatnego adresu i oryginalnych portów każdej maszyny VM, na przykład 10.40.0.10:3000." + "value": "Skonfiguruj VPN…" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Acesso opcional ao endereço privado e às portas originais de cada VM, como 10.40.0.10:3000." + "value": "Configurar VPN…" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Необязательный доступ к частному адресу и исходным портам каждой VM, например 10.40.0.10:3000." + "value": "Настроить VPN…" } }, "th": { "stringUnit": { "state": "translated", - "value": "การเข้าถึงที่ไม่บังคับไปยังที่อยู่ส่วนตัวและพอร์ตเดิมของ VM แต่ละเครื่อง เช่น 10.40.0.10:3000" + "value": "ตั้งค่า VPN…" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Her VM’nin özel adresine ve özgün bağlantı noktalarına isteğe bağlı erişim; örneğin 10.40.0.10:3000." + "value": "VPN’i Kur…" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Необов’язковий доступ до приватної адреси та початкових портів кожної VM, наприклад 10.40.0.10:3000." + "value": "Налаштувати VPN…" } } } }, - "cloud.vpn.setup.howItWorks.title": { + "cloudTree.ports.stale": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "How it works" + "value": "Port list may be out of date" } }, "de": { "stringUnit": { "state": "translated", - "value": "So funktioniert es" + "value": "Portliste möglicherweise veraltet" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Fonctionnement" + "value": "La liste des ports peut être obsolète" } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Cómo funciona" + "value": "قد تكون قائمة المنافذ قديمة" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "仕組み" + "value": "La lista de puertos puede estar desactualizada" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "工作原理" + "value": "連接埠清單可能已過時" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "運作方式" + "value": "端口列表可能已过期" } }, "ko": { "stringUnit": { "state": "translated", - "value": "작동 방식" + "value": "포트 목록이 오래되었을 수 있음" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "طريقة العمل" + "value": "ポートリストが古い可能性があります" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Kako radi" + "value": "Lista portova je možda zastarjela" } }, "da": { "stringUnit": { "state": "translated", - "value": "Sådan fungerer det" + "value": "Portlisten er muligvis forældet" } }, "it": { "stringUnit": { "state": "translated", - "value": "Come funziona" + "value": "L’elenco delle porte potrebbe non essere aggiornato" } }, "km": { "stringUnit": { "state": "translated", - "value": "របៀបដំណើរការ" + "value": "បញ្ជីច្រកអាចហួសសម័យ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Slik fungerer det" + "value": "Portlisten kan være utdatert" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Jak to działa" + "value": "Lista portów może być nieaktualna" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Como funciona" + "value": "A lista de portas pode estar desatualizada" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Как это работает" + "value": "Список портов может быть устаревшим" } }, "th": { "stringUnit": { "state": "translated", - "value": "วิธีการทำงาน" + "value": "รายการพอร์ตอาจไม่เป็นปัจจุบัน" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Nasıl çalışır" + "value": "Port listesi güncel olmayabilir" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Як це працює" + "value": "Список портів може бути застарілим" } } } }, - "cloud.vpn.setup.status.off": { + "cloudTree.ports.stale.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Off. Your Cloud panes continue to work through cmux's built-in route." + "value": "The last scan could not be refreshed. Listed services may have changed; refresh to check again. cmux forwarding does not need Cloud VPN." } }, "de": { "stringUnit": { "state": "translated", - "value": "Aus. Ihre Cloud-Bereiche funktionieren weiterhin über die integrierte Verbindung von cmux." + "value": "Der letzte Scan konnte nicht aktualisiert werden. Die aufgeführten Dienste könnten sich geändert haben. Aktualisieren Sie erneut. Die cmux-Weiterleitung benötigt kein Cloud-VPN." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Désactivé. Vos volets Cloud continuent de fonctionner via la connexion intégrée de cmux." + "value": "La dernière analyse n’a pas pu être actualisée. Les services listés peuvent avoir changé ; actualisez pour vérifier. Le transfert cmux ne nécessite pas de VPN Cloud." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Desactivada. Tus paneles Cloud siguen funcionando mediante la conexión integrada de cmux." + "value": "تعذر تحديث آخر فحص. ربما تغيرت الخدمات المدرجة؛ حدّث للفحص مجددًا. لا تحتاج إعادة توجيه cmux إلى Cloud VPN." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "オフ。Cloudペインは引き続きcmux内蔵の接続経路で動作します。" + "value": "No se pudo actualizar el último escaneo. Los servicios listados pueden haber cambiado; actualiza para comprobarlos. El reenvío de cmux no necesita Cloud VPN." } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "已关闭。Cloud 面板仍通过 cmux 内置连接工作。" + "value": "無法重新整理上次掃描結果。列出的服務可能已變更;請重新整理以再次檢查。cmux 轉送不需要 Cloud VPN。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "已關閉。Cloud 面板仍透過 cmux 內建連線運作。" + "value": "无法刷新上次扫描结果。列出的服务可能已更改;请刷新以再次检查。cmux 转发无需 Cloud VPN。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "꺼짐. Cloud 패널은 cmux의 내장 연결을 통해 계속 작동합니다." + "value": "마지막 검색 결과를 새로 고치지 못했습니다. 나열된 서비스가 변경되었을 수 있으니 새로 고쳐 확인하세요. cmux 전달에는 Cloud VPN이 필요하지 않습니다." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "متوقف. تستمر لوحات Cloud في العمل عبر اتصال cmux المضمن." + "value": "前回のスキャンを更新できませんでした。表示されたサービスが変わっている可能性があります。更新して再確認してください。cmux の転送に Cloud VPN は不要です。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Isključeno. Cloud paneli i dalje rade preko ugrađene cmux veze." + "value": "Posljednje skeniranje nije se moglo osvježiti. Navedeni servisi su se možda promijenili; osvježite da ponovo provjerite. Prosljeđivanje u cmux-u ne treba Cloud VPN." } }, "da": { "stringUnit": { "state": "translated", - "value": "Fra. Dine Cloud-paneler fungerer stadig via cmux’ indbyggede forbindelse." + "value": "Den seneste scanning kunne ikke opdateres. De viste tjenester kan have ændret sig; opdater for at kontrollere igen. Videresendelse i cmux kræver ikke Cloud VPN." } }, "it": { "stringUnit": { "state": "translated", - "value": "Disattivata. I pannelli Cloud continuano a funzionare tramite la connessione integrata di cmux." + "value": "Non è stato possibile aggiornare l’ultima scansione. I servizi elencati potrebbero essere cambiati; aggiorna per controllare di nuovo. L’inoltro di cmux non richiede la VPN Cloud." } }, "km": { "stringUnit": { "state": "translated", - "value": "បិទ។ ផ្ទាំង Cloud របស់អ្នកនៅតែដំណើរការតាមការភ្ជាប់ដែលមានស្រាប់របស់ cmux។" + "value": "មិនអាចផ្ទុកការស្កេនចុងក្រោយឡើងវិញបានទេ។ សេវាកម្មដែលបានរាយអាចបានផ្លាស់ប្តូរ; ផ្ទុកឡើងវិញដើម្បីពិនិត្យម្តងទៀត។ ការបញ្ជូនបន្តរបស់ cmux មិនត្រូវការ Cloud VPN ទេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Av. Cloud-panelene dine fortsetter å fungere gjennom cmux sin innebygde forbindelse." + "value": "Den siste skanningen kunne ikke oppdateres. De oppførte tjenestene kan ha endret seg; oppdater for å sjekke på nytt. Videresending i cmux trenger ikke Cloud VPN." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Wyłączona. Panele Cloud nadal działają przez wbudowane połączenie cmux." + "value": "Nie udało się odświeżyć ostatniego skanowania. Wymienione usługi mogły się zmienić; odśwież, aby sprawdzić ponownie. Przekierowywanie w cmux nie wymaga Cloud VPN." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Desativada. Seus painéis Cloud continuam funcionando pela conexão integrada do cmux." + "value": "Não foi possível atualizar a última verificação. Os serviços listados podem ter mudado; atualize para verificar de novo. O encaminhamento do cmux não precisa do Cloud VPN." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Выключено. Панели Cloud продолжают работать через встроенное соединение cmux." + "value": "Не удалось обновить последнее сканирование. Перечисленные службы могли измениться; обновите, чтобы проверить снова. Перенаправлению cmux Cloud VPN не нужен." } }, "th": { "stringUnit": { "state": "translated", - "value": "ปิดอยู่ แผง Cloud ยังคงทำงานผ่านการเชื่อมต่อในตัวของ cmux" + "value": "ไม่สามารถรีเฟรชการสแกนครั้งล่าสุดได้ บริการที่แสดงอาจเปลี่ยนไปแล้ว รีเฟรชเพื่อตรวจสอบอีกครั้ง การส่งต่อของ cmux ไม่ต้องใช้ Cloud VPN" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Kapalı. Cloud panelleriniz cmux’un yerleşik bağlantısıyla çalışmaya devam eder." + "value": "Son tarama yenilenemedi. Listelenen hizmetler değişmiş olabilir; yeniden denetlemek için yenileyin. cmux yönlendirmesi Cloud VPN gerektirmez." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Вимкнено. Панелі Cloud продовжують працювати через вбудоване з’єднання cmux." + "value": "Не вдалося оновити останнє сканування. Перелічені служби могли змінитися; оновіть, щоб перевірити знову. Перенаправлення cmux не потребує Cloud VPN." } } } }, - "cloud.vpn.setup.steps.title": { + "cloudTree.ports.unavailable.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "First-time setup" + "value": "The port scan failed; this does not mean no service is listening. Existing cmux ports may still work. Refresh to retry; Cloud VPN is not required." } }, "de": { "stringUnit": { "state": "translated", - "value": "Ersteinrichtung" + "value": "Der Portscan ist fehlgeschlagen; das bedeutet nicht, dass kein Dienst lauscht. Vorhandene cmux-Ports funktionieren möglicherweise weiter. Aktualisieren Sie; Cloud-VPN ist nicht erforderlich." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Première configuration" + "value": "L’analyse des ports a échoué ; cela ne signifie pas qu’aucun service n’écoute. Les ports cmux existants peuvent encore fonctionner. Actualisez pour réessayer ; le VPN Cloud n’est pas nécessaire." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Configuración inicial" + "value": "فشل فحص المنافذ؛ هذا لا يعني عدم وجود خدمة تستمع. قد تظل منافذ cmux الحالية تعمل. حدّث للمحاولة مجددًا؛ Cloud VPN غير مطلوب." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "初回設定" + "value": "Falló el escaneo de puertos; no significa que no haya servicios en escucha. Los puertos de cmux existentes pueden seguir funcionando. Actualiza para reintentar; Cloud VPN no es necesario." } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "首次设置" + "value": "連接埠掃描失敗;這不代表沒有服務正在監聽。現有 cmux 連接埠可能仍可使用。請重新整理以重試;不需要 Cloud VPN。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "首次設定" + "value": "端口扫描失败;这并不代表没有服务正在监听。现有 cmux 端口可能仍可使用。请刷新以重试;无需 Cloud VPN。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "최초 설정" + "value": "포트 검색이 실패했지만 수신 대기 서비스가 없다는 뜻은 아닙니다. 기존 cmux 포트는 계속 작동할 수 있습니다. 새로 고쳐 다시 시도하세요. Cloud VPN은 필요하지 않습니다." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "الإعداد الأولي" + "value": "ポートスキャンが失敗しましたが、サービスが待ち受けていないとは限りません。既存の cmux ポートは引き続き動作する可能性があります。更新して再試行してください。Cloud VPN は不要です。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Prvo podešavanje" + "value": "Skeniranje portova nije uspjelo; to ne znači da nijedan servis ne sluša. Postojeći cmux portovi možda i dalje rade. Osvježite za ponovni pokušaj; Cloud VPN nije potreban." } }, "da": { "stringUnit": { "state": "translated", - "value": "Første opsætning" + "value": "Portscanningen mislykkedes; det betyder ikke, at ingen tjeneste lytter. Eksisterende cmux-porte virker muligvis stadig. Opdater for at prøve igen; Cloud VPN er ikke påkrævet." } }, "it": { "stringUnit": { "state": "translated", - "value": "Prima configurazione" + "value": "La scansione delle porte non è riuscita; ciò non significa che nessun servizio sia in ascolto. Le porte cmux esistenti potrebbero funzionare ancora. Aggiorna per riprovare; la VPN Cloud non è necessaria." } }, "km": { "stringUnit": { "state": "translated", - "value": "ការរៀបចំលើកដំបូង" + "value": "ការស្កេនច្រកបានបរាជ័យ; នេះមិនមានន័យថាគ្មានសេវាកម្មណាកំពុងស្តាប់ទេ។ ច្រក cmux ដែលមានស្រាប់អាចនៅតែដំណើរការ។ ផ្ទុកឡើងវិញដើម្បីព្យាយាមម្តងទៀត; មិនត្រូវការ Cloud VPN ទេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Førstegangsoppsett" + "value": "Portskanningen mislyktes; det betyr ikke at ingen tjeneste lytter. Eksisterende cmux-porter kan fortsatt fungere. Oppdater for å prøve igjen; Cloud VPN er ikke nødvendig." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Pierwsza konfiguracja" + "value": "Skanowanie portów nie powiodło się; nie oznacza to, że żadna usługa nie nasłuchuje. Istniejące porty cmux mogą nadal działać. Odśwież, aby spróbować ponownie; Cloud VPN nie jest wymagany." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Primeira configuração" + "value": "A verificação de portas falhou; isso não significa que nenhum serviço esteja em escuta. As portas existentes do cmux ainda podem funcionar. Atualize para tentar de novo; o Cloud VPN não é necessário." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Первая настройка" + "value": "Сканирование портов не удалось; это не значит, что ни одна служба не прослушивает порты. Существующие порты cmux могут по-прежнему работать. Обновите, чтобы повторить; Cloud VPN не требуется." } }, "th": { "stringUnit": { "state": "translated", - "value": "การตั้งค่าครั้งแรก" + "value": "การสแกนพอร์ตล้มเหลว ไม่ได้หมายความว่าไม่มีบริการที่กำลังรับฟัง พอร์ต cmux ที่มีอยู่อาจยังใช้งานได้ รีเฟรชเพื่อลองอีกครั้ง ไม่จำเป็นต้องใช้ Cloud VPN" } }, "tr": { "stringUnit": { "state": "translated", - "value": "İlk kurulum" + "value": "Port taraması başarısız oldu; bu, dinleyen bir hizmet olmadığı anlamına gelmez. Mevcut cmux portları hâlâ çalışıyor olabilir. Yeniden denemek için yenileyin; Cloud VPN gerekmez." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Перше налаштування" + "value": "Сканування портів не вдалося; це не означає, що жодна служба не прослуховує. Наявні порти cmux можуть і далі працювати. Оновіть, щоб повторити; Cloud VPN не потрібен." } } } }, - "cloud.vpn.setup.steps.extension": { + "cloudTree.ports.unsupported": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "1. Click Connect Cloud VPN. When macOS asks, allow the cmux network extension in System Settings." + "value": "Ports are not supported by this provider." } }, "de": { "stringUnit": { "state": "translated", - "value": "1. Klicken Sie auf Cloud-VPN verbinden. Erlauben Sie auf Aufforderung von macOS die cmux-Netzwerkerweiterung in den Systemeinstellungen." + "value": "Ports werden von diesem Anbieter nicht unterstützt." } }, "fr": { "stringUnit": { "state": "translated", - "value": "1. Cliquez sur Connecter le VPN Cloud. Lorsque macOS le demande, autorisez l’extension réseau cmux dans Réglages Système." + "value": "Les ports ne sont pas pris en charge par ce fournisseur." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "1. Haz clic en Conectar VPN de Cloud. Cuando macOS lo solicite, permite la extensión de red de cmux en Ajustes del Sistema." + "value": "لا يدعم هذا الموفر المنافذ." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "1. 「Cloud VPNに接続」をクリックします。macOSに求められたら、システム設定でcmuxのネットワーク機能拡張を許可します。" + "value": "Este proveedor no admite puertos." } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "1. 点击“连接 Cloud VPN”。macOS 提示时,在系统设置中允许 cmux 网络扩展。" + "value": "此提供者不支援連接埠。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "1. 按一下「連接 Cloud VPN」。macOS 提示時,請在系統設定中允許 cmux 網路延伸功能。" + "value": "此提供商不支持端口。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "1. Cloud VPN 연결을 클릭합니다. macOS에서 요청하면 시스템 설정에서 cmux 네트워크 확장을 허용합니다." + "value": "이 제공자는 포트를 지원하지 않습니다." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "1. انقر على توصيل VPN الخاص بـ Cloud. عندما يطلب macOS ذلك، اسمح بامتداد شبكة cmux في إعدادات النظام." + "value": "このプロバイダーはポートをサポートしていません。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "1. Kliknite Poveži Cloud VPN. Kada macOS zatraži, dozvolite cmux mrežni dodatak u Postavkama sistema." + "value": "Ovaj pružalac ne podržava portove." } }, "da": { "stringUnit": { "state": "translated", - "value": "1. Klik på Forbind Cloud VPN. Når macOS spørger, skal du tillade cmux-netværksudvidelsen i Systemindstillinger." + "value": "Porte understøttes ikke af denne udbyder." } }, "it": { "stringUnit": { "state": "translated", - "value": "1. Fai clic su Connetti VPN Cloud. Quando macOS lo richiede, consenti l’estensione di rete cmux nelle Impostazioni di Sistema." + "value": "Le porte non sono supportate da questo provider." } }, "km": { "stringUnit": { "state": "translated", - "value": "1. ចុច ភ្ជាប់ Cloud VPN។ ពេល macOS ស្នើ សូមអនុញ្ញាតផ្នែកបន្ថែមបណ្តាញ cmux ក្នុងការកំណត់ប្រព័ន្ធ។" + "value": "អ្នកផ្តល់សេវានេះមិនគាំទ្រច្រកទេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "1. Klikk Koble til Cloud VPN. Når macOS spør, tillat cmux-nettverksutvidelsen i Systeminnstillinger." + "value": "Porter støttes ikke av denne leverandøren." } }, "pl": { "stringUnit": { "state": "translated", - "value": "1. Kliknij Połącz z Cloud VPN. Gdy macOS poprosi, zezwól na rozszerzenie sieci cmux w Ustawieniach systemowych." + "value": "Ten dostawca nie obsługuje portów." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "1. Clique em Conectar Cloud VPN. Quando o macOS pedir, permita a extensão de rede do cmux nos Ajustes do Sistema." + "value": "Este provedor não oferece suporte a portas." } }, "ru": { "stringUnit": { "state": "translated", - "value": "1. Нажмите Подключить Cloud VPN. Когда macOS попросит, разрешите сетевое расширение cmux в системных настройках." + "value": "Этот провайдер не поддерживает порты." } }, "th": { "stringUnit": { "state": "translated", - "value": "1. คลิก เชื่อมต่อ Cloud VPN เมื่อ macOS ขอ ให้อนุญาตส่วนขยายเครือข่าย cmux ในการตั้งค่าระบบ" + "value": "ผู้ให้บริการนี้ไม่รองรับพอร์ต" } }, "tr": { "stringUnit": { "state": "translated", - "value": "1. Cloud VPN’e bağlan’a tıklayın. macOS istediğinde Sistem Ayarları’nda cmux ağ uzantısına izin verin." + "value": "Bu sağlayıcı portları desteklemiyor." } }, "uk": { "stringUnit": { "state": "translated", - "value": "1. Натисніть Підключити Cloud VPN. Коли macOS попросить, дозвольте мережеве розширення cmux у Системних параметрах." + "value": "Цей постачальник не підтримує порти." } } } }, - "cloud.vpn.setup.steps.settings": { + "cloudTree.ports.unsupported.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open General > Login Items & Extensions > Network Extensions, then enable cmux." + "value": "This provider has no supported in-app port route. Open a shell to access the service inside the machine. Cloud VPN does not add provider support." } }, "de": { "stringUnit": { "state": "translated", - "value": "Öffnen Sie Allgemein > Anmeldeobjekte & Erweiterungen > Netzwerkerweiterungen und aktivieren Sie cmux." + "value": "Dieser Anbieter unterstützt keine Portverbindung in der App. Öffnen Sie eine Shell, um innerhalb der Maschine auf den Dienst zuzugreifen. Cloud-VPN fügt keine Anbieterunterstützung hinzu." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ouvrez Général > Ouverture et extensions > Extensions réseau, puis activez cmux." + "value": "Ce fournisseur ne prend pas en charge les ports dans l’app. Ouvrez un shell pour accéder au service dans la machine. Le VPN Cloud n’ajoute pas cette prise en charge." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Abre General > Ítems de inicio y extensiones > Extensiones de red y activa cmux." + "value": "لا يدعم هذا الموفر مسار منافذ داخل التطبيق. افتح صدفة للوصول إلى الخدمة داخل الجهاز. لا يضيف Cloud VPN دعمًا للموفر." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "「一般」>「ログイン項目と機能拡張」>「ネットワーク機能拡張」を開き、cmuxを有効にします。" + "value": "Este proveedor no admite una ruta de puertos dentro de la app. Abre una shell para acceder al servicio dentro de la máquina. Cloud VPN no añade soporte al proveedor." } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "打开“通用”>“登录项与扩展”>“网络扩展”,然后启用 cmux。" + "value": "此提供者不支援應用程式內連接埠路徑。請開啟 Shell 以在機器內存取服務。Cloud VPN 不會新增提供者支援。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "打開「一般」>「登入項目與延伸功能」>「網路延伸功能」,然後啟用 cmux。" + "value": "此提供商不支持应用内端口路由。请打开 Shell 以在机器内部访问服务。Cloud VPN 不会添加提供商支持。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "일반 > 로그인 항목 및 확장 프로그램 > 네트워크 확장을 열고 cmux를 활성화합니다." + "value": "이 제공자는 앱 내 포트 경로를 지원하지 않습니다. 셸을 열어 머신 내부의 서비스에 접근하세요. Cloud VPN으로 제공자 지원이 추가되지는 않습니다." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "افتح عام > عناصر الدخول والامتدادات > امتدادات الشبكة، ثم فعّل cmux." + "value": "このプロバイダーはアプリ内のポート経路に対応していません。シェルを開き、マシン内でサービスにアクセスしてください。Cloud VPN を有効にしても対応は追加されません。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Otvorite Opšte > Stavke za prijavu i dodaci > Mrežni dodaci, pa omogućite cmux." + "value": "Ovaj pružalac nema podržanu rutu portova unutar aplikacije. Otvorite shell da pristupite servisu unutar mašine. Cloud VPN ne dodaje podršku pružaoca." } }, "da": { "stringUnit": { "state": "translated", - "value": "Åbn Generelt > Loginemner og udvidelser > Netværksudvidelser, og aktivér cmux." + "value": "Denne udbyder har ingen understøttet portrute i appen. Åbn en shell for at få adgang til tjenesten inde i maskinen. Cloud VPN tilføjer ikke understøttelse for udbyderen." } }, "it": { "stringUnit": { "state": "translated", - "value": "Apri Generali > Elementi login ed estensioni > Estensioni di rete, quindi abilita cmux." + "value": "Questo provider non ha un percorso delle porte supportato nell’app. Apri una shell per accedere al servizio all’interno della macchina. La VPN Cloud non aggiunge il supporto del provider." } }, "km": { "stringUnit": { "state": "translated", - "value": "បើក ទូទៅ > ធាតុចូល និងផ្នែកបន្ថែម > ផ្នែកបន្ថែមបណ្តាញ ហើយបើក cmux។" + "value": "អ្នកផ្តល់សេវានេះគ្មានផ្លូវច្រកក្នុងកម្មវិធីដែលគាំទ្រទេ។ បើក shell ដើម្បីចូលប្រើសេវាកម្មនៅខាងក្នុងម៉ាស៊ីន។ Cloud VPN មិនបន្ថែមការគាំទ្រអ្នកផ្តល់សេវាទេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Åpne Generelt > Påloggingselementer og utvidelser > Nettverksutvidelser, og aktiver cmux." + "value": "Denne leverandøren har ingen støttet portrute i appen. Åpne et skall for å få tilgang til tjenesten inne i maskinen. Cloud VPN legger ikke til støtte for leverandøren." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Otwórz Ogólne > Elementy logowania i rozszerzenia > Rozszerzenia sieciowe, a następnie włącz cmux." + "value": "Ten dostawca nie ma obsługiwanej trasy portów w aplikacji. Otwórz powłokę, aby uzyskać dostęp do usługi wewnątrz maszyny. Cloud VPN nie dodaje obsługi dostawcy." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Abra Geral > Itens de Início e Extensões > Extensões de Rede e ative o cmux." + "value": "Este provedor não tem uma rota de portas compatível no app. Abra um shell para acessar o serviço dentro da máquina. O Cloud VPN não adiciona suporte ao provedor." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Откройте Основные > Объекты входа и расширения > Сетевые расширения и включите cmux." + "value": "У этого провайдера нет поддерживаемого маршрута портов в приложении. Откройте оболочку, чтобы получить доступ к службе внутри машины. Cloud VPN не добавляет поддержку провайдера." } }, "th": { "stringUnit": { "state": "translated", - "value": "เปิด ทั่วไป > รายการเข้าสู่ระบบและส่วนขยาย > ส่วนขยายเครือข่าย แล้วเปิดใช้ cmux" + "value": "ผู้ให้บริการนี้ไม่มีเส้นทางพอร์ตในแอปที่รองรับ เปิดเชลล์เพื่อเข้าถึงบริการภายในเครื่อง Cloud VPN ไม่ได้เพิ่มการรองรับผู้ให้บริการ" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Genel > Giriş Öğeleri ve Uzantılar > Ağ Uzantıları’nı açın ve cmux’u etkinleştirin." + "value": "Bu sağlayıcının desteklenen bir uygulama içi port yolu yok. Makinenin içindeki hizmete erişmek için bir kabuk açın. Cloud VPN sağlayıcı desteği eklemez." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Відкрийте Загальні > Об’єкти входу та розширення > Мережеві розширення й увімкніть cmux." + "value": "Цей постачальник не має підтримуваного маршруту портів у застосунку. Відкрийте оболонку, щоб отримати доступ до служби всередині машини. Cloud VPN не додає підтримку постачальника." } } } }, - "cloud.vpn.setup.steps.settingsLegacy": { + "cloudTree.port.openInCmux": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open Privacy & Security and allow the cmux extension." + "value": "Open in cmux" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Öffnen Sie Datenschutz & Sicherheit und erlauben Sie die cmux-Erweiterung." + "value": "فتح في cmux" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Ouvrez Confidentialité et sécurité et autorisez l’extension cmux." + "value": "In cmux öffnen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Abre Privacidad y seguridad y permite la extensión de cmux." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "「プライバシーとセキュリティ」を開き、cmuxの機能拡張を許可します。" + "value": "Abrir en cmux" } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "打开“隐私与安全性”,然后允许 cmux 扩展。" + "value": "Ouvrir dans cmux" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "打開「隱私權與安全性」,然後允許 cmux 延伸功能。" + "value": "cmuxで開く" } }, "ko": { "stringUnit": { "state": "translated", - "value": "개인정보 보호 및 보안을 열고 cmux 확장을 허용합니다." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "افتح الخصوصية والأمان واسمح بامتداد cmux." + "value": "cmux에서 열기" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Otvorite Privatnost i sigurnost i dozvolite cmux dodatak." + "value": "在 cmux 中打开" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Åbn Anonymitet og sikkerhed, og tillad cmux-udvidelsen." + "value": "在 cmux 中開啟" } - }, - "it": { + } + } + }, + "cloudTree.port.openInCmux.help": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Apri Privacy e sicurezza e consenti l’estensione cmux." + "value": "Open in cmux. No VPN setup needed." } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "បើក ឯកជនភាព និងសុវត្ថិភាព ហើយអនុញ្ញាតផ្នែកបន្ថែម cmux។" + "value": "افتح في cmux. لا يلزم إعداد VPN." } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Åpne Personvern og sikkerhet og tillat cmux-utvidelsen." + "value": "In cmux öffnen. Keine VPN-Einrichtung nötig." } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Otwórz Prywatność i ochrona i zezwól na rozszerzenie cmux." + "value": "Abrir en cmux. No hace falta configurar una VPN." } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Abra Privacidade e Segurança e permita a extensão do cmux." + "value": "Ouvrir dans cmux. Aucune configuration VPN nécessaire." } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Откройте Конфиденциальность и безопасность и разрешите расширение cmux." + "value": "cmux で開きます。VPN の設定は不要です。" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "เปิด ความเป็นส่วนตัวและความปลอดภัย แล้วอนุญาตส่วนขยาย cmux" + "value": "cmux에서 열기. VPN 설정이 필요하지 않습니다." } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Gizlilik ve Güvenlik’i açın ve cmux uzantısına izin verin." + "value": "在 cmux 中打开。无需设置 VPN。" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Відкрийте Конфіденційність і безпека та дозвольте розширення cmux." + "value": "在 cmux 中開啟。無需設定 VPN。" } } } }, - "cloud.vpn.setup.steps.configuration": { + "cloudTree.port.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "2. Allow cmux to add a VPN configuration named cmux Cloud. This is a separate macOS permission." + "value": "Port %@" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "2. Erlauben Sie cmux, eine VPN-Konfiguration namens cmux Cloud hinzuzufügen. Dies ist eine separate macOS-Berechtigung." + "value": "المنفذ %@" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "2. Autorisez cmux à ajouter une configuration VPN nommée cmux Cloud. Il s’agit d’une autorisation macOS distincte." + "value": "Port-Nr. %@" } }, "es": { "stringUnit": { "state": "translated", - "value": "2. Permite que cmux añada una configuración VPN llamada cmux Cloud. Este es un permiso independiente de macOS." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "2. cmux Cloudという名前のVPN構成の追加を許可します。これは別のmacOS権限です。" + "value": "Puerto %@" } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "2. 允许 cmux 添加名为 cmux Cloud 的 VPN 配置。这是单独的 macOS 权限。" + "value": "Port n° %@" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "2. 允許 cmux 加入名為 cmux Cloud 的 VPN 設定。這是另一項 macOS 權限。" + "value": "ポート %@" } }, "ko": { "stringUnit": { "state": "translated", - "value": "2. cmux가 cmux Cloud라는 VPN 구성을 추가하도록 허용합니다. 이는 별도의 macOS 권한입니다." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "2. اسمح لـ cmux بإضافة إعداد VPN باسم cmux Cloud. هذا إذن منفصل في macOS." + "value": "포트 %@" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "2. Dozvolite cmux-u da doda VPN konfiguraciju pod imenom cmux Cloud. Ovo je posebna macOS dozvola." + "value": "端口 %@" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "2. Tillad cmux at tilføje en VPN-konfiguration med navnet cmux Cloud. Dette er en separat macOS-tilladelse." + "value": "連接埠 %@" } - }, - "it": { + } + } + }, + "cloudTree.placeholder.deviceOffline": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "2. Consenti a cmux di aggiungere una configurazione VPN chiamata cmux Cloud. È un’autorizzazione macOS separata." + "value": "Offline — its workspaces return when it does" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "2. អនុញ្ញាតឱ្យ cmux បន្ថែមការកំណត់ VPN ឈ្មោះ cmux Cloud។ នេះជាសិទ្ធិ macOS ផ្សេងមួយ។" + "value": "غير متصل — ستعود مساحات عمله عند اتصاله مجددًا" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "2. Tillat cmux å legge til en VPN-konfigurasjon kalt cmux Cloud. Dette er en separat macOS-tillatelse." + "value": "Offline — die Arbeitsbereiche erscheinen wieder, sobald das Gerät online ist" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "2. Zezwól cmux dodać konfigurację VPN o nazwie cmux Cloud. To osobne uprawnienie macOS." + "value": "Sin conexión — sus espacios de trabajo volverán cuando se conecte" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "2. Permita que o cmux adicione uma configuração VPN chamada cmux Cloud. Esta é uma permissão separada do macOS." + "value": "Hors ligne — ses espaces de travail réapparaîtront à sa reconnexion" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "2. Разрешите cmux добавить VPN-конфигурацию с именем cmux Cloud. Это отдельное разрешение macOS." + "value": "オフライン — 再接続するとワークスペースが戻ります" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "2. อนุญาตให้ cmux เพิ่มการกำหนดค่า VPN ชื่อ cmux Cloud นี่เป็นสิทธิ์ macOS แยกต่างหาก" + "value": "오프라인 — 다시 연결되면 작업 공간이 돌아옵니다" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "2. cmux’un cmux Cloud adlı bir VPN yapılandırması eklemesine izin verin. Bu ayrı bir macOS iznidir." + "value": "离线 — 重新连接后会恢复工作区" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "2. Дозвольте cmux додати конфігурацію VPN з назвою cmux Cloud. Це окремий дозвіл macOS." + "value": "離線 — 重新連線後會恢復工作區" } } } }, - "cloud.vpn.setup.steps.return": { + "cloud.vpn.setup.heading": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "3. Return to this pane. The connection continues automatically after approval. Disconnect here when finished. Quitting cmux or signing out also disconnects it." + "value": "Use Cloud machines from any app" } }, "de": { "stringUnit": { "state": "translated", - "value": "3. Kehren Sie zu diesem Bereich zurück. Die Verbindung wird nach der Genehmigung automatisch fortgesetzt. Trennen Sie sie hier, wenn Sie fertig sind. Das Beenden von cmux oder Abmelden trennt sie ebenfalls." + "value": "Cloud-Maschinen aus jeder App verwenden" } }, "fr": { "stringUnit": { "state": "translated", - "value": "3. Revenez à ce volet. La connexion reprend automatiquement après autorisation. Déconnectez-la ici lorsque vous avez terminé. Quitter cmux ou fermer la session la déconnecte aussi." + "value": "Utiliser les machines Cloud depuis toute app" } }, "es": { "stringUnit": { "state": "translated", - "value": "3. Vuelve a este panel. La conexión continúa automáticamente tras la autorización. Desconéctala aquí cuando termines. Salir de cmux o cerrar sesión también la desconecta." + "value": "Usar máquinas Cloud desde cualquier app" } }, "ja": { "stringUnit": { "state": "translated", - "value": "3. このペインに戻ります。承認後、接続は自動的に続行されます。使い終わったらここで切断してください。cmuxの終了やサインアウトでも切断されます。" + "value": "ほかのアプリからCloudマシンを使う" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "3. 返回此面板。批准后连接会自动继续。完成后可在此断开连接。退出 cmux 或退出登录也会断开连接。" + "value": "从任何应用使用 Cloud 机器" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "3. 返回此面板。核准後連線會自動繼續。完成後可在此中斷連線。結束 cmux 或登出也會中斷連線。" + "value": "從任何 App 使用 Cloud 機器" } }, "ko": { "stringUnit": { "state": "translated", - "value": "3. 이 패널로 돌아옵니다. 승인 후 연결이 자동으로 계속됩니다. 사용을 마치면 여기에서 연결을 해제하세요. cmux를 종료하거나 로그아웃해도 연결이 해제됩니다." + "value": "모든 앱에서 Cloud 머신 사용" } }, "ar": { "stringUnit": { "state": "translated", - "value": "3. ارجع إلى هذه اللوحة. يستمر الاتصال تلقائيًا بعد الموافقة. اقطع الاتصال هنا عند الانتهاء. يؤدي إنهاء cmux أو تسجيل الخروج أيضًا إلى قطع الاتصال." + "value": "استخدام أجهزة Cloud من أي تطبيق" } }, "bs": { "stringUnit": { "state": "translated", - "value": "3. Vratite se na ovaj panel. Veza se nastavlja automatski nakon odobrenja. Ovdje prekinite vezu kada završite. Izlazak iz cmux-a ili odjava takođe prekida vezu." + "value": "Koristite Cloud mašine iz bilo koje aplikacije" } }, "da": { "stringUnit": { "state": "translated", - "value": "3. Gå tilbage til dette panel. Forbindelsen fortsætter automatisk efter godkendelsen. Afbryd her, når du er færdig. Hvis du afslutter cmux eller logger ud, afbrydes forbindelsen også." + "value": "Brug Cloud-maskiner fra alle apps" } }, "it": { "stringUnit": { "state": "translated", - "value": "3. Torna a questo pannello. La connessione continua automaticamente dopo l’autorizzazione. Disconnettila qui quando hai finito. Anche uscire da cmux o effettuare il logout la disconnette." + "value": "Usa le macchine Cloud da qualsiasi app" } }, "km": { "stringUnit": { "state": "translated", - "value": "3. ត្រឡប់ទៅផ្ទាំងនេះ។ ការភ្ជាប់នឹងបន្តដោយស្វ័យប្រវត្តិបន្ទាប់ពីអនុម័ត។ ផ្តាច់នៅទីនេះពេលបញ្ចប់។ ការបិទ cmux ឬចាកចេញក៏ផ្តាច់ការភ្ជាប់ដែរ។" + "value": "ប្រើម៉ាស៊ីន Cloud ពីកម្មវិធីណាមួយ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "3. Gå tilbake til dette panelet. Forbindelsen fortsetter automatisk etter godkjenning. Koble fra her når du er ferdig. Avslutning av cmux eller utlogging kobler også fra." + "value": "Bruk Cloud-maskiner fra alle apper" } }, "pl": { "stringUnit": { "state": "translated", - "value": "3. Wróć do tego panelu. Połączenie będzie kontynuowane automatycznie po zatwierdzeniu. Po zakończeniu rozłącz je tutaj. Zamknięcie cmux lub wylogowanie również rozłączy połączenie." + "value": "Używaj maszyn Cloud z dowolnej aplikacji" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "3. Volte a este painel. A conexão continuará automaticamente após a aprovação. Desconecte aqui quando terminar. Sair do cmux ou encerrar a sessão também desconecta." + "value": "Use máquinas Cloud em qualquer app" } }, "ru": { "stringUnit": { "state": "translated", - "value": "3. Вернитесь в эту панель. После подтверждения соединение продолжится автоматически. Завершив работу, отключите его здесь. Выход из cmux или системы также отключает соединение." + "value": "Используйте Cloud-машины из любого приложения" } }, "th": { "stringUnit": { "state": "translated", - "value": "3. กลับมาที่แผงนี้ การเชื่อมต่อจะดำเนินต่อโดยอัตโนมัติหลังการอนุมัติ ตัดการเชื่อมต่อที่นี่เมื่อเสร็จแล้ว การออกจาก cmux หรือออกจากระบบจะตัดการเชื่อมต่อด้วย" + "value": "ใช้เครื่อง Cloud จากทุกแอป" } }, "tr": { "stringUnit": { "state": "translated", - "value": "3. Bu panele dönün. Onaydan sonra bağlantı otomatik olarak devam eder. Bitirdiğinizde buradan bağlantıyı kesin. cmux’tan çıkmak veya oturumu kapatmak da bağlantıyı keser." + "value": "Cloud makinelerini her uygulamadan kullanın" } }, "uk": { "stringUnit": { "state": "translated", - "value": "3. Поверніться до цієї панелі. Після схвалення з’єднання продовжиться автоматично. Завершивши роботу, від’єднайте його тут. Вихід із cmux або системи також від’єднає з’єднання." + "value": "Використовуйте Cloud-машини з будь-якої програми" } } } }, - "cloud.vpn.setup.address.title": { + "cloud.vpn.setup.subtitle": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Private addresses" + "value": "Optional access to each VM's private address and original ports, such as 10.40.0.10:3000." } }, "de": { "stringUnit": { "state": "translated", - "value": "Private Adressen" + "value": "Optionaler Zugriff auf die private Adresse und die ursprünglichen Ports jeder VM, etwa 10.40.0.10:3000." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Adresses privées" + "value": "Accès facultatif à chaque adresse privée et aux ports d’origine des VM, comme 10.40.0.10:3000." } }, "es": { "stringUnit": { "state": "translated", - "value": "Direcciones privadas" + "value": "Acceso opcional a la dirección privada y los puertos originales de cada VM, como 10.40.0.10:3000." } }, "ja": { "stringUnit": { "state": "translated", - "value": "プライベートアドレス" + "value": "各VMのプライベートアドレスと元のポート(例:10.40.0.10:3000)にアクセスするための任意の設定です。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "私有地址" + "value": "可选设置,用于访问每台 VM 的私有地址和原始端口,例如 10.40.0.10:3000。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "私有位址" + "value": "選用設定,可存取每台 VM 的私有位址和原始連接埠,例如 10.40.0.10:3000。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "비공개 주소" + "value": "각 VM의 비공개 주소와 원래 포트(예: 10.40.0.10:3000)에 접근하기 위한 선택 설정입니다." } }, "ar": { "stringUnit": { "state": "translated", - "value": "العناوين الخاصة" + "value": "وصول اختياري إلى العنوان الخاص والمنافذ الأصلية لكل جهاز افتراضي، مثل 10.40.0.10:3000." } }, "bs": { "stringUnit": { "state": "translated", - "value": "Privatne adrese" + "value": "Opcionalni pristup privatnoj adresi i izvornim portovima svake VM, na primjer 10.40.0.10:3000." } }, "da": { "stringUnit": { "state": "translated", - "value": "Private adresser" + "value": "Valgfri adgang til hver VM’s private adresse og oprindelige porte, f.eks. 10.40.0.10:3000." } }, "it": { "stringUnit": { "state": "translated", - "value": "Indirizzi privati" + "value": "Accesso facoltativo all’indirizzo privato e alle porte originali di ogni VM, ad esempio 10.40.0.10:3000." } }, "km": { "stringUnit": { "state": "translated", - "value": "អាសយដ្ឋានឯកជន" + "value": "ចូលប្រើអាសយដ្ឋានឯកជន និងច្រកដើមរបស់ VM នីមួយៗ ដូចជា 10.40.0.10:3000 ជាជម្រើស។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Private adresser" + "value": "Valgfri tilgang til hver VMs private adresse og opprinnelige porter, som 10.40.0.10:3000." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Prywatne adresy" + "value": "Opcjonalny dostęp do prywatnego adresu i oryginalnych portów każdej maszyny VM, na przykład 10.40.0.10:3000." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Endereços privados" + "value": "Acesso opcional ao endereço privado e às portas originais de cada VM, como 10.40.0.10:3000." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Частные адреса" + "value": "Необязательный доступ к частному адресу и исходным портам каждой VM, например 10.40.0.10:3000." } }, "th": { "stringUnit": { "state": "translated", - "value": "ที่อยู่ส่วนตัว" + "value": "การเข้าถึงที่ไม่บังคับไปยังที่อยู่ส่วนตัวและพอร์ตเดิมของ VM แต่ละเครื่อง เช่น 10.40.0.10:3000" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Özel adresler" + "value": "Her VM’nin özel adresine ve özgün bağlantı noktalarına isteğe bağlı erişim; örneğin 10.40.0.10:3000." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Приватні адреси" + "value": "Необов’язковий доступ до приватної адреси та початкових портів кожної VM, наприклад 10.40.0.10:3000." } } } }, - "cloud.vpn.setup.openSettings": { + "cloud.vpn.setup.howItWorks.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open System Settings" + "value": "How it works" } }, "de": { "stringUnit": { "state": "translated", - "value": "Systemeinstellungen öffnen" + "value": "So funktioniert es" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ouvrir Réglages Système" + "value": "Fonctionnement" } }, "es": { "stringUnit": { "state": "translated", - "value": "Abrir Ajustes del Sistema" + "value": "Cómo funciona" } }, "ja": { "stringUnit": { "state": "translated", - "value": "システム設定を開く" + "value": "仕組み" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "打开系统设置" + "value": "工作原理" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "打開系統設定" + "value": "運作方式" } }, "ko": { "stringUnit": { "state": "translated", - "value": "시스템 설정 열기" + "value": "작동 방식" } }, "ar": { "stringUnit": { "state": "translated", - "value": "فتح إعدادات النظام" + "value": "طريقة العمل" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Otvori Postavke sistema" + "value": "Kako radi" } }, "da": { "stringUnit": { "state": "translated", - "value": "Åbn Systemindstillinger" + "value": "Sådan fungerer det" } }, "it": { "stringUnit": { "state": "translated", - "value": "Apri Impostazioni di Sistema" + "value": "Come funziona" } }, "km": { "stringUnit": { "state": "translated", - "value": "បើកការកំណត់ប្រព័ន្ធ" + "value": "របៀបដំណើរការ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Åpne Systeminnstillinger" + "value": "Slik fungerer det" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Otwórz Ustawienia systemowe" + "value": "Jak to działa" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Abrir Ajustes do Sistema" + "value": "Como funciona" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Открыть системные настройки" + "value": "Как это работает" } }, "th": { "stringUnit": { "state": "translated", - "value": "เปิดการตั้งค่าระบบ" + "value": "วิธีการทำงาน" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Sistem Ayarlarını aç" + "value": "Nasıl çalışır" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Відкрити Системні параметри" + "value": "Як це працює" } } } }, - "cli.browser.inputFiles.error.usage": { + "cloud.vpn.setup.status.off": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "set-input-files requires --selector and either --file (repeatable) or --clear" + "value": "Off. Your Cloud panes continue to work through cmux's built-in route." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "يتطلب set-input-files الخيار --selector مع --file (يمكن تكراره) أو --clear" + "value": "Aus. Ihre Cloud-Bereiche funktionieren weiterhin über die integrierte Verbindung von cmux." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "set-input-files benötigt --selector und entweder --file (wiederholbar) oder --clear" + "value": "Désactivé. Vos volets Cloud continuent de fonctionner via la connexion intégrée de cmux." } }, "es": { "stringUnit": { "state": "translated", - "value": "set-input-files requiere --selector y --file (repetible) o --clear" + "value": "Desactivada. Tus paneles Cloud siguen funcionando mediante la conexión integrada de cmux." } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "set-input-files nécessite --selector et soit --file (répétable), soit --clear" + "value": "オフ。Cloudペインは引き続きcmux内蔵の接続経路で動作します。" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "set-input-files には --selector と、--file (複数指定可)または --clear が必要です" + "value": "已关闭。Cloud 面板仍通过 cmux 内置连接工作。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "已關閉。Cloud 面板仍透過 cmux 內建連線運作。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "set-input-files에는 --selector 와 --file (반복 가능) 또는 --clear가 필요합니다" + "value": "꺼짐. Cloud 패널은 cmux의 내장 연결을 통해 계속 작동합니다." } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "set-input-files 需要 --selector ,以及 --file (可重复)或 --clear" + "value": "متوقف. تستمر لوحات Cloud في العمل عبر اتصال cmux المضمن." } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "set-input-files 需要 --selector ,以及 --file (可重複)或 --clear" + "value": "Isključeno. Cloud paneli i dalje rade preko ugrađene cmux veze." } - } - } - }, - "cli.browser.inputFiles.help": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n Select local files (up to 128 files, 32 MiB total) or clear the selection. Directory uploads are unsupported." + "value": "Fra. Dine Cloud-paneler fungerer stadig via cmux’ indbyggede forbindelse." } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n اختر ملفات محلية (حتى 128 ملفًا بإجمالي 32 MiB) أو امسح الاختيار. رفع المجلدات غير مدعوم." + "value": "Disattivata. I pannelli Cloud continuano a funzionare tramite la connessione integrata di cmux." } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n Lokale Dateien auswählen (bis zu 128 Dateien, insgesamt 32 MiB) oder die Auswahl leeren. Ordner-Uploads werden nicht unterstützt." + "value": "បិទ។ ផ្ទាំង Cloud របស់អ្នកនៅតែដំណើរការតាមការភ្ជាប់ដែលមានស្រាប់របស់ cmux។" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n Selecciona archivos locales (hasta 128 archivos, 32 MiB en total) o borra la selección. No se admite subir carpetas." + "value": "Av. Cloud-panelene dine fortsetter å fungere gjennom cmux sin innebygde forbindelse." } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n Sélectionner des fichiers locaux (jusqu’à 128 fichiers, 32 MiB au total) ou effacer la sélection. L’envoi de dossiers n’est pas pris en charge." + "value": "Wyłączona. Panele Cloud nadal działają przez wbudowane połączenie cmux." } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n ローカルファイルを選択(最大128個、合計32 MiB)するか、選択を解除します。ディレクトリのアップロードには対応していません。" + "value": "Desativada. Seus painéis Cloud continuam funcionando pela conexão integrada do cmux." } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n 로컬 파일을 선택하거나(최대 128개, 총 32 MiB) 선택을 지웁니다. 디렉터리 업로드는 지원되지 않습니다." + "value": "Выключено. Панели Cloud продолжают работать через встроенное соединение cmux." } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n 选择本地文件(最多 128 个文件,总计 32 MiB)或清除选择。不支持上传目录。" + "value": "ปิดอยู่ แผง Cloud ยังคงทำงานผ่านการเชื่อมต่อในตัวของ cmux" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector (--file ... | --clear) [--snapshot-after]\n 選取本機檔案(最多 128 個檔案,總計 32 MiB)或清除選取。不支援上傳目錄。" + "value": "Kapalı. Cloud panelleriniz cmux’un yerleşik bağlantısıyla çalışmaya devam eder." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Вимкнено. Панелі Cloud продовжують працювати через вбудоване з’єднання cmux." } } } }, - "browser.inputFiles.error.invalidTarget": { + "cloud.vpn.setup.steps.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The selector must match a file input without directory selection" + "value": "First-time setup" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "يجب أن يطابق المحدد حقل إدخال ملفات لا يستخدم اختيار المجلدات" + "value": "Ersteinrichtung" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Der Selektor muss ein Dateieingabefeld ohne Ordnerauswahl treffen" + "value": "Première configuration" } }, "es": { "stringUnit": { "state": "translated", - "value": "El selector debe coincidir con un campo de archivos sin selección de carpetas" + "value": "Configuración inicial" } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "Le sélecteur doit correspondre à un champ de fichier sans sélection de dossier" + "value": "初回設定" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "セレクターはディレクトリ選択を使わないファイル入力欄に一致する必要があります" + "value": "首次设置" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "首次設定" } }, "ko": { "stringUnit": { "state": "translated", - "value": "선택자는 디렉터리 선택이 없는 파일 입력 요소와 일치해야 합니다" + "value": "최초 설정" } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "选择器必须匹配未启用目录选择的文件输入字段" + "value": "الإعداد الأولي" } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "選取器必須符合未啟用目錄選取的檔案輸入欄位" + "value": "Prvo podešavanje" } - } - } - }, - "browser.inputFiles.error.multipleRequired": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "This file input does not allow multiple files" + "value": "Første opsætning" } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "لا يسمح حقل إدخال الملفات هذا باختيار عدة ملفات" + "value": "Prima configurazione" } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "Dieses Dateieingabefeld erlaubt nicht mehrere Dateien" + "value": "ការរៀបចំលើកដំបូង" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Este campo de archivos no permite seleccionar varios archivos" + "value": "Førstegangsoppsett" } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Ce champ de fichier ne permet pas de sélectionner plusieurs fichiers" + "value": "Pierwsza konfiguracja" } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "このファイル入力欄では複数のファイルを選択できません" + "value": "Primeira configuração" } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "이 파일 입력 요소는 여러 파일을 허용하지 않습니다" + "value": "Первая настройка" } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "此文件输入字段不允许选择多个文件" + "value": "การตั้งค่าครั้งแรก" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "此檔案輸入欄位不允許選取多個檔案" + "value": "İlk kurulum" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Перше налаштування" } } } }, - "browser.inputFiles.error.cancelled": { + "cloud.vpn.setup.steps.extension": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "File upload preparation was cancelled" + "value": "1. Click Connect Cloud VPN. When macOS asks, allow the cmux network extension in System Settings." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "تم إلغاء تجهيز الملفات للرفع" + "value": "1. Klicken Sie auf Cloud-VPN verbinden. Erlauben Sie auf Aufforderung von macOS die cmux-Netzwerkerweiterung in den Systemeinstellungen." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Die Vorbereitung des Datei-Uploads wurde abgebrochen" + "value": "1. Cliquez sur Connecter le VPN Cloud. Lorsque macOS le demande, autorisez l’extension réseau cmux dans Réglages Système." } }, "es": { "stringUnit": { "state": "translated", - "value": "Se canceló la preparación de los archivos para subir" + "value": "1. Haz clic en Conectar VPN de Cloud. Cuando macOS lo solicite, permite la extensión de red de cmux en Ajustes del Sistema." } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "La préparation des fichiers à envoyer a été annulée" + "value": "1. 「Cloud VPNに接続」をクリックします。macOSに求められたら、システム設定でcmuxのネットワーク機能拡張を許可します。" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "ファイルのアップロード準備がキャンセルされました" + "value": "1. 点击“连接 Cloud VPN”。macOS 提示时,在系统设置中允许 cmux 网络扩展。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "1. 按一下「連接 Cloud VPN」。macOS 提示時,請在系統設定中允許 cmux 網路延伸功能。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "파일 업로드 준비가 취소되었습니다" + "value": "1. Cloud VPN 연결을 클릭합니다. macOS에서 요청하면 시스템 설정에서 cmux 네트워크 확장을 허용합니다." } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "已取消准备上传文件" + "value": "1. انقر على توصيل VPN الخاص بـ Cloud. عندما يطلب macOS ذلك، اسمح بامتداد شبكة cmux في إعدادات النظام." } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "已取消準備上傳檔案" + "value": "1. Kliknite Poveži Cloud VPN. Kada macOS zatraži, dozvolite cmux mrežni dodatak u Postavkama sistema." } - } - } - }, - "browser.inputFiles.error.invalidParameters": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "set-input-files requires a selector and a files array of absolute paths" + "value": "1. Klik på Forbind Cloud VPN. Når macOS spørger, skal du tillade cmux-netværksudvidelsen i Systemindstillinger." } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "يتطلب set-input-files محددًا ومصفوفة files تحتوي على مسارات مطلقة" + "value": "1. Fai clic su Connetti VPN Cloud. Quando macOS lo richiede, consenti l’estensione di rete cmux nelle Impostazioni di Sistema." } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "set-input-files benötigt einen Selektor und ein files-Array mit absoluten Pfaden" + "value": "1. ចុច ភ្ជាប់ Cloud VPN។ ពេល macOS ស្នើ សូមអនុញ្ញាតផ្នែកបន្ថែមបណ្តាញ cmux ក្នុងការកំណត់ប្រព័ន្ធ។" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "set-input-files requiere un selector y una matriz files de rutas absolutas" + "value": "1. Klikk Koble til Cloud VPN. Når macOS spør, tillat cmux-nettverksutvidelsen i Systeminnstillinger." } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "set-input-files nécessite un sélecteur et un tableau files de chemins absolus" + "value": "1. Kliknij Połącz z Cloud VPN. Gdy macOS poprosi, zezwól na rozszerzenie sieci cmux w Ustawieniach systemowych." } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "set-input-files にはセレクターと絶対パスを含む files 配列が必要です" + "value": "1. Clique em Conectar Cloud VPN. Quando o macOS pedir, permita a extensão de rede do cmux nos Ajustes do Sistema." } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "set-input-files에는 선택자와 절대 경로로 구성된 files 배열이 필요합니다" + "value": "1. Нажмите Подключить Cloud VPN. Когда macOS попросит, разрешите сетевое расширение cmux в системных настройках." } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "set-input-files 需要选择器及包含绝对路径的 files 数组" + "value": "1. คลิก เชื่อมต่อ Cloud VPN เมื่อ macOS ขอ ให้อนุญาตส่วนขยายเครือข่าย cmux ในการตั้งค่าระบบ" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "set-input-files 需要選取器及包含絕對路徑的 files 陣列" + "value": "1. Cloud VPN’e bağlan’a tıklayın. macOS istediğinde Sistem Ayarları’nda cmux ağ uzantısına izin verin." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "1. Натисніть Підключити Cloud VPN. Коли macOS попросить, дозвольте мережеве розширення cmux у Системних параметрах." } } } }, - "browser.inputFiles.error.invalidSelection": { + "cloud.vpn.setup.steps.settings": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Select at most 128 files using absolute paths" + "value": "Open General > Login Items & Extensions > Network Extensions, then enable cmux." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "اختر ما يصل إلى 128 ملفًا باستخدام مسارات مطلقة" + "value": "Öffnen Sie Allgemein > Anmeldeobjekte & Erweiterungen > Netzwerkerweiterungen und aktivieren Sie cmux." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Wählen Sie höchstens 128 Dateien mit absoluten Pfaden aus" + "value": "Ouvrez Général > Ouverture et extensions > Extensions réseau, puis activez cmux." } }, "es": { "stringUnit": { "state": "translated", - "value": "Selecciona como máximo 128 archivos mediante rutas absolutas" + "value": "Abre General > Ítems de inicio y extensiones > Extensiones de red y activa cmux." } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "Sélectionnez au maximum 128 fichiers avec des chemins absolus" + "value": "「一般」>「ログイン項目と機能拡張」>「ネットワーク機能拡張」を開き、cmuxを有効にします。" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "絶対パスで最大128個のファイルを選択してください" + "value": "打开“通用”>“登录项与扩展”>“网络扩展”,然后启用 cmux。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "打開「一般」>「登入項目與延伸功能」>「網路延伸功能」,然後啟用 cmux。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "절대 경로를 사용하여 최대 128개의 파일을 선택하세요" + "value": "일반 > 로그인 항목 및 확장 프로그램 > 네트워크 확장을 열고 cmux를 활성화합니다." } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "请使用绝对路径选择最多 128 个文件" + "value": "افتح عام > عناصر الدخول والامتدادات > امتدادات الشبكة، ثم فعّل cmux." } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "請使用絕對路徑選取最多 128 個檔案" + "value": "Otvorite Opšte > Stavke za prijavu i dodaci > Mrežni dodaci, pa omogućite cmux." } - } - } - }, - "browser.inputFiles.error.timeout": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Timed out preparing files for upload" + "value": "Åbn Generelt > Loginemner og udvidelser > Netværksudvidelser, og aktivér cmux." } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "انتهت مهلة تجهيز الملفات للرفع" + "value": "Apri Generali > Elementi login ed estensioni > Estensioni di rete, quindi abilita cmux." } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "Zeitüberschreitung beim Vorbereiten der Dateien für den Upload" + "value": "បើក ទូទៅ > ធាតុចូល និងផ្នែកបន្ថែម > ផ្នែកបន្ថែមបណ្តាញ ហើយបើក cmux។" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Se agotó el tiempo de preparación de los archivos para subir" + "value": "Åpne Generelt > Påloggingselementer og utvidelser > Nettverksutvidelser, og aktiver cmux." } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Le délai de préparation des fichiers à envoyer a été dépassé" + "value": "Otwórz Ogólne > Elementy logowania i rozszerzenia > Rozszerzenia sieciowe, a następnie włącz cmux." } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "アップロードするファイルの準備がタイムアウトしました" + "value": "Abra Geral > Itens de Início e Extensões > Extensões de Rede e ative o cmux." } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "업로드할 파일 준비 시간이 초과되었습니다" + "value": "Откройте Основные > Объекты входа и расширения > Сетевые расширения и включите cmux." } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "准备上传文件超时" + "value": "เปิด ทั่วไป > รายการเข้าสู่ระบบและส่วนขยาย > ส่วนขยายเครือข่าย แล้วเปิดใช้ cmux" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "準備上傳檔案逾時" + "value": "Genel > Giriş Öğeleri ve Uzantılar > Ağ Uzantıları’nı açın ve cmux’u etkinleştirin." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Відкрийте Загальні > Об’єкти входу та розширення > Мережеві розширення й увімкніть cmux." } } } }, - "browser.inputFiles.error.tooLarge": { + "cloud.vpn.setup.steps.settingsLegacy": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The combined upload must be no larger than 32 MiB" + "value": "Open Privacy & Security and allow the cmux extension." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "يجب ألا يتجاوز الحجم الإجمالي للملفات المرفوعة 32 MiB" + "value": "Öffnen Sie Datenschutz & Sicherheit und erlauben Sie die cmux-Erweiterung." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Die Uploads dürfen insgesamt nicht größer als 32 MiB sein" + "value": "Ouvrez Confidentialité et sécurité et autorisez l’extension cmux." } }, "es": { "stringUnit": { "state": "translated", - "value": "El tamaño total de los archivos para subir no debe superar los 32 MiB" + "value": "Abre Privacidad y seguridad y permite la extensión de cmux." } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "La taille totale des fichiers à envoyer ne doit pas dépasser 32 MiB" + "value": "「プライバシーとセキュリティ」を開き、cmuxの機能拡張を許可します。" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "アップロードするファイルの合計サイズは32 MiB以下にしてください" + "value": "打开“隐私与安全性”,然后允许 cmux 扩展。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "打開「隱私權與安全性」,然後允許 cmux 延伸功能。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "전체 업로드 크기는 32 MiB를 초과할 수 없습니다" + "value": "개인정보 보호 및 보안을 열고 cmux 확장을 허용합니다." } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "上传文件的总大小不得超过 32 MiB" + "value": "افتح الخصوصية والأمان واسمح بامتداد cmux." } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "上傳檔案的總大小不得超過 32 MiB" + "value": "Otvorite Privatnost i sigurnost i dozvolite cmux dodatak." } - } - } - }, - "browser.inputFiles.error.unreadableFile": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Every upload path must be a readable regular file" + "value": "Åbn Anonymitet og sikkerhed, og tillad cmux-udvidelsen." } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "يجب أن يشير كل مسار للرفع إلى ملف عادي قابل للقراءة" + "value": "Apri Privacy e sicurezza e consenti l’estensione cmux." } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "Jeder Upload-Pfad muss auf eine lesbare reguläre Datei verweisen" + "value": "បើក ឯកជនភាព និងសុវត្ថិភាព ហើយអនុញ្ញាតផ្នែកបន្ថែម cmux។" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Cada ruta de subida debe apuntar a un archivo normal que se pueda leer" + "value": "Åpne Personvern og sikkerhet og tillat cmux-utvidelsen." } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Chaque chemin à envoyer doit désigner un fichier ordinaire lisible" + "value": "Otwórz Prywatność i ochrona i zezwól na rozszerzenie cmux." } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "各アップロードパスは読み取り可能な通常ファイルである必要があります" + "value": "Abra Privacidade e Segurança e permita a extensão do cmux." } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "모든 업로드 경로는 읽을 수 있는 일반 파일이어야 합니다" + "value": "Откройте Конфиденциальность и безопасность и разрешите расширение cmux." } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "每个上传路径都必须指向可读取的普通文件" + "value": "เปิด ความเป็นส่วนตัวและความปลอดภัย แล้วอนุญาตส่วนขยาย cmux" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "每個上傳路徑都必須指向可讀取的一般檔案" + "value": "Gizlilik ve Güvenlik’i açın ve cmux uzantısına izin verin." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Відкрийте Конфіденційність і безпека та дозвольте розширення cmux." } } } }, - "cloudTree.group.cloudMachines.usage": { + "cloud.vpn.setup.steps.configuration": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. Allow cmux to add a VPN configuration named cmux Cloud. This is a separate macOS permission." } }, "de": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. Erlauben Sie cmux, eine VPN-Konfiguration namens cmux Cloud hinzuzufügen. Dies ist eine separate macOS-Berechtigung." } }, "fr": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. Autorisez cmux à ajouter une configuration VPN nommée cmux Cloud. Il s’agit d’une autorisation macOS distincte." } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. Permite que cmux añada una configuración VPN llamada cmux Cloud. Este es un permiso independiente de macOS." } }, - "es": { + "ja": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. cmux Cloudという名前のVPN構成の追加を許可します。これは別のmacOS権限です。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. 允许 cmux 添加名为 cmux Cloud 的 VPN 配置。这是单独的 macOS 权限。" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. 允許 cmux 加入名為 cmux Cloud 的 VPN 設定。這是另一項 macOS 權限。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. cmux가 cmux Cloud라는 VPN 구성을 추가하도록 허용합니다. 이는 별도의 macOS 권한입니다." } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. اسمح لـ cmux بإضافة إعداد VPN باسم cmux Cloud. هذا إذن منفصل في macOS." } }, "bs": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. Dozvolite cmux-u da doda VPN konfiguraciju pod imenom cmux Cloud. Ovo je posebna macOS dozvola." } }, "da": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. Tillad cmux at tilføje en VPN-konfiguration med navnet cmux Cloud. Dette er en separat macOS-tilladelse." } }, "it": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. Consenti a cmux di aggiungere una configurazione VPN chiamata cmux Cloud. È un’autorizzazione macOS separata." } }, "km": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. អនុញ្ញាតឱ្យ cmux បន្ថែមការកំណត់ VPN ឈ្មោះ cmux Cloud។ នេះជាសិទ្ធិ macOS ផ្សេងមួយ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. Tillat cmux å legge til en VPN-konfigurasjon kalt cmux Cloud. Dette er en separat macOS-tillatelse." } }, "pl": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. Zezwól cmux dodać konfigurację VPN o nazwie cmux Cloud. To osobne uprawnienie macOS." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. Permita que o cmux adicione uma configuração VPN chamada cmux Cloud. Esta é uma permissão separada do macOS." } }, "ru": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. Разрешите cmux добавить VPN-конфигурацию с именем cmux Cloud. Это отдельное разрешение macOS." } }, "th": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. อนุญาตให้ cmux เพิ่มการกำหนดค่า VPN ชื่อ cmux Cloud นี่เป็นสิทธิ์ macOS แยกต่างหาก" } }, "tr": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. cmux’un cmux Cloud adlı bir VPN yapılandırması eklemesine izin verin. Bu ayrı bir macOS iznidir." } }, "uk": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "2. Дозвольте cmux додати конфігурацію VPN з назвою cmux Cloud. Це окремий дозвіл macOS." } } } }, - "settings.app.accentColor.custom": { + "cloud.vpn.setup.steps.return": { + "extractionState": "manual", "localizations": { - "ar": { + "en": { "stringUnit": { "state": "translated", - "value": "مخصص" + "value": "3. Return to this pane. The connection continues automatically after approval. Disconnect here when finished. Quitting cmux or signing out also disconnects it." } }, - "bs": { + "de": { "stringUnit": { "state": "translated", - "value": "Prilagođeno" + "value": "3. Kehren Sie zu diesem Bereich zurück. Die Verbindung wird nach der Genehmigung automatisch fortgesetzt. Trennen Sie sie hier, wenn Sie fertig sind. Das Beenden von cmux oder Abmelden trennt sie ebenfalls." } }, - "da": { + "fr": { "stringUnit": { "state": "translated", - "value": "Tilpasset" + "value": "3. Revenez à ce volet. La connexion reprend automatiquement après autorisation. Déconnectez-la ici lorsque vous avez terminé. Quitter cmux ou fermer la session la déconnecte aussi." } }, - "de": { + "es": { "stringUnit": { "state": "translated", - "value": "Benutzerdefiniert" + "value": "3. Vuelve a este panel. La conexión continúa automáticamente tras la autorización. Desconéctala aquí cuando termines. Salir de cmux o cerrar sesión también la desconecta." } }, - "en": { + "ja": { "stringUnit": { "state": "translated", - "value": "Custom" + "value": "3. このペインに戻ります。承認後、接続は自動的に続行されます。使い終わったらここで切断してください。cmuxの終了やサインアウトでも切断されます。" } }, - "es": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Personalizado" + "value": "3. 返回此面板。批准后连接会自动继续。完成后可在此断开连接。退出 cmux 或退出登录也会断开连接。" } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Personnalisée" + "value": "3. 返回此面板。核准後連線會自動繼續。完成後可在此中斷連線。結束 cmux 或登出也會中斷連線。" } }, - "it": { + "ko": { "stringUnit": { "state": "translated", - "value": "Personalizzato" + "value": "3. 이 패널로 돌아옵니다. 승인 후 연결이 자동으로 계속됩니다. 사용을 마치면 여기에서 연결을 해제하세요. cmux를 종료하거나 로그아웃해도 연결이 해제됩니다." } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "カスタム" + "value": "3. ارجع إلى هذه اللوحة. يستمر الاتصال تلقائيًا بعد الموافقة. اقطع الاتصال هنا عند الانتهاء. يؤدي إنهاء cmux أو تسجيل الخروج أيضًا إلى قطع الاتصال." } }, - "ko": { + "bs": { "stringUnit": { "state": "translated", - "value": "사용자 지정" + "value": "3. Vratite se na ovaj panel. Veza se nastavlja automatski nakon odobrenja. Ovdje prekinite vezu kada završite. Izlazak iz cmux-a ili odjava takođe prekida vezu." } }, - "nb": { + "da": { "stringUnit": { "state": "translated", - "value": "Egendefinert" + "value": "3. Gå tilbage til dette panel. Forbindelsen fortsætter automatisk efter godkendelsen. Afbryd her, når du er færdig. Hvis du afslutter cmux eller logger ud, afbrydes forbindelsen også." } }, - "pl": { + "it": { "stringUnit": { "state": "translated", - "value": "Niestandardowy" + "value": "3. Torna a questo pannello. La connessione continua automaticamente dopo l’autorizzazione. Disconnettila qui quando hai finito. Anche uscire da cmux o effettuare il logout la disconnette." } }, - "pt-BR": { + "km": { "stringUnit": { "state": "translated", - "value": "Personalizado" + "value": "3. ត្រឡប់ទៅផ្ទាំងនេះ។ ការភ្ជាប់នឹងបន្តដោយស្វ័យប្រវត្តិបន្ទាប់ពីអនុម័ត។ ផ្តាច់នៅទីនេះពេលបញ្ចប់។ ការបិទ cmux ឬចាកចេញក៏ផ្តាច់ការភ្ជាប់ដែរ។" } }, - "ru": { + "nb": { "stringUnit": { "state": "translated", - "value": "Пользовательский" + "value": "3. Gå tilbake til dette panelet. Forbindelsen fortsetter automatisk etter godkjenning. Koble fra her når du er ferdig. Avslutning av cmux eller utlogging kobler også fra." } }, - "th": { + "pl": { "stringUnit": { "state": "translated", - "value": "กำหนดเอง" + "value": "3. Wróć do tego panelu. Połączenie będzie kontynuowane automatycznie po zatwierdzeniu. Po zakończeniu rozłącz je tutaj. Zamknięcie cmux lub wylogowanie również rozłączy połączenie." } }, - "tr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Özel" + "value": "3. Volte a este painel. A conexão continuará automaticamente após a aprovação. Desconecte aqui quando terminar. Sair do cmux ou encerrar a sessão também desconecta." } }, - "uk": { + "ru": { "stringUnit": { "state": "translated", - "value": "Власний" + "value": "3. Вернитесь в эту панель. После подтверждения соединение продолжится автоматически. Завершив работу, отключите его здесь. Выход из cmux или системы также отключает соединение." } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "自定义" + "value": "3. กลับมาที่แผงนี้ การเชื่อมต่อจะดำเนินต่อโดยอัตโนมัติหลังการอนุมัติ ตัดการเชื่อมต่อที่นี่เมื่อเสร็จแล้ว การออกจาก cmux หรือออกจากระบบจะตัดการเชื่อมต่อด้วย" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "自訂" + "value": "3. Bu panele dönün. Onaydan sonra bağlantı otomatik olarak devam eder. Bitirdiğinizde buradan bağlantıyı kesin. cmux’tan çıkmak veya oturumu kapatmak da bağlantıyı keser." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "3. Поверніться до цієї панелі. Після схвалення з’єднання продовжиться автоматично. Завершивши роботу, від’єднайте його тут. Вихід із cmux або системи також від’єднає з’єднання." } } } }, - "cloudTree.action.newCloudMachine": { + "cloud.vpn.setup.address.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "New Cloud Machine" + "value": "Private addresses" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "جهاز سحابي جديد" + "value": "Private Adressen" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Neue Cloud-Maschine" + "value": "Adresses privées" } }, "es": { "stringUnit": { "state": "translated", - "value": "Nueva máquina en la nube" + "value": "Direcciones privadas" } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "Nouvelle machine cloud" + "value": "プライベートアドレス" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "新しいクラウドマシン" + "value": "私有地址" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "새 클라우드 머신" + "value": "私有位址" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "新建云主机" + "value": "비공개 주소" } }, - "zh-Hant": { + "ar": { "stringUnit": { "state": "translated", - "value": "新增雲端機器" + "value": "العناوين الخاصة" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Nova cloud mašina" + "value": "Privatne adrese" } }, "da": { "stringUnit": { "state": "translated", - "value": "Ny cloud-maskine" + "value": "Private adresser" } }, "it": { "stringUnit": { "state": "translated", - "value": "Nuova macchina cloud" + "value": "Indirizzi privati" } }, "km": { "stringUnit": { "state": "translated", - "value": "ម៉ាស៊ីន Cloud ថ្មី" + "value": "អាសយដ្ឋានឯកជន" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Ny sky-maskin" + "value": "Private adresser" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Nowa maszyna w chmurze" + "value": "Prywatne adresy" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Nova máquina na nuvem" + "value": "Endereços privados" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Новая облачная машина" + "value": "Частные адреса" } }, "th": { "stringUnit": { "state": "translated", - "value": "เครื่องคลาวด์ใหม่" + "value": "ที่อยู่ส่วนตัว" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Yeni bulut makinesi" + "value": "Özel adresler" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Нова хмарна машина" + "value": "Приватні адреси" } } } }, - "devices.incoming.confirm.enable": { + "cloud.vpn.setup.openSettings": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Make Discoverable" + "value": "Open System Settings" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "جعل الجهاز قابلاً للاكتشاف" + "value": "Systemeinstellungen öffnen" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Auffindbar machen" + "value": "Ouvrir Réglages Système" } }, "es": { "stringUnit": { "state": "translated", - "value": "Hacer detectable" + "value": "Abrir Ajustes del Sistema" } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "Rendre détectable" + "value": "システム設定を開く" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "検出可能にする" + "value": "打开系统设置" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "검색 허용" + "value": "打開系統設定" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "允许发现" + "value": "시스템 설정 열기" } }, - "zh-Hant": { + "ar": { "stringUnit": { "state": "translated", - "value": "允許探索" + "value": "فتح إعدادات النظام" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Učini dostupnim" + "value": "Otvori Postavke sistema" } }, "da": { "stringUnit": { "state": "translated", - "value": "Gør synlig" + "value": "Åbn Systemindstillinger" } }, "it": { "stringUnit": { "state": "translated", - "value": "Rendi individuabile" + "value": "Apri Impostazioni di Sistema" } }, "km": { "stringUnit": { "state": "translated", - "value": "ធ្វើឲ្យអាចរកឃើញ" + "value": "បើកការកំណត់ប្រព័ន្ធ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Gjør denne Mac-en synlig" + "value": "Åpne Systeminnstillinger" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Włącz wykrywanie" + "value": "Otwórz Ustawienia systemowe" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Tornar detectável" + "value": "Abrir Ajustes do Sistema" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Сделать доступным для обнаружения" + "value": "Открыть системные настройки" } }, "th": { "stringUnit": { "state": "translated", - "value": "ทำให้ Mac เครื่องนี้ค้นพบได้" + "value": "เปิดการตั้งค่าระบบ" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Keşfedilebilir yap" + "value": "Sistem Ayarlarını aç" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Зробити цей Mac видимим" + "value": "Відкрити Системні параметри" } } } }, - "devices.incoming.confirm.message": { - "extractionState": "manual", + "settings.app.accentColor.custom": { "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Other Macs signed in to your cmux account may discover this Mac and connect to its workspaces. Do you want to continue?" - } - }, "ar": { "stringUnit": { "state": "translated", - "value": "قد تكتشف أجهزة Mac الأخرى التي سجّلت الدخول إلى حساب cmux هذا الـ Mac وتتصل بمساحات العمل فيه. هل تريد المتابعة؟" + "value": "مخصص" } }, - "de": { + "bs": { "stringUnit": { "state": "translated", - "value": "Andere Macs, die bei deinem cmux-Konto angemeldet sind, können diesen Mac finden und sich mit seinen Arbeitsbereichen verbinden. Möchtest du fortfahren?" + "value": "Prilagođeno" } }, - "es": { + "da": { "stringUnit": { "state": "translated", - "value": "Otros Mac que hayan iniciado sesión en tu cuenta de cmux podrán descubrir este Mac y conectarse a sus espacios de trabajo. ¿Quieres continuar?" + "value": "Tilpasset" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Les autres Mac connectés à votre compte cmux pourront détecter ce Mac et se connecter à ses espaces de travail. Voulez-vous continuer ?" + "value": "Benutzerdefiniert" } }, - "ja": { + "en": { "stringUnit": { "state": "translated", - "value": "cmuxアカウントにサインインしているほかのMacから、このMacが検出され、ワークスペースに接続されることがあります。続けますか?" + "value": "Custom" } }, - "ko": { + "es": { "stringUnit": { "state": "translated", - "value": "cmux 계정에 로그인한 다른 Mac에서 이 Mac을 검색하고 작업 공간에 연결할 수 있습니다. 계속하시겠습니까?" + "value": "Personalizado" } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "登录你 cmux 帐户的其他 Mac 可能会发现此 Mac 并连接到其工作区。要继续吗?" + "value": "Personnalisée" } }, - "zh-Hant": { + "it": { "stringUnit": { "state": "translated", - "value": "登入您 cmux 帳戶的其他 Mac 可能會探索此 Mac 並連線至其工作區。要繼續嗎?" + "value": "Personalizzato" } }, - "bs": { + "ja": { "stringUnit": { "state": "translated", - "value": "Drugi Mac računari prijavljeni na vaš cmux nalog možda će otkriti ovaj Mac i povezati se s njegovim radnim prostorima. Želite li nastaviti?" + "value": "カスタム" } }, - "da": { + "ko": { "stringUnit": { "state": "translated", - "value": "Andre Mac-computere, der er logget ind på din cmux-konto, kan muligvis finde denne Mac og oprette forbindelse til dens arbejdsområder. Vil du fortsætte?" + "value": "사용자 지정" } }, - "it": { + "nb": { "stringUnit": { "state": "translated", - "value": "Gli altri Mac che hanno effettuato l’accesso al tuo account cmux potrebbero rilevare questo Mac e connettersi ai suoi spazi di lavoro. Vuoi continuare?" + "value": "Egendefinert" } }, - "km": { + "pl": { "stringUnit": { "state": "translated", - "value": "Mac ផ្សេងទៀតដែលបានចូលគណនី cmux របស់អ្នក អាចរកឃើញ Mac នេះ និងភ្ជាប់ទៅកាន់ workspace របស់វា។ តើអ្នកចង់បន្តឬទេ?" + "value": "Niestandardowy" } }, - "nb": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Andre Mac-maskiner som er logget på cmux-kontoen din, kan finne denne Mac-en og koble til arbeidsområdene. Vil du fortsette?" + "value": "Personalizado" } }, - "pl": { + "ru": { "stringUnit": { "state": "translated", - "value": "Inne Maki zalogowane na Twoje konto cmux mogą wykryć tego Maca i połączyć się z jego obszarami roboczymi. Czy chcesz kontynuować?" + "value": "Пользовательский" } }, - "pt-BR": { + "th": { "stringUnit": { "state": "translated", - "value": "Outros Macs conectados à sua conta cmux poderão descobrir este Mac e se conectar aos seus espaços de trabalho. Deseja continuar?" + "value": "กำหนดเอง" } }, - "ru": { + "tr": { "stringUnit": { "state": "translated", - "value": "Другие Mac, вошедшие в вашу учётную запись cmux, могут обнаружить этот Mac и подключиться к его рабочим пространствам. Продолжить?" + "value": "Özel" } }, - "th": { + "uk": { "stringUnit": { "state": "translated", - "value": "Mac เครื่องอื่นที่ลงชื่อเข้าใช้บัญชี cmux ของคุณอาจค้นพบ Mac เครื่องนี้และเชื่อมต่อกับพื้นที่ทำงานของเครื่องนี้ คุณต้องการดำเนินการต่อหรือไม่" + "value": "Власний" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux hesabınızda oturum açmış diğer Mac’ler bu Mac’i keşfedebilir ve çalışma alanlarına bağlanabilir. Devam etmek istiyor musunuz?" + "value": "自定义" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Інші Mac, на яких виконано вхід у ваш обліковий запис cmux, можуть виявити цей Mac і підключитися до його робочих просторів. Продовжити?" + "value": "自訂" } } } }, - "devices.incoming.confirm.title": { + "socket.sidebar.closeSurface.confirmationRequired": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Make this Mac discoverable?" + "value": "Surface has a running process; retry with --force" } }, "ar": { "stringUnit": { "state": "translated", - "value": "هل تريد جعل جهاز Mac هذا قابلاً للاكتشاف؟" + "value": "تحتوي السطح على عملية قيد التشغيل؛ أعد المحاولة باستخدام --force" } }, "de": { "stringUnit": { "state": "translated", - "value": "Diesen Mac auffindbar machen?" + "value": "Die Oberfläche hat einen laufenden Prozess; erneut mit --force versuchen" } }, "es": { "stringUnit": { "state": "translated", - "value": "¿Hacer que este Mac sea detectable?" + "value": "La superficie tiene un proceso en ejecución; vuelve a intentarlo con --force" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Rendre ce Mac détectable ?" + "value": "La surface a un processus en cours d’exécution ; réessayez avec --force" } }, "ja": { "stringUnit": { "state": "translated", - "value": "このMacを検出可能にしますか?" + "value": "サーフェスでプロセスが実行中です。--force を指定して再試行してください" } }, "ko": { "stringUnit": { "state": "translated", - "value": "이 Mac을 검색 가능하게 할까요?" + "value": "표면에서 실행 중인 프로세스가 있습니다. --force로 다시 시도하세요" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "允许发现此 Mac 吗?" + "value": "此表面有正在运行的进程;请使用 --force 重试" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "要允許探索此 Mac 嗎?" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Učiniti ovaj Mac dostupnim?" - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "Gør denne Mac synlig?" + "value": "此表面有正在執行的程序;請使用 --force 重試" } - }, - "it": { + } + } + }, + "socket.sidebar.closeSurface.failed": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Rendere individuabile questo Mac?" + "value": "Failed to close surface" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "ធ្វើឲ្យ Mac នេះអាចរកឃើញ?" + "value": "تعذر إغلاق السطح" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Gjøre denne Mac-en synlig?" + "value": "Die Oberfläche konnte nicht geschlossen werden" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Uwidocznić tego Maca?" + "value": "No se pudo cerrar la superficie" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Tornar este Mac detectável?" + "value": "Échec de la fermeture de la surface" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Сделать этот Mac доступным для обнаружения?" + "value": "サーフェスを閉じられませんでした" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "ทำให้ Mac เครื่องนี้ค้นพบได้หรือไม่" + "value": "표면을 닫지 못했습니다" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Bu Mac keşfedilebilir yapılsın mı?" + "value": "无法关闭此表面" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Зробити цей Mac доступним для виявлення?" + "value": "無法關閉表面" } } } }, - "cloudTree.device.status.connecting": { + "socket.surface.close.confirmationRequired": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Connecting…" + "value": "Surface has a running process; retry with force=true" } }, "ar": { "stringUnit": { "state": "translated", - "value": "جارٍ الاتصال…" + "value": "تحتوي السطح على عملية قيد التشغيل؛ أعد المحاولة باستخدام force=true" } }, "de": { "stringUnit": { "state": "translated", - "value": "Wird verbunden…" + "value": "Die Oberfläche hat einen laufenden Prozess; erneut mit force=true versuchen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Conectando…" + "value": "La superficie tiene un proceso en ejecución; vuelve a intentarlo con force=true" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Connexion…" + "value": "La surface a un processus en cours d’exécution ; réessayez avec force=true" } }, "ja": { "stringUnit": { "state": "translated", - "value": "接続中…" + "value": "サーフェスでプロセスが実行中です。force=true を指定して再試行してください" } }, "ko": { "stringUnit": { "state": "translated", - "value": "연결 중…" + "value": "표면에서 실행 중인 프로세스가 있습니다. force=true로 다시 시도하세요" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "正在连接…" + "value": "此表面有正在运行的进程;请使用 force=true 重试" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "正在連線…" + "value": "此表面有正在執行的程序;請使用 force=true 重試" } } } }, - "terminal.clipboardReadConfirmation.deny": { + "socket.surface.close.failed": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Deny" + "value": "Failed to close surface" } }, "ar": { "stringUnit": { "state": "translated", - "value": "رفض" + "value": "تعذر إغلاق السطح" } }, "de": { "stringUnit": { "state": "translated", - "value": "Ablehnen" + "value": "Die Oberfläche konnte nicht geschlossen werden" } }, "es": { "stringUnit": { "state": "translated", - "value": "Denegar" + "value": "No se pudo cerrar la superficie" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Refuser" + "value": "Échec de la fermeture de la surface" } }, "ja": { "stringUnit": { "state": "translated", - "value": "拒否" + "value": "サーフェスを閉じられませんでした" } }, "ko": { "stringUnit": { "state": "translated", - "value": "거부" + "value": "표면을 닫지 못했습니다" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "拒绝" + "value": "无法关闭此表面" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "拒絕" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Odbij" - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "Afvis" + "value": "無法關閉表面" } - }, - "it": { + } + } + }, + "socket.tabAction.close.confirmationRequired": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Nega" + "value": "One or more surfaces have a running process; retry with force=true" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "បដិសេធ" + "value": "سطح واحد أو أكثر يحتوي على عملية قيد التشغيل؛ أعد المحاولة باستخدام force=true" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Avslå" + "value": "Mindestens eine Oberfläche hat einen laufenden Prozess; erneut mit force=true versuchen" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Odmów" + "value": "Una o más superficies tienen un proceso en ejecución; vuelve a intentarlo con force=true" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Negar" + "value": "Une ou plusieurs surfaces ont un processus en cours d’exécution ; réessayez avec force=true" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Запретить" + "value": "1 つ以上のサーフェスでプロセスが実行中です。force=true を指定して再試行してください" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "ปฏิเสธ" + "value": "하나 이상의 표면에서 프로세스가 실행 중입니다. force=true로 다시 시도하세요" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Reddet" + "value": "一个或多个表面有正在运行的进程;请使用 force=true 重试" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Заборонити" + "value": "一個或多個表面有正在執行的程序;請使用 force=true 重試" } } } }, - "terminal.clipboardReadConfirmation.message": { + "cli.socket.error.workspaceCloseConfirmationRequired": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "A program in this terminal wants to read your clipboard. Allow it only if you trust the program." + "value": "Workspace has a running process; retry with --force" } }, "ar": { "stringUnit": { "state": "translated", - "value": "يريد برنامج في هذه الطرفية قراءة الحافظة. اسمح بذلك فقط إذا كنت تثق بالبرنامج." + "value": "تحتوي مساحة العمل على عملية قيد التشغيل؛ أعد المحاولة باستخدام --force" } }, "de": { "stringUnit": { "state": "translated", - "value": "Ein Programm in diesem Terminal möchte deine Zwischenablage lesen. Erlaube es nur, wenn du dem Programm vertraust." + "value": "Arbeitsbereich mit laufendem Prozess; erneut mit --force versuchen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Un programa de esta terminal quiere leer tu portapapeles. Permítelo solo si confías en el programa." + "value": "El espacio de trabajo tiene un proceso en ejecución; vuelve a intentarlo con --force" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Un programme de ce terminal veut lire votre presse-papiers. Ne l’autorisez que si vous faites confiance à ce programme." + "value": "L’espace de travail a un processus en cours d’exécution ; réessayez avec --force" } }, "ja": { "stringUnit": { "state": "translated", - "value": "このターミナルのプログラムがクリップボードを読み取ろうとしています。信頼できるプログラムの場合にのみ許可してください。" + "value": "ワークスペースでプロセスが実行中です。--force を指定して再試行してください" } }, "ko": { "stringUnit": { "state": "translated", - "value": "이 터미널의 프로그램이 클립보드를 읽으려고 합니다. 프로그램을 신뢰할 수 있을 때만 허용하세요." + "value": "워크스페이스에서 프로세스가 실행 중입니다. --force로 다시 시도하세요" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "此终端中的程序想要读取你的剪贴板。只有在你信任该程序时才允许。" + "value": "此工作区有正在运行的进程;请使用 --force 重试" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "此終端機中的程式想要讀取你的剪貼簿。只有在你信任該程式時才允許。" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Program u ovom terminalu želi čitati vaš međuspremnik. Dozvolite samo ako vjerujete programu." - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "Et program i denne terminal vil læse din udklipsholder. Tillad det kun, hvis du har tillid til programmet." + "value": "此工作區有正在執行的程序;請使用 --force 重試" } - }, - "it": { + } + } + }, + "cli.socket.error.windowCloseConfirmationRequired": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Un programma in questo terminale vuole leggere gli appunti. Consentilo solo se ti fidi del programma." + "value": "One or more workspaces or Dock surfaces have a running process; retry with --force" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "កម្មវិធីក្នុងស្ថានីយនេះចង់អានក្ដារតម្បៀតខ្ទាស់របស់អ្នក។ អនុញ្ញាតតែបើអ្នកទុកចិត្តកម្មវិធីនេះ។" + "value": "تحتوي مساحة عمل واحدة أو أكثر أو أسطح Dock على عملية قيد التشغيل؛ أعد المحاولة باستخدام --force" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Et program i denne terminalen vil lese utklippstavlen din. Tillat det bare hvis du stoler på programmet." + "value": "Mindestens ein Workspace oder eine Dock-Oberfläche hat einen laufenden Prozess; erneut mit --force versuchen" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Program w tym terminalu chce odczytać schowek. Zezwól tylko, jeśli ufasz temu programowi." + "value": "Uno o más espacios de trabajo o superficies del Dock tienen un proceso en ejecución; vuelve a intentarlo con --force" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Um programa neste terminal quer ler sua área de transferência. Permita somente se você confiar no programa." + "value": "Un ou plusieurs espaces de travail ou surfaces du Dock ont un processus en cours d’exécution ; réessayez avec --force" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Программа в этом терминале хочет прочитать буфер обмена. Разрешайте только программам, которым доверяете." + "value": "1 つ以上のワークスペースまたは Dock サーフェスでプロセスが実行中です。--force を指定して再試行してください" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "โปรแกรมในเทอร์มินัลนี้ต้องการอ่านคลิปบอร์ดของคุณ อนุญาตเฉพาะเมื่อคุณเชื่อถือโปรแกรมนี้" + "value": "하나 이상의 워크스페이스 또는 Dock 표면에서 실행 중인 프로세스가 있습니다. --force로 다시 시도하세요" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Bu terminaldeki bir program panonuzu okumak istiyor. Yalnızca programa güveniyorsanız izin verin." + "value": "一个或多个工作区或 Dock 表面有正在运行的进程;请使用 --force 重试" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Програма в цьому терміналі хоче прочитати ваш буфер обміну. Дозволяйте, лише якщо довіряєте програмі." + "value": "一個或多個工作區或 Dock 表面有正在執行的程序;請使用 --force 重試" } } } }, - "terminal.clipboardReadConfirmation.title": { + "devices.incoming.confirm.enable": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Allow Clipboard Access?" + "value": "Make Discoverable" } }, "ar": { "stringUnit": { "state": "translated", - "value": "السماح بالوصول إلى الحافظة؟" + "value": "جعل الجهاز قابلاً للاكتشاف" } }, "de": { "stringUnit": { "state": "translated", - "value": "Zugriff auf die Zwischenablage erlauben?" + "value": "Auffindbar machen" } }, "es": { "stringUnit": { "state": "translated", - "value": "¿Permitir el acceso al portapapeles?" + "value": "Hacer detectable" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Autoriser l’accès au presse-papiers ?" + "value": "Rendre détectable" } }, "ja": { "stringUnit": { "state": "translated", - "value": "クリップボードへのアクセスを許可しますか?" + "value": "検出可能にする" } }, "ko": { "stringUnit": { "state": "translated", - "value": "클립보드 접근을 허용하시겠습니까?" + "value": "검색 허용" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "允许访问剪贴板?" + "value": "允许发现" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "允許存取剪貼簿?" + "value": "允許探索" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Dozvoliti pristup međuspremniku?" + "value": "Učini dostupnim" } }, "da": { "stringUnit": { "state": "translated", - "value": "Tillad adgang til udklipsholderen?" + "value": "Gør synlig" } }, "it": { "stringUnit": { "state": "translated", - "value": "Consentire l'accesso agli appunti?" + "value": "Rendi individuabile" } }, "km": { "stringUnit": { "state": "translated", - "value": "អនុញ្ញាតឱ្យចូលប្រើក្ដារតម្បៀតខ្ទាស់?" + "value": "ធ្វើឲ្យអាចរកឃើញ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Tillat tilgang til utklippstavlen?" + "value": "Gjør denne Mac-en synlig" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Zezwolić na dostęp do schowka?" + "value": "Włącz wykrywanie" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Permitir acesso à área de transferência?" + "value": "Tornar detectável" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Разрешить доступ к буферу обмена?" + "value": "Сделать доступным для обнаружения" } }, "th": { "stringUnit": { "state": "translated", - "value": "อนุญาตให้เข้าถึงคลิปบอร์ดหรือไม่?" + "value": "ทำให้ Mac เครื่องนี้ค้นพบได้" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Panoya erişime izin verilsin mi?" + "value": "Keşfedilebilir yap" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Дозволити доступ до буфера обміну?" + "value": "Зробити цей Mac видимим" } } } }, - "notification.remoteRelay.hostFallback": { + "devices.incoming.confirm.message": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Remote host" + "value": "Other Macs signed in to your cmux account may discover this Mac and connect to its workspaces. Do you want to continue?" } }, "ar": { "stringUnit": { "state": "translated", - "value": "مضيف بعيد" + "value": "قد تكتشف أجهزة Mac الأخرى التي سجّلت الدخول إلى حساب cmux هذا الـ Mac وتتصل بمساحات العمل فيه. هل تريد المتابعة؟" } }, "de": { "stringUnit": { "state": "translated", - "value": "Remote-Host" + "value": "Andere Macs, die bei deinem cmux-Konto angemeldet sind, können diesen Mac finden und sich mit seinen Arbeitsbereichen verbinden. Möchtest du fortfahren?" } }, "es": { "stringUnit": { "state": "translated", - "value": "Host remoto" + "value": "Otros Mac que hayan iniciado sesión en tu cuenta de cmux podrán descubrir este Mac y conectarse a sus espacios de trabajo. ¿Quieres continuar?" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Hôte distant" + "value": "Les autres Mac connectés à votre compte cmux pourront détecter ce Mac et se connecter à ses espaces de travail. Voulez-vous continuer ?" } }, "ja": { "stringUnit": { "state": "translated", - "value": "リモートホスト" + "value": "cmuxアカウントにサインインしているほかのMacから、このMacが検出され、ワークスペースに接続されることがあります。続けますか?" } }, "ko": { "stringUnit": { "state": "translated", - "value": "원격 호스트" + "value": "cmux 계정에 로그인한 다른 Mac에서 이 Mac을 검색하고 작업 공간에 연결할 수 있습니다. 계속하시겠습니까?" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "远程主机" + "value": "登录你 cmux 帐户的其他 Mac 可能会发现此 Mac 并连接到其工作区。要继续吗?" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "遠端主機" + "value": "登入您 cmux 帳戶的其他 Mac 可能會探索此 Mac 並連線至其工作區。要繼續嗎?" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Udaljeni host" + "value": "Drugi Mac računari prijavljeni na vaš cmux nalog možda će otkriti ovaj Mac i povezati se s njegovim radnim prostorima. Želite li nastaviti?" } }, "da": { "stringUnit": { "state": "translated", - "value": "Fjernvært" + "value": "Andre Mac-computere, der er logget ind på din cmux-konto, kan muligvis finde denne Mac og oprette forbindelse til dens arbejdsområder. Vil du fortsætte?" } }, "it": { "stringUnit": { "state": "translated", - "value": "Host remoto" + "value": "Gli altri Mac che hanno effettuato l’accesso al tuo account cmux potrebbero rilevare questo Mac e connettersi ai suoi spazi di lavoro. Vuoi continuare?" } }, "km": { "stringUnit": { "state": "translated", - "value": "ម៉ាស៊ីនពីចម្ងាយ" + "value": "Mac ផ្សេងទៀតដែលបានចូលគណនី cmux របស់អ្នក អាចរកឃើញ Mac នេះ និងភ្ជាប់ទៅកាន់ workspace របស់វា។ តើអ្នកចង់បន្តឬទេ?" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Ekstern vert" + "value": "Andre Mac-maskiner som er logget på cmux-kontoen din, kan finne denne Mac-en og koble til arbeidsområdene. Vil du fortsette?" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Zdalny host" + "value": "Inne Maki zalogowane na Twoje konto cmux mogą wykryć tego Maca i połączyć się z jego obszarami roboczymi. Czy chcesz kontynuować?" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Host remoto" + "value": "Outros Macs conectados à sua conta cmux poderão descobrir este Mac e se conectar aos seus espaços de trabalho. Deseja continuar?" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Удалённый хост" + "value": "Другие Mac, вошедшие в вашу учётную запись cmux, могут обнаружить этот Mac и подключиться к его рабочим пространствам. Продолжить?" } }, "th": { "stringUnit": { "state": "translated", - "value": "โฮสต์ระยะไกล" + "value": "Mac เครื่องอื่นที่ลงชื่อเข้าใช้บัญชี cmux ของคุณอาจค้นพบ Mac เครื่องนี้และเชื่อมต่อกับพื้นที่ทำงานของเครื่องนี้ คุณต้องการดำเนินการต่อหรือไม่" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Uzak ana bilgisayar" + "value": "cmux hesabınızda oturum açmış diğer Mac’ler bu Mac’i keşfedebilir ve çalışma alanlarına bağlanabilir. Devam etmek istiyor musunuz?" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Віддалений хост" + "value": "Інші Mac, на яких виконано вхід у ваш обліковий запис cmux, можуть виявити цей Mac і підключитися до його робочих просторів. Продовжити?" } } } }, - "notification.remoteRelay.title": { + "devices.incoming.confirm.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Make this Mac discoverable?" } }, "ar": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "هل تريد جعل جهاز Mac هذا قابلاً للاكتشاف؟" } }, "de": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Diesen Mac auffindbar machen?" } }, "es": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "¿Hacer que este Mac sea detectable?" } }, "fr": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Rendre ce Mac détectable ?" } }, "ja": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "このMacを検出可能にしますか?" } }, "ko": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "이 Mac을 검색 가능하게 할까요?" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "允许发现此 Mac 吗?" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "要允許探索此 Mac 嗎?" } }, "bs": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Učiniti ovaj Mac dostupnim?" } }, "da": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Gør denne Mac synlig?" } }, "it": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Rendere individuabile questo Mac?" } }, "km": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "ធ្វើឲ្យ Mac នេះអាចរកឃើញ?" } }, "nb": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Gjøre denne Mac-en synlig?" } }, "pl": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Uwidocznić tego Maca?" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Tornar este Mac detectável?" } }, "ru": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Сделать этот Mac доступным для обнаружения?" } }, "th": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "ทำให้ Mac เครื่องนี้ค้นพบได้หรือไม่" } }, "tr": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Bu Mac keşfedilebilir yapılsın mı?" } }, "uk": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Зробити цей Mac доступним для виявлення?" + } + } + } + }, + "cloudTree.device.status.connecting": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Connecting…" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "جارٍ الاتصال…" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Wird verbunden…" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Conectando…" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Connexion…" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "接続中…" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "연결 중…" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "正在连接…" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "正在連線…" } } } @@ -581454,4497 +581310,4976 @@ } } }, - "shortcut.diffViewerNextHunk.label": { + "cloudMenu.machine.freeAccess": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Diff Viewer: Next Hunk" + "value": "Free access" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "وصول مجاني" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Kostenloser Zugang" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Acceso gratuito" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Accès gratuit" } }, "ja": { "stringUnit": { "state": "translated", - "value": "差分ビューア: 次のハンク" + "value": "無料アクセス" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "무료 이용" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "差异查看器:下一个块" + "value": "免费访问" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "免費存取" + } + } + } + }, + "cloudMenu.machine.locked": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Locked" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "مقفلة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Diff-Viewer: Nächster Hunk" + "value": "Gesperrt" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Bloqueada" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Visionneuse de diff : Bloc suivant" + "value": "Verrouillée" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ロック中" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "잠김" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "已锁定" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "已鎖定" + } + } + } + }, + "cloudMenu.dashboard": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Open Cloud Dashboard" } }, "ar": { "stringUnit": { "state": "translated", - "value": "عارض الفروق: المقطع التالي" + "value": "فتح لوحة تحكم السحابة" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Cloud-Dashboard öffnen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Visor de diff: Siguiente bloque" + "value": "Abrir el panel de Cloud" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrir le tableau de bord Cloud" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "クラウドダッシュボードを開く" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "클라우드 대시보드 열기" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "打开云端控制面板" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "差異檢視器:下一個區塊" + "value": "打開雲端控制面板" + } + } + } + }, + "cloudMenu.diagnostics": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Cloud Diagnostics" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تشخيصات السحابة" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Cloud-Diagnose" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Diagnóstico de Cloud" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Diagnostics Cloud" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "クラウド診断" } }, "ko": { "stringUnit": { "state": "translated", - "value": "비교 뷰어: 다음 헝크" + "value": "클라우드 진단" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "云端诊断" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "雲端診斷" } } } }, - "shortcut.diffViewerPreviousHunk.label": { + "cloudMenu.machines.empty": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Diff Viewer: Previous Hunk" + "value": "No machines yet" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "لا توجد أجهزة بعد" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Noch keine Maschinen" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Aún no hay máquinas" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Aucune machine pour le moment" } }, "ja": { "stringUnit": { "state": "translated", - "value": "差分ビューア: 前のハンク" + "value": "マシンはまだありません" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "아직 머신이 없습니다" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "差异查看器:上一个块" + "value": "还没有机器" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "尚無機器" + } + } + } + }, + "cloudMenu.machines.title": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Cloud Machines" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "أجهزة السحابة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Diff-Viewer: Vorheriger Hunk" + "value": "Cloud-Maschinen" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Máquinas de Cloud" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Visionneuse de diff : Bloc précédent" + "value": "Machines Cloud" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "クラウドマシン" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "클라우드 머신" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "云端机器" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "雲端機器" + } + } + } + }, + "cloudMenu.more": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "More Cloud" } }, "ar": { "stringUnit": { "state": "translated", - "value": "عارض الفروق: المقطع السابق" + "value": "المزيد من السحابة" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Mehr Cloud" } }, "es": { "stringUnit": { "state": "translated", - "value": "Visor de diff: Bloque anterior" + "value": "Más de Cloud" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Plus de Cloud" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "その他のクラウド" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "클라우드 더 보기" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "差異檢視器:上一個區塊" + "value": "更多云端项目" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "비교 뷰어: 이전 헝크" + "value": "更多雲端項目" } } } }, - "shortcut.sizeTerminalToMyWindow.label": { + "cloudMenu.problem.requiresPro": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Size Terminal to My Window" + "value": "Cloud machines need cmux Pro" } }, "ar": { "stringUnit": { "state": "translated", - "value": "ضبط حجم الطرفية على نافذتي" + "value": "تتطلب أجهزة السحابة cmux Pro" } }, "de": { "stringUnit": { "state": "translated", - "value": "Terminal an mein Fenster anpassen" + "value": "Cloud-Maschinen erfordern cmux Pro" } }, "es": { "stringUnit": { "state": "translated", - "value": "Ajustar la terminal a mi ventana" + "value": "Las máquinas de Cloud requieren cmux Pro" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Adapter le terminal à ma fenêtre" + "value": "Les machines Cloud nécessitent cmux Pro" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ターミナルを自分のウィンドウに合わせる" + "value": "クラウドマシンには cmux Pro が必要です" } }, "ko": { "stringUnit": { "state": "translated", - "value": "터미널을 내 창 크기에 맞추기" + "value": "클라우드 머신에는 cmux Pro가 필요합니다" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "让终端适配我的窗口" + "value": "云端机器需要 cmux Pro" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "讓終端機符合我的視窗大小" + "value": "雲端機器需要 cmux Pro" } } } }, - "command.terminalDisconnectOtherClients.title": { + "cloudMenu.problem.session": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Disconnect Other Terminal Clients…" + "value": "Your Cloud session expired" } }, "ar": { "stringUnit": { "state": "translated", - "value": "قطع اتصال عملاء الطرفية الآخرين…" + "value": "انتهت صلاحية جلسة السحابة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Andere Terminal-Clients trennen…" + "value": "Deine Cloud-Sitzung ist abgelaufen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Desconectar otros clientes de la terminal…" + "value": "Tu sesión de Cloud ha caducado" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Déconnecter les autres clients du terminal…" + "value": "Votre session Cloud a expiré" } }, "ja": { "stringUnit": { "state": "translated", - "value": "他のターミナルクライアントを切断…" + "value": "クラウドのセッションが期限切れです" } }, "ko": { "stringUnit": { "state": "translated", - "value": "다른 터미널 클라이언트 연결 끊기…" + "value": "클라우드 세션이 만료되었습니다" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "断开其他终端客户端…" + "value": "你的云端会话已过期" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "中斷其他終端機用戶端的連線…" + "value": "你的雲端工作階段已過期" } } } }, - "command.terminalShowSizePanel.title": { + "cloudMenu.problem.unreachable": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Show Terminal Size Panel" + "value": "Could not reach cmux Cloud" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إظهار لوحة حجم الطرفية" + "value": "تعذر الوصول إلى cmux Cloud" } }, "de": { "stringUnit": { "state": "translated", - "value": "Terminalgrößen-Bereich anzeigen" + "value": "cmux Cloud ist nicht erreichbar" } }, "es": { "stringUnit": { "state": "translated", - "value": "Mostrar el panel de tamaño de la terminal" + "value": "No se pudo conectar con cmux Cloud" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Afficher le panneau de taille du terminal" + "value": "Impossible de joindre cmux Cloud" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ターミナルサイズパネルを表示" + "value": "cmux Cloud に接続できません" } }, "ko": { "stringUnit": { "state": "translated", - "value": "터미널 크기 패널 보기" + "value": "cmux Cloud에 연결할 수 없습니다" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "显示终端大小面板" + "value": "无法连接 cmux Cloud" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "顯示終端機大小面板" + "value": "無法連線到 cmux Cloud" } } } }, - "command.terminalSizeToMyWindow.title": { + "cloudMenu.retry": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Size Terminal to My Window" + "value": "Try Again" } }, "ar": { "stringUnit": { "state": "translated", - "value": "ضبط حجم الطرفية على نافذتي" + "value": "إعادة المحاولة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Terminal an mein Fenster anpassen" + "value": "Erneut versuchen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Ajustar la terminal a mi ventana" + "value": "Reintentar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Adapter le terminal à ma fenêtre" + "value": "Réessayer" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ターミナルを自分のウィンドウに合わせる" + "value": "再試行" } }, "ko": { "stringUnit": { "state": "translated", - "value": "터미널을 내 창 크기에 맞추기" + "value": "다시 시도" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "让终端适配我的窗口" + "value": "重试" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "讓終端機符合我的視窗大小" + "value": "再試一次" } } } }, - "terminalSharing.detached.hostShutdown": { + "cloudMenu.showMachines": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The terminal host shut down at %@." + "value": "Show Machines Sidebar" } }, "ar": { "stringUnit": { "state": "translated", - "value": "توقف مضيف الطرفية في %@." + "value": "إظهار الشريط الجانبي للأجهزة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Der Terminal-Host wurde um %@ beendet." + "value": "Maschinen-Seitenleiste anzeigen" } }, "es": { "stringUnit": { "state": "translated", - "value": "El host de la terminal se detuvo a las %@." + "value": "Mostrar la barra lateral de máquinas" } }, "fr": { "stringUnit": { "state": "translated", - "value": "L’hôte du terminal s’est arrêté à %@." + "value": "Afficher la barre latérale des machines" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ターミナルホストが %@ に終了しました。" + "value": "マシンのサイドバーを表示" } }, "ko": { "stringUnit": { "state": "translated", - "value": "터미널 호스트가 %@에 종료되었습니다." + "value": "머신 사이드바 보기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "终端主机已于 %@ 关闭。" + "value": "显示机器侧边栏" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "終端機主機已於 %@ 關閉。" + "value": "顯示機器側邊欄" } } } }, - "terminalSharing.detached.network": { + "cloudMenu.signOut": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The network dropped." + "value": "Sign Out" } }, "ar": { "stringUnit": { "state": "translated", - "value": "انقطع اتصال الشبكة." + "value": "تسجيل الخروج" } }, "de": { "stringUnit": { "state": "translated", - "value": "Die Netzwerkverbindung wurde unterbrochen." + "value": "Abmelden" } }, "es": { "stringUnit": { "state": "translated", - "value": "Se perdió la conexión de red." + "value": "Cerrar sesión" } }, "fr": { "stringUnit": { "state": "translated", - "value": "La connexion réseau a été interrompue." + "value": "Se déconnecter" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ネットワーク接続が切れました。" + "value": "サインアウト" } }, "ko": { "stringUnit": { "state": "translated", - "value": "네트워크 연결이 끊어졌습니다." + "value": "로그아웃" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "网络连接已中断。" + "value": "退出登录" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "網路連線中斷。" + "value": "登出" } } } }, - "terminalSharing.detached.reattach": { + "cloudMenu.signedIn": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Reattach" + "value": "Signed In" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إعادة الإرفاق" + "value": "تم تسجيل الدخول" } }, "de": { "stringUnit": { "state": "translated", - "value": "Erneut verbinden" + "value": "Angemeldet" } }, "es": { "stringUnit": { "state": "translated", - "value": "Volver a conectar" + "value": "Sesión iniciada" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Se reconnecter" + "value": "Connecté" } }, "ja": { "stringUnit": { "state": "translated", - "value": "再接続" + "value": "サインイン済み" } }, "ko": { "stringUnit": { "state": "translated", - "value": "다시 연결" + "value": "로그인됨" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "重新连接" + "value": "已登录" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "重新連接" + "value": "已登入" } } } }, - "terminalSharing.detached.reattachAsViewer": { + "cloudMenu.team": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Reattach as Viewer" + "value": "Team" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إعادة الإرفاق كمشاهد" + "value": "الفريق" } }, "de": { "stringUnit": { "state": "translated", - "value": "Als Zuschauer erneut verbinden" + "value": "Team" } }, "es": { "stringUnit": { "state": "translated", - "value": "Volver a conectar como espectador" + "value": "Equipo" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Se reconnecter en lecture seule" + "value": "Équipe" } }, "ja": { "stringUnit": { "state": "translated", - "value": "閲覧者として再接続" + "value": "チーム" } }, "ko": { "stringUnit": { "state": "translated", - "value": "보기 전용으로 다시 연결" + "value": "팀" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "以查看者身份重新连接" + "value": "团队" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "以檢視者身分重新連接" + "value": "團隊" } } } }, - "terminalSharing.detached.reattachAsViewer.help": { + "cloudMenu.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Reattach without changing the terminal size" + "value": "Cloud" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إعادة الإرفاق دون تغيير حجم الطرفية" + "value": "السحابة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Erneut verbinden, ohne die Terminalgröße zu ändern" + "value": "Cloud" } }, "es": { "stringUnit": { "state": "translated", - "value": "Volver a conectar sin cambiar el tamaño de la terminal" + "value": "Cloud" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Se reconnecter sans modifier la taille du terminal" + "value": "Cloud" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ターミナルサイズを変えずに再接続" + "value": "クラウド" } }, "ko": { "stringUnit": { "state": "translated", - "value": "터미널 크기를 바꾸지 않고 다시 연결" + "value": "클라우드" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "重新连接但不更改终端大小" + "value": "云端" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "重新連接但不變更終端機大小" + "value": "雲端" } } } }, - "terminalSharing.detached.someone": { + "cloudMenu.tone.attention": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Someone" + "value": "Needs attention" } }, "ar": { "stringUnit": { "state": "translated", - "value": "شخص ما" + "value": "يحتاج إلى انتباه" } }, "de": { "stringUnit": { "state": "translated", - "value": "Jemand" + "value": "Erfordert Aufmerksamkeit" } }, "es": { "stringUnit": { "state": "translated", - "value": "Alguien" + "value": "Requiere atención" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Quelqu’un" + "value": "Nécessite une attention" } }, "ja": { "stringUnit": { "state": "translated", - "value": "誰か" + "value": "対応が必要" } }, "ko": { "stringUnit": { "state": "translated", - "value": "누군가" + "value": "확인 필요" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "有人" + "value": "需要处理" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "有人" + "value": "需要處理" } } } }, - "terminalSharing.detached.superseded": { + "menu.cloud.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Another window of this Mac replaced this one at %@." + "value": "Cloud" } }, "ar": { "stringUnit": { "state": "translated", - "value": "استبدلت نافذة أخرى على جهاز Mac هذا هذه النافذة في %@." + "value": "السحابة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Ein anderes Fenster dieses Macs hat dieses um %@ ersetzt." + "value": "Cloud" } }, "es": { "stringUnit": { "state": "translated", - "value": "Otra ventana de este Mac reemplazó a esta a las %@." + "value": "Cloud" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Une autre fenêtre de ce Mac a remplacé celle-ci à %@." + "value": "Cloud" } }, "ja": { "stringUnit": { "state": "translated", - "value": "このMacの別のウィンドウが %@ にこのウィンドウを置き換えました。" + "value": "クラウド" } }, "ko": { "stringUnit": { "state": "translated", - "value": "이 Mac의 다른 창이 %@에 이 창을 대체했습니다." + "value": "클라우드" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "这台 Mac 的另一个窗口已于 %@ 替换此窗口。" + "value": "云端" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "這台 Mac 的另一個視窗已於 %@ 取代此視窗。" - } - } - } - }, - "terminalSharing.participant.personDevice": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "%1$@ · %2$@" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "%1$@ · %2$@" + "value": "雲端" } } } }, - "terminalSharing.device.browser": { + "cloudMenu.machines.loading": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Browser" + "value": "Cloud Machines · Loading…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "المتصفح" + "value": "أجهزة السحابة · جارٍ التحميل…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Browser" + "value": "Cloud-Maschinen · Wird geladen…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Navegador" + "value": "Máquinas de Cloud · Cargando…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Navigateur" + "value": "Machines Cloud · Chargement…" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ブラウザ" + "value": "クラウドマシン · 読み込み中…" } }, "ko": { "stringUnit": { "state": "translated", - "value": "브라우저" + "value": "클라우드 머신 · 불러오는 중…" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "浏览器" + "value": "云端机器 · 正在加载…" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "瀏覽器" + "value": "雲端機器 · 正在載入…" } } } }, - "terminalSharing.device.ipad": { + "cloudMenu.machines.showAll": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "iPad" + "value": "Show All Machines…" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "iPad" + "value": "عرض كل الأجهزة…" } - } - } - }, - "terminalSharing.device.iphone": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "de": { "stringUnit": { "state": "translated", - "value": "iPhone" + "value": "Alle Maschinen anzeigen…" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "iPhone" + "value": "Mostrar todas las máquinas…" } - } - } - }, - "terminalSharing.device.mac": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "fr": { "stringUnit": { "state": "translated", - "value": "Mac" + "value": "Afficher toutes les machines…" } }, "ja": { "stringUnit": { "state": "translated", - "value": "Mac" + "value": "すべてのマシンを表示…" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "모든 머신 보기…" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "显示所有机器…" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "顯示所有機器…" } } } }, - "terminalSharing.device.tui": { + "cloudMenu.newMachine": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Terminal client" + "value": "New Cloud Machine…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "عميل طرفية" + "value": "جهاز سحابي جديد…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Terminal-Client" + "value": "Neue Cloud-Maschine…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Cliente de terminal" + "value": "Nueva máquina de Cloud…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Client terminal" + "value": "Nouvelle machine Cloud…" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ターミナルクライアント" + "value": "新規クラウドマシン…" } }, "ko": { "stringUnit": { "state": "translated", - "value": "터미널 클라이언트" + "value": "새 클라우드 머신…" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "终端客户端" + "value": "新建云端机器…" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "終端機用戶端" + "value": "新增雲端機器…" } } } }, - "terminalSharing.device.unknown": { + "cloudMenu.signIn": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Device" + "value": "Sign In to cmux Cloud…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "جهاز" + "value": "تسجيل الدخول إلى cmux Cloud…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Gerät" + "value": "Bei cmux Cloud anmelden…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Dispositivo" + "value": "Iniciar sesión en cmux Cloud…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Appareil" + "value": "Se connecter à cmux Cloud…" } }, "ja": { "stringUnit": { "state": "translated", - "value": "デバイス" + "value": "cmux Cloud にサインイン…" } }, "ko": { "stringUnit": { "state": "translated", - "value": "기기" + "value": "cmux Cloud에 로그인…" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "设备" + "value": "登录 cmux Cloud…" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "裝置" + "value": "登入 cmux Cloud…" } } } }, - "terminalSharing.owner.held": { + "cloudMenu.signInAgain": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Held size" + "value": "Sign In Again…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "حجم محتفظ به" + "value": "تسجيل الدخول مجددًا…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Beibehaltene Größe" + "value": "Erneut anmelden…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Tamaño conservado" + "value": "Volver a iniciar sesión…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Taille conservée" + "value": "Se reconnecter…" } }, "ja": { "stringUnit": { "state": "translated", - "value": "保持されたサイズ" + "value": "もう一度サインイン…" } }, "ko": { "stringUnit": { "state": "translated", - "value": "유지된 크기" + "value": "다시 로그인…" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "保留的大小" + "value": "重新登录…" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "保留的大小" + "value": "重新登入…" } } } }, - "terminalSharing.owner.largest": { + "cloudMenu.signingIn": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Largest window" + "value": "Signing In…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "أكبر نافذة" + "value": "جارٍ تسجيل الدخول…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Größtes Fenster" + "value": "Anmeldung läuft…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Ventana más grande" + "value": "Iniciando sesión…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Plus grande fenêtre" + "value": "Connexion…" } }, "ja": { "stringUnit": { "state": "translated", - "value": "最大のウィンドウ" + "value": "サインイン中…" } }, "ko": { "stringUnit": { "state": "translated", - "value": "가장 큰 창" + "value": "로그인 중…" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "最大的窗口" + "value": "正在登录…" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "最大的視窗" + "value": "正在登入…" } } } }, - "terminalSharing.owner.shared": { + "cloudMenu.upgrade": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Shared size" + "value": "Upgrade to Pro…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "حجم مشترك" + "value": "الترقية إلى Pro…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Gemeinsame Größe" + "value": "Auf Pro upgraden…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Tamaño compartido" + "value": "Mejorar a Pro…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Taille partagée" + "value": "Passer à Pro…" } }, "ja": { "stringUnit": { "state": "translated", - "value": "共有サイズ" + "value": "Pro にアップグレード…" } }, "ko": { "stringUnit": { "state": "translated", - "value": "공유 크기" + "value": "Pro로 업그레이드…" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "共享大小" + "value": "升级到 Pro…" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "共用大小" + "value": "升級至 Pro…" } } } }, - "terminalSharing.owner.smallest": { + "shortcut.diffViewerNextHunk.label": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Fits everyone" + "value": "Diff Viewer: Next Hunk" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "يناسب الجميع" + "value": "差分ビューア: 次のハンク" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Passt für alle" + "value": "差异查看器:下一个块" } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "Se ajusta a todos" + "value": "Diff-Viewer: Nächster Hunk" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Convient à tous" + "value": "Visionneuse de diff : Bloc suivant" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "全員に合わせる" + "value": "عارض الفروق: المقطع التالي" } }, - "ko": { + "es": { "stringUnit": { "state": "translated", - "value": "모두에게 맞춤" + "value": "Visor de diff: Siguiente bloque" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "适合所有人" + "value": "差異檢視器:下一個區塊" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "符合所有人" + "value": "비교 뷰어: 다음 헝크" } } } }, - "terminalSharing.participant.thisMac": { + "shortcut.diffViewerPreviousHunk.label": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "This Mac" + "value": "Diff Viewer: Previous Hunk" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "جهاز Mac هذا" + "value": "差分ビューア: 前のハンク" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Dieser Mac" + "value": "差异查看器:上一个块" } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "Este Mac" + "value": "Diff-Viewer: Vorheriger Hunk" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ce Mac" + "value": "Visionneuse de diff : Bloc précédent" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "このMac" + "value": "عارض الفروق: المقطع السابق" } }, - "ko": { + "es": { "stringUnit": { "state": "translated", - "value": "이 Mac" + "value": "Visor de diff: Bloque anterior" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "这台 Mac" + "value": "差異檢視器:上一個區塊" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "這台 Mac" + "value": "비교 뷰어: 이전 헝크" } } } }, - "terminalSharing.owner.possessiveDevice": { + "settings.search.alias.section.themes": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%1$@'s %2$@" + "value": "theme themes color scheme colors palette ghostty light dark mode accent" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "%1$@ · %2$@" + "value": "theme themes color scheme colors palette ghostty light dark mode accent design designs farbschema farben palette hell dunkel akzent" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "%1$@ · %2$@" + "value": "theme themes color scheme colors palette ghostty light dark mode accent thème thèmes couleurs palette clair sombre accent" } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "%1$@ · %2$@" + "value": "theme themes color scheme colors palette ghostty light dark mode accent سمة سمات ألوان لوحة فاتح داكن تمييز" } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "%1$@ · %2$@" + "value": "theme themes color scheme colors palette ghostty light dark mode accent tema temas colores paleta claro oscuro acento" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%1$@の%2$@" + "value": "theme themes color scheme colors palette ghostty light dark mode accent 主題 配色 顏色 調色盤 淺色 深色 強調色" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%1$@의 %2$@" + "value": "theme themes color scheme colors palette ghostty light dark mode accent 主题 配色 颜色 调色板 浅色 深色 强调色" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "%1$@的%2$@" + "value": "theme themes color scheme colors palette ghostty light dark mode accent 테마 색상 팔레트 라이트 다크 강조색" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "%1$@的%2$@" + "value": "theme themes color scheme colors palette ghostty light dark mode accent テーマ 配色 カラー パレット ライト ダーク アクセント" } } } }, - "terminalSharing.owner.fixedShort": { + "settings.section.themes": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Fixed" + "value": "Themes" } }, "ar": { "stringUnit": { "state": "translated", - "value": "ثابت" + "value": "السمات" } }, "de": { "stringUnit": { "state": "translated", - "value": "Fest" + "value": "Designs" } }, "es": { "stringUnit": { "state": "translated", - "value": "Fijo" + "value": "Temas" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Fixe" + "value": "Thèmes" } }, "ja": { "stringUnit": { "state": "translated", - "value": "固定" + "value": "テーマ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "고정" + "value": "테마" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "固定" + "value": "主题" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "固定" + "value": "主題" } } } }, - "terminalSharing.tab.tooltip": { + "settings.terminal.theme": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Size set by %1$@ · %2$@" + "value": "Terminal Theme" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الحجم يحدده %1$@ · %2$@" + "value": "سمة الطرفية" } }, "de": { "stringUnit": { "state": "translated", - "value": "Größe festgelegt von %1$@ · %2$@" + "value": "Terminal-Design" } }, "es": { "stringUnit": { "state": "translated", - "value": "Tamaño definido por %1$@ · %2$@" + "value": "Tema del terminal" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Taille définie par %1$@ · %2$@" + "value": "Thème du terminal" } }, "ja": { "stringUnit": { "state": "translated", - "value": "%1$@がサイズを設定 · %2$@" + "value": "ターミナルテーマ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "크기 설정: %1$@ · %2$@" + "value": "터미널 테마" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "尺寸由%1$@设定 · %2$@" + "value": "终端主题" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "尺寸由%1$@設定 · %2$@" + "value": "終端機主題" } } } }, - "terminalSharing.panel.sizeLabel": { + "shortcut.sizeTerminalToMyWindow.label": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Size" + "value": "Size Terminal to My Window" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الحجم" + "value": "ضبط حجم الطرفية على نافذتي" } }, "de": { "stringUnit": { "state": "translated", - "value": "Größe" + "value": "Terminal an mein Fenster anpassen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Tamaño" + "value": "Ajustar la terminal a mi ventana" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Taille" + "value": "Adapter le terminal à ma fenêtre" } }, "ja": { "stringUnit": { "state": "translated", - "value": "サイズ" + "value": "ターミナルを自分のウィンドウに合わせる" } }, "ko": { "stringUnit": { "state": "translated", - "value": "크기" + "value": "터미널을 내 창 크기에 맞추기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "尺寸" + "value": "让终端适配我的窗口" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "尺寸" + "value": "讓終端機符合我的視窗大小" } } } }, - "terminalSharing.sizeMode.latest": { + "command.terminalDisconnectOtherClients.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Follow Latest" + "value": "Disconnect Other Terminal Clients…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "اتباع الأحدث" + "value": "قطع اتصال عملاء الطرفية الآخرين…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Letzter Eingabe folgen" + "value": "Andere Terminal-Clients trennen…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Seguir la última entrada" + "value": "Desconectar otros clientes de la terminal…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Suivre la dernière saisie" + "value": "Déconnecter les autres clients du terminal…" } }, "ja": { "stringUnit": { "state": "translated", - "value": "最新の入力に合わせる" + "value": "他のターミナルクライアントを切断…" } }, "ko": { "stringUnit": { "state": "translated", - "value": "최근 입력 따르기" + "value": "다른 터미널 클라이언트 연결 끊기…" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "跟随最新输入" + "value": "断开其他终端客户端…" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "跟隨最新輸入" + "value": "中斷其他終端機用戶端的連線…" } } } }, - "terminalSharing.sizeMode.smallest": { + "command.terminalShowSizePanel.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Fit Everyone" + "value": "Show Terminal Size Panel" } }, "ar": { "stringUnit": { "state": "translated", - "value": "ملاءمة الجميع" + "value": "إظهار لوحة حجم الطرفية" } }, "de": { "stringUnit": { "state": "translated", - "value": "Allen anpassen" + "value": "Terminalgrößen-Bereich anzeigen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Ajustar a todos" + "value": "Mostrar el panel de tamaño de la terminal" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Adapter à tous" + "value": "Afficher le panneau de taille du terminal" } }, "ja": { "stringUnit": { "state": "translated", - "value": "全員に合わせる" + "value": "ターミナルサイズパネルを表示" } }, "ko": { "stringUnit": { "state": "translated", - "value": "모두에게 맞추기" + "value": "터미널 크기 패널 보기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "适合所有人" + "value": "显示终端大小面板" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "適合所有人" + "value": "顯示終端機大小面板" } } } }, - "terminalSharing.sizeMode.largest": { + "command.terminalSizeToMyWindow.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Largest Window" + "value": "Size Terminal to My Window" } }, "ar": { "stringUnit": { "state": "translated", - "value": "أكبر نافذة" + "value": "ضبط حجم الطرفية على نافذتي" } }, "de": { "stringUnit": { "state": "translated", - "value": "Größtes Fenster" + "value": "Terminal an mein Fenster anpassen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Ventana más grande" + "value": "Ajustar la terminal a mi ventana" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Plus grande fenêtre" + "value": "Adapter le terminal à ma fenêtre" } }, "ja": { "stringUnit": { "state": "translated", - "value": "最大のウインドウ" + "value": "ターミナルを自分のウィンドウに合わせる" } }, "ko": { "stringUnit": { "state": "translated", - "value": "가장 큰 윈도우" + "value": "터미널을 내 창 크기에 맞추기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "最大窗口" + "value": "让终端适配我的窗口" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "最大視窗" + "value": "讓終端機符合我的視窗大小" } } } }, - "terminalSharing.sizeMode.priority": { + "terminalSharing.detached.hostShutdown": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Priority" + "value": "The terminal host shut down at %@." } }, "ar": { "stringUnit": { "state": "translated", - "value": "الأولوية" + "value": "توقف مضيف الطرفية في %@." } }, "de": { "stringUnit": { "state": "translated", - "value": "Priorität" + "value": "Der Terminal-Host wurde um %@ beendet." } }, "es": { "stringUnit": { "state": "translated", - "value": "Prioridad" + "value": "El host de la terminal se detuvo a las %@." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Priorité" + "value": "L’hôte du terminal s’est arrêté à %@." } }, "ja": { "stringUnit": { "state": "translated", - "value": "優先順位" + "value": "ターミナルホストが %@ に終了しました。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "우선순위" + "value": "터미널 호스트가 %@에 종료되었습니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "优先级" + "value": "终端主机已于 %@ 关闭。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "優先順序" + "value": "終端機主機已於 %@ 關閉。" } } } }, - "terminalSharing.sizeMode.fixed": { + "terminalSharing.detached.network": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Fixed" + "value": "The network dropped." } }, "ar": { "stringUnit": { "state": "translated", - "value": "ثابت" + "value": "انقطع اتصال الشبكة." } }, "de": { "stringUnit": { "state": "translated", - "value": "Fest" + "value": "Die Netzwerkverbindung wurde unterbrochen." } }, "es": { "stringUnit": { "state": "translated", - "value": "Fijo" + "value": "Se perdió la conexión de red." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Fixe" + "value": "La connexion réseau a été interrompue." } }, "ja": { "stringUnit": { "state": "translated", - "value": "固定" + "value": "ネットワーク接続が切れました。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "고정" + "value": "네트워크 연결이 끊어졌습니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "固定" + "value": "网络连接已中断。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "固定" + "value": "網路連線中斷。" } } } }, - "terminalSharing.panel.setsSize": { + "terminalSharing.detached.reattach": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "sets size" + "value": "Reattach" } }, "ar": { "stringUnit": { "state": "translated", - "value": "يحدد الحجم" + "value": "إعادة الإرفاق" } }, "de": { "stringUnit": { "state": "translated", - "value": "legt Größe fest" + "value": "Erneut verbinden" } }, "es": { "stringUnit": { "state": "translated", - "value": "define el tamaño" + "value": "Volver a conectar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "définit la taille" + "value": "Se reconnecter" } }, "ja": { "stringUnit": { "state": "translated", - "value": "サイズを設定" + "value": "再接続" } }, "ko": { "stringUnit": { "state": "translated", - "value": "크기 설정" + "value": "다시 연결" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "设定尺寸" + "value": "重新连接" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "設定尺寸" + "value": "重新連接" } } } }, - "terminalSharing.panel.notCounted": { + "terminalSharing.detached.reattachAsViewer": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "not counted" + "value": "Reattach as Viewer" } }, "ar": { "stringUnit": { "state": "translated", - "value": "غير محتسب" + "value": "إعادة الإرفاق كمشاهد" } }, "de": { "stringUnit": { "state": "translated", - "value": "nicht gezählt" + "value": "Als Zuschauer erneut verbinden" } }, "es": { "stringUnit": { "state": "translated", - "value": "no cuenta" + "value": "Volver a conectar como espectador" } }, "fr": { "stringUnit": { "state": "translated", - "value": "non compté" + "value": "Se reconnecter en lecture seule" } }, "ja": { "stringUnit": { "state": "translated", - "value": "カウント対象外" + "value": "閲覧者として再接続" } }, "ko": { "stringUnit": { "state": "translated", - "value": "계산 안 됨" + "value": "보기 전용으로 다시 연결" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "不计入" + "value": "以查看者身份重新连接" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "不計入" + "value": "以檢視者身分重新連接" } } } }, - "terminalSharing.panel.rowOptions": { + "terminalSharing.detached.reattachAsViewer.help": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Options for %@" + "value": "Reattach without changing the terminal size" } }, "ar": { "stringUnit": { "state": "translated", - "value": "خيارات %@" + "value": "إعادة الإرفاق دون تغيير حجم الطرفية" } }, "de": { "stringUnit": { "state": "translated", - "value": "Optionen für %@" + "value": "Erneut verbinden, ohne die Terminalgröße zu ändern" } }, "es": { "stringUnit": { "state": "translated", - "value": "Opciones de %@" + "value": "Volver a conectar sin cambiar el tamaño de la terminal" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Options pour %@" + "value": "Se reconnecter sans modifier la taille du terminal" } }, "ja": { "stringUnit": { "state": "translated", - "value": "%@のオプション" + "value": "ターミナルサイズを変えずに再接続" } }, "ko": { "stringUnit": { "state": "translated", - "value": "%@ 옵션" + "value": "터미널 크기를 바꾸지 않고 다시 연결" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%@的选项" + "value": "重新连接但不更改终端大小" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%@的選項" + "value": "重新連接但不變更終端機大小" } } } }, - "terminalSharing.panel.disconnectOthersButton": { + "terminalSharing.detached.someone": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Disconnect Others" + "value": "Someone" } }, "ar": { "stringUnit": { "state": "translated", - "value": "قطع اتصال الآخرين" + "value": "شخص ما" } }, "de": { "stringUnit": { "state": "translated", - "value": "Andere trennen" + "value": "Jemand" } }, "es": { "stringUnit": { "state": "translated", - "value": "Desconectar a los demás" + "value": "Alguien" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Déconnecter les autres" + "value": "Quelqu’un" } }, "ja": { "stringUnit": { "state": "translated", - "value": "他の接続を切断" + "value": "誰か" } }, "ko": { "stringUnit": { "state": "translated", - "value": "다른 연결 끊기" + "value": "누군가" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "断开其他连接" + "value": "有人" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "中斷其他連線" + "value": "有人" } } } }, - "terminalSharing.detached.titleShort": { + "terminalSharing.detached.superseded": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Detached" + "value": "Another window of this Mac replaced this one at %@." } }, "ar": { "stringUnit": { "state": "translated", - "value": "تم الفصل" + "value": "استبدلت نافذة أخرى على جهاز Mac هذا هذه النافذة في %@." } }, "de": { "stringUnit": { "state": "translated", - "value": "Getrennt" + "value": "Ein anderes Fenster dieses Macs hat dieses um %@ ersetzt." } }, "es": { "stringUnit": { "state": "translated", - "value": "Desconectado" + "value": "Otra ventana de este Mac reemplazó a esta a las %@." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Détaché" + "value": "Une autre fenêtre de ce Mac a remplacé celle-ci à %@." } }, "ja": { "stringUnit": { "state": "translated", - "value": "切断されました" + "value": "このMacの別のウィンドウが %@ にこのウィンドウを置き換えました。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "분리됨" + "value": "이 Mac의 다른 창이 %@에 이 창을 대체했습니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "已分离" + "value": "这台 Mac 的另一个窗口已于 %@ 替换此窗口。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "已分離" + "value": "這台 Mac 的另一個視窗已於 %@ 取代此視窗。" } } } }, - "terminalSharing.detached.byMessageShort": { + "terminalSharing.participant.personDevice": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%1$@ disconnected this Mac at %2$@." + "value": "%1$@ · %2$@" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%1$@ · %2$@" + } + } + } + }, + "terminalSharing.device.browser": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Browser" } }, "ar": { "stringUnit": { "state": "translated", - "value": "قطع %1$@ اتصال هذا الـMac في %2$@." + "value": "المتصفح" } }, "de": { "stringUnit": { "state": "translated", - "value": "%1$@ hat diesen Mac um %2$@ getrennt." + "value": "Browser" } }, "es": { "stringUnit": { "state": "translated", - "value": "%1$@ desconectó este Mac a las %2$@." + "value": "Navegador" } }, "fr": { "stringUnit": { "state": "translated", - "value": "%1$@ a déconnecté ce Mac à %2$@." + "value": "Navigateur" } }, "ja": { "stringUnit": { "state": "translated", - "value": "%1$@が%2$@にこのMacを切断しました。" + "value": "ブラウザ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "%1$@이(가) %2$@에 이 Mac의 연결을 끊었습니다." + "value": "브라우저" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%1$@于%2$@断开了这台Mac的连接。" + "value": "浏览器" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%1$@於%2$@中斷了這台Mac的連線。" + "value": "瀏覽器" } } } }, - "terminalSharing.chip.hiddenColumns": { + "terminalSharing.device.ipad": { "extractionState": "manual", "localizations": { "en": { - "variations": { - "plural": { - "one": { - "stringUnit": { - "state": "translated", - "value": "%ld col hidden" - } - }, - "other": { - "stringUnit": { - "state": "translated", - "value": "%ld cols hidden" - } - } - } + "stringUnit": { + "state": "translated", + "value": "iPad" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "iPad" + } + } + } + }, + "terminalSharing.device.iphone": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "iPhone" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "iPhone" + } + } + } + }, + "terminalSharing.device.mac": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Mac" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Mac" + } + } + } + }, + "terminalSharing.device.tui": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Terminal client" } }, "ar": { - "variations": { - "plural": { - "zero": { - "stringUnit": { - "state": "translated", - "value": "لا أعمدة مخفية (%ld)" - } - }, - "one": { - "stringUnit": { - "state": "translated", - "value": "عمود واحد مخفي (%ld)" - } - }, - "two": { - "stringUnit": { - "state": "translated", - "value": "عمودان مخفيان (%ld)" - } - }, - "few": { - "stringUnit": { - "state": "translated", - "value": "%ld أعمدة مخفية" - } - }, - "many": { - "stringUnit": { - "state": "translated", - "value": "%ld عمودًا مخفيًا" - } - }, - "other": { - "stringUnit": { - "state": "translated", - "value": "%ld عمود مخفي" - } - } - } + "stringUnit": { + "state": "translated", + "value": "عميل طرفية" } }, "de": { - "variations": { - "plural": { - "one": { - "stringUnit": { - "state": "translated", - "value": "%ld Spalte ausgeblendet" - } - }, - "other": { - "stringUnit": { - "state": "translated", - "value": "%ld Spalten ausgeblendet" - } - } - } + "stringUnit": { + "state": "translated", + "value": "Terminal-Client" } }, "es": { - "variations": { - "plural": { - "one": { - "stringUnit": { - "state": "translated", - "value": "%ld columna oculta" - } - }, - "many": { - "stringUnit": { - "state": "translated", - "value": "%ld de columnas ocultas" - } - }, - "other": { - "stringUnit": { - "state": "translated", - "value": "%ld columnas ocultas" - } - } - } + "stringUnit": { + "state": "translated", + "value": "Cliente de terminal" } }, "fr": { - "variations": { - "plural": { - "one": { - "stringUnit": { - "state": "translated", - "value": "%ld colonne masquée" - } - }, - "many": { - "stringUnit": { - "state": "translated", - "value": "%ld de colonnes masquées" - } - }, - "other": { - "stringUnit": { - "state": "translated", - "value": "%ld colonnes masquées" - } - } - } + "stringUnit": { + "state": "translated", + "value": "Client terminal" } }, "ja": { - "variations": { - "plural": { - "other": { - "stringUnit": { - "state": "translated", - "value": "%ld列が非表示" - } - } - } + "stringUnit": { + "state": "translated", + "value": "ターミナルクライアント" } - }, - "ko": { - "variations": { - "plural": { - "other": { - "stringUnit": { - "state": "translated", - "value": "%ld열 숨겨짐" - } - } - } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "터미널 클라이언트" } }, "zh-Hans": { - "variations": { - "plural": { - "other": { - "stringUnit": { - "state": "translated", - "value": "隐藏 %ld 列" - } - } - } + "stringUnit": { + "state": "translated", + "value": "终端客户端" } }, "zh-Hant": { - "variations": { - "plural": { - "other": { - "stringUnit": { - "state": "translated", - "value": "隱藏 %ld 欄" - } - } - } + "stringUnit": { + "state": "translated", + "value": "終端機用戶端" } } } }, - "terminalSharing.panel.cancel": { + "terminalSharing.device.unknown": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cancel" + "value": "Device" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إلغاء" + "value": "جهاز" } }, "de": { "stringUnit": { "state": "translated", - "value": "Abbrechen" + "value": "Gerät" } }, "es": { "stringUnit": { "state": "translated", - "value": "Cancelar" + "value": "Dispositivo" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Annuler" + "value": "Appareil" } }, "ja": { "stringUnit": { "state": "translated", - "value": "キャンセル" + "value": "デバイス" } }, "ko": { "stringUnit": { "state": "translated", - "value": "취소" + "value": "기기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "取消" + "value": "设备" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "取消" + "value": "裝置" } } } }, - "terminalSharing.panel.disconnectOthers.confirm": { + "terminalSharing.owner.held": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Disconnect all other clients?" + "value": "Held size" } }, "ar": { "stringUnit": { "state": "translated", - "value": "هل تريد قطع اتصال جميع العملاء الآخرين؟" + "value": "حجم محتفظ به" } }, "de": { "stringUnit": { "state": "translated", - "value": "Alle anderen Clients trennen?" + "value": "Beibehaltene Größe" } }, "es": { "stringUnit": { "state": "translated", - "value": "¿Desconectar todos los demás clientes?" + "value": "Tamaño conservado" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Déconnecter tous les autres clients ?" + "value": "Taille conservée" } }, "ja": { "stringUnit": { "state": "translated", - "value": "他のすべてのクライアントを切断しますか?" + "value": "保持されたサイズ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "다른 모든 클라이언트의 연결을 끊을까요?" + "value": "유지된 크기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "要断开其他所有客户端吗?" + "value": "保留的大小" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "要中斷其他所有用戶端的連線嗎?" + "value": "保留的大小" } } } }, - "terminalSharing.panel.disconnectOthers.confirmButton": { + "terminalSharing.owner.largest": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Disconnect" + "value": "Largest window" } }, "ar": { "stringUnit": { "state": "translated", - "value": "قطع الاتصال" + "value": "أكبر نافذة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Trennen" + "value": "Größtes Fenster" } }, "es": { "stringUnit": { "state": "translated", - "value": "Desconectar" + "value": "Ventana más grande" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Déconnecter" + "value": "Plus grande fenêtre" } }, "ja": { "stringUnit": { "state": "translated", - "value": "切断" + "value": "最大のウィンドウ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "연결 끊기" + "value": "가장 큰 창" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "断开连接" + "value": "最大的窗口" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "中斷連線" + "value": "最大的視窗" } } } }, - "terminalSharing.panel.fixedColumns": { + "terminalSharing.owner.shared": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Columns" + "value": "Shared size" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الأعمدة" + "value": "حجم مشترك" } }, "de": { "stringUnit": { "state": "translated", - "value": "Spalten" + "value": "Gemeinsame Größe" } }, "es": { "stringUnit": { "state": "translated", - "value": "Columnas" + "value": "Tamaño compartido" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Colonnes" + "value": "Taille partagée" } }, "ja": { "stringUnit": { "state": "translated", - "value": "列" + "value": "共有サイズ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "열" + "value": "공유 크기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "列数" + "value": "共享大小" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "欄數" + "value": "共用大小" } } } }, - "terminalSharing.panel.fixedRows": { + "terminalSharing.owner.smallest": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Rows" + "value": "Fits everyone" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الصفوف" + "value": "يناسب الجميع" } }, "de": { "stringUnit": { "state": "translated", - "value": "Zeilen" + "value": "Passt für alle" } }, "es": { "stringUnit": { "state": "translated", - "value": "Filas" + "value": "Se ajusta a todos" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Lignes" + "value": "Convient à tous" } }, "ja": { "stringUnit": { "state": "translated", - "value": "行" + "value": "全員に合わせる" } }, "ko": { "stringUnit": { "state": "translated", - "value": "행" + "value": "모두에게 맞춤" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "行数" + "value": "适合所有人" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "列數" + "value": "符合所有人" } } } }, - "terminalSharing.panel.unavailable": { + "terminalSharing.participant.thisMac": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "This terminal is not shared." + "value": "This Mac" } }, "ar": { "stringUnit": { "state": "translated", - "value": "هذه الطرفية غير مشتركة." + "value": "جهاز Mac هذا" } }, "de": { "stringUnit": { "state": "translated", - "value": "Dieses Terminal wird nicht geteilt." + "value": "Dieser Mac" } }, "es": { "stringUnit": { "state": "translated", - "value": "Esta terminal no está compartida." + "value": "Este Mac" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ce terminal n’est pas partagé." + "value": "Ce Mac" } }, "ja": { "stringUnit": { "state": "translated", - "value": "このターミナルは共有されていません。" + "value": "このMac" } }, "ko": { "stringUnit": { "state": "translated", - "value": "이 터미널은 공유되지 않았습니다." + "value": "이 Mac" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "此终端未共享。" + "value": "这台 Mac" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "此終端機未共用。" + "value": "這台 Mac" } } } }, - "terminalSharing.panel.counts": { + "terminalSharing.owner.possessiveDevice": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Counts toward size" + "value": "%1$@'s %2$@" } }, "ar": { "stringUnit": { "state": "translated", - "value": "يُحتسب في الحجم" + "value": "%1$@ · %2$@" } }, "de": { "stringUnit": { "state": "translated", - "value": "Zählt für die Größe" + "value": "%1$@ · %2$@" } }, "es": { "stringUnit": { "state": "translated", - "value": "Cuenta para el tamaño" + "value": "%1$@ · %2$@" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Compte pour la taille" + "value": "%1$@ · %2$@" } }, "ja": { "stringUnit": { "state": "translated", - "value": "サイズに反映" + "value": "%1$@の%2$@" } }, "ko": { "stringUnit": { "state": "translated", - "value": "크기에 반영" + "value": "%1$@의 %2$@" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "计入大小" + "value": "%1$@的%2$@" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "計入大小" + "value": "%1$@的%2$@" } } } }, - "terminalSharing.panel.disconnect": { + "terminalSharing.owner.fixedShort": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Disconnect" + "value": "Fixed" } }, "ar": { "stringUnit": { "state": "translated", - "value": "قطع الاتصال" + "value": "ثابت" } }, "de": { "stringUnit": { "state": "translated", - "value": "Trennen" + "value": "Fest" } }, "es": { "stringUnit": { "state": "translated", - "value": "Desconectar" + "value": "Fijo" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Déconnecter" + "value": "Fixe" } }, "ja": { "stringUnit": { "state": "translated", - "value": "切断" + "value": "固定" } }, "ko": { "stringUnit": { "state": "translated", - "value": "연결 끊기" + "value": "고정" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "断开连接" + "value": "固定" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "中斷連線" + "value": "固定" } } } }, - "settings.search.alias.section.themes": { + "terminalSharing.tab.tooltip": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent" + "value": "Size set by %1$@ · %2$@" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent design designs farbschema farben palette hell dunkel akzent" + "value": "الحجم يحدده %1$@ · %2$@" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent thème thèmes couleurs palette clair sombre accent" + "value": "Größe festgelegt von %1$@ · %2$@" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent سمة سمات ألوان لوحة فاتح داكن تمييز" + "value": "Tamaño definido por %1$@ · %2$@" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent tema temas colores paleta claro oscuro acento" + "value": "Taille définie par %1$@ · %2$@" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent 主題 配色 顏色 調色盤 淺色 深色 強調色" + "value": "%1$@がサイズを設定 · %2$@" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent 主题 配色 颜色 调色板 浅色 深色 强调色" + "value": "크기 설정: %1$@ · %2$@" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent 테마 색상 팔레트 라이트 다크 강조색" + "value": "尺寸由%1$@设定 · %2$@" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent テーマ 配色 カラー パレット ライト ダーク アクセント" + "value": "尺寸由%1$@設定 · %2$@" } } } }, - "settings.section.themes": { + "terminalSharing.panel.sizeLabel": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Themes" + "value": "Size" } }, "ar": { "stringUnit": { "state": "translated", - "value": "السمات" + "value": "الحجم" } }, "de": { "stringUnit": { "state": "translated", - "value": "Designs" + "value": "Größe" } }, "es": { "stringUnit": { "state": "translated", - "value": "Temas" + "value": "Tamaño" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Thèmes" + "value": "Taille" } }, "ja": { "stringUnit": { "state": "translated", - "value": "テーマ" + "value": "サイズ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "테마" + "value": "크기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "主题" + "value": "尺寸" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "主題" + "value": "尺寸" } } } }, - "settings.terminal.theme": { + "terminalSharing.sizeMode.latest": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Terminal Theme" + "value": "Follow Latest" } }, "ar": { "stringUnit": { "state": "translated", - "value": "سمة الطرفية" + "value": "اتباع الأحدث" } }, "de": { "stringUnit": { "state": "translated", - "value": "Terminal-Design" + "value": "Letzter Eingabe folgen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Tema del terminal" + "value": "Seguir la última entrada" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Thème du terminal" + "value": "Suivre la dernière saisie" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ターミナルテーマ" + "value": "最新の入力に合わせる" } }, "ko": { "stringUnit": { "state": "translated", - "value": "터미널 테마" + "value": "최근 입력 따르기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "终端主题" + "value": "跟随最新输入" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "終端機主題" + "value": "跟隨最新輸入" } } } }, - "cloudMenu.machine.freeAccess": { + "terminalSharing.sizeMode.smallest": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Free access" + "value": "Fit Everyone" } }, "ar": { "stringUnit": { "state": "translated", - "value": "وصول مجاني" + "value": "ملاءمة الجميع" } }, "de": { "stringUnit": { "state": "translated", - "value": "Kostenloser Zugang" + "value": "Allen anpassen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Acceso gratuito" + "value": "Ajustar a todos" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Accès gratuit" + "value": "Adapter à tous" } }, "ja": { "stringUnit": { "state": "translated", - "value": "無料アクセス" + "value": "全員に合わせる" } }, "ko": { "stringUnit": { "state": "translated", - "value": "무료 이용" + "value": "모두에게 맞추기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "免费访问" + "value": "适合所有人" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "免費存取" + "value": "適合所有人" } } } }, - "cloudMenu.machine.locked": { + "terminalSharing.sizeMode.largest": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Locked" + "value": "Largest Window" } }, "ar": { "stringUnit": { "state": "translated", - "value": "مقفلة" + "value": "أكبر نافذة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Gesperrt" + "value": "Größtes Fenster" } }, "es": { "stringUnit": { "state": "translated", - "value": "Bloqueada" + "value": "Ventana más grande" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Verrouillée" + "value": "Plus grande fenêtre" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ロック中" + "value": "最大のウインドウ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "잠김" + "value": "가장 큰 윈도우" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "已锁定" + "value": "最大窗口" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "已鎖定" + "value": "最大視窗" } } } }, - "cloudMenu.dashboard": { + "terminalSharing.sizeMode.priority": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open Cloud Dashboard" + "value": "Priority" } }, "ar": { "stringUnit": { "state": "translated", - "value": "فتح لوحة تحكم السحابة" + "value": "الأولوية" } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud-Dashboard öffnen" + "value": "Priorität" } }, "es": { "stringUnit": { "state": "translated", - "value": "Abrir el panel de Cloud" + "value": "Prioridad" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ouvrir le tableau de bord Cloud" + "value": "Priorité" } }, "ja": { "stringUnit": { "state": "translated", - "value": "クラウドダッシュボードを開く" + "value": "優先順位" } }, "ko": { "stringUnit": { "state": "translated", - "value": "클라우드 대시보드 열기" + "value": "우선순위" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "打开云端控制面板" + "value": "优先级" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "打開雲端控制面板" + "value": "優先順序" } } } }, - "cloudMenu.diagnostics": { + "terminalSharing.sizeMode.fixed": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud Diagnostics" + "value": "Fixed" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تشخيصات السحابة" + "value": "ثابت" } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud-Diagnose" + "value": "Fest" } }, "es": { "stringUnit": { "state": "translated", - "value": "Diagnóstico de Cloud" + "value": "Fijo" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Diagnostics Cloud" + "value": "Fixe" } }, "ja": { "stringUnit": { "state": "translated", - "value": "クラウド診断" + "value": "固定" } }, "ko": { "stringUnit": { "state": "translated", - "value": "클라우드 진단" + "value": "고정" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "云端诊断" + "value": "固定" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "雲端診斷" + "value": "固定" } } } }, - "cloudMenu.machines.empty": { + "terminalSharing.panel.setsSize": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "No machines yet" + "value": "sets size" } }, "ar": { "stringUnit": { "state": "translated", - "value": "لا توجد أجهزة بعد" + "value": "يحدد الحجم" } }, "de": { "stringUnit": { "state": "translated", - "value": "Noch keine Maschinen" + "value": "legt Größe fest" } }, "es": { "stringUnit": { "state": "translated", - "value": "Aún no hay máquinas" + "value": "define el tamaño" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Aucune machine pour le moment" + "value": "définit la taille" } }, "ja": { "stringUnit": { "state": "translated", - "value": "マシンはまだありません" + "value": "サイズを設定" } }, "ko": { "stringUnit": { "state": "translated", - "value": "아직 머신이 없습니다" + "value": "크기 설정" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "还没有机器" + "value": "设定尺寸" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "尚無機器" + "value": "設定尺寸" } } } }, - "cloudMenu.machines.title": { + "terminalSharing.panel.notCounted": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud Machines" + "value": "not counted" } }, "ar": { "stringUnit": { "state": "translated", - "value": "أجهزة السحابة" + "value": "غير محتسب" } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud-Maschinen" + "value": "nicht gezählt" } }, "es": { "stringUnit": { "state": "translated", - "value": "Máquinas de Cloud" + "value": "no cuenta" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Machines Cloud" + "value": "non compté" } }, "ja": { "stringUnit": { "state": "translated", - "value": "クラウドマシン" + "value": "カウント対象外" } }, "ko": { "stringUnit": { "state": "translated", - "value": "클라우드 머신" + "value": "계산 안 됨" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "云端机器" + "value": "不计入" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "雲端機器" + "value": "不計入" } } } }, - "cloudMenu.more": { + "terminalSharing.panel.rowOptions": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "More Cloud" + "value": "Options for %@" } }, "ar": { "stringUnit": { "state": "translated", - "value": "المزيد من السحابة" + "value": "خيارات %@" } }, "de": { "stringUnit": { "state": "translated", - "value": "Mehr Cloud" + "value": "Optionen für %@" } }, "es": { "stringUnit": { "state": "translated", - "value": "Más de Cloud" + "value": "Opciones de %@" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Plus de Cloud" + "value": "Options pour %@" } }, "ja": { "stringUnit": { "state": "translated", - "value": "その他のクラウド" + "value": "%@のオプション" } }, "ko": { "stringUnit": { "state": "translated", - "value": "클라우드 더 보기" + "value": "%@ 옵션" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "更多云端项目" + "value": "%@的选项" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "更多雲端項目" + "value": "%@的選項" } } } }, - "cloudMenu.problem.requiresPro": { + "terminalSharing.panel.disconnectOthersButton": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud machines need cmux Pro" + "value": "Disconnect Others" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تتطلب أجهزة السحابة cmux Pro" + "value": "قطع اتصال الآخرين" } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud-Maschinen erfordern cmux Pro" + "value": "Andere trennen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Las máquinas de Cloud requieren cmux Pro" + "value": "Desconectar a los demás" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Les machines Cloud nécessitent cmux Pro" + "value": "Déconnecter les autres" } }, "ja": { "stringUnit": { "state": "translated", - "value": "クラウドマシンには cmux Pro が必要です" + "value": "他の接続を切断" } }, "ko": { "stringUnit": { "state": "translated", - "value": "클라우드 머신에는 cmux Pro가 필요합니다" + "value": "다른 연결 끊기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "云端机器需要 cmux Pro" + "value": "断开其他连接" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "雲端機器需要 cmux Pro" + "value": "中斷其他連線" } } } }, - "cloudMenu.problem.session": { + "terminalSharing.detached.titleShort": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Your Cloud session expired" + "value": "Detached" } }, "ar": { "stringUnit": { "state": "translated", - "value": "انتهت صلاحية جلسة السحابة" + "value": "تم الفصل" } }, "de": { "stringUnit": { "state": "translated", - "value": "Deine Cloud-Sitzung ist abgelaufen" + "value": "Getrennt" } }, "es": { "stringUnit": { "state": "translated", - "value": "Tu sesión de Cloud ha caducado" + "value": "Desconectado" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Votre session Cloud a expiré" + "value": "Détaché" } }, "ja": { "stringUnit": { "state": "translated", - "value": "クラウドのセッションが期限切れです" + "value": "切断されました" } }, "ko": { "stringUnit": { "state": "translated", - "value": "클라우드 세션이 만료되었습니다" + "value": "분리됨" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "你的云端会话已过期" + "value": "已分离" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "你的雲端工作階段已過期" + "value": "已分離" } } } }, - "cloudMenu.problem.unreachable": { + "terminalSharing.detached.byMessageShort": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Could not reach cmux Cloud" + "value": "%1$@ disconnected this Mac at %2$@." } }, "ar": { "stringUnit": { "state": "translated", - "value": "تعذر الوصول إلى cmux Cloud" + "value": "قطع %1$@ اتصال هذا الـMac في %2$@." } }, "de": { "stringUnit": { "state": "translated", - "value": "cmux Cloud ist nicht erreichbar" + "value": "%1$@ hat diesen Mac um %2$@ getrennt." } }, "es": { "stringUnit": { "state": "translated", - "value": "No se pudo conectar con cmux Cloud" + "value": "%1$@ desconectó este Mac a las %2$@." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Impossible de joindre cmux Cloud" + "value": "%1$@ a déconnecté ce Mac à %2$@." } }, "ja": { "stringUnit": { "state": "translated", - "value": "cmux Cloud に接続できません" + "value": "%1$@が%2$@にこのMacを切断しました。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux Cloud에 연결할 수 없습니다" + "value": "%1$@이(가) %2$@에 이 Mac의 연결을 끊었습니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "无法连接 cmux Cloud" + "value": "%1$@于%2$@断开了这台Mac的连接。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "無法連線到 cmux Cloud" + "value": "%1$@於%2$@中斷了這台Mac的連線。" } } } }, - "cloudMenu.retry": { + "terminalSharing.chip.hiddenColumns": { + "extractionState": "manual", + "localizations": { + "en": { + "variations": { + "plural": { + "one": { + "stringUnit": { + "state": "translated", + "value": "%ld col hidden" + } + }, + "other": { + "stringUnit": { + "state": "translated", + "value": "%ld cols hidden" + } + } + } + } + }, + "ar": { + "variations": { + "plural": { + "zero": { + "stringUnit": { + "state": "translated", + "value": "لا أعمدة مخفية (%ld)" + } + }, + "one": { + "stringUnit": { + "state": "translated", + "value": "عمود واحد مخفي (%ld)" + } + }, + "two": { + "stringUnit": { + "state": "translated", + "value": "عمودان مخفيان (%ld)" + } + }, + "few": { + "stringUnit": { + "state": "translated", + "value": "%ld أعمدة مخفية" + } + }, + "many": { + "stringUnit": { + "state": "translated", + "value": "%ld عمودًا مخفيًا" + } + }, + "other": { + "stringUnit": { + "state": "translated", + "value": "%ld عمود مخفي" + } + } + } + } + }, + "de": { + "variations": { + "plural": { + "one": { + "stringUnit": { + "state": "translated", + "value": "%ld Spalte ausgeblendet" + } + }, + "other": { + "stringUnit": { + "state": "translated", + "value": "%ld Spalten ausgeblendet" + } + } + } + } + }, + "es": { + "variations": { + "plural": { + "one": { + "stringUnit": { + "state": "translated", + "value": "%ld columna oculta" + } + }, + "many": { + "stringUnit": { + "state": "translated", + "value": "%ld de columnas ocultas" + } + }, + "other": { + "stringUnit": { + "state": "translated", + "value": "%ld columnas ocultas" + } + } + } + } + }, + "fr": { + "variations": { + "plural": { + "one": { + "stringUnit": { + "state": "translated", + "value": "%ld colonne masquée" + } + }, + "many": { + "stringUnit": { + "state": "translated", + "value": "%ld de colonnes masquées" + } + }, + "other": { + "stringUnit": { + "state": "translated", + "value": "%ld colonnes masquées" + } + } + } + } + }, + "ja": { + "variations": { + "plural": { + "other": { + "stringUnit": { + "state": "translated", + "value": "%ld列が非表示" + } + } + } + } + }, + "ko": { + "variations": { + "plural": { + "other": { + "stringUnit": { + "state": "translated", + "value": "%ld열 숨겨짐" + } + } + } + } + }, + "zh-Hans": { + "variations": { + "plural": { + "other": { + "stringUnit": { + "state": "translated", + "value": "隐藏 %ld 列" + } + } + } + } + }, + "zh-Hant": { + "variations": { + "plural": { + "other": { + "stringUnit": { + "state": "translated", + "value": "隱藏 %ld 欄" + } + } + } + } + } + } + }, + "terminalSharing.panel.cancel": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Try Again" + "value": "Cancel" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إعادة المحاولة" + "value": "إلغاء" } }, "de": { "stringUnit": { "state": "translated", - "value": "Erneut versuchen" + "value": "Abbrechen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Reintentar" + "value": "Cancelar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Réessayer" + "value": "Annuler" } }, "ja": { "stringUnit": { "state": "translated", - "value": "再試行" + "value": "キャンセル" } }, "ko": { "stringUnit": { "state": "translated", - "value": "다시 시도" + "value": "취소" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "重试" + "value": "取消" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "再試一次" + "value": "取消" } } } }, - "cloudMenu.showMachines": { + "terminalSharing.panel.disconnectOthers.confirm": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Show Machines Sidebar" + "value": "Disconnect all other clients?" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إظهار الشريط الجانبي للأجهزة" + "value": "هل تريد قطع اتصال جميع العملاء الآخرين؟" } }, "de": { "stringUnit": { "state": "translated", - "value": "Maschinen-Seitenleiste anzeigen" + "value": "Alle anderen Clients trennen?" } }, "es": { "stringUnit": { "state": "translated", - "value": "Mostrar la barra lateral de máquinas" + "value": "¿Desconectar todos los demás clientes?" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Afficher la barre latérale des machines" + "value": "Déconnecter tous les autres clients ?" } }, "ja": { "stringUnit": { "state": "translated", - "value": "マシンのサイドバーを表示" + "value": "他のすべてのクライアントを切断しますか?" } }, "ko": { "stringUnit": { "state": "translated", - "value": "머신 사이드바 보기" + "value": "다른 모든 클라이언트의 연결을 끊을까요?" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "显示机器侧边栏" + "value": "要断开其他所有客户端吗?" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "顯示機器側邊欄" + "value": "要中斷其他所有用戶端的連線嗎?" } } } }, - "cloudMenu.signOut": { + "terminalSharing.panel.disconnectOthers.confirmButton": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Sign Out" + "value": "Disconnect" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تسجيل الخروج" + "value": "قطع الاتصال" } }, "de": { "stringUnit": { "state": "translated", - "value": "Abmelden" + "value": "Trennen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Cerrar sesión" + "value": "Desconectar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Se déconnecter" + "value": "Déconnecter" } }, "ja": { "stringUnit": { "state": "translated", - "value": "サインアウト" + "value": "切断" } }, "ko": { "stringUnit": { "state": "translated", - "value": "로그아웃" + "value": "연결 끊기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "退出登录" + "value": "断开连接" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "登出" + "value": "中斷連線" } } } }, - "cloudMenu.signedIn": { + "terminalSharing.panel.fixedColumns": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Signed In" + "value": "Columns" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تم تسجيل الدخول" + "value": "الأعمدة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Angemeldet" + "value": "Spalten" } }, "es": { "stringUnit": { "state": "translated", - "value": "Sesión iniciada" + "value": "Columnas" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Connecté" + "value": "Colonnes" } }, "ja": { "stringUnit": { "state": "translated", - "value": "サインイン済み" + "value": "列" } }, "ko": { "stringUnit": { "state": "translated", - "value": "로그인됨" + "value": "열" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "已登录" + "value": "列数" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "已登入" + "value": "欄數" } } } }, - "cloudMenu.team": { + "terminalSharing.panel.fixedRows": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Team" + "value": "Rows" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الفريق" + "value": "الصفوف" } }, "de": { "stringUnit": { "state": "translated", - "value": "Team" + "value": "Zeilen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Equipo" + "value": "Filas" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Équipe" + "value": "Lignes" } }, "ja": { "stringUnit": { "state": "translated", - "value": "チーム" + "value": "行" } }, "ko": { "stringUnit": { "state": "translated", - "value": "팀" + "value": "행" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "团队" + "value": "行数" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "團隊" + "value": "列數" } } } }, - "cloudMenu.title": { + "terminalSharing.panel.unavailable": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud" + "value": "This terminal is not shared." } }, "ar": { "stringUnit": { "state": "translated", - "value": "السحابة" + "value": "هذه الطرفية غير مشتركة." } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud" + "value": "Dieses Terminal wird nicht geteilt." } }, "es": { "stringUnit": { "state": "translated", - "value": "Cloud" + "value": "Esta terminal no está compartida." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Cloud" + "value": "Ce terminal n’est pas partagé." } }, "ja": { "stringUnit": { "state": "translated", - "value": "クラウド" + "value": "このターミナルは共有されていません。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "클라우드" + "value": "이 터미널은 공유되지 않았습니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "云端" + "value": "此终端未共享。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "雲端" + "value": "此終端機未共用。" } } } }, - "cloudMenu.tone.attention": { + "terminalSharing.panel.counts": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Needs attention" + "value": "Counts toward size" } }, "ar": { "stringUnit": { "state": "translated", - "value": "يحتاج إلى انتباه" + "value": "يُحتسب في الحجم" } }, "de": { "stringUnit": { "state": "translated", - "value": "Erfordert Aufmerksamkeit" + "value": "Zählt für die Größe" } }, "es": { "stringUnit": { "state": "translated", - "value": "Requiere atención" + "value": "Cuenta para el tamaño" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Nécessite une attention" + "value": "Compte pour la taille" } }, "ja": { "stringUnit": { "state": "translated", - "value": "対応が必要" + "value": "サイズに反映" } }, "ko": { "stringUnit": { "state": "translated", - "value": "확인 필요" + "value": "크기에 반영" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "需要处理" + "value": "计入大小" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "需要處理" + "value": "計入大小" } } } }, - "menu.cloud.title": { + "terminalSharing.panel.disconnect": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud" + "value": "Disconnect" } }, "ar": { "stringUnit": { "state": "translated", - "value": "السحابة" + "value": "قطع الاتصال" } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud" + "value": "Trennen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Cloud" + "value": "Desconectar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Cloud" + "value": "Déconnecter" } }, "ja": { "stringUnit": { "state": "translated", - "value": "クラウド" + "value": "切断" } }, "ko": { "stringUnit": { "state": "translated", - "value": "클라우드" + "value": "연결 끊기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "云端" + "value": "断开连接" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "雲端" + "value": "中斷連線" } } } }, - "cloudMenu.machines.loading": { + "cli.restore.error.routedLauncherNotFound": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud Machines · Loading…" + "value": "restore: this session was started with '%1$@ claude proxy', but '%1$@' is not on PATH in this shell. Add it to PATH, then retry." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "أجهزة السحابة · جارٍ التحميل…" + "value": "restore: このセッションは「%1$@ claude proxy」で起動されましたが、このシェルの PATH に「%1$@」がありません。PATH に追加してから、再試行してください。" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud-Maschinen · Wird geladen…" + "value": "restore:此会话是通过“%1$@ claude proxy”启动的,但此 shell 的 PATH 中没有“%1$@”。请将其添加到 PATH,然后重试。" } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "Máquinas de Cloud · Cargando…" + "value": "restore: Diese Sitzung wurde mit „%1$@ claude proxy“ gestartet, aber „%1$@“ ist in dieser Shell nicht im PATH. Fügen Sie es zum PATH hinzu und versuchen Sie es dann erneut." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Machines Cloud · Chargement…" + "value": "restore : cette session a été démarrée avec « %1$@ claude proxy », mais « %1$@ » n'est pas dans le PATH de ce shell. Ajoutez-le au PATH, puis réessayez." } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "クラウドマシン · 読み込み中…" + "value": "restore: بدأت هذه الجلسة باستخدام '%1$@ claude proxy'، لكن '%1$@' غير موجود في PATH في هذه الصدفة. أضفه إلى PATH، ثم أعد المحاولة." } }, - "ko": { + "es": { "stringUnit": { "state": "translated", - "value": "클라우드 머신 · 불러오는 중…" + "value": "restore: esta sesión se inició con '%1$@ claude proxy', pero '%1$@' no está en el PATH de este shell. Agréguelo al PATH y vuelva a intentarlo." } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "云端机器 · 正在加载…" + "value": "restore:此工作階段是以「%1$@ claude proxy」啟動的,但此 shell 的 PATH 中沒有「%1$@」。請將其加入 PATH,然後重試。" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "雲端機器 · 正在載入…" + "value": "restore: 이 세션은 '%1$@ claude proxy'로 시작되었지만 이 셸의 PATH에 '%1$@'이(가) 없습니다. PATH에 추가한 후 다시 시도하십시오." } } } }, - "cloudMenu.machines.showAll": { + "settings.terminal.textEditingCommandMovesByWord": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Show All Machines…" + "value": "Command Moves by Word" } }, "ar": { "stringUnit": { "state": "translated", - "value": "عرض كل الأجهزة…" + "value": "Command ينقل حسب الكلمة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Alle Maschinen anzeigen…" + "value": "Befehlstaste bewegt wortweise" } }, "es": { "stringUnit": { "state": "translated", - "value": "Mostrar todas las máquinas…" + "value": "Comando mueve por palabra" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Afficher toutes les machines…" + "value": "Commande déplace par mot" } }, "ja": { "stringUnit": { "state": "translated", - "value": "すべてのマシンを表示…" + "value": "Command で単語単位に移動" } }, "ko": { "stringUnit": { "state": "translated", - "value": "모든 머신 보기…" + "value": "Command로 단어 단위 이동" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "显示所有机器…" + "value": "Command 按词移动" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "顯示所有機器…" + "value": "Command 依字移動" } } } }, - "cloudMenu.newMachine": { + "settings.terminal.textEditingCommandMovesByWord.subtitleOn": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "New Cloud Machine…" + "value": "Command arrow and delete keys move and delete by word, like Option. Control Left and Right Arrow move to the start and end of the line." } }, "ar": { "stringUnit": { "state": "translated", - "value": "جهاز سحابي جديد…" + "value": "تنقل مفاتيح الأسهم والحذف مع Command وتحذف حسب الكلمة، مثل Option. وينقل Control مع السهمين الأيسر والأيمن إلى بداية السطر ونهايته." } }, "de": { "stringUnit": { "state": "translated", - "value": "Neue Cloud-Maschine…" + "value": "Befehlstaste mit Pfeil- und Löschtasten bewegt und löscht wortweise, wie die Wahltaste. Control mit Links- und Rechtspfeil springt an Anfang und Ende der Zeile." } }, "es": { "stringUnit": { "state": "translated", - "value": "Nueva máquina de Cloud…" + "value": "Las flechas y la tecla Eliminar con Comando mueven y borran por palabra, como Opción. Control con las flechas izquierda y derecha va al inicio y al final de la línea." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Nouvelle machine Cloud…" + "value": "Les flèches et la touche Supprimer avec Commande déplacent et suppriment par mot, comme Option. Contrôle avec les flèches gauche et droite va au début et à la fin de la ligne." } }, "ja": { "stringUnit": { "state": "translated", - "value": "新規クラウドマシン…" + "value": "Command と矢印キー・削除キーで、Option と同じく単語単位に移動・削除します。Control と左右矢印キーで行頭・行末に移動します。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "새 클라우드 머신…" + "value": "Command 화살표 및 삭제 키가 Option처럼 단어 단위로 이동하고 삭제합니다. Control 왼쪽 및 오른쪽 화살표는 줄의 시작과 끝으로 이동합니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "新建云端机器…" + "value": "Command 加方向键和删除键按词移动和删除,与 Option 相同。Control 加左右方向键移到行首和行尾。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "新增雲端機器…" + "value": "Command 加方向鍵與刪除鍵會依字移動與刪除,與 Option 相同。Control 加左右方向鍵會移到行首與行尾。" } } } }, - "cloudMenu.signIn": { + "settings.terminal.textEditingCommandMovesByWord.subtitleOff": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Sign In to cmux Cloud…" + "value": "Command arrow and delete keys move and delete by line, as in macOS text fields." } }, "ar": { "stringUnit": { "state": "translated", - "value": "تسجيل الدخول إلى cmux Cloud…" + "value": "تنقل مفاتيح الأسهم والحذف مع Command وتحذف حسب السطر، كما في حقول النص في macOS." } }, "de": { "stringUnit": { "state": "translated", - "value": "Bei cmux Cloud anmelden…" + "value": "Befehlstaste mit Pfeil- und Löschtasten bewegt und löscht zeilenweise, wie in macOS-Textfeldern." } }, "es": { "stringUnit": { "state": "translated", - "value": "Iniciar sesión en cmux Cloud…" + "value": "Las flechas y la tecla Eliminar con Comando mueven y borran por línea, como en los campos de texto de macOS." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Se connecter à cmux Cloud…" + "value": "Les flèches et la touche Supprimer avec Commande déplacent et suppriment par ligne, comme dans les champs de texte de macOS." } }, "ja": { "stringUnit": { "state": "translated", - "value": "cmux Cloud にサインイン…" + "value": "Command と矢印キー・削除キーで、macOS のテキストフィールドと同じく行単位に移動・削除します。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux Cloud에 로그인…" + "value": "Command 화살표 및 삭제 키가 macOS 텍스트 필드처럼 줄 단위로 이동하고 삭제합니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "登录 cmux Cloud…" + "value": "Command 加方向键和删除键按行移动和删除,与 macOS 文本框相同。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "登入 cmux Cloud…" + "value": "Command 加方向鍵與刪除鍵會依行移動與刪除,與 macOS 文字欄位相同。" } } } }, - "cloudMenu.signInAgain": { + "settings.terminal.textEditingGesturesInFullScreenApps": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Sign In Again…" + "value": "Text Editing Gestures in Full-Screen Apps" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تسجيل الدخول مجددًا…" + "value": "إيماءات تحرير النص في التطبيقات بملء الشاشة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Erneut anmelden…" + "value": "Textbearbeitungsgesten in Vollbild-Apps" } }, "es": { "stringUnit": { "state": "translated", - "value": "Volver a iniciar sesión…" + "value": "Gestos de edición de texto en apps a pantalla completa" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Se reconnecter…" + "value": "Gestes d’édition de texte dans les apps plein écran" } }, "ja": { "stringUnit": { "state": "translated", - "value": "もう一度サインイン…" + "value": "フルスクリーンアプリでのテキスト編集ジェスチャー" } }, "ko": { "stringUnit": { "state": "translated", - "value": "다시 로그인…" + "value": "전체 화면 앱에서 텍스트 편집 제스처" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "重新登录…" + "value": "全屏应用中的文本编辑手势" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "重新登入…" + "value": "全螢幕 App 中的文字編輯手勢" } } } }, - "cloudMenu.signingIn": { + "settings.terminal.textEditingGesturesInFullScreenApps.subtitle": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Signing In…" + "value": "Gestures also apply while a full-screen app such as vim, less, or tmux is running, so they keep working at a shell inside tmux, screen, or zellij." } }, "ar": { "stringUnit": { "state": "translated", - "value": "جارٍ تسجيل الدخول…" + "value": "تنطبق الإيماءات أيضًا أثناء تشغيل تطبيق بملء الشاشة مثل vim أو less أو tmux، فتظل تعمل في الصدفة داخل tmux أو screen أو zellij." } }, "de": { "stringUnit": { "state": "translated", - "value": "Anmeldung läuft…" + "value": "Gesten gelten auch, während eine Vollbild-App wie vim, less oder tmux läuft, und funktionieren so weiter an einer Shell in tmux, screen oder zellij." } }, "es": { "stringUnit": { "state": "translated", - "value": "Iniciando sesión…" + "value": "Los gestos también se aplican mientras se ejecuta una app a pantalla completa como vim, less o tmux, así que siguen funcionando en una shell dentro de tmux, screen o zellij." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Connexion…" + "value": "Les gestes s’appliquent aussi lorsqu’une app plein écran comme vim, less ou tmux est en cours d’exécution, et continuent donc de fonctionner dans un shell sous tmux, screen ou zellij." } }, "ja": { "stringUnit": { "state": "translated", - "value": "サインイン中…" + "value": "vim、less、tmux などのフルスクリーンアプリの実行中もジェスチャーが有効になるため、tmux、screen、zellij 内のシェルでも引き続き使えます。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "로그인 중…" + "value": "vim, less, tmux 같은 전체 화면 앱이 실행 중일 때도 제스처가 적용되므로 tmux, screen, zellij 안의 셸에서도 계속 작동합니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "正在登录…" + "value": "在 vim、less 或 tmux 等全屏应用运行时手势也会生效,因此在 tmux、screen 或 zellij 中的 shell 里仍可使用。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "正在登入…" + "value": "在 vim、less 或 tmux 等全螢幕 App 執行時手勢也會生效,因此在 tmux、screen 或 zellij 中的 shell 裡仍可使用。" } } } }, - "cloudMenu.upgrade": { + "cloudTree.action.newCloudMachine": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Upgrade to Pro…" + "value": "New Cloud Machine" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الترقية إلى Pro…" + "value": "جهاز سحابي جديد" } }, "de": { "stringUnit": { "state": "translated", - "value": "Auf Pro upgraden…" + "value": "Neue Cloud-Maschine" } }, "es": { "stringUnit": { "state": "translated", - "value": "Mejorar a Pro…" + "value": "Nueva máquina en la nube" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Passer à Pro…" + "value": "Nouvelle machine cloud" } }, "ja": { "stringUnit": { "state": "translated", - "value": "Pro にアップグレード…" + "value": "新しいクラウドマシン" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Pro로 업그레이드…" + "value": "새 클라우드 머신" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "升级到 Pro…" + "value": "新建云主机" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "升級至 Pro…" + "value": "新增雲端機器" + } + }, + "bs": { + "stringUnit": { + "state": "translated", + "value": "Nova cloud mašina" + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "Ny cloud-maskine" + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "Nuova macchina cloud" + } + }, + "km": { + "stringUnit": { + "state": "translated", + "value": "ម៉ាស៊ីន Cloud ថ្មី" + } + }, + "nb": { + "stringUnit": { + "state": "translated", + "value": "Ny sky-maskin" + } + }, + "pl": { + "stringUnit": { + "state": "translated", + "value": "Nowa maszyna w chmurze" + } + }, + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "Nova máquina na nuvem" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Новая облачная машина" + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "เครื่องคลาวด์ใหม่" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Yeni bulut makinesi" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Нова хмарна машина" } } } @@ -587545,415 +587880,356 @@ } } }, - "socket.sidebar.closeSurface.confirmationRequired": { + "agent.generic.status.runningSubagents": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Surface has a running process; retry with --force" + "value": "Running subagents" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تحتوي السطح على عملية قيد التشغيل؛ أعد المحاولة باستخدام --force" + "value": "تشغيل الوكلاء الفرعيين" } }, "de": { "stringUnit": { "state": "translated", - "value": "Die Oberfläche hat einen laufenden Prozess; erneut mit --force versuchen" + "value": "Subagenten werden ausgeführt" } }, "es": { "stringUnit": { "state": "translated", - "value": "La superficie tiene un proceso en ejecución; vuelve a intentarlo con --force" + "value": "Ejecutando subagentes" } }, "fr": { "stringUnit": { "state": "translated", - "value": "La surface a un processus en cours d’exécution ; réessayez avec --force" + "value": "Sous-agents en cours d’exécution" } }, "ja": { "stringUnit": { "state": "translated", - "value": "サーフェスでプロセスが実行中です。--force を指定して再試行してください" + "value": "サブエージェントを実行中" } }, "ko": { "stringUnit": { "state": "translated", - "value": "표면에서 실행 중인 프로세스가 있습니다. --force로 다시 시도하세요" + "value": "하위 에이전트 실행 중" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "此表面有正在运行的进程;请使用 --force 重试" + "value": "正在运行子代理" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "此表面有正在執行的程序;請使用 --force 重試" + "value": "執行子代理程式中" } } } }, - "socket.sidebar.closeSurface.failed": { + "agent.generic.status.waiting": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Failed to close surface" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "تعذر إغلاق السطح" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Die Oberfläche konnte nicht geschlossen werden" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se pudo cerrar la superficie" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Échec de la fermeture de la surface" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "サーフェスを閉じられませんでした" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "표면을 닫지 못했습니다" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无法关闭此表面" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "無法關閉表面" - } - } - } - }, - "socket.surface.close.confirmationRequired": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Surface has a running process; retry with force=true" + "value": "Waiting" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تحتوي السطح على عملية قيد التشغيل؛ أعد المحاولة باستخدام force=true" + "value": "في الانتظار" } }, "de": { "stringUnit": { "state": "translated", - "value": "Die Oberfläche hat einen laufenden Prozess; erneut mit force=true versuchen" + "value": "Warten" } }, "es": { "stringUnit": { "state": "translated", - "value": "La superficie tiene un proceso en ejecución; vuelve a intentarlo con force=true" + "value": "Esperando" } }, "fr": { "stringUnit": { "state": "translated", - "value": "La surface a un processus en cours d’exécution ; réessayez avec force=true" + "value": "En attente" } }, "ja": { "stringUnit": { "state": "translated", - "value": "サーフェスでプロセスが実行中です。force=true を指定して再試行してください" + "value": "待機中" } }, "ko": { "stringUnit": { "state": "translated", - "value": "표면에서 실행 중인 프로세스가 있습니다. force=true로 다시 시도하세요" + "value": "대기 중" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "此表面有正在运行的进程;请使用 force=true 重试" + "value": "等待中" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "此表面有正在執行的程序;請使用 force=true 重試" + "value": "等待中" } } } }, - "socket.surface.close.failed": { + "cloud.overlay.accessLost.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Failed to close surface" + "value": "You no longer have access to this machine." } }, "ar": { "stringUnit": { "state": "translated", - "value": "تعذر إغلاق السطح" + "value": "لم يعد لديك حق الوصول إلى هذا الجهاز." } }, "de": { "stringUnit": { "state": "translated", - "value": "Die Oberfläche konnte nicht geschlossen werden" + "value": "Sie haben keinen Zugriff mehr auf diese Maschine." } }, "es": { "stringUnit": { "state": "translated", - "value": "No se pudo cerrar la superficie" + "value": "Ya no tienes acceso a esta máquina." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Échec de la fermeture de la surface" + "value": "Vous n’avez plus accès à cette machine." } }, "ja": { "stringUnit": { "state": "translated", - "value": "サーフェスを閉じられませんでした" + "value": "このマシンへのアクセス権がなくなりました。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "표면을 닫지 못했습니다" + "value": "더 이상 이 머신에 접근할 수 없습니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "无法关闭此表面" + "value": "你已无法再访问这台机器。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "無法關閉表面" + "value": "你已無法再存取這台機器。" } } } }, - "socket.tabAction.close.confirmationRequired": { + "cloud.overlay.accessLost.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "One or more surfaces have a running process; retry with force=true" + "value": "Cloud machine unavailable" } }, "ar": { "stringUnit": { "state": "translated", - "value": "سطح واحد أو أكثر يحتوي على عملية قيد التشغيل؛ أعد المحاولة باستخدام force=true" + "value": "جهاز Cloud غير متاح" } }, "de": { "stringUnit": { "state": "translated", - "value": "Mindestens eine Oberfläche hat einen laufenden Prozess; erneut mit force=true versuchen" + "value": "Cloud-Maschine nicht verfügbar" } }, "es": { "stringUnit": { "state": "translated", - "value": "Una o más superficies tienen un proceso en ejecución; vuelve a intentarlo con force=true" + "value": "Máquina de Cloud no disponible" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Une ou plusieurs surfaces ont un processus en cours d’exécution ; réessayez avec force=true" + "value": "Machine Cloud indisponible" } }, "ja": { "stringUnit": { "state": "translated", - "value": "1 つ以上のサーフェスでプロセスが実行中です。force=true を指定して再試行してください" + "value": "Cloud マシンを利用できません" } }, "ko": { "stringUnit": { "state": "translated", - "value": "하나 이상의 표면에서 프로세스가 실행 중입니다. force=true로 다시 시도하세요" + "value": "Cloud 머신을 사용할 수 없습니다" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "一个或多个表面有正在运行的进程;请使用 force=true 重试" + "value": "Cloud 机器不可用" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "一個或多個表面有正在執行的程序;請使用 force=true 重試" + "value": "Cloud 機器無法使用" } } } }, - "cli.socket.error.workspaceCloseConfirmationRequired": { + "cloud.overlay.signedOut.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Workspace has a running process; retry with --force" + "value": "Sign in to cmux to reconnect this terminal." } }, "ar": { "stringUnit": { "state": "translated", - "value": "تحتوي مساحة العمل على عملية قيد التشغيل؛ أعد المحاولة باستخدام --force" + "value": "سجّل الدخول إلى cmux لإعادة توصيل هذه الطرفية." } }, "de": { "stringUnit": { "state": "translated", - "value": "Arbeitsbereich mit laufendem Prozess; erneut mit --force versuchen" + "value": "Melden Sie sich bei cmux an, um dieses Terminal erneut zu verbinden." } }, "es": { "stringUnit": { "state": "translated", - "value": "El espacio de trabajo tiene un proceso en ejecución; vuelve a intentarlo con --force" + "value": "Inicia sesión en cmux para volver a conectar este terminal." } }, "fr": { "stringUnit": { "state": "translated", - "value": "L’espace de travail a un processus en cours d’exécution ; réessayez avec --force" + "value": "Connectez-vous à cmux pour reconnecter ce terminal." } }, "ja": { "stringUnit": { "state": "translated", - "value": "ワークスペースでプロセスが実行中です。--force を指定して再試行してください" + "value": "このターミナルに再接続するには cmux にサインインしてください。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "워크스페이스에서 프로세스가 실행 중입니다. --force로 다시 시도하세요" + "value": "이 터미널을 다시 연결하려면 cmux에 로그인하세요." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "此工作区有正在运行的进程;请使用 --force 重试" + "value": "登录 cmux 以重新连接此终端。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "此工作區有正在執行的程序;請使用 --force 重試" + "value": "登入 cmux 以重新連線此終端機。" } } } }, - "cli.socket.error.windowCloseConfirmationRequired": { + "cloud.overlay.signedOut.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "One or more workspaces or Dock surfaces have a running process; retry with --force" + "value": "Cloud session ended" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تحتوي مساحة عمل واحدة أو أكثر أو أسطح Dock على عملية قيد التشغيل؛ أعد المحاولة باستخدام --force" + "value": "انتهت جلسة Cloud" } }, "de": { "stringUnit": { "state": "translated", - "value": "Mindestens ein Workspace oder eine Dock-Oberfläche hat einen laufenden Prozess; erneut mit --force versuchen" + "value": "Cloud-Sitzung beendet" } }, "es": { "stringUnit": { "state": "translated", - "value": "Uno o más espacios de trabajo o superficies del Dock tienen un proceso en ejecución; vuelve a intentarlo con --force" + "value": "Sesión de Cloud finalizada" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Un ou plusieurs espaces de travail ou surfaces du Dock ont un processus en cours d’exécution ; réessayez avec --force" + "value": "Session Cloud terminée" } }, "ja": { "stringUnit": { "state": "translated", - "value": "1 つ以上のワークスペースまたは Dock サーフェスでプロセスが実行中です。--force を指定して再試行してください" + "value": "Cloud セッションが終了しました" } }, "ko": { "stringUnit": { "state": "translated", - "value": "하나 이상의 워크스페이스 또는 Dock 표면에서 실행 중인 프로세스가 있습니다. --force로 다시 시도하세요" + "value": "Cloud 세션이 종료되었습니다" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "一个或多个工作区或 Dock 表面有正在运行的进程;请使用 --force 重试" + "value": "Cloud 会话已结束" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "一個或多個工作區或 Dock 表面有正在執行的程序;請使用 --force 重試" + "value": "Cloud 工作階段已結束" } } } @@ -588253,238 +588529,120 @@ } } }, - "cloud.overlay.accessLost.detail": { + "settings.terminal.predictiveLocalEcho": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "You no longer have access to this machine." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "لم يعد لديك حق الوصول إلى هذا الجهاز." + "value": "Predictive Local Echo" } }, "de": { "stringUnit": { "state": "translated", - "value": "Sie haben keinen Zugriff mehr auf diese Maschine." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Ya no tienes acceso a esta máquina." + "value": "Vorausschauendes lokales Echo" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Vous n’avez plus accès à cette machine." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "このマシンへのアクセス権がなくなりました。" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "더 이상 이 머신에 접근할 수 없습니다." - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "你已无法再访问这台机器。" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "你已無法再存取這台機器。" - } - } - } - }, - "cloud.overlay.accessLost.title": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Cloud machine unavailable" + "value": "Écho local prédictif" } }, "ar": { "stringUnit": { "state": "translated", - "value": "جهاز Cloud غير متاح" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Cloud-Maschine nicht verfügbar" + "value": "الصدى المحلي التنبؤي" } }, "es": { "stringUnit": { "state": "translated", - "value": "Máquina de Cloud no disponible" + "value": "Eco local predictivo" } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Machine Cloud indisponible" + "value": "預測性本機回顯" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud マシンを利用できません" + "value": "预测性本地回显" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Cloud 머신을 사용할 수 없습니다" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "Cloud 机器不可用" + "value": "예측 로컬 에코" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "Cloud 機器無法使用" + "value": "予測ローカルエコー" } } } }, - "cloud.overlay.signedOut.detail": { + "settings.search.alias.setting.terminal.predictive-local-echo": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Sign in to cmux to reconnect this terminal." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "سجّل الدخول إلى cmux لإعادة توصيل هذه الطرفية." + "value": "terminal.predictiveLocalEcho predictive local echo typing latency lag ssh remote speculative mosh round trip underline" } }, "de": { "stringUnit": { "state": "translated", - "value": "Melden Sie sich bei cmux an, um dieses Terminal erneut zu verbinden." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Inicia sesión en cmux para volver a conectar este terminal." + "value": "terminal.predictiveLocalEcho vorausschauendes lokales echo tippen latenz verzögerung ssh remote spekulativ mosh round trip unterstrichen" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Connectez-vous à cmux pour reconnecter ce terminal." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "このターミナルに再接続するには cmux にサインインしてください。" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "이 터미널을 다시 연결하려면 cmux에 로그인하세요." - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "登录 cmux 以重新连接此终端。" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "登入 cmux 以重新連線此終端機。" - } - } - } - }, - "cloud.overlay.signedOut.title": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Cloud session ended" + "value": "terminal.predictiveLocalEcho écho local prédictif saisie latence décalage ssh distant spéculatif mosh aller-retour souligné" } }, "ar": { "stringUnit": { "state": "translated", - "value": "انتهت جلسة Cloud" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Cloud-Sitzung beendet" + "value": "terminal.predictiveLocalEcho الصدى المحلي التنبؤي الكتابة زمن الاستجابة التأخير ssh بعيد تخميني mosh ذهاب وإياب تسطير" } }, "es": { "stringUnit": { "state": "translated", - "value": "Sesión de Cloud finalizada" + "value": "terminal.predictiveLocalEcho eco local predictivo escritura latencia retraso ssh remoto especulativo mosh ida y vuelta subrayado" } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Session Cloud terminée" + "value": "terminal.predictiveLocalEcho 預測性本機回顯 輸入 延遲 卡頓 ssh 遠端 推測 mosh 往返 底線" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud セッションが終了しました" + "value": "terminal.predictiveLocalEcho 预测性本地回显 输入 延迟 卡顿 ssh 远程 推测 mosh 往返 下划线" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Cloud 세션이 종료되었습니다" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "Cloud 会话已结束" + "value": "terminal.predictiveLocalEcho 예측 로컬 에코 입력 지연 랙 ssh 원격 추측 mosh 왕복 밑줄" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "Cloud 工作階段已結束" + "value": "terminal.predictiveLocalEcho 予測ローカルエコー 入力 遅延 ラグ ssh リモート 投機的 mosh 往復 下線" } } } diff --git a/Sources/AgentFeedSemanticInput.swift b/Sources/AgentFeedSemanticInput.swift index e932303bdc6f..0bac6947bf64 100644 --- a/Sources/AgentFeedSemanticInput.swift +++ b/Sources/AgentFeedSemanticInput.swift @@ -22,10 +22,20 @@ struct AgentFeedSemanticInput: Sendable { let extra = event.extraFieldsJSON.flatMap { $0.data(using: .utf8) } .flatMap { try? JSONSerialization.jsonObject(with: $0) as? [String: Any] } ?? [:] let mapper = AgentSemanticEventMapper() - let resolved = resolvesRequest || event.hookEventName == .postToolUse + let nativeRequest = ["tool_use_id", "tool_call_id", "request_id", "agent_id"] + .compactMap { extra[$0] as? String }.first + let isToolActivity = event.hookEventName == .preToolUse + || event.hookEventName == .postToolUse + || event.hookEventName == .postToolUseFailure + // A PostToolUse with an identity also resolves a pending approval. A + // telemetry payload without one still proves the agent is working, but + // must not clear an unrelated request. + let resolved = resolvesRequest || (event.hookEventName == .postToolUse && nativeRequest != nil) let kind: AgentJournalEventKind if resolved { kind = .attentionResolved + } else if isToolActivity { + kind = .stateChanged } else { switch event.hookEventName { case .askUserQuestion: kind = .questionRequested @@ -33,11 +43,10 @@ struct AgentFeedSemanticInput: Sendable { default: kind = mapper.kind(source: event.source, nativeEvent: event.hookEventName.rawValue) } } - let nativeRequest = ["tool_use_id", "tool_call_id", "request_id", "agent_id"] - .compactMap { extra[$0] as? String }.first let identity = nativeRequest ?? ((notification != nil || resolvesRequest) ? (requestID ?? event.requestId) : nil) if notification == nil, !resolved, - ![.sessionStarted, .turnStarted, .sessionEnded, .childSpawned, .childCompleted, .childFailed].contains(kind) { + ![.sessionStarted, .turnStarted, .sessionEnded, .childSpawned, .childCompleted, .childFailed].contains(kind), + !(kind == .stateChanged && isToolActivity) { return nil } guard !resolved || identity != nil, @@ -51,11 +60,11 @@ struct AgentFeedSemanticInput: Sendable { source: event.source, agentKey: agentKey, sessionId: sessionID, workspaceId: workspace, surfaceId: surface, pendingWork: resolvesRequest, - // A post-tool hook resolves an attention request but does not by - // itself prove that a settled turn resumed. Only an explicit - // reply carrying pending work should reopen the lifecycle. + // Tool activity is a running assertion. It reopens a continuation + // that has no UserPromptSubmit hook; older activity is rejected by + // the reconciler's timestamp and turn-identity watermarks. nativeEvent: event.hookEventName.rawValue, - declaredPhase: resolvesRequest ? .running : nil, + declaredPhase: (resolvesRequest || isToolActivity) ? .running : nil, attention: AgentAttentionContext(eventIdentity: extra["event_id"] as? String, turnIdentity: extra["turn_id"] as? String, requestIdentity: identity, notification: notification)) } diff --git a/Sources/Feed/FeedCoordinator+SemanticNotifications.swift b/Sources/Feed/FeedCoordinator+SemanticNotifications.swift index 264caa327c7a..6f48ed658939 100644 --- a/Sources/Feed/FeedCoordinator+SemanticNotifications.swift +++ b/Sources/Feed/FeedCoordinator+SemanticNotifications.swift @@ -60,7 +60,8 @@ extension FeedCoordinator { @MainActor func observeSemanticLifecycle(_ event: WorkstreamEvent) { switch event.hookEventName { - case .sessionStart, .sessionEnd, .userPromptSubmit, .subagentStart, .subagentStop, .postToolUse: + case .sessionStart, .sessionEnd, .userPromptSubmit, .preToolUse, .postToolUse, + .postToolUseFailure, .subagentStart, .subagentStop: notificationJournal.observeFeed(AgentFeedSemanticInput(event: event, agentKey: Self.lifecycleStatusKey(forSource: event.source))) default: diff --git a/Sources/Sidebar/SidebarCompactStatusGlyph+Resolve.swift b/Sources/Sidebar/SidebarCompactStatusGlyph+Resolve.swift index 6adc61ce5106..7cf8762136b0 100644 --- a/Sources/Sidebar/SidebarCompactStatusGlyph+Resolve.swift +++ b/Sources/Sidebar/SidebarCompactStatusGlyph+Resolve.swift @@ -39,12 +39,35 @@ extension SidebarCompactStatusGlyph { static func resolve(_ input: Input) -> SidebarCompactStatusGlyph { let kind: Kind + let workStates = input.agentEntries.compactMap(\.workState) + // Waiting reports a running lifecycle on purpose (a pane with live + // background work must not look hibernatable), so it has to be read + // off the entries before the lifecycle branch below, and only when + // every agent in the workspace reports it: one agent still working + // keeps the row running. + // + // Status entries are keyed per workspace, while lifecycle states are + // keyed per panel, so two Claude panes in one workspace share a single + // `claude_code` entry and the second one to report wins. Counting the + // running lifecycles closes that gap: an hourglass only goes up when + // every running agent is covered by a waiting report. A pane that is + // still working can never hide behind another pane's hourglass; the + // cost is that two panes both waiting under one key show as running. + let runningLifecycleCount = input.lifecycleStates.filter { $0 == .running }.count + let everyAgentIsWaiting = !workStates.isEmpty + && workStates.count == input.agentEntries.count + && workStates.allSatisfy { $0 == .waiting } + && runningLifecycleCount <= workStates.count if input.agentEntries.contains(where: Self.reportsError) { kind = .error - } else if input.hasActiveAgent || input.lifecycleStates.contains(.running) || input.lifecycleStates.contains(.backgroundWorkPending) { - kind = .running } else if input.lifecycleStates.contains(.needsInput) { kind = .needsInput + } else if workStates.contains(.subagents) { + kind = .subagents + } else if everyAgentIsWaiting { + kind = .waiting + } else if input.hasActiveAgent || input.lifecycleStates.contains(.running) || input.lifecycleStates.contains(.backgroundWorkPending) { + kind = .running } else if input.lifecycleStates.contains(.unknown) { kind = .pending // A stale pull request is data repeated refresh failures could not diff --git a/Sources/Sidebar/SidebarCompactStatusGlyph.swift b/Sources/Sidebar/SidebarCompactStatusGlyph.swift index a3b3f4469ca6..d26d6203320b 100644 --- a/Sources/Sidebar/SidebarCompactStatusGlyph.swift +++ b/Sources/Sidebar/SidebarCompactStatusGlyph.swift @@ -24,18 +24,26 @@ import Foundation /// 1. Error (an agent reported a failure): red warning triangle. Only for /// something that broke. /// 2. Needs input: amber dot. -/// 3. Running: pulsing gray dot. It replaces the row's loading spinner. -/// 4. Starting (agent present, state not reported yet): hollow ring. -/// 5. Unseen (unread notifications): blue dot. Applied by the row, which owns +/// 3. Running through subagents: pulsing gray connected-points symbol. The +/// agent is working, but through background agents it spawned. +/// 4. Waiting on a deterministic wakeup (a background command, a scheduled +/// wakeup, a CI run): gray hourglass. Not your turn, and not finished. A +/// waiting pane still reports a *running* lifecycle (it must not look +/// hibernatable), so waiting is read off the reported work state and wins +/// over the running branch below, but only when every running agent in the +/// workspace is covered by a waiting report. +/// 5. Running: pulsing gray dot. It replaces the row's loading spinner. +/// 6. Starting (agent present, state not reported yet): hollow ring. +/// 7. Unseen (unread notifications): blue dot. Applied by the row, which owns /// the unread count; see ``applyingUnread(_:latestNotificationText:)``. It /// outranks "starting", which asks for nothing. -/// 6. Pull request: merged purple, open gray, closed gray with a minus badge. +/// 8. Pull request: merged purple, open gray, closed gray with a minus badge. /// cmux does not fetch CI or mergeability for a pull request, so there is /// no passing/failing/conflict glyph: adding one would advertise a color /// no user could see. See #12807. -/// 7. Agent idle (done and seen): gray checkmark. -/// 8. Branch, no pull request: gray branch. -/// 9. Otherwise, a plain terminal: nothing, so the title starts at the +/// 9. Agent idle (done and seen): gray checkmark. +/// 10. Branch, no pull request: gray branch. +/// 11. Otherwise, a plain terminal: nothing, so the title starts at the /// row's edge (a `terminal` entry in `sidebar.compactStatusIcons` adds one). /// Only the three agent states Claude marks with dots (needs input, unseen, /// running) are dots; everything settled gets a symbol that says what it is. @@ -43,7 +51,9 @@ struct SidebarCompactStatusGlyph: Equatable, Hashable { enum Kind: Equatable, Hashable { case error case needsInput + case subagents case running + case waiting case pending case unseen case pullRequest(PullRequestState) @@ -69,7 +79,9 @@ struct SidebarCompactStatusGlyph: Equatable, Hashable { enum IconSlot: String, CaseIterable { case error case needsInput + case subagents case running + case waiting case starting case unseen case pullRequestOpen @@ -84,7 +96,9 @@ struct SidebarCompactStatusGlyph: Equatable, Hashable { switch kind { case .error: return .error case .needsInput: return .needsInput + case .subagents: return .subagents case .running: return .running + case .waiting: return .waiting case .pending: return .starting case .unseen: return .unseen case .pullRequest(.open): return .pullRequestOpen @@ -135,6 +149,8 @@ struct SidebarCompactStatusGlyph: Equatable, Hashable { case .pullRequest(.merged): return SidebarCompactStatusDrawnGlyph.merge.rawValue case .pullRequest: return SidebarCompactStatusDrawnGlyph.pullRequest.rawValue case .pending: return "circle.dashed" + case .subagents: return "point.3.filled.connected.trianglepath.dotted" + case .waiting: return "hourglass" case .needsInput, .running, .unseen: return "circle.fill" case .idle: return "checkmark.circle" case .branch: return "arrow.triangle.branch" @@ -178,8 +194,9 @@ struct SidebarCompactStatusGlyph: Equatable, Hashable { kind != .terminal || customSymbolName != nil } - /// Whether the glyph pulses (the running indicator). - var pulses: Bool { kind == .running } + /// Whether the glyph pulses (the running indicators). Waiting does not: + /// the agent is parked, and a pulsing hourglass would claim otherwise. + var pulses: Bool { kind == .running || kind == .subagents } /// Unread notifications turn a settled row blue; agent activity and /// errors stay louder. The latest notification leads the tooltip, since @@ -196,7 +213,7 @@ struct SidebarCompactStatusGlyph: Equatable, Hashable { // states that ask for attention. case .pullRequest, .idle, .branch, .terminal, .pending: return SidebarCompactStatusGlyph(kind: .unseen, tooltip: unreadTooltip, iconOverrides: iconOverrides) - case .error, .needsInput, .running, .unseen: + case .error, .needsInput, .subagents, .running, .waiting, .unseen: return SidebarCompactStatusGlyph(kind: kind, tooltip: unreadTooltip, iconOverrides: iconOverrides) } } @@ -214,8 +231,10 @@ struct SidebarCompactStatusGlyph: Equatable, Hashable { switch kind { case .error: return 0 case .needsInput: return 1 - case .running: return 2 - case .unseen: return 3 + case .subagents: return 2 + case .running: return 3 + case .waiting: return 4 + case .unseen: return 5 case .pending, .pullRequest, .idle, .branch, .terminal: return nil } } @@ -280,7 +299,8 @@ struct SidebarCompactStatusGlyph: Equatable, Hashable { case .needsInput: return Self.needsInputColor case .unseen: return .systemBlue case .pullRequest(.merged): return .systemPurple - case .running, .pending, .idle, .branch, .terminal, .pullRequest(.open), .pullRequest(.closed): + case .subagents, .running, .waiting, .pending, .idle, .branch, .terminal, + .pullRequest(.open), .pullRequest(.closed): return secondary } } diff --git a/Sources/TerminalController+ControlSidebarContext.swift b/Sources/TerminalController+ControlSidebarContext.swift index 96f2c728fecc..4d8bb10c9bdb 100644 --- a/Sources/TerminalController+ControlSidebarContext.swift +++ b/Sources/TerminalController+ControlSidebarContext.swift @@ -26,9 +26,11 @@ extension TerminalController: ControlSidebarContext { priority: Int, format: ControlSidebarMetadataFormat, panelID: UUID?, - pid: Int32? + pid: Int32?, + workState: ControlSidebarAgentWorkState? ) { let appFormat = SidebarMetadataFormat(rawValue: format.rawValue) ?? .plain + let appWorkState = workState.flatMap { SidebarAgentWorkState(rawValue: $0.rawValue) } controlSidebarSchedulePanelOwnedMutation(target: target, panelID: panelID) { _, owner in guard Self.shouldReplaceStatusEntry( current: owner.statusEntry(key: key, panelId: panelID), @@ -38,7 +40,8 @@ extension TerminalController: ControlSidebarContext { color: color, url: url, priority: priority, - format: appFormat + format: appFormat, + workState: appWorkState ) else { // Still update PID tracking even if the status display hasn't changed. if let pid { @@ -54,7 +57,8 @@ extension TerminalController: ControlSidebarContext { url: url, priority: priority, format: appFormat, - timestamp: Date() + timestamp: Date(), + workState: appWorkState ), key: key, panelId: panelID) if let pid { owner.recordAgentPID(key: key, pid: pid, panelId: panelID) @@ -258,7 +262,8 @@ extension TerminalController: ControlSidebarContext { color: entry.color, urlAbsoluteString: entry.url?.absoluteString, priority: entry.priority, - format: ControlSidebarMetadataFormat(rawValue: entry.format.rawValue) ?? .plain + format: ControlSidebarMetadataFormat(rawValue: entry.format.rawValue) ?? .plain, + workState: entry.workState.flatMap { ControlSidebarAgentWorkState(rawValue: $0.rawValue) } ) } diff --git a/Sources/TerminalController+ControlSidebarContext2.swift b/Sources/TerminalController+ControlSidebarContext2.swift index 5adda480cc03..b81f383de2b0 100644 --- a/Sources/TerminalController+ControlSidebarContext2.swift +++ b/Sources/TerminalController+ControlSidebarContext2.swift @@ -439,7 +439,10 @@ extension TerminalController { color: $0.color, urlAbsoluteString: $0.url?.absoluteString, priority: $0.priority, - format: ControlSidebarMetadataFormat(rawValue: $0.format.rawValue) ?? .plain + format: ControlSidebarMetadataFormat(rawValue: $0.format.rawValue) ?? .plain, + workState: $0.workState.flatMap { state in + ControlSidebarAgentWorkState(rawValue: state.rawValue) + } ) }, metadataBlocks: tab.sidebarMetadataBlocksInDisplayOrder().map { diff --git a/Sources/TerminalController.swift b/Sources/TerminalController.swift index 62ba9f476e5b..91f5a951c8c1 100644 --- a/Sources/TerminalController.swift +++ b/Sources/TerminalController.swift @@ -902,7 +902,8 @@ class TerminalController { color: String?, url: URL?, priority: Int, - format: SidebarMetadataFormat + format: SidebarMetadataFormat, + workState: SidebarAgentWorkState? ) -> Bool { guard let current else { return true } return current.key != key || @@ -911,7 +912,8 @@ class TerminalController { current.color != color || current.url != url || current.priority != priority || - current.format != format + current.format != format || + current.workState != workState } nonisolated static func shouldReplaceMetadataBlock( @@ -11939,7 +11941,7 @@ class TerminalController { clear_notifications [--tab=X] [--panel=ID] - Clear notifications (all, per-tab, or per-panel) set_app_focus - Override app focus state simulate_app_active - Trigger app active handler - set_status [--icon=X] [--color=#hex] [--url=X] [--priority=N] [--format=plain|markdown] [--tab=X] - Set a status entry + set_status [--icon=X] [--color=#hex] [--url=X] [--priority=N] [--format=plain|markdown] [--work=running|subagents|waiting] [--tab=X] - Set a status entry set_agent_lifecycle [--tab=X] [--panel=ID] - Report coding-agent lifecycle for hibernation agent_hibernation - Enable or disable routine Agent Hibernation report_meta [--icon=X] [--color=#hex] [--url=X] [--priority=N] [--format=plain|markdown] [--tab=X] - Set sidebar metadata entry @@ -14722,6 +14724,16 @@ class TerminalController { return "ERROR: Invalid metadata format '\(formatRaw)' — use: plain, markdown" } + let workState: SidebarAgentWorkState? + if let rawWorkState = normalizedOptionValue(parsed.options["work"]) { + guard let parsedWorkState = SidebarAgentWorkState.parse(rawWorkState) else { + return "ERROR: Invalid work state '\(rawWorkState)' — use: running, subagents, waiting" + } + workState = parsedWorkState + } else { + workState = nil + } + let priority: Int if let rawPriority = normalizedOptionValue(parsed.options["priority"]) { guard let parsedPriority = Int(rawPriority) else { @@ -14750,7 +14762,7 @@ class TerminalController { } let panelResolution = parseOptionalPanelIdOption( options: parsed.options, - usage: "set_status [--icon=X] [--color=#hex] [--url=X] [--priority=N] [--format=plain|markdown] [--tab=X] [--panel=ID]" + usage: "set_status [--icon=X] [--color=#hex] [--url=X] [--priority=N] [--format=plain|markdown] [--work=running|subagents|waiting] [--tab=X] [--panel=ID]" ) if let error = panelResolution.error { return error @@ -14776,7 +14788,8 @@ class TerminalController { color: color, url: parsedURL, priority: priority, - format: format + format: format, + workState: workState ) else { // Still update PID tracking even if the status display hasn't changed. if let pidValue { @@ -14792,7 +14805,8 @@ class TerminalController { url: parsedURL, priority: priority, format: format, - timestamp: Date() + timestamp: Date(), + workState: workState ) if let pidValue { tab.recordAgentPID(key: key, pid: pidValue, panelId: panelResolution.panelId) @@ -14853,6 +14867,7 @@ class TerminalController { if let url = entry.url { line += " url=\(url.absoluteString)" } if entry.priority != 0 { line += " priority=\(entry.priority)" } if entry.format != .plain { line += " format=\(entry.format.rawValue)" } + if let workState = entry.workState { line += " work=\(workState.rawValue)" } return line } diff --git a/cmux.xcodeproj/project.pbxproj b/cmux.xcodeproj/project.pbxproj index b8ea23f0b302..dee6159f9db6 100644 --- a/cmux.xcodeproj/project.pbxproj +++ b/cmux.xcodeproj/project.pbxproj @@ -584,6 +584,7 @@ 89930004AABBCCDDEEFF0001 /* ClaudeHookSessionStoreFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89930004AABBCCDDEEFF0002 /* ClaudeHookSessionStoreFile.swift */; }; A5D41220A1B2C3D4E5F60718 /* ClaudeHookSurfaceResolutionSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D41221A1B2C3D4E5F60718 /* ClaudeHookSurfaceResolutionSwiftTests.swift */; }; CC7FDF58CBB0EDDE5DADE167 /* ClaudeHookSurfaceSocketState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1136E25CD5300988F9F2162 /* ClaudeHookSurfaceSocketState.swift */; }; + F6332A8451C63D5C64997403 /* ClaudeHookWorkStateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C851974591E32B011E9704A7 /* ClaudeHookWorkStateTests.swift */; }; A5D41222A1B2C3D4E5F60718 /* ClaudeNotificationStatusLifecycleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D41223A1B2C3D4E5F60718 /* ClaudeNotificationStatusLifecycleTests.swift */; }; 97CEF52570A6C3AFB83E1A7C /* ClaudeStopFailureStatusTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEAB02E73CAA231F5E266CF7 /* ClaudeStopFailureStatusTests.swift */; }; A9F200000000000000000015 /* ClaudeStreamJSONAccumulator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9F100000000000000000015 /* ClaudeStreamJSONAccumulator.swift */; }; @@ -3046,6 +3047,7 @@ A6AC71020000000000000001 /* SidebarAgentActivityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6AC71030000000000000001 /* SidebarAgentActivityIndicator.swift */; }; A6AC71040000000000000001 /* SidebarAgentActivitySummary.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6AC71050000000000000001 /* SidebarAgentActivitySummary.swift */; }; 08F11E56C54306DB62A5BFC4 /* SidebarAgentProfileLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE995EC3107F5E9B19839CCF /* SidebarAgentProfileLabel.swift */; }; + A4C6D5D1089BA194936B5100 /* SidebarAgentWorkStateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D3917E88FC3A4BFAD8ED176 /* SidebarAgentWorkStateTests.swift */; }; 211A75777F433ED8BA5AE208 /* SidebarAppearanceSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 243632BA1DBBA36FD46E0610 /* SidebarAppearanceSupport.swift */; }; B804C0030000000000000003 /* SidebarAppKitRowCellTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B804D0030000000000000003 /* SidebarAppKitRowCellTests.swift */; }; D7AB34300000000000000003 /* SidebarBonsplitTabWorkspaceDropOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7AB34300000000000000004 /* SidebarBonsplitTabWorkspaceDropOverlay.swift */; }; @@ -4932,6 +4934,7 @@ 89930004AABBCCDDEEFF0002 /* ClaudeHookSessionStoreFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClaudeHookSessionStoreFile.swift; sourceTree = ""; }; A5D41221A1B2C3D4E5F60718 /* ClaudeHookSurfaceResolutionSwiftTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClaudeHookSurfaceResolutionSwiftTests.swift; sourceTree = ""; }; D1136E25CD5300988F9F2162 /* ClaudeHookSurfaceSocketState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ClaudeHookSurfaceSocketState.swift"; sourceTree = ""; }; + C851974591E32B011E9704A7 /* ClaudeHookWorkStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ClaudeHookWorkStateTests.swift"; sourceTree = ""; }; A5D41223A1B2C3D4E5F60718 /* ClaudeNotificationStatusLifecycleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClaudeNotificationStatusLifecycleTests.swift; sourceTree = ""; }; DEAB02E73CAA231F5E266CF7 /* ClaudeStopFailureStatusTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ClaudeStopFailureStatusTests.swift"; sourceTree = ""; }; A9F100000000000000000015 /* ClaudeStreamJSONAccumulator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Panels/ClaudeStreamJSONAccumulator.swift; sourceTree = ""; }; @@ -7240,6 +7243,7 @@ A6AC71030000000000000001 /* SidebarAgentActivityIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Sidebar/SidebarAgentActivityIndicator.swift; sourceTree = ""; }; A6AC71050000000000000001 /* SidebarAgentActivitySummary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarAgentActivitySummary.swift; sourceTree = ""; }; DE995EC3107F5E9B19839CCF /* SidebarAgentProfileLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Sidebar/SidebarAgentProfileLabel.swift; sourceTree = ""; }; + 2D3917E88FC3A4BFAD8ED176 /* SidebarAgentWorkStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SidebarAgentWorkStateTests.swift"; sourceTree = ""; }; 243632BA1DBBA36FD46E0610 /* SidebarAppearanceSupport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Sidebar/SidebarAppearanceSupport.swift; sourceTree = ""; }; B804D0030000000000000003 /* SidebarAppKitRowCellTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarAppKitRowCellTests.swift; sourceTree = ""; }; D7AB34300000000000000004 /* SidebarBonsplitTabWorkspaceDropOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Sidebar/SidebarBonsplitTabWorkspaceDropOverlay.swift; sourceTree = ""; }; @@ -12814,6 +12818,8 @@ C038464D085920513576A927 /* CloudWorkspaceRowOpenTests.swift */, 34A1987FFA112D2457B20A9C /* LocalTerminalSizingHostLifecycleTests.swift */, C7A99CD111C8F6166A22186B /* SidebarBoundedDisplayStringTests.swift */, + C851974591E32B011E9704A7 /* ClaudeHookWorkStateTests.swift */, + 2D3917E88FC3A4BFAD8ED176 /* SidebarAgentWorkStateTests.swift */, ); path = cmuxTests; sourceTree = ""; @@ -16627,6 +16633,7 @@ 5F0C70BF9BF7328093200E72 /* ClaudeHookSessionLivenessTests.swift in Sources */, A5D41220A1B2C3D4E5F60718 /* ClaudeHookSurfaceResolutionSwiftTests.swift in Sources */, CC7FDF58CBB0EDDE5DADE167 /* ClaudeHookSurfaceSocketState.swift in Sources */, + F6332A8451C63D5C64997403 /* ClaudeHookWorkStateTests.swift in Sources */, A5D41222A1B2C3D4E5F60718 /* ClaudeNotificationStatusLifecycleTests.swift in Sources */, 97CEF52570A6C3AFB83E1A7C /* ClaudeStopFailureStatusTests.swift in Sources */, 9758A0000000000000000004 /* CLIAmpLifecycleIntegrationTests.swift in Sources */, @@ -17378,6 +17385,7 @@ F6001000A1B2C3D4E5F60718 /* ShortcutUnbindingTests.swift in Sources */, 29B9EA7A64AF6741463D582B /* SidebarAccessibilityTreeTests.swift in Sources */, 18E25585AB1083F87E29B06F /* SidebarAccessibilityTreeWalk.swift in Sources */, + A4C6D5D1089BA194936B5100 /* SidebarAgentWorkStateTests.swift in Sources */, B804C0030000000000000003 /* SidebarAppKitRowCellTests.swift in Sources */, FE9F9435374CB344628420AB /* SidebarBoundedDisplayStringTests.swift in Sources */, 9BE45B94B05D471FA386203D /* SidebarCloudWorkspaceBadgeTests.swift in Sources */, diff --git a/cmuxTests/AgentNotificationMutationBoundaryTests.swift b/cmuxTests/AgentNotificationMutationBoundaryTests.swift index 2f96232df550..b505e6a49677 100644 --- a/cmuxTests/AgentNotificationMutationBoundaryTests.swift +++ b/cmuxTests/AgentNotificationMutationBoundaryTests.swift @@ -215,7 +215,8 @@ extension AgentNotificationRegressionTests { priority: 0, format: .plain, panelID: fixture.panelId, - pid: nil + pid: nil, + workState: nil ) TerminalController.shared.controlSidebarScheduleAgentPIDRecord( target: .workspace(dockOwnerId), @@ -267,7 +268,8 @@ extension AgentNotificationRegressionTests { priority: 0, format: .plain, panelID: fixture.panelId, - pid: nil + pid: nil, + workState: nil ) TerminalController.shared.controlSidebarScheduleAgentLifecycle( target: .workspace(dockOwnerId), @@ -591,7 +593,8 @@ extension AgentNotificationRegressionTests { priority: 0, format: .plain, panelID: fixture.panelId, - pid: 43_210 + pid: 43_210, + workState: nil ) TerminalController.shared.controlSidebarScheduleAgentLifecycle( target: .workspace(fixture.source.id), diff --git a/cmuxTests/AgentSemanticNotificationDeliveryTests.swift b/cmuxTests/AgentSemanticNotificationDeliveryTests.swift index 6709b401d897..467924cb7e05 100644 --- a/cmuxTests/AgentSemanticNotificationDeliveryTests.swift +++ b/cmuxTests/AgentSemanticNotificationDeliveryTests.swift @@ -212,7 +212,7 @@ extension AgentNotificationRegressionTests { #expect(recorder.unreadWhenBannerPosted) } @Test(arguments: ["claude", "codex"]) - func feedToolResultDoesNotReopenSettledCompletion(source: String) throws { + func feedLateToolResultKeepsSettledCompletionIdle(source: String) throws { let workspace = UUID().uuidString let surface = UUID().uuidString var reconciler = AgentNotificationReconciler() @@ -232,6 +232,70 @@ extension AgentNotificationRegressionTests { #expect(reconciler.lifecycleEvent(result).draft.declaredPhase == .idle) } + @Test(arguments: ["claude", "codex"]) + func feedIdentitylessLateToolResultKeepsSettledCompletionIdle(source: String) throws { + let workspace = UUID().uuidString + let surface = UUID().uuidString + var reconciler = AgentNotificationReconciler() + let completed = AgentJournalEvent(sequence: 1, committedAtMs: 100, + draft: AgentJournalEventDraft(kind: .turnCompleted, occurredAtMs: 100, + source: source, agentKey: source, sessionId: "session", + workspaceId: workspace, surfaceId: surface, + attention: AgentAttentionContext(turnIdentity: "turn"))) + _ = reconciler.apply(completed) + let event = WorkstreamEvent(sessionId: "session", hookEventName: .postToolUse, + source: source, workspaceId: workspace, surfaceId: surface, + toolName: "Tool", extraFieldsJSON: "{\"turn_id\":\"turn\"}") + let draft = try #require(AgentFeedSemanticInput(event: event, agentKey: source).draft()) + #expect(draft.kind == .stateChanged) + #expect(draft.attention?.requestIdentity == nil) + let result = AgentJournalEvent(sequence: 2, committedAtMs: 200, draft: draft) + _ = reconciler.apply(result) + #expect(reconciler.lifecycleEvent(result).draft.declaredPhase == .idle) + } + + @Test(arguments: ["claude", "codex"]) + func feedToolActivityReopensAContinuation(source: String) throws { + let workspace = UUID().uuidString + let surface = UUID().uuidString + var reconciler = AgentNotificationReconciler() + let completed = AgentJournalEvent(sequence: 1, committedAtMs: 100, + draft: AgentJournalEventDraft(kind: .turnCompleted, occurredAtMs: 100, + source: source, agentKey: source, sessionId: "session", + workspaceId: workspace, surfaceId: surface, + attention: AgentAttentionContext(turnIdentity: "turn"))) + _ = reconciler.apply(completed) + let event = WorkstreamEvent(sessionId: "session", hookEventName: .postToolUse, + source: source, workspaceId: workspace, surfaceId: surface, + toolName: "Tool", extraFieldsJSON: "{\"tool_use_id\":\"ordinary-tool\",\"turn_id\":\"continuation\"}") + let draft = try #require(AgentFeedSemanticInput(event: event, agentKey: source).draft()) + let result = AgentJournalEvent(sequence: 2, committedAtMs: 200, draft: draft) + _ = reconciler.apply(result) + #expect(reconciler.lifecycleEvent(result).draft.declaredPhase == .running) + } + + @Test(arguments: ["claude", "codex"]) + func feedPreToolActivityReopensSettledCompletion(source: String) throws { + let workspace = UUID().uuidString + let surface = UUID().uuidString + var reconciler = AgentNotificationReconciler() + let completed = AgentJournalEvent(sequence: 1, committedAtMs: 100, + draft: AgentJournalEventDraft(kind: .turnCompleted, occurredAtMs: 100, + source: source, agentKey: source, sessionId: "session", + workspaceId: workspace, surfaceId: surface, + attention: AgentAttentionContext(turnIdentity: "turn"))) + _ = reconciler.apply(completed) + let event = WorkstreamEvent(sessionId: "session", hookEventName: .preToolUse, + source: source, workspaceId: workspace, surfaceId: surface, + toolName: "Tool", extraFieldsJSON: "{\"turn_id\":\"continuation\"}") + let draft = try #require(AgentFeedSemanticInput(event: event, agentKey: source).draft()) + #expect(draft.kind == .stateChanged) + #expect(draft.declaredPhase == .running) + let result = AgentJournalEvent(sequence: 2, committedAtMs: 200, draft: draft) + _ = reconciler.apply(result) + #expect(reconciler.lifecycleEvent(result).draft.declaredPhase == .running) + } + @Test(arguments: ["claude", "codex"]) func observedChildCompletionDeliversTheReleasedCompletion(source: String) async throws { let fixture = try makeFixture() diff --git a/cmuxTests/ClaudeBackgroundWorkNotifyTests.swift b/cmuxTests/ClaudeBackgroundWorkNotifyTests.swift index fa56ca67ec86..b07b61512541 100644 --- a/cmuxTests/ClaudeBackgroundWorkNotifyTests.swift +++ b/cmuxTests/ClaudeBackgroundWorkNotifyTests.swift @@ -22,6 +22,10 @@ struct ClaudeBackgroundWorkNotifyTests { // must not mark the completion as pending or poison the later idle signal. #expect(notifyLine(result.snapshot, containing: "c=turn-complete;p=0") != nil) #expect(journalEvent(result.snapshot, kind: "agent.turn.completed", pendingWork: false) != nil) + // A re-entrant Stop is the agent itself still going, not a pane parked + // on a deterministic wakeup, so it stays Running. + #expect(statusLine(result.snapshot, value: "Running") != nil) + #expect(statusLine(result.snapshot, value: "Waiting") == nil) } private func statusLine(_ snapshot: [String], value: String) -> String? { @@ -102,10 +106,14 @@ struct ClaudeBackgroundWorkNotifyTests { "Stop with a running background task must tag the done-ping pending; saw \(snapshot)" ) #expect(cached == true) - // Sidebar pill must not say "Idle" while background work is live. - #expect(statusLine(snapshot, value: "Running") != nil, - "Pending stop must show a Running pill, not Idle; saw \(snapshot)") + // Sidebar pill must not say "Idle" while background work is live. A + // live background task is a deterministic wakeup, so the pane reads as + // Waiting rather than Running, and reports that to the compact glyph. + #expect(statusLine(snapshot, value: "Waiting") != nil, + "Pending stop must show a Waiting pill, not Idle; saw \(snapshot)") #expect(statusLine(snapshot, value: "Idle") == nil) + #expect(lastLine(snapshot, prefix: "set_status claude_code Waiting ")?.contains("--work=waiting") == true, + "The Waiting pill must carry the work state the sidebar glyph reads; saw \(snapshot)") // And the journaled turn boundary must carry pending_work=true so the // reduced lifecycle stays running (non-hibernatable) while the // background task is live. diff --git a/cmuxTests/ClaudeHookWorkStateTests.swift b/cmuxTests/ClaudeHookWorkStateTests.swift new file mode 100644 index 000000000000..a9684cabb801 --- /dev/null +++ b/cmuxTests/ClaudeHookWorkStateTests.swift @@ -0,0 +1,153 @@ +import Foundation +import Testing + +/// The Claude hooks that tell the sidebar what a *running* pane is running on: +/// `--work=subagents` while a `Task` call is in flight, and plain +/// `--work=running` otherwise. The waiting half (a Stop with live background +/// work) is covered in `ClaudeBackgroundWorkNotifyTests`. +@Suite(.serialized) +struct ClaudeHookWorkStateTests { + private typealias Harness = ClaudeHookLiveDeliveryHarness + + private static let workspaceId = "11111111-1111-1111-1111-111111111111" + private static let surfaceId = "22222222-2222-2222-2222-222222222222" + + /// Runs one PreToolUse hook for `toolName` and returns the commands the + /// mock app saw. + private func runPreToolUse(name: String, toolName: String, pid: String, toolInput: [String: String] = [:]) throws -> [String] { + let context = try Harness.makeContext(name: name) + defer { context.cleanup() } + let sessionId = "\(name)-session" + + try Harness.writeSessionStore( + to: context.storeURL, + sessionId: sessionId, + workspaceId: Self.workspaceId, + surfaceId: Self.surfaceId, + cwd: context.root.path + ) + let serverHandled = Harness.startDeliveryTargetServer( + context: context, + surfacesByWorkspace: [Self.workspaceId: [Self.surfaceId]], + pidTarget: nil, + surfaceTargets: [Self.surfaceId: Self.workspaceId] + ) + + var environment = Harness.hookEnvironment(context: context) + environment["CMUX_WORKSPACE_ID"] = Self.workspaceId + environment["CMUX_SURFACE_ID"] = Self.surfaceId + environment["CMUX_CLAUDE_PID"] = pid + + let payload: [String: Any] = [ + "session_id": sessionId, + "hook_event_name": "PreToolUse", + "tool_name": toolName, + "tool_input": toolInput, + "cwd": context.root.path + ] + let standardInput = String(decoding: try JSONSerialization.data(withJSONObject: payload), as: UTF8.self) + let result = Harness.runHookProcess( + context: context, + arguments: ["hooks", "claude", "pre-tool-use"], + environment: environment, + standardInput: standardInput + ) + + #expect(serverHandled.wait(timeout: .now() + 5) == .success) + #expect(!result.timedOut, Comment(rawValue: result.stderr)) + #expect(result.status == 0, Comment(rawValue: result.stderr)) + return context.state.snapshot() + } + + private func statusLine(_ commands: [String]) -> String? { + commands.last { $0.hasPrefix("set_status claude_code ") } + } + + /// A `Task` call blocks the parent inside the tool until its subagents + /// finish, so the subagent state holds for exactly that span. + @Test func taskToolReportsRunningSubagents() throws { + let commands = try runPreToolUse(name: "work-state-task", toolName: "Task", pid: "43401") + let status = statusLine(commands) + #expect(status?.hasPrefix("set_status claude_code Running subagents ") == true, + "A Task call must say the agent is running subagents; saw \(commands)") + #expect(status?.contains("--work=subagents") == true, + "The subagents pill must carry the work state the glyph reads; saw \(commands)") + #expect(status?.contains("--icon=point.3.filled.connected.trianglepath.dotted") == true, + "The subagents pill must use the connected-points symbol; saw \(commands)") + } + + /// Claude Code renamed the spawn tool "Task" -> "Agent" in 2.x and both + /// names are still on the wire, so a row that only matched "Task" would + /// show a plain running dot for everyone on a current CLI. + @Test func renamedAgentToolAlsoReportsRunningSubagents() throws { + let commands = try runPreToolUse(name: "work-state-agent", toolName: "Agent", pid: "43403") + let status = statusLine(commands) + #expect(status?.contains("--work=subagents") == true, + "The 2.x spawn tool name must report subagents too; saw \(commands)") + #expect(status?.contains("--icon=point.3.filled.connected.trianglepath.dotted") == true, + "The subagents pill must use the connected-points symbol; saw \(commands)") + } + + /// Every other tool is the agent working directly, which must keep the + /// pill and glyph it had before the work state existed. + @Test func ordinaryToolReportsPlainRunning() throws { + let commands = try runPreToolUse(name: "work-state-bash", toolName: "Bash", pid: "43402") + let status = statusLine(commands) + #expect(status?.hasPrefix("set_status claude_code Running ") == true, + "An ordinary tool must keep the plain Running pill; saw \(commands)") + #expect(status?.contains("--work=running") == true) + #expect(status?.contains("--icon=bolt.fill") == true) + #expect(status?.contains("subagents") == false) + } + + @Test(arguments: ["Monitor", "TaskOutput"]) + func blockingWaitToolReportsWaiting(toolName: String) throws { + let commands = try runPreToolUse(name: "wait-tool", toolName: toolName, pid: "43405") + let status = statusLine(commands) + #expect(status?.hasPrefix("set_status claude_code Waiting ") == true) + #expect(status?.contains("--work=waiting") == true) + #expect(status?.contains("--icon=hourglass") == true) + } + + @Test(arguments: [ + "glaeda-gh wait pr manaflow-ai/cmux#15887 --until green", + "gh run watch 123 --exit-status", + "gh pr checks 123 --watch", + "sleep 30", + "while ! curl -fsS localhost:8080; do sleep 2; done" + ]) + func deterministicShellWaitReportsWaiting(command: String) throws { + let commands = try runPreToolUse(name: "wait-command", toolName: "Bash", pid: "43406", toolInput: ["command": command]) + let status = statusLine(commands) + #expect(status?.hasPrefix("set_status claude_code Waiting ") == true) + #expect(status?.contains("--work=waiting") == true) + #expect(status?.contains("--icon=hourglass") == true) + } + + @Test(arguments: ["echo 'sleep 30'", "rg polling Sources", "gh pr checks 123", "make build"]) + func ordinaryCommandRemainsRunning(command: String) throws { + let commands = try runPreToolUse(name: "ordinary-command", toolName: "Bash", pid: "43407", toolInput: ["command": command]) + #expect(statusLine(commands)?.contains("--work=running") == true) + } + + /// The work option is appended after every option the command already + /// had. Suites that have nothing to do with work states pin the running + /// command as a prefix up to `--tab=` + /// (`CLINotifyProcessIntegrationRegressionTests`, + /// `test_claude_hook_clear_running_status.py`), and a flag inserted + /// ahead of that breaks them while saying nothing about what they check. + @Test func workStateGoesLastAndLeavesTheOlderPrefixIntact() throws { + let commands = try runPreToolUse(name: "work-state-order", toolName: "Bash", pid: "43404") + let status = statusLine(commands) + #expect( + status?.hasPrefix( + "set_status claude_code Running --icon=bolt.fill --color=#4C8DFF --tab=\(Self.workspaceId)" + ) == true, + "The work option must not split the prefix other suites pin; saw \(commands)" + ) + #expect( + status?.hasSuffix("--work=running") == true, + "The work option must come last; saw \(commands)" + ) + } +} diff --git a/cmuxTests/SidebarAgentWorkStateTests.swift b/cmuxTests/SidebarAgentWorkStateTests.swift new file mode 100644 index 000000000000..abdb517ddebe --- /dev/null +++ b/cmuxTests/SidebarAgentWorkStateTests.swift @@ -0,0 +1,244 @@ +import AppKit +import CmuxControlSocket +import CmuxSidebar +import Testing +@testable import cmux_DEV + +/// The two richer running states an agent hook can report through +/// `set_status --work=`: running through subagents, and waiting on a +/// deterministic wakeup. +@Suite(.serialized) +@MainActor +struct SidebarAgentWorkStateTests { + private typealias Glyph = SidebarCompactStatusGlyph + + private static func entry( + _ key: String, + _ value: String, + workState: SidebarAgentWorkState? + ) -> SidebarStatusEntry { + SidebarStatusEntry(key: key, value: value, icon: "bolt.fill", color: "#4C8DFF", workState: workState) + } + + // MARK: Parsing + + @Test + func parseAcceptsTheReportedSpellingsAndRejectsEverythingElse() { + #expect(SidebarAgentWorkState.parse("running") == .running) + #expect(SidebarAgentWorkState.parse(" Subagents ") == .subagents) + #expect(SidebarAgentWorkState.parse("WAITING") == .waiting) + #expect(SidebarAgentWorkState.parse("compacting") == nil) + #expect(SidebarAgentWorkState.parse("") == nil) + // The singular reads like it should work, and it must not: the + // control socket rejects the whole `set_status` for it, so a parse + // that accepted it here would describe a state the app never sees. + #expect(SidebarAgentWorkState.parse("subagent") == nil) + } + + /// The wire contract is three raw strings repeated in modules that + /// deliberately do not depend on each other. Nothing else fails if one + /// copy is renamed, so pin the two that link here; the CLI's third copy + /// is pinned on the wire by `ClaudeHookWorkStateTests` and + /// `ClaudeBackgroundWorkNotifyTests`, which read the emitted `--work=`. + @Test + func theThreeCopiesOfTheWireContractAgree() { + #expect(SidebarAgentWorkState.allCases.map(\.rawValue) == ["running", "subagents", "waiting"]) + #expect( + ControlSidebarAgentWorkState.allCases.map(\.rawValue) + == SidebarAgentWorkState.allCases.map(\.rawValue) + ) + for state in ControlSidebarAgentWorkState.allCases { + #expect(SidebarAgentWorkState(rawValue: state.rawValue) != nil, + "The control socket's '\(state.rawValue)' has no sidebar twin") + } + } + + // MARK: Resolution + + @Test + func subagentsOutranksRunning() { + let glyph = Glyph.resolve(Glyph.Input( + agentEntries: [Self.entry("claude_code", "Running subagents", workState: .subagents)], + lifecycleStates: [.running], + hasActiveAgent: true + )) + #expect(glyph.kind == .subagents) + } + + /// Waiting reports a running lifecycle on purpose: a pane with live + /// background work must not look hibernatable. The glyph still has to say + /// waiting, which is the regression this whole state exists for. + @Test + func waitingWinsOverItsOwnRunningLifecycle() { + let glyph = Glyph.resolve(Glyph.Input( + agentEntries: [Self.entry("claude_code", "Waiting", workState: .waiting)], + lifecycleStates: [.running], + hasActiveAgent: true + )) + #expect(glyph.kind == .waiting) + } + + @Test + func oneAgentStillWorkingKeepsTheRowRunning() { + let glyph = Glyph.resolve(Glyph.Input( + agentEntries: [ + Self.entry("claude_code", "Waiting", workState: .waiting), + Self.entry("codex", "Running", workState: .running), + ], + lifecycleStates: [.running], + hasActiveAgent: true + )) + #expect(glyph.kind == .running) + } + + /// An agent that reports no work state says nothing about whether it is + /// parked, so its workspace cannot be called waiting on the strength of + /// another agent's report. + @Test + func anAgentWithoutAWorkStateKeepsTheRowRunning() { + let glyph = Glyph.resolve(Glyph.Input( + agentEntries: [ + Self.entry("claude_code", "Waiting", workState: .waiting), + Self.entry("codex", "Running", workState: nil), + ], + lifecycleStates: [.running], + hasActiveAgent: true + )) + #expect(glyph.kind == .running) + } + + /// Status entries are keyed per workspace and lifecycle states per panel, + /// so two Claude panes in one workspace share a single `claude_code` + /// entry: the pane that reports last wins. A pane parked on background + /// work must not put an hourglass over a sibling pane that is still + /// working, so a running lifecycle that no waiting report accounts for + /// keeps the row running. + @Test + func aSecondPaneStillWorkingUnderTheSharedKeyKeepsTheRowRunning() { + let glyph = Glyph.resolve(Glyph.Input( + agentEntries: [Self.entry("claude_code", "Waiting", workState: .waiting)], + lifecycleStates: [.running, .running], + hasActiveAgent: true + )) + #expect(glyph.kind == .running) + } + + /// The same workspace once the sibling pane goes idle: one running + /// lifecycle, one waiting report, so the hourglass is honest again. + @Test + func theHourglassReturnsOnceTheSiblingPaneIsDone() { + let glyph = Glyph.resolve(Glyph.Input( + agentEntries: [Self.entry("claude_code", "Waiting", workState: .waiting)], + lifecycleStates: [.running, .idle], + hasActiveAgent: true + )) + #expect(glyph.kind == .waiting) + } + + /// Two agents under two keys, both parked, is the ordinary all-waiting + /// case and still reads as waiting. + @Test + func twoAgentsBothParkedStayWaiting() { + let glyph = Glyph.resolve(Glyph.Input( + agentEntries: [ + Self.entry("claude_code", "Waiting", workState: .waiting), + Self.entry("codex", "Waiting", workState: .waiting), + ], + lifecycleStates: [.running, .running], + hasActiveAgent: true + )) + #expect(glyph.kind == .waiting) + } + + @Test + func needsInputAndErrorStillOutrankBothNewStates() { + #expect(Glyph.resolve(Glyph.Input( + agentEntries: [Self.entry("claude_code", "Running subagents", workState: .subagents)], + lifecycleStates: [.needsInput, .running], + hasActiveAgent: true + )).kind == .needsInput) + #expect(Glyph.resolve(Glyph.Input( + agentEntries: [ + SidebarStatusEntry( + key: "claude_code", + value: "Failed", + icon: "exclamationmark.triangle.fill", + workState: .waiting + ) + ], + lifecycleStates: [.running], + hasActiveAgent: true + )).kind == .error) + } + + @Test + func anEntryWithoutAWorkStateResolvesExactlyAsBefore() { + let glyph = Glyph.resolve(Glyph.Input( + agentEntries: [Self.entry("claude_code", "Running", workState: nil)], + lifecycleStates: [.running], + hasActiveAgent: true + )) + #expect(glyph.kind == .running) + } + + // MARK: Presentation + + @Test + func theNewStatesDrawCalmSymbolsRatherThanMoreDots() { + let subagents = Glyph(kind: .subagents, tooltip: "") + let waiting = Glyph(kind: .waiting, tooltip: "") + #expect(subagents.defaultSymbolName == "point.3.filled.connected.trianglepath.dotted") + #expect(waiting.defaultSymbolName == "hourglass") + // Symbols draw full size; only the three dots shrink. + #expect(subagents.sizeScale == 1) + #expect(waiting.sizeScale == 1) + #expect(Glyph(kind: .running, tooltip: "").sizeScale == 0.6) + } + + @Test + func subagentsPulsesBecauseItIsRunningAndWaitingDoesNot() { + #expect(Glyph(kind: .subagents, tooltip: "").pulses) + #expect(!Glyph(kind: .waiting, tooltip: "").pulses) + } + + @Test + func bothNewStatesStaySecondaryGrayAndTakeTheSelectionColorWhenActive() { + for kind in [Glyph.Kind.subagents, .waiting] { + let glyph = Glyph(kind: kind, tooltip: "") + #expect(glyph.color(isActive: false, selected: .white, secondary: .secondaryLabelColor) == .secondaryLabelColor) + #expect(glyph.color(isActive: true, selected: .white, secondary: .secondaryLabelColor) == .white) + } + } + + @Test + func bothNewStatesAreConfigurableIconSlots() { + #expect(Glyph(kind: .subagents, tooltip: "").iconSlot == .subagents) + #expect(Glyph(kind: .waiting, tooltip: "").iconSlot == .waiting) + let overrides = Glyph.validIconOverrides(["subagents": "circle.grid.2x2", "waiting": "clock"]) + #expect(overrides == ["subagents": "circle.grid.2x2", "waiting": "clock"]) + #expect(Glyph(kind: .waiting, tooltip: "", iconOverrides: overrides).symbolName == "clock") + } + + // MARK: Group headers + + @Test + func groupHeadersRankSubagentsWithRunningAndWaitingBelowIt() { + func member(_ title: String, _ kind: Glyph.Kind) -> Glyph.GroupMember { + Glyph.GroupMember(title: title, glyph: Glyph(kind: kind, tooltip: "detail")) + } + #expect(Glyph.rollUp([member("a", .running), member("b", .subagents)])?.kind == .subagents) + #expect(Glyph.rollUp([member("a", .waiting), member("b", .running)])?.kind == .running) + #expect(Glyph.rollUp([member("a", .waiting), member("b", .unseen)])?.kind == .waiting) + #expect(Glyph.rollUp([member("a", .waiting), member("b", .needsInput)])?.kind == .needsInput) + } + + @Test + func unreadNotificationsDoNotOverrideEitherNewState() { + for kind in [Glyph.Kind.subagents, .waiting] { + let glyph = Glyph(kind: kind, tooltip: "Claude Code: Waiting") + .applyingUnread(3, latestNotificationText: "Finished") + #expect(glyph.kind == kind) + #expect(glyph.tooltip == "Finished\nClaude Code: Waiting") + } + } +} diff --git a/cmuxTests/SidebarCompactAgentStatusTests.swift b/cmuxTests/SidebarCompactAgentStatusTests.swift index 8ecf40b04ce3..3be654472e13 100644 --- a/cmuxTests/SidebarCompactAgentStatusTests.swift +++ b/cmuxTests/SidebarCompactAgentStatusTests.swift @@ -276,11 +276,11 @@ struct SidebarCompactAgentStatusTests { @Test func everyIconSlotHasADistinctState() { - #expect(Glyph.IconSlot.allCases.count == 11) - #expect(Set(Glyph.IconSlot.allCases.map(\.rawValue)).count == 11) + #expect(Glyph.IconSlot.allCases.count == 13) + #expect(Set(Glyph.IconSlot.allCases.map(\.rawValue)).count == 13) // Every slot is a state the app can actually reach. #expect(Set(Glyph.IconSlot.allCases) == Set([ - .error, .needsInput, .running, .starting, .unseen, + .error, .needsInput, .running, .subagents, .waiting, .starting, .unseen, .pullRequestOpen, .pullRequestMerged, .pullRequestClosed, .idle, .branch, .terminal, ])) diff --git a/cmuxTests/SidebarOrderingTests.swift b/cmuxTests/SidebarOrderingTests.swift index 6a935b0e71f1..e69188e578d8 100644 --- a/cmuxTests/SidebarOrderingTests.swift +++ b/cmuxTests/SidebarOrderingTests.swift @@ -1100,7 +1100,8 @@ final class TerminalControllerSidebarDedupeTests: XCTestCase { color: "#ffffff", url: nil, priority: 0, - format: .plain + format: .plain, + workState: nil ) ) } @@ -1122,7 +1123,8 @@ final class TerminalControllerSidebarDedupeTests: XCTestCase { color: "#ffffff", url: nil, priority: 0, - format: .plain + format: .plain, + workState: nil ) ) } diff --git a/docs/configuration.md b/docs/configuration.md index df9d1c6f9dcb..908c5a7229db 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -223,6 +223,8 @@ The glyph shows the loudest state that applies: | --- | --- | | An agent reported an error | red warning triangle | | An agent needs input | amber dot | +| An agent is running through subagents | pulsing gray connected-points glyph | +| An agent is waiting on a background command, a scheduled wakeup or a CI run | gray hourglass | | An agent is running | pulsing gray dot, in place of the loading spinner | | An agent is starting (no state reported yet) | dashed ring | | Unread notifications | blue dot, in place of the unread count badge | @@ -233,9 +235,11 @@ The glyph shows the loudest state that applies: | Branch, no pull request | gray branch glyph | | Plain terminal | none; the title starts at the row's edge | +The hourglass only goes up when every running agent in the workspace reported that it is waiting, so a second agent still working keeps the row running. + cmux does not fetch a pull request's checks or mergeability, so an open pull request is gray whatever CI says. A pull request whose state repeated refresh failures could not confirm does not set the glyph at all. -Change any of them with `sidebar.compactStatusIcons`, a map from state to an [SF Symbol](https://developer.apple.com/sf-symbols/) name. The states are `error`, `needsInput`, `running`, `starting`, `unseen`, `pullRequestOpen`, `pullRequestMerged`, `pullRequestClosed`, `idle`, `branch` and `terminal`. Colors stay the same; a configured symbol replaces the badge too, draws at full size, and a name that does not render falls back to the built-in symbol. The built-in pull request and merge glyphs are drawn by cmux, since the SF Symbols ones are too narrow at sidebar size; name them `cmux.pullrequest` and `cmux.merge` to use them for another state. +Change any of them with `sidebar.compactStatusIcons`, a map from state to an [SF Symbol](https://developer.apple.com/sf-symbols/) name. The states are `error`, `needsInput`, `subagents`, `running`, `waiting`, `starting`, `unseen`, `pullRequestOpen`, `pullRequestMerged`, `pullRequestClosed`, `idle`, `branch` and `terminal`. Colors stay the same; a configured symbol replaces the badge too, draws at full size, and a name that does not render falls back to the built-in symbol. The built-in pull request and merge glyphs are drawn by cmux, since the SF Symbols ones are too narrow at sidebar size; name them `cmux.pullrequest` and `cmux.merge` to use them for another state. ```json { diff --git a/dogfood/scenarios/sidebar-agent-work-state-compact.json b/dogfood/scenarios/sidebar-agent-work-state-compact.json new file mode 100644 index 000000000000..64fc9fcdba96 --- /dev/null +++ b/dogfood/scenarios/sidebar-agent-work-state-compact.json @@ -0,0 +1,50 @@ +{ + "launch": { + "args": [ + "-sidebarCompactAgentStatus", + "", + "-sidebarShellIntegration", + "", + "-newWorkspacePlacement", + "end" + ], + "env": { + "CMUX_UI_TEST_SOCKET_COMMANDS": "new_workspace api server\nselect_workspace {last}\nwait 500\nlet api\nset_agent_pid claude_code {pid} --tab={api}\nset_agent_lifecycle claude_code running --tab={api}\nset_status claude_code \"Running subagents\" --icon=point.3.filled.connected.trianglepath.dotted --color=#4C8DFF --work=subagents --tab={api}\nreport_git_branch feat/fan-out --status=dirty --tab={api}\nwait 400\nnew_workspace release gate\nselect_workspace {last}\nwait 500\nlet gate\nset_agent_pid claude_code {pid} --tab={gate}\nset_agent_lifecycle claude_code running --tab={gate}\nset_status claude_code Waiting --icon=hourglass --color=#8E8E93 --work=waiting --tab={gate}\nreport_git_branch feat/release-gate --status=clean --tab={gate}\nwait 400\nnew_workspace worker\nselect_workspace {last}\nwait 500\nlet worker\nset_agent_pid codex {pid} --tab={worker}\nset_agent_lifecycle codex running --tab={worker}\nset_status codex Running --icon=bolt.fill --color=#4C8DFF --work=running --tab={worker}\nreport_git_branch feat/worker-queue --status=clean --tab={worker}\nwait 400\nnew_workspace review\nselect_workspace {last}\nwait 500\nlet review\nset_agent_pid claude_code {pid} --tab={review}\nset_agent_lifecycle claude_code needsInput --tab={review}\nset_status claude_code \"Needs input\" --icon=bell.fill --color=#4C8DFF --tab={review}\nwait 400\nnew_workspace docs\nselect_workspace {last}\nwait 500\nlet docs\nset_agent_lifecycle claude_code idle --tab={docs}\nreport_git_branch docs/configuration --tab={docs}\nreport_pr 15164 https://github.com/manaflow-ai/cmux/pull/15164 --label=PR --state=merged --tab={docs}\nwait 400\nselect_workspace {api}\nwait 600" + } + }, + "steps": [ + { + "wait": 2.5 + }, + { + "shot": "work-state-compact-sidebar" + }, + { + "tree": "work-state-compact-tree" + }, + { + "hoverAt": { + "x": 0.06, + "y": 0.18 + } + }, + { + "wait": 0.8 + }, + { + "shot": "work-state-compact-hover-subagents" + }, + { + "hoverAt": { + "x": 0.06, + "y": 0.22 + } + }, + { + "wait": 0.8 + }, + { + "shot": "work-state-compact-hover-waiting" + } + ] +} diff --git a/dogfood/scenarios/sidebar-agent-work-state-rows.json b/dogfood/scenarios/sidebar-agent-work-state-rows.json new file mode 100644 index 000000000000..9b59e610ffed --- /dev/null +++ b/dogfood/scenarios/sidebar-agent-work-state-rows.json @@ -0,0 +1,50 @@ +{ + "launch": { + "args": [ + "-sidebarCompactAgentStatus", + "", + "-sidebarShellIntegration", + "", + "-newWorkspacePlacement", + "end" + ], + "env": { + "CMUX_UI_TEST_SOCKET_COMMANDS": "new_workspace api server\nselect_workspace {last}\nwait 500\nlet api\nset_agent_pid claude_code {pid} --tab={api}\nset_agent_lifecycle claude_code running --tab={api}\nset_status claude_code \"Running subagents\" --icon=point.3.filled.connected.trianglepath.dotted --color=#4C8DFF --work=subagents --tab={api}\nreport_git_branch feat/fan-out --status=dirty --tab={api}\nwait 400\nnew_workspace release gate\nselect_workspace {last}\nwait 500\nlet gate\nset_agent_pid claude_code {pid} --tab={gate}\nset_agent_lifecycle claude_code running --tab={gate}\nset_status claude_code Waiting --icon=hourglass --color=#8E8E93 --work=waiting --tab={gate}\nreport_git_branch feat/release-gate --status=clean --tab={gate}\nwait 400\nnew_workspace worker\nselect_workspace {last}\nwait 500\nlet worker\nset_agent_pid codex {pid} --tab={worker}\nset_agent_lifecycle codex running --tab={worker}\nset_status codex Running --icon=bolt.fill --color=#4C8DFF --work=running --tab={worker}\nreport_git_branch feat/worker-queue --status=clean --tab={worker}\nwait 400\nnew_workspace review\nselect_workspace {last}\nwait 500\nlet review\nset_agent_pid claude_code {pid} --tab={review}\nset_agent_lifecycle claude_code needsInput --tab={review}\nset_status claude_code \"Needs input\" --icon=bell.fill --color=#4C8DFF --tab={review}\nwait 400\nnew_workspace docs\nselect_workspace {last}\nwait 500\nlet docs\nset_agent_lifecycle claude_code idle --tab={docs}\nreport_git_branch docs/configuration --tab={docs}\nreport_pr 15164 https://github.com/manaflow-ai/cmux/pull/15164 --label=PR --state=merged --tab={docs}\nwait 400\nselect_workspace {api}\nwait 600" + } + }, + "steps": [ + { + "wait": 2.5 + }, + { + "shot": "work-state-rows-sidebar" + }, + { + "tree": "work-state-rows-tree" + }, + { + "hoverAt": { + "x": 0.06, + "y": 0.18 + } + }, + { + "wait": 0.8 + }, + { + "shot": "work-state-rows-hover-subagents" + }, + { + "hoverAt": { + "x": 0.06, + "y": 0.22 + } + }, + { + "wait": 0.8 + }, + { + "shot": "work-state-rows-hover-waiting" + } + ] +} diff --git a/scripts/ui-lab/harnesses/sidebar-compact-status.swift b/scripts/ui-lab/harnesses/sidebar-compact-status.swift index 35d160f1f693..dd4364baec11 100644 --- a/scripts/ui-lab/harnesses/sidebar-compact-status.swift +++ b/scripts/ui-lab/harnesses/sidebar-compact-status.swift @@ -19,7 +19,9 @@ let lineCenter: CGFloat = 12.5 * 0.6 + 8 let rows: [(String, Glyph.Kind?, Bool)] = [ ("needs input", .needsInput, false), + ("running subagents", .subagents, false), ("running", .running, false), + ("waiting", .waiting, false), ("unseen", .unseen, false), ("error", .error, false), ("starting agent", .pending, false), diff --git a/web/data/cmux.schema.json b/web/data/cmux.schema.json index 55a39a4de9c5..77b4930d1c60 100644 --- a/web/data/cmux.schema.json +++ b/web/data/cmux.schema.json @@ -1484,7 +1484,9 @@ "properties": { "error": { "type": "string", "minLength": 1 }, "needsInput": { "type": "string", "minLength": 1 }, + "subagents": { "type": "string", "minLength": 1 }, "running": { "type": "string", "minLength": 1 }, + "waiting": { "type": "string", "minLength": 1 }, "starting": { "type": "string", "minLength": 1 }, "unseen": { "type": "string", "minLength": 1 }, "pullRequestOpen": { "type": "string", "minLength": 1 },