diff --git a/CLI/CMUXCLI+SessionsList.swift b/CLI/CMUXCLI+SessionsList.swift index c925f392eb11..a984174a67c9 100644 --- a/CLI/CMUXCLI+SessionsList.swift +++ b/CLI/CMUXCLI+SessionsList.swift @@ -95,10 +95,8 @@ extension CMUXCLI { guard !normalized.isEmpty else { throw CLIError(message: String(localized: "cli.sessions.error.agentRequiresValue", defaultValue: "sessions list: --agent requires a value")) } - if normalized == "claude" || normalized == "claude-code" || normalized == "claude_code" { - selectedSpecs = agentSpecs.filter { $0.name == "claude" } - } else if let def = Self.agentDef(named: normalized) { - selectedSpecs = agentSpecs.filter { $0.name == def.name } + if let canonical = Self.sessionsCanonicalAgentName(normalized) { + selectedSpecs = agentSpecs.filter { $0.name == canonical } } else { throw CLIError(message: String( format: String(localized: "cli.sessions.error.unknownAgent", defaultValue: "sessions list: unknown agent '%@'"), @@ -309,13 +307,34 @@ extension CMUXCLI { } } + /// Canonical agent name for an `--agent` value, or nil when the value names + /// no agent this build knows. + /// + /// Shared by `sessions list` and `sessions live` so the two subcommands + /// accept exactly the same spellings. `claude-code` is accepted because the + /// hook catalog calls the agent `claude` while its own docs and binary say + /// `claude-code`. + static func sessionsCanonicalAgentName(_ raw: String) -> String? { + let normalized = raw.trimmingCharacters(in: .whitespacesAndNewlines).lowercased() + guard !normalized.isEmpty else { return nil } + if normalized == "claude" || normalized == "claude-code" || normalized == "claude_code" { + return "claude" + } + return agentDef(named: normalized)?.name + } + func sessionsUsage() -> String { String(localized: "cli.sessions.usage", defaultValue: """ Usage: cmux sessions list [options] cmux sessions [options] + cmux sessions live [options] Print saved agent session records from ~/.cmuxterm/*-hook-sessions.json. This command does not require a running cmux socket. + + For what is happening right now, use `cmux sessions live` instead: it asks + the running app, so it knows each session's current state, how long it has + held it, and the conversation title. Saved records know none of those. By default, broad output shows active, restorable, or transcript-backed records. Pass --all to inspect every saved hook record. @@ -338,6 +357,19 @@ extension CMUXCLI { Compatibility aliases: cmux sessions debug [options] cmux session-debug [options] + + cmux sessions live [options] + Live agent sessions from the running app, ordered for triage: sessions + waiting on you first (longest wait first), then running (longest first), + then idle and ended (most recent first). Requires a running cmux. + + --needs-me Only sessions waiting on a human + --state Only needs-input, working, idle or ended + --agent Only one agent, for example codex or claude + --limit Limit rows shown (default: 100) + --all Print all matches + --json Print structured JSON, with total_matches and limit + alongside the rows """) } diff --git a/CLI/CMUXCLI+SessionsLive.swift b/CLI/CMUXCLI+SessionsLive.swift new file mode 100644 index 000000000000..327ce7c6b045 --- /dev/null +++ b/CLI/CMUXCLI+SessionsLive.swift @@ -0,0 +1,383 @@ +import Foundation + +extension CMUXCLI { + /// True when `cmux sessions ...` addresses the live registry in the running + /// app rather than the saved hook records on disk. + /// + /// `sessions list` / `sessions debug` are deliberately socket-free, so they + /// are dispatched before the CLI resolves a socket. `sessions live` needs + /// the socket, so the dispatcher has to tell the two apart before it + /// commits to the socket-free path. + static func sessionsCommandTargetsLiveRegistry(commandArgs: [String]) -> Bool { + commandArgs.first? + .trimmingCharacters(in: .whitespacesAndNewlines) + .lowercased() == "live" + } + + /// Everything `cmux sessions live` accepts on the command line. + struct SessionsLiveArguments: Equatable { + var state: String? + var agent: String? + var limitRaw: String? + var needsMe = false + var includeAll = false + var json = false + } + + /// Parses `sessions live` flags in a single pass. + /// + /// The shared `parseOption` takes whatever token follows a flag, so + /// `--agent --needs-me` reads `--needs-me` as the agent name: the filter + /// then matches nothing and the command answers "nothing is waiting on + /// you" to a caller who asked exactly the opposite question. A flag-shaped + /// value is rejected here instead, and a value-taking flag at the end of + /// argv says it needs a value rather than reporting itself as unknown. + /// + /// A value starting with a single dash still goes through, so + /// `--limit -5` gets the limit's own "must be a positive integer" rather + /// than a misleading complaint about a missing value. + static func parseSessionsLiveArguments(_ args: [String]) throws -> SessionsLiveArguments { + var parsed = SessionsLiveArguments() + var index = 0 + while index < args.count { + let arg = args[index] + index += 1 + switch arg { + case "--needs-me": + parsed.needsMe = true + case "--all": + parsed.includeAll = true + case "--json": + parsed.json = true + case "--state", "--agent", "--limit": + let value = try sessionsLiveTakeValue(flag: arg, args: args, index: &index) + sessionsLiveAssign(flag: arg, value: value, into: &parsed) + default: + if let (flag, value) = Self.sessionsLiveInlineValue(arg) { + guard !value.isEmpty else { + throw CLIError(message: String( + format: String( + localized: "cli.sessions.live.error.missingValue", + defaultValue: "sessions live: %@ requires a value" + ), + flag + )) + } + sessionsLiveAssign(flag: flag, value: value, into: &parsed) + continue + } + // Fail closed: a typo like `--need-me` must not read as a + // broader request than the caller typed. + if arg.hasPrefix("-") { + throw CLIError(message: String( + format: String( + localized: "cli.sessions.live.error.unknownFlag", + defaultValue: "sessions live: unknown flag '%@'" + ), + arg + )) + } + throw CLIError(message: String( + format: String( + localized: "cli.sessions.live.error.unexpectedArgument", + defaultValue: "sessions live: unexpected argument '%@'" + ), + arg + )) + } + } + return parsed + } + + private static func sessionsLiveTakeValue( + flag: String, + args: [String], + index: inout Int + ) throws -> String { + guard index < args.count else { + throw CLIError(message: String( + format: String( + localized: "cli.sessions.live.error.missingValue", + defaultValue: "sessions live: %@ requires a value" + ), + flag + )) + } + let value = args[index] + guard !value.hasPrefix("--") else { + throw CLIError(message: String( + format: String( + localized: "cli.sessions.live.error.flagAsValue", + defaultValue: "sessions live: %1$@ requires a value, but '%2$@' is another flag" + ), + flag, + value + )) + } + index += 1 + return value + } + + private static func sessionsLiveInlineValue(_ arg: String) -> (flag: String, value: String)? { + for flag in ["--state", "--agent", "--limit"] where arg.hasPrefix("\(flag)=") { + return (flag, String(arg.dropFirst(flag.count + 1))) + } + return nil + } + + private static func sessionsLiveAssign( + flag: String, + value: String, + into parsed: inout SessionsLiveArguments + ) { + switch flag { + case "--state": parsed.state = value + case "--agent": parsed.agent = value + case "--limit": parsed.limitRaw = value + default: break + } + } + + /// `cmux sessions live` — the running app's view of every agent session, in + /// attention order. + /// + /// The sibling `cmux sessions list` reads saved hook records off disk and + /// answers "which sessions exist and could be restored". This one asks the + /// app, because only the live registry knows the current state, how long + /// the session has held it, and the conversation title. That is what makes + /// it answer a different question: "which agent is waiting on me". + func runSessionsLiveCommand( + commandArgs: [String], + socketPath: String, + explicitPassword: String?, + jsonOutput: Bool + ) throws { + let parsed = try Self.parseSessionsLiveArguments(commandArgs) + let localJSONOutput = jsonOutput || parsed.json + + let stateFilter = try parsed.state.map { try Self.sessionsLiveNormalizedState($0) } + if parsed.needsMe, let stateFilter, stateFilter != "needs_input" { + throw CLIError(message: String( + format: String( + localized: "cli.sessions.live.error.conflictingState", + defaultValue: "sessions live: --needs-me conflicts with --state %@" + ), + stateFilter + )) + } + + let limit: Int + if parsed.includeAll { + limit = Int.max + } else if let limitRaw = parsed.limitRaw { + guard let value = Int(limitRaw), value > 0 else { + throw CLIError(message: String(localized: "cli.sessions.live.error.invalidLimit", defaultValue: "sessions live: --limit must be a positive integer")) + } + limit = value + } else { + limit = 100 + } + + // Same spellings as `sessions list`, from the same resolver: the two + // subcommands take the same `--agent` values or neither can be trusted. + var agentFilter: String? + if let agentRaw = parsed.agent { + guard let canonical = Self.sessionsCanonicalAgentName(agentRaw) else { + throw CLIError(message: String( + format: String( + localized: "cli.sessions.live.error.unknownAgent", + defaultValue: "sessions live: unknown agent '%@'" + ), + agentRaw + )) + } + agentFilter = canonical + } + + // `launchIfNeeded: false` on purpose. This is a read of what is + // happening right now; launching cmux to answer it would both be a + // surprise and make the answer trivially empty. + let client = try connectClient( + socketPath: socketPath, + explicitPassword: explicitPassword, + launchIfNeeded: false + ) + defer { client.close() } + + let payload = try client.sendV2(method: "agent.sessions.list") + let all = payload["sessions"] as? [[String: Any]] ?? [] + let effectiveStateFilter = parsed.needsMe ? "needs_input" : stateFilter + let matched = all.filter { session in + if let effectiveStateFilter, (session["state"] as? String) != effectiveStateFilter { + return false + } + if let agentFilter, (session["agent"] as? String)?.lowercased() != agentFilter { + return false + } + return true + } + let shown = limit == Int.max ? matched : Array(matched.prefix(limit)) + // Counted over every match, not over the rows that fit: both outputs + // report how much is going on, and a display limit does not change + // that. + let counts = Self.sessionsLiveStateCounts(matched) + + if localJSONOutput { + // `sessions` holds at most `limit` of the matched set. Truncating + // without saying so would let a script lose sessions silently, so + // the reply always carries both sizes and the limit that produced + // them, the same way `sessions list --json` does. + var out: [String: Any] = [ + "sessions": shown, + "count": shown.count, + "total_matches": matched.count, + "total_live": all.count, + "limit": limit == Int.max ? NSNull() : limit, + "state_counts": counts, + ] + if let generatedAt = payload["generated_at"] { + out["generated_at"] = generatedAt + } + print(jsonString(out)) + return + } + + printSessionsLivePayload(shown, counts: counts, totalCount: all.count) + } + + /// Accepts both the wire spelling and the hyphenated one a human will type. + private static func sessionsLiveNormalizedState(_ raw: String) throws -> String { + let normalized = raw + .trimmingCharacters(in: .whitespacesAndNewlines) + .lowercased() + .replacingOccurrences(of: "-", with: "_") + switch normalized { + case "needs_input", "needsinput": return "needs_input" + case "working": return "working" + case "idle": return "idle" + case "ended": return "ended" + default: + throw CLIError(message: String( + format: String( + localized: "cli.sessions.live.error.unknownState", + defaultValue: "sessions live: unknown state '%@'. Expected needs-input, working, idle or ended" + ), + raw + )) + } + } + + /// Compact age: the caller is scanning a column, so one unit is enough. + /// + /// Clamped because the number arrives over a socket. A nonsense + /// `state_age_seconds` should print a nonsense age, not trap on an `Int` + /// conversion that cannot represent it. + static func sessionsLiveAgeText(_ seconds: Double) -> String { + guard seconds.isFinite else { return "-" } + let total = Int(seconds.rounded().clamped(to: 0...9_999_999_999)) + if total < 60 { return "\(total)s" } + if total < 3_600 { return "\(total / 60)m" } + if total < 86_400 { return "\(total / 3_600)h" } + return "\(total / 86_400)d" + } + + /// State tally for a set of live sessions, keyed by wire state name plus + /// `total`. + /// + /// One tally feeds both the text header and the JSON reply, so the two can + /// never disagree about what was counted. + static func sessionsLiveStateCounts(_ sessions: [[String: Any]]) -> [String: Int] { + var counts: [String: Int] = ["needs_input": 0, "working": 0, "idle": 0, "ended": 0] + for session in sessions { + if let state = session["state"] as? String, counts[state] != nil { + counts[state, default: 0] += 1 + } + } + // `total` covers every match, including any state name this CLI does + // not know, so the buckets can sum to less than it. + counts["total"] = sessions.count + return counts + } + + private func printSessionsLivePayload( + _ sessions: [[String: Any]], + counts: [String: Int], + totalCount: Int + ) { + guard !sessions.isEmpty else { + print(totalCount == 0 + ? String(localized: "cli.sessions.live.empty", defaultValue: "No live agent sessions.") + : String(localized: "cli.sessions.live.emptyAfterFilter", defaultValue: "No live agent sessions matched.")) + return + } + + print(sessionsLiveHeaderText(counts)) + // The state column is padded to the widest value present rather than to + // a constant, so a list with no needs-input rows is not indented by a + // word that never appears in it. + let stateWidth = sessions + .compactMap { ($0["state"] as? String)?.count } + .max() ?? 0 + for session in sessions { + let state = (session["state"] as? String) ?? "unknown" + let padded = state.padding(toLength: max(stateWidth, state.count), withPad: " ", startingAt: 0) + let age = (session["state_age_seconds"] as? Double).map(Self.sessionsLiveAgeText) ?? "-" + let agent = (session["agent"] as? String) ?? "unknown" + let sessionID = (session["session_id"] as? String) ?? "unknown" + var line = "\(padded) \(age.padding(toLength: max(4, age.count), withPad: " ", startingAt: 0)) \(agent) \(sessionID)" + if let title = session["title"] as? String, !title.isEmpty { + line += " \(title)" + } + print(line) + + var details: [String] = [] + if let cwd = session["cwd"] as? String, !cwd.isEmpty { details.append("cwd=\(cwd)") } + if let surfaceID = session["surface_id"] as? String, !surfaceID.isEmpty { + details.append("surface=\(surfaceID)") + } + if let workspaceID = session["workspace_id"] as? String, !workspaceID.isEmpty { + details.append("workspace=\(workspaceID)") + } + if let children = intFromAny(session["children_running"]), children > 0 { + details.append("subagents=\(children)") + } + // Only worth saying when it is false, and only for a settled state: + // a session found in the process table is reported idle without a + // hook ever confirming it. + if (session["state_confirmed"] as? Bool) == false { + details.append("state=unconfirmed") + } + if !details.isEmpty { + print(" " + details.joined(separator: " ")) + } + } + // Same footer and same wording as `sessions list`: a truncated list + // must never look like the whole list. + let matchedCount = counts["total"] ?? sessions.count + if matchedCount > sessions.count { + print(String( + format: String(localized: "cli.sessions.output.more", defaultValue: "... %lld more. Pass --all or --limit ."), + matchedCount - sessions.count + )) + } + } + + /// Builds the summary line from the matched tally. + /// + /// Emitted as `key=value` tokens rather than a sentence, on purpose: every + /// other token in this output is already an invariant wire value (the state + /// names in the first column, `cwd=`, `surface=`, `subagents=`, + /// `state=unconfirmed`, and the sibling's `state_dir=`), so a translated + /// sentence would be the one piece of prose sitting on top of untranslated + /// data. The state names here are the same ones the rows below print and the + /// same ones `--state` accepts, which also makes the line greppable. + private func sessionsLiveHeaderText(_ counts: [String: Int]) -> String { + "sessions=\(counts["total"] ?? 0) needs_input=\(counts["needs_input"] ?? 0) working=\(counts["working"] ?? 0)" + } +} + +private extension Double { + func clamped(to range: ClosedRange) -> Double { + min(max(self, range.lowerBound), range.upperBound) + } +} diff --git a/CLI/CMUXCLI+TaskHelp.swift b/CLI/CMUXCLI+TaskHelp.swift index 47a4f2d9cb32..18c0283c2fec 100644 --- a/CLI/CMUXCLI+TaskHelp.swift +++ b/CLI/CMUXCLI+TaskHelp.swift @@ -190,7 +190,7 @@ extension CMUXCLI { \(forkCommandUsageLine) restore-session [--from | --export [--force]] session restore [--list] [--session ]... - \(String(localized: "cli.sessions.command", defaultValue: "sessions [list] [options]")) + \(String(localized: "cli.sessions.command", defaultValue: "sessions [list|live] [options]")) open ... [--workspace ] [--surface ] [--pane ] [--window ] [--focus ] [--no-focus] new-workspace [--name ] [--description <text>] [--cwd <path>] [--command <text>] [--layout <json>] [--window <id|ref|index>] [--focus <true|false>] [--group <id|ref>] [--group-placement afterCurrent|top|end] [--group-reference <workspace>] local-tmux <start|attach|list|status|detach|close|cleanup> [session] [options] diff --git a/CLI/cmux.swift b/CLI/cmux.swift index 4b87b3991db6..d8e0828cb815 100644 --- a/CLI/cmux.swift +++ b/CLI/cmux.swift @@ -5031,7 +5031,13 @@ struct CMUXCLI { if command == "vm-pty-connect" { try runVMPtyConnect(commandArgs: commandArgs); return } if command == "docs" { try runDocsCommand(commandArgs: commandArgs, jsonOutput: jsonOutput); return } if command == "welcome" { printWelcome(); return } - if command == "sessions" || command == "session-debug" { try runSessionsCommand(commandArgs: command == "session-debug" ? ["debug"] + commandArgs : commandArgs, jsonOutput: jsonOutput, processEnv: processEnv); return } + // `sessions live` reads the running app over the socket, so it is handled + // below once the socket path is resolved; every other `sessions` form is + // socket-free and answers here. + if command == "session-debug" + || (command == "sessions" && !Self.sessionsCommandTargetsLiveRegistry(commandArgs: commandArgs)) { + try runSessionsCommand(commandArgs: command == "session-debug" ? ["debug"] + commandArgs : commandArgs, jsonOutput: jsonOutput, processEnv: processEnv); return + } if command == "glaeda" { try runGlaedaCommand(commandArgs: commandArgs); return } if command == "__sigpipe-probe" { try runSIGPIPEProbe(commandArgs: commandArgs); return } if command == "__sigpipe-stdin-pipe-probe" { try runSIGPIPEStdinPipeProbe(); return } @@ -5177,6 +5183,16 @@ struct CMUXCLI { ) return } + + if command == "sessions", Self.sessionsCommandTargetsLiveRegistry(commandArgs: commandArgs) { + try runSessionsLiveCommand( + commandArgs: Array(commandArgs.dropFirst()), + socketPath: resolvedSocketPath, + explicitPassword: socketPasswordArg, + jsonOutput: jsonOutput + ) + return + } if command == "open" { try runOpenCommand(commandArgs: commandArgs, socketPath: resolvedSocketPath, explicitPassword: socketPasswordArg, jsonOutput: jsonOutput, idFormat: try resolvedIDFormat(jsonOutput: jsonOutput, raw: idFormatArg)); return } if command == "diff" { try runDiffCommand(commandArgs: commandArgs, socketPath: resolvedSocketPath, explicitPassword: socketPasswordArg, jsonOutput: jsonOutput, idFormat: try resolvedIDFormat(jsonOutput: jsonOutput, raw: idFormatArg)); return } if command == "session" { diff --git a/Packages/macOS/CmuxMobileHost/Package.swift b/Packages/macOS/CmuxMobileHost/Package.swift index 8f6528961e2f..274857abab78 100644 --- a/Packages/macOS/CmuxMobileHost/Package.swift +++ b/Packages/macOS/CmuxMobileHost/Package.swift @@ -34,7 +34,10 @@ let package = Package( ), .testTarget( name: "CmuxMobileHostTests", - dependencies: ["CmuxMobileHost"], + dependencies: [ + "CmuxMobileHost", + .product(name: "CmuxAgentChat", package: "CmuxAgentChat"), + ], swiftSettings: [ .swiftLanguageMode(.v6), ] diff --git a/Packages/macOS/CmuxMobileHost/Sources/CmuxMobileHost/AgentChat/AgentSessionAttention.swift b/Packages/macOS/CmuxMobileHost/Sources/CmuxMobileHost/AgentChat/AgentSessionAttention.swift new file mode 100644 index 000000000000..c364dbe853f0 --- /dev/null +++ b/Packages/macOS/CmuxMobileHost/Sources/CmuxMobileHost/AgentChat/AgentSessionAttention.swift @@ -0,0 +1,179 @@ +public import CmuxAgentChat +public import Foundation + +/// Attention ordering for agent sessions: one place that decides which session +/// a human should look at first. +/// +/// Two other surfaces rank sessions with their own inline comparators: the +/// mobile chat list and the JS custom-sidebar agents panel +/// (`Examples/CustomSidebars/panel-subagents.js`). They agree on the buckets +/// and disagree on the tie-breaks, so a session can sit third in one and first +/// in the other. The ordering here is written to be the one implementation all +/// three use, and `agent.sessions.list` is the first caller; moving the two +/// existing surfaces onto it changes what a user sees, so it belongs in a +/// change that can carry dogfood evidence rather than here. +/// +/// The behavior hangs off the types it describes (`ChatAgentState`, +/// `AgentChatSessionRecord` and collections of them) rather than a static +/// namespace, and nothing here touches AppKit, the registry or the clock: the +/// age entry point takes an injected `now`, so the package test target covers +/// the ordering without an app build. + +/// The sort bucket a session falls in, loudest first. +/// +/// Raw values are the sort keys, so `Rank` ordering *is* bucket ordering. +public enum AgentSessionAttentionRank: Int, Sendable, Comparable, CaseIterable { + /// The agent asked a question and is parked waiting for an answer. + case needsInput = 0 + /// The agent is running. + case working = 1 + /// The agent is alive with nothing in flight. + case idle = 2 + /// The session is over. + case ended = 3 + + public static func < (lhs: Self, rhs: Self) -> Bool { lhs.rawValue < rhs.rawValue } + + /// The snake_case name this rank serializes to, matching ``ChatAgentState``'s + /// own wire vocabulary so clients can compare a session's `state` and + /// `attention` fields without a mapping table. + public var wireName: String { + switch self { + case .needsInput: return "needs_input" + case .working: return "working" + case .idle: return "idle" + case .ended: return "ended" + } + } +} + +/// Per-bucket totals, for a header or footer summary. +public struct AgentSessionAttentionCounts: Sendable, Equatable { + public var needsInput: Int + public var working: Int + public var idle: Int + public var ended: Int + + public init(needsInput: Int = 0, working: Int = 0, idle: Int = 0, ended: Int = 0) { + self.needsInput = needsInput + self.working = working + self.idle = idle + self.ended = ended + } + + public var total: Int { needsInput + working + idle + ended } + + public subscript(rank: AgentSessionAttentionRank) -> Int { + get { + switch rank { + case .needsInput: return needsInput + case .working: return working + case .idle: return idle + case .ended: return ended + } + } + set { + switch rank { + case .needsInput: needsInput = newValue + case .working: working = newValue + case .idle: idle = newValue + case .ended: ended = newValue + } + } + } +} + +extension ChatAgentState { + /// The bucket this state belongs to. + public var attentionRank: AgentSessionAttentionRank { + switch self { + case .needsInput: return .needsInput + case .working: return .working + case .idle: return .idle + case .ended: return .ended + } + } + + /// When the current state began, for the two states that carry a start + /// timestamp. + /// + /// `idle` and `ended` have none: the registry records them without a + /// transition time, and `lastActivityAt` is the only thing known about when + /// they started. + public var attentionStateSince: Date? { + switch self { + case .working(let since), .needsInput(let since): return since + case .idle, .ended: return nil + } + } + + /// How long this state has been held, or `nil` for a state with no start + /// timestamp. + /// + /// Clamped at zero so a record stamped slightly ahead of the caller's clock + /// reports "just now" rather than a negative age. Hook timestamps come from + /// the agent process, not from this process. + public func attentionStateAgeSeconds(now: Date) -> Double? { + guard let since = attentionStateSince else { return nil } + return max(0, now.timeIntervalSince(since)) + } +} + +extension AgentChatSessionRecord { + /// Whether this session should be triaged before `other`. + /// + /// Buckets come first (see ``AgentSessionAttentionRank``). Within a bucket + /// the tie-break flips, because "most interesting" means opposite things for + /// live and settled work: + /// + /// - `needsInput` and `working` sort **oldest first**. The session blocked + /// longest is the one costing the most wall clock, and the one running + /// longest is the likeliest to be stuck. Both are what you want at the top + /// of the list. + /// - `idle` and `ended` sort **newest activity first**. Nothing is waiting on + /// you, so the useful order is recency: what you just touched is what you + /// are still thinking about. + /// + /// Ties break on `sessionID` ascending. That last step is not cosmetic: it + /// makes the order total, so tests are not sensitive to the registry's + /// dictionary iteration order and a UI bound to the list does not reshuffle + /// equal rows underneath the user. + func precedesInAttentionOrder(_ other: AgentChatSessionRecord) -> Bool { + let rank = state.attentionRank + let otherRank = other.state.attentionRank + if rank != otherRank { return rank < otherRank } + + switch rank { + case .needsInput, .working: + // `attentionStateSince` is non-nil for both of these; the fallback + // keeps the comparator total if the state ever gains a case without + // one. + let since = state.attentionStateSince ?? lastActivityAt + let otherSince = other.state.attentionStateSince ?? other.lastActivityAt + if since != otherSince { return since < otherSince } + case .idle, .ended: + if lastActivityAt != other.lastActivityAt { + return lastActivityAt > other.lastActivityAt + } + } + return sessionID < other.sessionID + } +} + +extension Collection<AgentChatSessionRecord> { + /// These sessions in the order a human should triage them in. + /// + /// See ``AgentChatSessionRecord/precedesInAttentionOrder(_:)`` for the rules. + public func orderedByAttention() -> [AgentChatSessionRecord] { + sorted { $0.precedesInAttentionOrder($1) } + } + + /// Per-bucket totals. Order-independent. + public func attentionCounts() -> AgentSessionAttentionCounts { + var counts = AgentSessionAttentionCounts() + for record in self { + counts[record.state.attentionRank] += 1 + } + return counts + } +} diff --git a/Packages/macOS/CmuxMobileHost/Sources/CmuxMobileHost/AgentChat/AgentSessionListPayload.swift b/Packages/macOS/CmuxMobileHost/Sources/CmuxMobileHost/AgentChat/AgentSessionListPayload.swift new file mode 100644 index 000000000000..068d0e816596 --- /dev/null +++ b/Packages/macOS/CmuxMobileHost/Sources/CmuxMobileHost/AgentChat/AgentSessionListPayload.swift @@ -0,0 +1,92 @@ +public import Foundation + +/// Wire mapping for a live agent-session listing, free of AppKit and +/// controller state. +/// +/// An instance owns the timestamp formatter, so building one per reply is what +/// keeps a response from allocating a formatter per session (the same reason +/// `DiffCommentPayload` is shaped this way). +/// +/// Keys are snake_case and timestamps are ISO 8601 strings, matching the rest +/// of the v2 socket surface. Optional record fields are omitted rather than +/// emitted as null, so a client can test for presence. +public struct AgentSessionListPayload { + private let formatter: ISO8601DateFormatter + + /// Creates a mapper. Pass a formatter to share one across several replies + /// or to pin a configuration in tests. + public init(formatter: ISO8601DateFormatter = ISO8601DateFormatter()) { + self.formatter = formatter + } + + /// Serializes one session. + /// + /// - Parameters: + /// - record: The registry record to map. + /// - now: Clock reading used for `state_age_seconds`, injected so a reply + /// stamps every session from one instant and tests are deterministic. + public func json(_ record: AgentChatSessionRecord, now: Date) -> [String: Any] { + let rank = record.state.attentionRank + var json: [String: Any] = [ + "session_id": record.sessionID, + "agent": record.agentKind.sourceName, + "agent_name": record.agentKind.displayName, + "state": rank.wireName, + // Process-table discovery proves a session exists but not that it + // is idle, so the registry marks such records unconfirmed. A client + // that wants to say "idle" out loud should check this first; one + // that only sorts can ignore it. + "state_confirmed": record.hasHookLifecycleState, + "attention_rank": rank.rawValue, + "needs_attention": record.state.needsAttention, + "last_activity_at": formatter.string(from: record.lastActivityAt), + "children_running": record.children.reduce(into: 0) { total, child in + if child.isRunning { total += 1 } + }, + "version": record.version, + ] + if let since = record.state.attentionStateSince { + json["state_since"] = formatter.string(from: since) + json["state_age_seconds"] = record.state.attentionStateAgeSeconds(now: now) + } + if let title = record.title, !title.isEmpty { json["title"] = title } + if let cwd = record.workingDirectory, !cwd.isEmpty { json["cwd"] = cwd } + if let workspaceID = record.workspaceID, !workspaceID.isEmpty { + json["workspace_id"] = workspaceID + } + if let surfaceID = record.surfaceID, !surfaceID.isEmpty { + json["surface_id"] = surfaceID + } + if let transcriptPath = record.transcriptPath, !transcriptPath.isEmpty { + json["transcript_path"] = transcriptPath + } + if let pid = record.pid { json["pid"] = pid } + if let endedAt = record.endedAt { json["ended_at"] = formatter.string(from: endedAt) } + return json + } + + /// Builds the `agent.sessions.list` reply. + /// + /// Records are ordered by ``Swift/Collection/orderedByAttention()`` here + /// rather than by the caller, so every client of this verb gets triage order + /// without re-implementing it. `state_counts` covers the records in this + /// reply, so a caller that scoped the request to one workspace gets that + /// workspace's totals. + public func list(records: [AgentChatSessionRecord], now: Date) -> [String: Any] { + let ordered = records.orderedByAttention() + let counts = ordered.attentionCounts() + // Built from the ranks themselves so the wire names here cannot drift + // from ``AgentSessionAttentionRank/wireName``, which is what `state` + // reports on each session and what the CLI's `--state` accepts. + var stateCounts: [String: Int] = ["total": counts.total] + for rank in AgentSessionAttentionRank.allCases { + stateCounts[rank.wireName] = counts[rank] + } + return [ + "sessions": ordered.map { json($0, now: now) }, + "count": ordered.count, + "state_counts": stateCounts, + "generated_at": formatter.string(from: now), + ] + } +} diff --git a/Packages/macOS/CmuxMobileHost/Tests/CmuxMobileHostTests/AgentSessionAttentionTests.swift b/Packages/macOS/CmuxMobileHost/Tests/CmuxMobileHostTests/AgentSessionAttentionTests.swift new file mode 100644 index 000000000000..337fd9bc7330 --- /dev/null +++ b/Packages/macOS/CmuxMobileHost/Tests/CmuxMobileHostTests/AgentSessionAttentionTests.swift @@ -0,0 +1,338 @@ +import CmuxAgentChat +import Foundation +import Testing +@testable import CmuxMobileHost + +@Suite("Agent session attention ordering") +struct AgentSessionAttentionTests { + /// Fixed reference instant. Ordering is compared against explicit offsets + /// from here so no assertion depends on the wall clock. + private static let origin = Date(timeIntervalSince1970: 1_700_000_000) + + private func at(_ offset: TimeInterval) -> Date { Self.origin.addingTimeInterval(offset) } + + private func record( + _ sessionID: String, + state: ChatAgentState, + lastActivity: TimeInterval, + kind: ChatAgentKind = .claude, + title: String? = nil, + children: [AgentChatChildRun] = [], + hasHookLifecycleState: Bool = true + ) -> AgentChatSessionRecord { + AgentChatSessionRecord( + sessionID: sessionID, + agentKind: kind, + state: state, + hasHookLifecycleState: hasHookLifecycleState, + lastActivityAt: at(lastActivity), + children: children, + title: title + ) + } + + private func ids(_ records: [AgentChatSessionRecord]) -> [String] { + records.map(\.sessionID) + } + + // MARK: - Buckets + + @Test("Buckets rank needs-input over working over idle over ended") + func bucketOrder() { + let records = [ + record("ended", state: .ended, lastActivity: 400), + record("idle", state: .idle, lastActivity: 300), + record("working", state: .working(since: at(200)), lastActivity: 200), + record("needs", state: .needsInput(since: at(100)), lastActivity: 100), + ] + #expect(ids(records.orderedByAttention()) == ["needs", "working", "idle", "ended"]) + } + + @Test("Bucket wins over recency") + func bucketBeatsRecency() { + // The idle session is the most recently active by a wide margin and + // still sorts below a session that has been blocked since the epoch. + let records = [ + record("fresh-idle", state: .idle, lastActivity: 9_000), + record("stale-needs", state: .needsInput(since: at(1)), lastActivity: 1), + ] + #expect(ids(records.orderedByAttention()) == ["stale-needs", "fresh-idle"]) + } + + @Test("Rank wire names match the agent state vocabulary") + func rankWireNames() { + #expect(ChatAgentState.needsInput(since: at(0)).attentionRank.wireName == "needs_input") + #expect(ChatAgentState.working(since: at(0)).attentionRank.wireName == "working") + #expect(ChatAgentState.idle.attentionRank.wireName == "idle") + #expect(ChatAgentState.ended.attentionRank.wireName == "ended") + } + + // MARK: - Within-bucket tie-breaks + + @Test("Needs-input sorts longest-blocked first") + func needsInputOldestFirst() { + let records = [ + record("recent", state: .needsInput(since: at(500)), lastActivity: 500), + record("oldest", state: .needsInput(since: at(10)), lastActivity: 900), + record("middle", state: .needsInput(since: at(200)), lastActivity: 200), + ] + // Note `oldest` also has the newest lastActivityAt: within this bucket + // the question's age decides, not activity. + #expect(ids(records.orderedByAttention()) == ["oldest", "middle", "recent"]) + } + + @Test("Working sorts longest-running first") + func workingOldestFirst() { + let records = [ + record("just-started", state: .working(since: at(800)), lastActivity: 800), + record("grinding", state: .working(since: at(20)), lastActivity: 850), + ] + #expect(ids(records.orderedByAttention()) == ["grinding", "just-started"]) + } + + @Test("Idle sorts most-recently-active first") + func idleNewestFirst() { + let records = [ + record("cold", state: .idle, lastActivity: 100), + record("warm", state: .idle, lastActivity: 700), + record("lukewarm", state: .idle, lastActivity: 400), + ] + #expect(ids(records.orderedByAttention()) == ["warm", "lukewarm", "cold"]) + } + + @Test("Ended sorts most-recently-active first") + func endedNewestFirst() { + let records = [ + record("old-finish", state: .ended, lastActivity: 100), + record("new-finish", state: .ended, lastActivity: 600), + ] + #expect(ids(records.orderedByAttention()) == ["new-finish", "old-finish"]) + } + + // MARK: - Totality and stability + + @Test("Equal timestamps break on session id") + func sessionIDTieBreak() { + let records = [ + record("c", state: .needsInput(since: at(50)), lastActivity: 50), + record("a", state: .needsInput(since: at(50)), lastActivity: 50), + record("b", state: .needsInput(since: at(50)), lastActivity: 50), + ] + #expect(ids(records.orderedByAttention()) == ["a", "b", "c"]) + } + + @Test("Order does not depend on input order") + func orderIsIndependentOfInputOrder() { + // The registry hands out records from a dictionary, so input order is + // not stable across calls. Every permutation must land identically. + let records = [ + record("needs-old", state: .needsInput(since: at(10)), lastActivity: 10), + record("needs-new", state: .needsInput(since: at(20)), lastActivity: 20), + record("working", state: .working(since: at(5)), lastActivity: 30), + record("idle-a", state: .idle, lastActivity: 60), + record("idle-b", state: .idle, lastActivity: 60), + record("ended", state: .ended, lastActivity: 70), + ] + let expected = ids(records.orderedByAttention()) + #expect(expected == ["needs-old", "needs-new", "working", "idle-a", "idle-b", "ended"]) + for _ in 0..<32 { + #expect(ids(records.shuffled().orderedByAttention()) == expected) + } + } + + @Test("Empty input is empty output") + func emptyInput() { + let empty: [AgentChatSessionRecord] = [] + #expect(empty.orderedByAttention().isEmpty) + #expect(empty.attentionCounts() == AgentSessionAttentionCounts()) + #expect(empty.attentionCounts().total == 0) + } + + // MARK: - State age + + @Test("State age is measured from the state's start") + func stateAge() { + let age = ChatAgentState.working(since: at(100)).attentionStateAgeSeconds(now: at(175)) + #expect(age == 75) + } + + @Test("A state stamped in the future reports zero age, not a negative one") + func stateAgeClampsToZero() { + // Hook timestamps come from the agent process, whose clock can read + // slightly ahead of ours. + let age = ChatAgentState.needsInput(since: at(200)).attentionStateAgeSeconds(now: at(190)) + #expect(age == 0) + } + + @Test("Idle and ended have no state age") + func settledStatesHaveNoAge() { + #expect(ChatAgentState.idle.attentionStateAgeSeconds(now: at(0)) == nil) + #expect(ChatAgentState.ended.attentionStateAgeSeconds(now: at(0)) == nil) + #expect(ChatAgentState.idle.attentionStateSince == nil) + #expect(ChatAgentState.ended.attentionStateSince == nil) + } + + // MARK: - Counts and the needs-me filter + + @Test("Counts tally each bucket") + func countsTally() { + let records = [ + record("n1", state: .needsInput(since: at(1)), lastActivity: 1), + record("n2", state: .needsInput(since: at(2)), lastActivity: 2), + record("w1", state: .working(since: at(3)), lastActivity: 3), + record("i1", state: .idle, lastActivity: 4), + record("i2", state: .idle, lastActivity: 5), + record("i3", state: .idle, lastActivity: 6), + record("e1", state: .ended, lastActivity: 7), + ] + let counts = records.attentionCounts() + #expect(counts.needsInput == 2) + #expect(counts.working == 1) + #expect(counts.idle == 3) + #expect(counts.ended == 1) + #expect(counts.total == 7) + #expect(counts.total == records.count) + } + + + // MARK: - Wire payload + + @Test("Payload orders sessions and reports bucket counts") + func payloadOrdersAndCounts() { + let payload = AgentSessionListPayload().list( + records: [ + record("idle", state: .idle, lastActivity: 500), + record("needs", state: .needsInput(since: at(100)), lastActivity: 100), + ], + now: at(600) + ) + let sessions = payload["sessions"] as? [[String: Any]] + #expect(sessions?.compactMap { $0["session_id"] as? String } == ["needs", "idle"]) + #expect(payload["count"] as? Int == 2) + let counts = payload["state_counts"] as? [String: Int] + #expect(counts?["needs_input"] == 1) + #expect(counts?["idle"] == 1) + #expect(counts?["total"] == 2) + #expect(payload["generated_at"] as? String != nil) + } + + @Test("state_counts is keyed by the same names a session's state reports") + func payloadStateCountKeysMatchWireNames() { + let payload = AgentSessionListPayload().list( + records: [ + record("a", state: .needsInput(since: at(10)), lastActivity: 10), + record("b", state: .working(since: at(20)), lastActivity: 20), + record("c", state: .idle, lastActivity: 30), + record("d", state: .ended, lastActivity: 40), + ], + now: at(600) + ) + let counts = payload["state_counts"] as? [String: Int] + // Every bucket is present under its wire name, and nothing else is: a + // client can read `state_counts[session["state"]]` without a mapping + // table, and a renamed rank cannot quietly drop a key here. + let expected = AgentSessionAttentionRank.allCases.map(\.wireName) + ["total"] + #expect(counts?.keys.sorted() == expected.sorted()) + for rank in AgentSessionAttentionRank.allCases { + #expect(counts?[rank.wireName] == 1) + } + #expect(counts?["total"] == 4) + } + + @Test("Payload carries state age and attention for a timed state") + func payloadTimedState() { + let json = AgentSessionListPayload().json( + record("s", state: .needsInput(since: at(100)), lastActivity: 120, title: "Fix the parser"), + now: at(160) + ) + #expect(json["state"] as? String == "needs_input") + #expect(json["attention_rank"] as? Int == 0) + #expect(json["needs_attention"] as? Bool == true) + #expect(json["state_age_seconds"] as? Double == 60) + #expect(json["state_since"] as? String != nil) + #expect(json["title"] as? String == "Fix the parser") + #expect(json["agent"] as? String == "claude") + #expect(json["agent_name"] as? String == "Claude") + } + + @Test("Payload omits state age for a settled state") + func payloadSettledState() { + let json = AgentSessionListPayload().json(record("s", state: .idle, lastActivity: 10), now: at(99)) + #expect(json["state"] as? String == "idle") + #expect(json["state_since"] == nil) + #expect(json["state_age_seconds"] == nil) + #expect(json["needs_attention"] as? Bool == false) + } + + @Test("A long-running working session sorts high but does not need a human") + func payloadLongWorkingSessionIsNotWaiting() { + // It has been running for hours and sits in the second bucket, above + // everything idle. That must not make a "needs me" filter claim it: the + // agent is busy, not blocked. + let json = AgentSessionListPayload().json( + record("grinding", state: .working(since: at(0)), lastActivity: 9_000), + now: at(9_600) + ) + #expect(json["state"] as? String == "working") + #expect(json["attention_rank"] as? Int == 1) + #expect(json["needs_attention"] as? Bool == false) + #expect(json["state_age_seconds"] as? Double == 9_600) + } + + @Test("Payload omits absent optional fields rather than emitting null") + func payloadOmitsMissingFields() { + let json = AgentSessionListPayload().json(record("bare", state: .idle, lastActivity: 0), now: at(0)) + for key in ["title", "cwd", "workspace_id", "surface_id", "transcript_path", "pid", "ended_at"] { + #expect(json[key] == nil, "expected \(key) to be omitted") + } + // Everything omitted above is optional on the record; these are not. + #expect(json["session_id"] as? String == "bare") + #expect(json["last_activity_at"] as? String != nil) + } + + @Test("Payload counts only running children") + func payloadChildrenRunning() { + let children = [ + AgentChatChildRun(id: "settled", startedAt: at(1), endedAt: at(2)), + AgentChatChildRun(id: "live-1", startedAt: at(3)), + AgentChatChildRun(id: "live-2", startedAt: at(4)), + ] + let json = AgentSessionListPayload().json( + record("parent", state: .working(since: at(1)), lastActivity: 5, children: children), + now: at(6) + ) + #expect(json["children_running"] as? Int == 2) + } + + @Test("Payload reports whether the state was confirmed by a hook") + func payloadStateConfirmed() { + // A process-table discovery is idle-by-default and unconfirmed; only a + // hook lifecycle event proves idleness. + let discovered = AgentSessionListPayload().json( + record("discovered", state: .idle, lastActivity: 0, hasHookLifecycleState: false), + now: at(1) + ) + #expect(discovered["state_confirmed"] as? Bool == false) + let hooked = AgentSessionListPayload().json( + record("hooked", state: .idle, lastActivity: 0, hasHookLifecycleState: true), + now: at(1) + ) + #expect(hooked["state_confirmed"] as? Bool == true) + } + + @Test("Payload is JSON-serializable") + func payloadSerializes() { + // The socket encodes the reply with JSONSerialization, which throws on + // any non-JSON value, so prove the mapping never produces one. + let payload = AgentSessionListPayload().list( + records: [ + record("a", state: .needsInput(since: at(1)), lastActivity: 2, title: "t"), + record("b", state: .working(since: at(3)), lastActivity: 4, kind: .other("opencode")), + record("c", state: .ended, lastActivity: 5), + ], + now: at(10) + ) + #expect(JSONSerialization.isValidJSONObject(payload)) + #expect(throws: Never.self) { try JSONSerialization.data(withJSONObject: payload) } + } +} diff --git a/Resources/Localizable.xcstrings b/Resources/Localizable.xcstrings index 34617d5a3a06..1c6a1af05628 100644 --- a/Resources/Localizable.xcstrings +++ b/Resources/Localizable.xcstrings @@ -1,474 +1,710 @@ { "sourceLanguage": "en", "strings": { - "browser.omnibar.accessibilityLabel": { + "cli.session.help": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Address and search bar" + "value": "Usage: cmux session restore [--list] [--session <id>]...\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 <id> Restore only this session (repeatable)." } }, "de": { "stringUnit": { "state": "translated", - "value": "Adress- und Suchleiste" + "value": "Verwendung: cmux session restore [--list] [--session <id>]...\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 <id> Nur diese Sitzung wiederherstellen (wiederholbar)." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Barre d’adresse et de recherche" + "value": "Utilisation : cmux session restore [--list] [--session <id>]...\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 <id> Restaurer uniquement cette session (répétable)." } }, "ar": { "stringUnit": { "state": "translated", - "value": "شريط العنوان والبحث" + "value": "الاستخدام: cmux session restore [--list] [--session <id>]...\n\nيعيد فتح جلسات Claude التي كانت قيد التشغيل عندما أُغلق cmux بشكل غير متوقع آخر مرة.\nيعثر cmux عليها في سجل الوكيل، ويتخطى ما يعمل منها أو المفتوح بالفعل،\nويستأنف كل جلسة في مساحة عمل خاصة بها\nعبر المشغّل الذي بدأها.\n\nبدون --session، لا تعمل الاستعادة إلا بعد إغلاق غير متوقع.\n\nالخيارات:\n --list عرض الجلسات دون استعادتها.\n --session <id> استعادة هذه الجلسة فقط (قابل للتكرار)." } }, "es": { "stringUnit": { "state": "translated", - "value": "Barra de direcciones y búsqueda" + "value": "Uso: cmux session restore [--list] [--session <id>]...\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 <id> Restaurar solo esta sesión (repetible)." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "網址與搜尋列" + "value": "用法: cmux session restore [--list] [--session <id>]...\n\n重新開啟 cmux 上次意外結束時仍在執行的 Claude 工作階段。\ncmux 會從代理日誌中找出它們,略過仍在執行或已開啟的工作階段,\n並透過原本啟動它的啟動器\n在各自的工作區中繼續。\n\n未指定 --session 時,restore 只會在意外結束後執行。\n\n選項:\n --list 只列出工作階段,不還原。\n --session <id> 只還原此工作階段(可重複)。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "地址和搜索栏" + "value": "用法: cmux session restore [--list] [--session <id>]...\n\n重新打开 cmux 上次意外退出时仍在运行的 Claude 会话。\ncmux 会从代理日志中找到它们,跳过仍在运行或已打开的会话,\n并通过最初启动它的启动器\n在各自的工作区中继续。\n\n未指定 --session 时,restore 只会在意外退出后执行。\n\n选项:\n --list 只列出会话,不恢复。\n --session <id> 只恢复此会话(可重复)。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "주소 및 검색 막대" + "value": "사용법: cmux session restore [--list] [--session <id>]...\n\ncmux가 마지막으로 예기치 않게 종료될 때 실행 중이던 Claude 세션을 다시 엽니다.\ncmux는 에이전트 저널에서 세션을 찾고, 실행 중이거나 이미 열려 있는 세션은 건너뛰며,\n각 세션을 시작한 런처를 통해\n자체 워크스페이스에서 이어갑니다.\n\n--session이 없으면 restore는 예기치 않은 종료 후에만 동작합니다.\n\n옵션:\n --list 복원하지 않고 세션만 표시합니다.\n --session <id> 이 세션만 복원합니다(반복 가능)." } }, "ja": { "stringUnit": { "state": "translated", - "value": "アドレスと検索バー" + "value": "使用法: cmux session restore [--list] [--session <id>]...\n\ncmux が前回予期せず終了したときに実行中だった Claude セッションを再び開きます。\ncmux はエージェントジャーナルからセッションを見つけ、実行中または既に開いている\nものはスキップし、それぞれを起動したランチャー経由で\n専用のワークスペースで再開します。\n\n--session を指定しない場合、restore は予期しない終了の後にのみ動作します。\n\nオプション:\n --list 復元せずにセッションを表示します。\n --session <id> このセッションのみ復元します(複数指定可)。" } } } }, - "projectPanel.reload": { + "cli.session.error.expectedRestore": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Reload Project" + "value": "session: expected 'restore' (see cmux help session)" } }, "de": { "stringUnit": { "state": "translated", - "value": "Projekt neu laden" + "value": "session: 'restore' erwartet (siehe cmux help session)" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Recharger le projet" + "value": "session : « restore » attendu (voir cmux help session)" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إعادة تحميل المشروع" + "value": "session: كان المتوقع 'restore' (راجع cmux help session)" } }, "es": { "stringUnit": { "state": "translated", - "value": "Recargar proyecto" + "value": "session: se esperaba 'restore' (consulta cmux help session)" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "重新載入專案" + "value": "session:應為 'restore'(請參閱 cmux help session)" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "重新加载项目" + "value": "session:应为 'restore'(请参阅 cmux help session)" } }, "ko": { "stringUnit": { "state": "translated", - "value": "프로젝트 다시 불러오기" + "value": "session: 'restore'가 필요합니다(cmux help session 참조)" } }, "ja": { "stringUnit": { "state": "translated", - "value": "プロジェクトを再読み込み" + "value": "session: 'restore' が必要です(cmux help session を参照)" } } } }, - "projectPanel.reloadErrors": { + "cli.session.error.sessionRequiresId": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Reload returned errors: %@" + "value": "session restore: --session requires an id" } }, "de": { "stringUnit": { "state": "translated", - "value": "Beim Neuladen sind Fehler aufgetreten: %@" + "value": "session restore: --session erfordert eine ID" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Le rechargement a renvoyé des erreurs : %@" + "value": "session restore : --session nécessite un identifiant" } }, "ar": { "stringUnit": { "state": "translated", - "value": "أعادت إعادة التحميل أخطاء: %@" + "value": "session restore: يتطلب --session معرّفًا" } }, "es": { "stringUnit": { "state": "translated", - "value": "La recarga devolvió errores: %@" + "value": "session restore: --session requiere un id" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "重新載入時發生錯誤:%@" + "value": "session restore:--session 需要一個 ID" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "重新加载时出现错误:%@" + "value": "session restore:--session 需要一个 ID" } }, "ko": { "stringUnit": { "state": "translated", - "value": "다시 불러오기 중 오류 발생: %@" + "value": "session restore: --session에는 ID가 필요합니다" } }, "ja": { "stringUnit": { "state": "translated", - "value": "再読み込みでエラーが発生しました: %@" + "value": "session restore: --session には ID が必要です" } } } }, - "projectPanel.dismissReloadErrors": { + "cli.session.error.unknownArgument": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Dismiss Errors" + "value": "session restore: unknown argument '%@'" } }, "de": { "stringUnit": { "state": "translated", - "value": "Fehler ausblenden" + "value": "session restore: unbekanntes Argument '%@'" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ignorer les erreurs" + "value": "session restore : argument inconnu « %@ »" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تجاهل الأخطاء" + "value": "session restore: وسيط غير معروف '%@'" } }, "es": { "stringUnit": { "state": "translated", - "value": "Descartar errores" + "value": "session restore: argumento desconocido '%@'" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "關閉錯誤" + "value": "session restore:未知的參數 '%@'" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "关闭错误" + "value": "session restore:未知参数 '%@'" } }, "ko": { "stringUnit": { "state": "translated", - "value": "오류 닫기" + "value": "session restore: 알 수 없는 인수 '%@'" } }, "ja": { "stringUnit": { "state": "translated", - "value": "エラーを閉じる" + "value": "session restore: 不明な引数 '%@'" } } } }, - "projectPanel.scheme": { + "cli.session.list.empty": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Scheme" + "value": "No agent sessions to restore." } }, "de": { "stringUnit": { "state": "translated", - "value": "Schema" + "value": "Keine Agent-Sitzungen zum Wiederherstellen." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Schéma" + "value": "Aucune session d’agent à restaurer." } }, "ar": { "stringUnit": { "state": "translated", - "value": "المخطط" + "value": "لا توجد جلسات وكيل لاستعادتها." } }, "es": { "stringUnit": { "state": "translated", - "value": "Esquema" + "value": "No hay sesiones de agente para restaurar." } }, "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": "スキーム" + "value": "復元するエージェントセッションはありません。" } } } }, - "projectPanel.configuration": { + "cli.session.restore.cleanQuit": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Configuration" + "value": "No agent sessions restored: cmux last quit normally. To restore one anyway, pass --session <id> from --list." } }, "de": { "stringUnit": { "state": "translated", - "value": "Konfiguration" + "value": "Keine Agent-Sitzungen wiederhergestellt: cmux wurde zuletzt normal beendet. Um trotzdem eine wiederherzustellen, übergib --session <id> aus --list." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Configuration de build" + "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 <id> depuis --list." } }, "ar": { "stringUnit": { "state": "translated", - "value": "التكوين" + "value": "لم تتم استعادة أي جلسات وكيل: أُغلق cmux بشكل طبيعي آخر مرة. لاستعادة جلسة على أي حال، مرّر --session <id> من --list." } }, "es": { "stringUnit": { "state": "translated", - "value": "Configuración" + "value": "No se restauró ninguna sesión de agente: cmux se cerró normalmente la última vez. Para restaurar una de todos modos, pasa --session <id> de --list." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "組態" + "value": "未還原任何代理工作階段:cmux 上次是正常結束。若仍要還原,請傳入 --list 中的 --session <id>。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "配置" + "value": "未恢复任何代理会话:cmux 上次是正常退出。若仍要恢复,请传入 --list 中的 --session <id>。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "구성" + "value": "복원된 에이전트 세션이 없습니다. cmux가 마지막에 정상적으로 종료되었습니다. 그래도 복원하려면 --list에서 확인한 --session <id>를 전달하세요." } }, "ja": { "stringUnit": { "state": "translated", - "value": "構成" + "value": "エージェントセッションは復元されませんでした。cmux は前回正常に終了しています。それでも復元する場合は、--list の --session <id> を指定してください。" } } } }, - "projectPanel.loadingFormat": { + "cli.session.restore.empty": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Loading %@" + "value": "No agent sessions restored." } }, "de": { "stringUnit": { "state": "translated", - "value": "%@ wird geladen" + "value": "Keine Agent-Sitzungen wiederhergestellt." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Chargement de %@" + "value": "Aucune session d’agent restaurée." } }, "ar": { "stringUnit": { "state": "translated", - "value": "جارٍ تحميل %@" + "value": "لم تتم استعادة أي جلسات وكيل." } }, "es": { "stringUnit": { "state": "translated", - "value": "Cargando %@" + "value": "No se restauró ninguna sesión de agente." } }, "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": "%@ を読み込み中" + "value": "エージェントセッションは復元されませんでした。" } } } }, - "projectPanel.failedFormat": { + "cli.session.restore.done": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Failed: %@" + "value": "Agent sessions restored: %lld" } }, "de": { "stringUnit": { "state": "translated", - "value": "Fehlgeschlagen: %@" + "value": "Wiederhergestellte Agent-Sitzungen: %lld" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Échec : %@" + "value": "Sessions d’agent restaurées : %lld" } }, "ar": { "stringUnit": { "state": "translated", - "value": "فشل: %@" + "value": "جلسات الوكيل المستعادة: %lld" } }, "es": { "stringUnit": { "state": "translated", - "value": "Error: %@" + "value": "Sesiones de agente restauradas: %lld" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "失敗:%@" + "value": "已還原的代理工作階段:%lld" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "失败:%@" + "value": "已恢复的代理会话:%lld" } }, "ko": { "stringUnit": { "state": "translated", - "value": "실패: %@" + "value": "복원된 에이전트 세션: %lld" } }, "ja": { "stringUnit": { "state": "translated", - "value": "失敗: %@" + "value": "復元したエージェントセッション: %lld" + } + } + } + }, + "agentRecovery.alert.title": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Restore agent sessions?" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Agent-Sitzungen wiederherstellen?" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Restaurer les sessions d’agent ?" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "هل تريد استعادة جلسات الوكيل؟" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "¿Restaurar las sesiones de agente?" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "要還原代理工作階段嗎?" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "要恢复代理会话吗?" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "에이전트 세션을 복원할까요?" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "エージェントセッションを復元しますか?" + } + } + } + }, + "agentRecovery.alert.message": { + "extractionState": "manual", + "localizations": { + "en": { + "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." + } + }, + "de": { + "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." + } + }, + "fr": { + "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." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "أُغلق cmux بشكل غير متوقع أثناء تشغيل جلسات الوكيل. الجلسات المطلوب استعادتها: %lld. تُفتح كل جلسة في مساحة عمل خاصة بها وتُستأنف من حيث توقفت." + } + }, + "es": { + "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ó." + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "cmux 在代理工作階段執行時意外結束。要還原的工作階段:%lld。每個工作階段都會在各自的工作區重新開啟,並從中斷處繼續。" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "cmux 在代理会话运行时意外退出。要恢复的会话:%lld。每个会话都会在各自的工作区重新打开,并从中断处继续。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "에이전트 세션이 실행 중일 때 cmux가 예기치 않게 종료되었습니다. 복원할 세션: %lld. 각 세션은 자체 워크스페이스에서 다시 열리고 중단된 곳에서 이어집니다." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "エージェントセッションの実行中に cmux が予期せず終了しました。復元するセッション: %lld。各セッションは専用のワークスペースで再び開き、中断したところから再開します。" + } + } + } + }, + "agentRecovery.alert.restore": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Restore Agent Sessions" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Agent-Sitzungen wiederherstellen" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Restaurer les sessions d’agent" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "استعادة جلسات الوكيل" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Restaurar sesiones de agente" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "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" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Nicht jetzt" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Pas maintenant" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "ليس الآن" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Ahora no" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "稍後" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "以后再说" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "나중에" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "後で" } } } @@ -100322,121 +100558,121 @@ "ar": { "stringUnit": { "state": "translated", - "value": "sessions [list] [options]" + "value": "sessions [list|live] [options]" } }, "bs": { "stringUnit": { - "state": "translated", - "value": "sessions [list] [options]" + "state": "needs_review", + "value": "sessions [list|live] [options]" } }, "da": { "stringUnit": { - "state": "translated", - "value": "sessions [list] [options]" + "state": "needs_review", + "value": "sessions [list|live] [options]" } }, "de": { "stringUnit": { "state": "translated", - "value": "sessions [list] [options]" + "value": "sessions [list|live] [options]" } }, "en": { "stringUnit": { "state": "translated", - "value": "sessions [list] [options]" + "value": "sessions [list|live] [options]" } }, "es": { "stringUnit": { "state": "translated", - "value": "sessions [list] [options]" + "value": "sessions [list|live] [options]" } }, "fr": { "stringUnit": { "state": "translated", - "value": "sessions [list] [options]" + "value": "sessions [list|live] [options]" } }, "it": { "stringUnit": { - "state": "translated", - "value": "sessions [list] [options]" + "state": "needs_review", + "value": "sessions [list|live] [options]" } }, "ja": { "stringUnit": { "state": "translated", - "value": "sessions [list] [options]" + "value": "sessions [list|live] [options]" } }, "km": { "stringUnit": { - "state": "translated", - "value": "sessions [list] [options]" + "state": "needs_review", + "value": "sessions [list|live] [options]" } }, "ko": { "stringUnit": { "state": "translated", - "value": "sessions [list] [options]" + "value": "sessions [list|live] [options]" } }, "nb": { "stringUnit": { - "state": "translated", - "value": "sessions [list] [options]" + "state": "needs_review", + "value": "sessions [list|live] [options]" } }, "pl": { "stringUnit": { - "state": "translated", - "value": "sessions [list] [options]" + "state": "needs_review", + "value": "sessions [list|live] [options]" } }, "pt-BR": { "stringUnit": { - "state": "translated", - "value": "sessions [list] [options]" + "state": "needs_review", + "value": "sessions [list|live] [options]" } }, "ru": { "stringUnit": { - "state": "translated", - "value": "sessions [list] [options]" + "state": "needs_review", + "value": "sessions [list|live] [options]" } }, "th": { "stringUnit": { - "state": "translated", - "value": "sessions [list] [options]" + "state": "needs_review", + "value": "sessions [list|live] [options]" } }, "tr": { "stringUnit": { - "state": "translated", - "value": "sessions [list] [options]" + "state": "needs_review", + "value": "sessions [list|live] [options]" } }, "uk": { "stringUnit": { - "state": "translated", - "value": "sessions [list] [options]" + "state": "needs_review", + "value": "sessions [list|live] [options]" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "sessions [list] [options]" + "value": "sessions [list|live] [options]" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "sessions [list] [options]" + "value": "sessions [list|live] [options]" } } } @@ -101039,55 +101275,55 @@ "en": { "stringUnit": { "state": "translated", - "value": "Usage: cmux sessions list [options]\n cmux sessions [options]\n\nPrint saved agent session records from ~/.cmuxterm/*-hook-sessions.json.\nThis command does not require a running cmux socket.\nBy default, broad output shows active, restorable, or transcript-backed records.\nPass --all to inspect every saved hook record.\n\nOptions:\n --agent <name> Filter to one agent, for example codex or claude\n --session <id> Filter to one agent session id\n --workspace <id> Filter to one saved workspace id\n --surface <id> Filter to one saved surface id\n --cwd <text> Filter by saved cwd or launch working directory\n --state-dir <path> Override hook state directory\n --codex-home <path> Override the default Codex home used for transcript checks\n --limit <n> Limit text output (default: 100)\n --all Print all matches\n --json Print structured JSON\n\nCodex rows include whether the saved id exists in CODEX_HOME/session_index.jsonl\nand whether a matching transcript file exists under CODEX_HOME/sessions or\nCODEX_HOME/archived_sessions.\n\nCompatibility aliases:\n cmux sessions debug [options]\n cmux session-debug [options]" + "value": "Usage: cmux sessions list [options]\n cmux sessions [options]\n cmux sessions live [options]\n\nPrint saved agent session records from ~/.cmuxterm/*-hook-sessions.json.\nThis command does not require a running cmux socket.\n\nFor what is happening right now, use `cmux sessions live` instead: it asks\nthe running app, so it knows each session's current state, how long it has\nheld it, and the conversation title. Saved records know none of those.\nBy default, broad output shows active, restorable, or transcript-backed records.\nPass --all to inspect every saved hook record.\n\nOptions:\n --agent <name> Filter to one agent, for example codex or claude\n --session <id> Filter to one agent session id\n --workspace <id> Filter to one saved workspace id\n --surface <id> Filter to one saved surface id\n --cwd <text> Filter by saved cwd or launch working directory\n --state-dir <path> Override hook state directory\n --codex-home <path> Override the default Codex home used for transcript checks\n --limit <n> Limit text output (default: 100)\n --all Print all matches\n --json Print structured JSON\n\nCodex rows include whether the saved id exists in CODEX_HOME/session_index.jsonl\nand whether a matching transcript file exists under CODEX_HOME/sessions or\nCODEX_HOME/archived_sessions.\n\nCompatibility aliases:\n cmux sessions debug [options]\n cmux session-debug [options]\n\ncmux sessions live [options]\n Live agent sessions from the running app, ordered for triage: sessions\n waiting on you first (longest wait first), then running (longest first),\n then idle and ended (most recent first). Requires a running cmux.\n\n --needs-me Only sessions waiting on a human\n --state <name> Only needs-input, working, idle or ended\n --agent <name> Only one agent, for example codex or claude\n --limit <n> Limit rows shown (default: 100)\n --all Print all matches\n --json Print structured JSON, with total_matches and limit\n alongside the rows" } }, "ja": { "stringUnit": { "state": "translated", - "value": "使用方法: cmux sessions list [options]\n cmux sessions [options]\n\n~/.cmuxterm/*-hook-sessions.json から保存済みエージェントセッション記録を表示します。\nこのコマンドは実行中の cmux ソケットを必要としません。\n既定では、広範な出力にはアクティブ、復元可能、またはトランスクリプト付きの記録だけを表示します。\n保存済みフック記録をすべて確認するには --all を指定します。\n\nオプション:\n --agent <name> 1 つのエージェントに絞り込みます。例: codex または claude\n --session <id> 1 つのエージェントセッション ID に絞り込みます\n --workspace <id> 保存済みワークスペース ID に絞り込みます\n --surface <id> 保存済みサーフェス ID に絞り込みます\n --cwd <text> 保存済み cwd または起動時の作業ディレクトリで絞り込みます\n --state-dir <path> フック状態ディレクトリを上書きします\n --codex-home <path> トランスクリプト確認に使う既定の Codex ホームを上書きします\n --limit <n> テキスト出力の件数を制限します(既定: 100)\n --all すべての一致を表示します\n --json 構造化 JSON を出力します\n\nCodex 行には、保存済み ID が CODEX_HOME/session_index.jsonl に存在するか、\n一致するトランスクリプトファイルが CODEX_HOME/sessions または\nCODEX_HOME/archived_sessions に存在するかが含まれます。\n\n互換エイリアス:\n cmux sessions debug [options]\n cmux session-debug [options]" + "value": "使用方法: cmux sessions list [options]\n cmux sessions [options]\n cmux sessions live [options]\n\n~/.cmuxterm/*-hook-sessions.json から保存済みエージェントセッション記録を表示します。\nこのコマンドは実行中の cmux ソケットを必要としません。\n\n現在の状況を知るには、代わりに `cmux sessions live` を使ってください。実行中の\nアプリに問い合わせるため、各セッションの現在の状態、その状態が続いている時間、\n会話のタイトルが分かります。保存済み記録にはどれもありません。\n既定では、広範な出力にはアクティブ、復元可能、またはトランスクリプト付きの記録だけを表示します。\n保存済みフック記録をすべて確認するには --all を指定します。\n\nオプション:\n --agent <name> 1 つのエージェントに絞り込みます。例: codex または claude\n --session <id> 1 つのエージェントセッション ID に絞り込みます\n --workspace <id> 保存済みワークスペース ID に絞り込みます\n --surface <id> 保存済みサーフェス ID に絞り込みます\n --cwd <text> 保存済み cwd または起動時の作業ディレクトリで絞り込みます\n --state-dir <path> フック状態ディレクトリを上書きします\n --codex-home <path> トランスクリプト確認に使う既定の Codex ホームを上書きします\n --limit <n> テキスト出力の件数を制限します(既定: 100)\n --all すべての一致を表示します\n --json 構造化 JSON を出力します\n\nCodex 行には、保存済み ID が CODEX_HOME/session_index.jsonl に存在するか、\n一致するトランスクリプトファイルが CODEX_HOME/sessions または\nCODEX_HOME/archived_sessions に存在するかが含まれます。\n\n互換エイリアス:\n cmux sessions debug [options]\n cmux session-debug [options]\n\ncmux sessions live [options]\n 実行中のアプリから取得したライブのエージェントセッションを、対応すべき順に\n 並べます。まず入力を待っているセッション(待ち時間が長い順)、次に実行中の\n セッション(長い順)、次に待機中と終了済み(最近の活動順)。実行中の cmux が必要です。\n\n --needs-me 人の応答を待っているセッションのみ\n --state <name> needs-input、working、idle、ended のみ\n --agent <name> 1 つのエージェントのみ。例: codex または claude\n --limit <n> 表示する行数を制限します(既定: 100)\n --all すべての一致を表示します\n --json 構造化 JSON を出力します。行に加えて total_matches と\n limit も含みます" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "用法:cmux sessions list [options]\n cmux sessions [options]\n\n输出 ~/.cmuxterm/*-hook-sessions.json 中保存的代理会话记录。\n此命令不需要正在运行的 cmux socket。\n默认情况下,宽泛输出会显示活动的、可恢复的或有转写记录支撑的记录。\n传入 --all 可查看每一条已保存的 hook 记录。\n\n选项:\n --agent <name> 仅筛选一个代理,例如 codex 或 claude\n --session <id> 仅筛选一个代理会话 id\n --workspace <id> 仅筛选一个已保存的工作区 id\n --surface <id> 仅筛选一个已保存的表面 id\n --cwd <text> 按已保存的 cwd 或启动工作目录筛选\n --state-dir <path> 覆盖 hook 状态目录\n --codex-home <path> 覆盖用于转写检查的默认 Codex home\n --limit <n> 限制文本输出(默认:100)\n --all 输出所有匹配项\n --json 输出结构化 JSON\n\nCodex 行会显示已保存的 id 是否存在于 CODEX_HOME/session_index.jsonl,\n以及在 CODEX_HOME/sessions 或 CODEX_HOME/archived_sessions 下\n是否存在匹配的转写文件。\n\n兼容别名:\n cmux sessions debug [options]\n cmux session-debug [options]" + "value": "用法:cmux sessions list [options]\n cmux sessions [options]\n cmux sessions live [options]\n\n输出 ~/.cmuxterm/*-hook-sessions.json 中保存的代理会话记录。\n此命令不需要正在运行的 cmux socket。\n\n若要了解当前的情况,请改用 `cmux sessions live`:它会询问正在运行的应用,\n因此知道每个会话当前的状态、已保持多久以及对话标题。\n已保存的记录都不知道这些信息。\n默认情况下,宽泛输出会显示活动的、可恢复的或有转写记录支撑的记录。\n传入 --all 可查看每一条已保存的 hook 记录。\n\n选项:\n --agent <name> 仅筛选一个代理,例如 codex 或 claude\n --session <id> 仅筛选一个代理会话 id\n --workspace <id> 仅筛选一个已保存的工作区 id\n --surface <id> 仅筛选一个已保存的表面 id\n --cwd <text> 按已保存的 cwd 或启动工作目录筛选\n --state-dir <path> 覆盖 hook 状态目录\n --codex-home <path> 覆盖用于转写检查的默认 Codex home\n --limit <n> 限制文本输出(默认:100)\n --all 输出所有匹配项\n --json 输出结构化 JSON\n\nCodex 行会显示已保存的 id 是否存在于 CODEX_HOME/session_index.jsonl,\n以及在 CODEX_HOME/sessions 或 CODEX_HOME/archived_sessions 下\n是否存在匹配的转写文件。\n\n兼容别名:\n cmux sessions debug [options]\n cmux session-debug [options]\n\ncmux sessions live [options]\n 来自正在运行的应用的实时代理会话,按处理顺序排列:先是正在等你的会话\n (等待最久的优先),然后是正在运行的(最久的优先),再是空闲和已结束的\n (最近活动的优先)。需要正在运行的 cmux。\n\n --needs-me 仅等待人工回应的会话\n --state <name> 仅 needs-input、working、idle 或 ended\n --agent <name> 仅一个代理,例如 codex 或 claude\n --limit <n> 限制显示的行数(默认:100)\n --all 输出所有匹配项\n --json 输出结构化 JSON,在行旁附带 total_matches\n 与 limit" } }, "de": { "stringUnit": { "state": "translated", - "value": "Verwendung: cmux sessions list [Optionen]\n cmux sessions [Optionen]\n\nGespeicherte Agenten-Sitzungsdatensätze aus ~/.cmuxterm/*-hook-sessions.json ausgeben.\nDieser Befehl erfordert kein laufendes cmux-Socket.\nStandardmäßig zeigt die ausführliche Ausgabe aktive, wiederherstellbare oder durch ein Transkript gesicherte Datensätze an.\nÜbergeben Sie --all, um jeden gespeicherten Hook-Datensatz zu untersuchen.\n\nOptionen:\n --agent <name> Auf einen Agenten filtern, zum Beispiel codex oder claude\n --session <id> Auf eine Agenten-Sitzungs-ID filtern\n --workspace <id> Auf eine gespeicherte Arbeitsbereichs-ID filtern\n --surface <id> Auf eine gespeicherte Oberflächen-ID filtern\n --cwd <text> Nach gespeicherter cwd oder dem Start-Arbeitsverzeichnis filtern\n --state-dir <path> Hook-Statusverzeichnis überschreiben\n --codex-home <path> Das für Transkriptprüfungen verwendete Standard-Codex-Home überschreiben\n --limit <n> Textausgabe begrenzen (Standard: 100)\n --all Alle Treffer ausgeben\n --json Strukturiertes JSON ausgeben\n\nCodex-Zeilen enthalten Angaben darüber, ob die gespeicherte ID in CODEX_HOME/session_index.jsonl existiert\nund ob eine passende Transkriptdatei unter CODEX_HOME/sessions oder\nCODEX_HOME/archived_sessions existiert.\n\nKompatibilitäts-Aliase:\n cmux sessions debug [Optionen]\n cmux session-debug [Optionen]" + "value": "Verwendung: cmux sessions list [Optionen]\n cmux sessions [Optionen]\n cmux sessions live [Optionen]\n\nGespeicherte Agenten-Sitzungsdatensätze aus ~/.cmuxterm/*-hook-sessions.json ausgeben.\nDieser Befehl erfordert kein laufendes cmux-Socket.\n\nFür den aktuellen Stand verwenden Sie stattdessen `cmux sessions live`: Der Befehl\nfragt die laufende App und kennt daher den aktuellen Zustand jeder Sitzung, wie\nlange sie ihn hält, und den Gesprächstitel. Gespeicherte Datensätze wissen davon nichts.\nStandardmäßig zeigt die ausführliche Ausgabe aktive, wiederherstellbare oder durch ein Transkript gesicherte Datensätze an.\nÜbergeben Sie --all, um jeden gespeicherten Hook-Datensatz zu untersuchen.\n\nOptionen:\n --agent <name> Auf einen Agenten filtern, zum Beispiel codex oder claude\n --session <id> Auf eine Agenten-Sitzungs-ID filtern\n --workspace <id> Auf eine gespeicherte Arbeitsbereichs-ID filtern\n --surface <id> Auf eine gespeicherte Oberflächen-ID filtern\n --cwd <text> Nach gespeicherter cwd oder dem Start-Arbeitsverzeichnis filtern\n --state-dir <path> Hook-Statusverzeichnis überschreiben\n --codex-home <path> Das für Transkriptprüfungen verwendete Standard-Codex-Home überschreiben\n --limit <n> Textausgabe begrenzen (Standard: 100)\n --all Alle Treffer ausgeben\n --json Strukturiertes JSON ausgeben\n\nCodex-Zeilen enthalten Angaben darüber, ob die gespeicherte ID in CODEX_HOME/session_index.jsonl existiert\nund ob eine passende Transkriptdatei unter CODEX_HOME/sessions oder\nCODEX_HOME/archived_sessions existiert.\n\nKompatibilitäts-Aliase:\n cmux sessions debug [Optionen]\n cmux session-debug [Optionen]\n\ncmux sessions live [Optionen]\n Live-Agenten-Sitzungen aus der laufenden App, nach Triage geordnet: Sitzungen,\n die auf Sie warten, zuerst (längste Wartezeit zuerst), dann laufende (längste\n zuerst), dann untätige und beendete (neueste zuerst). Erfordert ein laufendes cmux.\n\n --needs-me Nur Sitzungen, die auf einen Menschen warten\n --state <name> Nur needs-input, working, idle oder ended\n --agent <name> Nur ein Agent, zum Beispiel codex oder claude\n --limit <n> Angezeigte Zeilen begrenzen (Standard: 100)\n --all Alle Treffer ausgeben\n --json Strukturiertes JSON ausgeben, mit total_matches und limit\n neben den Zeilen" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Utilisation : cmux sessions list [options]\n cmux sessions [options]\n\nAfficher les enregistrements de session d'agent sauvegardés depuis ~/.cmuxterm/*-hook-sessions.json.\nCette commande ne requiert pas de socket cmux en cours d'exécution.\nPar défaut, l'affichage détaillé présente les enregistrements actifs, restaurables ou sauvegardés par transcription.\nPassez --all pour inspecter chaque enregistrement de hook sauvegardé.\n\nOptions :\n --agent <nom> Filtrer par agent, par exemple codex ou claude\n --session <id> Filtrer par identifiant de session d'agent\n --workspace <id> Filtrer par identifiant d'espace de travail sauvegardé\n --surface <id> Filtrer par identifiant de surface d’affichage sauvegardé\n --cwd <texte> Filtrer par cwd sauvegardé ou par répertoire de travail de lancement\n --state-dir <chemin> Surcharger le répertoire d'état du hook\n --codex-home <chemin> Surcharger le répertoire personnel Codex par défaut utilisé pour les vérifications de transcription\n --limit <n> Limiter l'affichage textuel (par défaut : 100)\n --all Afficher toutes les correspondances\n --json Afficher au format JSON structuré\n\nLes lignes Codex indiquent si l'identifiant sauvegardé existe dans CODEX_HOME/session_index.jsonl\net si un fichier de transcription correspondant existe sous CODEX_HOME/sessions ou\nCODEX_HOME/archived_sessions.\n\nAlias de compatibilité :\n cmux sessions debug [options]\n cmux session-debug [options]" + "value": "Utilisation : cmux sessions list [options]\n cmux sessions [options]\n cmux sessions live [options]\n\nAfficher les enregistrements de session d'agent sauvegardés depuis ~/.cmuxterm/*-hook-sessions.json.\nCette commande ne requiert pas de socket cmux en cours d'exécution.\n\nPour l'état actuel, utilisez plutôt `cmux sessions live` : cette commande interroge\nl'application en cours d'exécution et connaît donc l'état actuel de chaque session,\ndepuis combien de temps elle le conserve et le titre de la conversation. Les enregistrements sauvegardés l'ignorent.\nPar défaut, l'affichage détaillé présente les enregistrements actifs, restaurables ou sauvegardés par transcription.\nPassez --all pour inspecter chaque enregistrement de hook sauvegardé.\n\nOptions :\n --agent <nom> Filtrer par agent, par exemple codex ou claude\n --session <id> Filtrer par identifiant de session d'agent\n --workspace <id> Filtrer par identifiant d'espace de travail sauvegardé\n --surface <id> Filtrer par identifiant de surface d’affichage sauvegardé\n --cwd <texte> Filtrer par cwd sauvegardé ou par répertoire de travail de lancement\n --state-dir <chemin> Surcharger le répertoire d'état du hook\n --codex-home <chemin> Surcharger le répertoire personnel Codex par défaut utilisé pour les vérifications de transcription\n --limit <n> Limiter l'affichage textuel (par défaut : 100)\n --all Afficher toutes les correspondances\n --json Afficher au format JSON structuré\n\nLes lignes Codex indiquent si l'identifiant sauvegardé existe dans CODEX_HOME/session_index.jsonl\net si un fichier de transcription correspondant existe sous CODEX_HOME/sessions ou\nCODEX_HOME/archived_sessions.\n\nAlias de compatibilité :\n cmux sessions debug [options]\n cmux session-debug [options]\n\ncmux sessions live [options]\n Sessions d'agent en direct depuis l'application en cours d'exécution, classées par\n priorité : d'abord celles qui vous attendent (attente la plus longue en premier),\n puis celles en cours (la plus longue en premier), puis inactives et terminées (les plus récentes en premier). Requiert un cmux en cours d'exécution.\n\n --needs-me Uniquement les sessions qui attendent un humain\n --state <nom> Uniquement needs-input, working, idle ou ended\n --agent <nom> Un seul agent, par exemple codex ou claude\n --limit <n> Limiter les lignes affichées (par défaut : 100)\n --all Afficher toutes les correspondances\n --json Afficher au format JSON structuré, avec total_matches et limit\n à côté des lignes" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الاستخدام: cmux sessions list [options]\n cmux sessions [options]\n\nطباعة سجلات جلسات الوكيل المحفوظة من ~/.cmuxterm/*-hook-sessions.json.\nلا يتطلب هذا الأمر مقبس cmux نشط.\nبشكل افتراضي، يعرض المخرج العام السجلات النشطة، أو القابلة للاستعادة، أو المدعومة بنسخة مكتوبة (transcript-backed).\nمرر --all لفحص كل سجل خطاف محفوظ.\n\nالخيارات:\n --agent <name> التصفية لوكيل واحد، على سبيل المثال codex أو claude\n --session <id> التصفية لمعرف جلسة وكيل واحد\n --workspace <id> التصفية لمعرف مساحة عمل محفوظة واحدة\n --surface <id> التصفية لمعرف سطح محفوظ واحد\n --cwd <text> التصفية حسب دليل العمل الحالي المحفوظ (cwd) أو دليل العمل المستهدف للتشغيل\n --state-dir <path> تجاوز دليل حالة الخطاف\n --codex-home <path> تجاوز مسار Codex الرئيسي الافتراضي المستخدم لفحوصات النسخة المكتوبة\n --limit <n> تحديد كمية المخرجات النصية (الافتراضي: 100)\n --all طباعة كافة التطابقات\n --json طباعة JSON منظم\n\nتتضمن صفوف Codex ما إذا كان المعرف المحفوظ موجودًا في CODEX_HOME/session_index.jsonl\nوما إذا كان ملف نسخة مكتوبة مطابقة موجودًا تحت CODEX_HOME/sessions أو\nCODEX_HOME/archived_sessions.\n\nالأسماء المستعارة للتوافق:\n cmux sessions debug [options]\n cmux session-debug [options]" + "value": "الاستخدام: cmux sessions list [options]\n cmux sessions [options]\n cmux sessions live [options]\n\nطباعة سجلات جلسات الوكيل المحفوظة من ~/.cmuxterm/*-hook-sessions.json.\nلا يتطلب هذا الأمر مقبس cmux نشط.\n\nلمعرفة ما يجري الآن، استخدم `cmux sessions live` بدلاً من ذلك: فهو يسأل التطبيق\nقيد التشغيل، وبذلك يعرف الحالة الحالية لكل جلسة، ومدة بقائها في تلك الحالة،\nوعنوان المحادثة. السجلات المحفوظة لا تعرف أيًّا من ذلك.\nبشكل افتراضي، يعرض المخرج العام السجلات النشطة، أو القابلة للاستعادة، أو المدعومة بنسخة مكتوبة (transcript-backed).\nمرر --all لفحص كل سجل خطاف محفوظ.\n\nالخيارات:\n --agent <name> التصفية لوكيل واحد، على سبيل المثال codex أو claude\n --session <id> التصفية لمعرف جلسة وكيل واحد\n --workspace <id> التصفية لمعرف مساحة عمل محفوظة واحدة\n --surface <id> التصفية لمعرف سطح محفوظ واحد\n --cwd <text> التصفية حسب دليل العمل الحالي المحفوظ (cwd) أو دليل العمل المستهدف للتشغيل\n --state-dir <path> تجاوز دليل حالة الخطاف\n --codex-home <path> تجاوز مسار Codex الرئيسي الافتراضي المستخدم لفحوصات النسخة المكتوبة\n --limit <n> تحديد كمية المخرجات النصية (الافتراضي: 100)\n --all طباعة كافة التطابقات\n --json طباعة JSON منظم\n\nتتضمن صفوف Codex ما إذا كان المعرف المحفوظ موجودًا في CODEX_HOME/session_index.jsonl\nوما إذا كان ملف نسخة مكتوبة مطابقة موجودًا تحت CODEX_HOME/sessions أو\nCODEX_HOME/archived_sessions.\n\nالأسماء المستعارة للتوافق:\n cmux sessions debug [options]\n cmux session-debug [options]\n\ncmux sessions live [options]\n جلسات الوكيل الحية من التطبيق قيد التشغيل، مرتبة للفرز: الجلسات التي تنتظرك\n أولاً (الأطول انتظارًا أولاً)، ثم الجلسات العاملة (الأطول أولاً)، ثم الخاملة\n والمنتهية (الأحدث أولاً). يتطلب cmux قيد التشغيل.\n\n --needs-me الجلسات التي تنتظر إنسانًا فقط\n --state <name> فقط needs-input أو working أو idle أو ended\n --agent <name> وكيل واحد فقط، على سبيل المثال codex أو claude\n --limit <n> تحديد عدد الصفوف المعروضة (الافتراضي: 100)\n --all طباعة كافة التطابقات\n --json طباعة JSON منظم، مع total_matches و limit\n إلى جانب الصفوف" } }, "es": { "stringUnit": { "state": "translated", - "value": "Uso: cmux sessions list [options]\n cmux sessions [options]\n\nImprimir los registros de sesiones de agentes guardados desde ~/.cmuxterm/*-hook-sessions.json.\nEste comando no requiere un socket de cmux en ejecución.\nPor defecto, la salida general muestra registros activos, restaurables o respaldados por transcripciones.\nPase --all para inspeccionar cada registro de hook guardado.\n\nOpciones:\n --agent <name> Filtrar por un agente, por ejemplo codex o claude\n --session <id> Filtrar por un ID de sesión de agente\n --workspace <id> Filtrar por un ID de espacio de trabajo guardado\n --surface <id> Filtrar por un ID de superficie guardado\n --cwd <text> Filtrar por el cwd guardado o el directorio de trabajo de inicio\n --state-dir <path> Sobrescribir el directorio de estado del hook\n --codex-home <path> Sobrescribir el Codex home predeterminado utilizado para comprobaciones de transcripción\n --limit <n> Limitar la salida de texto (por defecto: 100)\n --all Imprimir todas las coincidencias\n --json Imprimir JSON estructurado\n\nLas filas de Codex incluyen si el id guardado existe en CODEX_HOME/session_index.jsonl\ny si existe un archivo de transcripción coincendente en CODEX_HOME/sessions o\nCODEX_HOME/archived_sessions.\n\nAlias de compatibilidad:\n cmux sessions debug [options]\n cmux session-debug [options]" + "value": "Uso: cmux sessions list [options]\n cmux sessions [options]\n cmux sessions live [options]\n\nImprimir los registros de sesiones de agentes guardados desde ~/.cmuxterm/*-hook-sessions.json.\nEste comando no requiere un socket de cmux en ejecución.\n\nPara saber qué está ocurriendo ahora, use `cmux sessions live`: consulta la\naplicación en ejecución, por lo que conoce el estado actual de cada sesión, cuánto\ntiempo lo lleva manteniendo y el título de la conversación. Los registros guardados no saben nada de eso.\nPor defecto, la salida general muestra registros activos, restaurables o respaldados por transcripciones.\nPase --all para inspeccionar cada registro de hook guardado.\n\nOpciones:\n --agent <name> Filtrar por un agente, por ejemplo codex o claude\n --session <id> Filtrar por un ID de sesión de agente\n --workspace <id> Filtrar por un ID de espacio de trabajo guardado\n --surface <id> Filtrar por un ID de superficie guardado\n --cwd <text> Filtrar por el cwd guardado o el directorio de trabajo de inicio\n --state-dir <path> Sobrescribir el directorio de estado del hook\n --codex-home <path> Sobrescribir el Codex home predeterminado utilizado para comprobaciones de transcripción\n --limit <n> Limitar la salida de texto (por defecto: 100)\n --all Imprimir todas las coincidencias\n --json Imprimir JSON estructurado\n\nLas filas de Codex incluyen si el id guardado existe en CODEX_HOME/session_index.jsonl\ny si existe un archivo de transcripción coincendente en CODEX_HOME/sessions o\nCODEX_HOME/archived_sessions.\n\nAlias de compatibilidad:\n cmux sessions debug [options]\n cmux session-debug [options]\n\ncmux sessions live [options]\n Sesiones de agente en vivo desde la aplicación en ejecución, ordenadas para el\n triaje: primero las que esperan por usted (la espera más larga primero), luego las\n que están trabajando (la más larga primero), luego inactivas y terminadas (la más reciente primero). Requiere un cmux en ejecución.\n\n --needs-me Solo sesiones que esperan a una persona\n --state <name> Solo needs-input, working, idle o ended\n --agent <name> Solo un agente, por ejemplo codex o claude\n --limit <n> Limitar las filas mostradas (por defecto: 100)\n --all Imprimir todas las coincidencias\n --json Imprimir JSON estructurado, con total_matches y limit\n junto a las filas" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "用法:cmux sessions list [options]\n cmux sessions [options]\n\n從 ~/.cmuxterm/*-hook-sessions.json 列印已儲存的代理程式工作階段紀錄。\n此指令不需要執行中的 cmux socket。\n預設情況下,寬格式輸出會顯示作用中、可還原或有逐字稿備份的紀錄。\n傳遞 --all 以檢查每個儲存的勾點紀錄。\n\n選項:\n --agent <name> 篩選單一代理程式,例如 codex 或 claude\n --session <id> 篩選單一代理程式工作階段 id\n --workspace <id> 篩選單一已儲存的工作區 id\n --surface <id> 篩選單一已儲存的介面 id\n --cwd <text> 依已儲存的 cwd 或啟動工作目錄進行篩選\n --state-dir <path> 覆寫勾點狀態目錄\n --codex-home <path> 覆寫用於逐字稿檢查的預設 Codex 家目錄\n --limit <n> 限制文字輸出 (預設值:100)\n --all 列印所有相符項\n --json 列印結構化 JSON\n\nCodex 資料列包含儲存的 id 是否存在於 CODEX_HOME/session_index.jsonl\n中,以及 CODEX_HOME/sessions 或\n CODEX_HOME/archived_sessions 下是否存在相符的逐字稿檔案。\n\n相容性別名:\n cmux sessions debug [options]\n cmux session-debug [options]" + "value": "用法:cmux sessions list [options]\n cmux sessions [options]\n cmux sessions live [options]\n\n從 ~/.cmuxterm/*-hook-sessions.json 列印已儲存的代理程式工作階段紀錄。\n此指令不需要執行中的 cmux socket。\n\n若要了解目前的狀況,請改用 `cmux sessions live`:它會詢問執行中的應用程式,\n因此知道每個工作階段目前的狀態、已維持多久,以及對話標題。\n已儲存的紀錄都不知道這些資訊。\n預設情況下,寬格式輸出會顯示作用中、可還原或有逐字稿備份的紀錄。\n傳遞 --all 以檢查每個儲存的勾點紀錄。\n\n選項:\n --agent <name> 篩選單一代理程式,例如 codex 或 claude\n --session <id> 篩選單一代理程式工作階段 id\n --workspace <id> 篩選單一已儲存的工作區 id\n --surface <id> 篩選單一已儲存的介面 id\n --cwd <text> 依已儲存的 cwd 或啟動工作目錄進行篩選\n --state-dir <path> 覆寫勾點狀態目錄\n --codex-home <path> 覆寫用於逐字稿檢查的預設 Codex 家目錄\n --limit <n> 限制文字輸出 (預設值:100)\n --all 列印所有相符項\n --json 列印結構化 JSON\n\nCodex 資料列包含儲存的 id 是否存在於 CODEX_HOME/session_index.jsonl\n中,以及 CODEX_HOME/sessions 或\n CODEX_HOME/archived_sessions 下是否存在相符的逐字稿檔案。\n\n相容性別名:\n cmux sessions debug [options]\n cmux session-debug [options]\n\ncmux sessions live [options]\n 來自執行中應用程式的即時代理程式工作階段,依處理順序排列:先是正在等你的\n 工作階段 (等待最久者優先),接著是執行中的 (最久者優先),然後是閒置與已結束的\n (最近活動者優先)。需要執行中的 cmux。\n\n --needs-me 僅等待人工回應的工作階段\n --state <name> 僅 needs-input、working、idle 或 ended\n --agent <name> 僅單一代理程式,例如 codex 或 claude\n --limit <n> 限制顯示的資料列 (預設值:100)\n --all 列印所有相符項\n --json 列印結構化 JSON,資料列旁附上 total_matches\n 與 limit" } }, "ko": { "stringUnit": { "state": "translated", - "value": "사용법: cmux sessions list [options]\n cmux sessions [options]\n\n~/.cmuxterm/*-hook-sessions.json에서 저장된 에이전트 세션 기록을 출력합니다.\n이 명령어는 실행 중인 cmux 소켓을 필요로 하지 않습니다.\n기본적으로 전체 출력은 활성, 복구 가능 또는 트랜스크립트 기반 기록을 보여줍니다.\n모든 저장된 훅 기록을 검사하려면 --all을 전달하세요.\n\n옵션:\n --agent <name> 특정 에이전트(예: codex 또는 claude)로 필터링\n --session <id> 특정 에이전트 세션 ID로 필터링\n --workspace <id> 특정 저장된 작업 공간 ID로 필터링\n --surface <id> 특정 저장된 화면 ID로 필터링\n --cwd <text> 저장된 cwd 또는 실행 작업 디렉토리로 필터링\n --state-dir <path> 훅 상태 디렉토리 재정의\n --codex-home <path> 트랜스크립트 검사에 사용되는 기본 Codex 홈 재정의\n --limit <n> 텍스트 출력 제한 (기본값: 100)\n --all 모든 일치 항목 출력\n --json 구조화된 JSON 출력\n\nCodex 행에는 저장된 ID가 CODEX_HOME/session_index.jsonl에 존재하는지 여부와\n일치하는 트랜스크립트 파일이 CODEX_HOME/sessions 또는\nCODEX_HOME/archived_sessions 아래에 존재하는지 여부가 포함됩니다.\n\n호환성 별칭:\n cmux sessions debug [options]\n cmux session-debug [options]" + "value": "사용법: cmux sessions list [options]\n cmux sessions [options]\n cmux sessions live [options]\n\n~/.cmuxterm/*-hook-sessions.json에서 저장된 에이전트 세션 기록을 출력합니다.\n이 명령어는 실행 중인 cmux 소켓을 필요로 하지 않습니다.\n\n지금 무슨 일이 일어나고 있는지 보려면 `cmux sessions live`를 사용하세요. 실행 중인\n앱에 질의하므로 각 세션의 현재 상태, 그 상태를 유지한 시간, 대화 제목을 알 수\n있습니다. 저장된 기록은 이 가운데 아무것도 알지 못합니다.\n기본적으로 전체 출력은 활성, 복구 가능 또는 트랜스크립트 기반 기록을 보여줍니다.\n모든 저장된 훅 기록을 검사하려면 --all을 전달하세요.\n\n옵션:\n --agent <name> 특정 에이전트(예: codex 또는 claude)로 필터링\n --session <id> 특정 에이전트 세션 ID로 필터링\n --workspace <id> 특정 저장된 작업 공간 ID로 필터링\n --surface <id> 특정 저장된 화면 ID로 필터링\n --cwd <text> 저장된 cwd 또는 실행 작업 디렉토리로 필터링\n --state-dir <path> 훅 상태 디렉토리 재정의\n --codex-home <path> 트랜스크립트 검사에 사용되는 기본 Codex 홈 재정의\n --limit <n> 텍스트 출력 제한 (기본값: 100)\n --all 모든 일치 항목 출력\n --json 구조화된 JSON 출력\n\nCodex 행에는 저장된 ID가 CODEX_HOME/session_index.jsonl에 존재하는지 여부와\n일치하는 트랜스크립트 파일이 CODEX_HOME/sessions 또는\nCODEX_HOME/archived_sessions 아래에 존재하는지 여부가 포함됩니다.\n\n호환성 별칭:\n cmux sessions debug [options]\n cmux session-debug [options]\n\ncmux sessions live [options]\n 실행 중인 앱에서 가져온 실시간 에이전트 세션으로, 처리 순서대로 정렬됩니다.\n 사용자를 기다리는 세션이 먼저(가장 오래 기다린 것부터), 그다음 작업 중인 세션\n (가장 오래된 것부터), 그다음 유휴와 종료 세션(최근 활동 순). 실행 중인 cmux가 필요합니다.\n\n --needs-me 사람의 응답을 기다리는 세션만\n --state <name> needs-input, working, idle 또는 ended만\n --agent <name> 특정 에이전트만(예: codex 또는 claude)\n --limit <n> 표시할 행 수 제한 (기본값: 100)\n --all 모든 일치 항목 출력\n --json 구조화된 JSON 출력, 행과 함께 total_matches와\n limit 포함" } } } @@ -176573,71 +176809,6 @@ } } }, - "dialog.close.dontAskAgain": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Don’t ask again" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "لا تسأل مرة أخرى" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Nicht mehr fragen" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No volver a preguntar" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Ne plus demander" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "今後確認しない" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "다시 묻지 않기" - } - }, - "uk": { - "stringUnit": { - "state": "translated", - "value": "Більше не запитувати" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "不再询问" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "不再詢問" - } - } - } - }, "dialog.closeAnchor.message.lone": { "extractionState": "manual", "localizations": { @@ -228330,65 +228501,6 @@ } } }, - "globalSearch.kind.terminal": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Terminal" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ターミナル" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "터미널" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "طرفية" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "終端" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "终端" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Terminal" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Terminal" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Terminal" - } - } - } - }, "globalSearch.kind.title": { "extractionState": "manual", "localizations": { @@ -230486,131 +230598,6 @@ } } }, - "machines.agent.pi": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "km": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "nb": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "pt-BR": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "th": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "tr": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "uk": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "Pi" - } - } - } - }, "machines.auth.checking": { "extractionState": "manual", "localizations": { @@ -235472,256 +235459,6 @@ } } }, - "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": { @@ -238117,419 +237854,6 @@ } } }, - "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": { @@ -292793,596 +292117,6 @@ } } }, - "settings.app.accentColor": { - "localizations": { - "ar": { - "stringUnit": { - "state": "translated", - "value": "لون التمييز" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Boja naglaska" - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "Accentfarve" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Akzentfarbe" - } - }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Accent Color" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Color de acento" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Couleur d’accentuation" - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "Colore di evidenziazione" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アクセントカラー" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "강조 색상" - } - }, - "nb": { - "stringUnit": { - "state": "translated", - "value": "Aksentfarge" - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "value": "Kolor akcentu" - } - }, - "pt-BR": { - "stringUnit": { - "state": "translated", - "value": "Cor de destaque" - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Цвет акцента" - } - }, - "th": { - "stringUnit": { - "state": "translated", - "value": "สีเน้น" - } - }, - "tr": { - "stringUnit": { - "state": "translated", - "value": "Vurgu Rengi" - } - }, - "uk": { - "stringUnit": { - "state": "translated", - "value": "Колір акценту" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "强调色" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "強調色" - } - } - } - }, - "settings.app.accentColor.cmux": { - "localizations": { - "ar": { - "stringUnit": { - "state": "translated", - "value": "أزرق cmux" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "cmux plava" - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "cmux-blå" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "cmux-Blau" - } - }, - "en": { - "stringUnit": { - "state": "translated", - "value": "cmux Blue" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Azul de cmux" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Bleu cmux" - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "Blu cmux" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "cmux ブルー" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "cmux 파란색" - } - }, - "nb": { - "stringUnit": { - "state": "translated", - "value": "cmux-blå" - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "value": "Niebieski cmux" - } - }, - "pt-BR": { - "stringUnit": { - "state": "translated", - "value": "Azul do cmux" - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Синий cmux" - } - }, - "th": { - "stringUnit": { - "state": "translated", - "value": "สีน้ำเงิน cmux" - } - }, - "tr": { - "stringUnit": { - "state": "translated", - "value": "cmux Mavisi" - } - }, - "uk": { - "stringUnit": { - "state": "translated", - "value": "Синій cmux" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "cmux 蓝" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "cmux 藍" - } - } - } - }, - "settings.app.accentColor.subtitle": { - "localizations": { - "ar": { - "stringUnit": { - "state": "translated", - "value": "لون مساحة العمل المحددة وحلقة التنبيه وحالة الوكيل وإبرازات cmux الأخرى. يتبع خيار النظام لون التمييز في macOS." - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Boja odabranog radnog prostora, prstena pažnje, statusa agenta i ostalih cmux istaknutih elemenata. Sistem prati boju naglaska macOS-a." - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "Farve for det valgte arbejdsområde, opmærksomhedsringen, agentstatus og andre cmux-fremhævninger. System følger macOS-accentfarven." - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Farbe des ausgewählten Workspace, des Aufmerksamkeitsrings, des Agentenstatus und anderer cmux-Hervorhebungen. „Systemfarbe“ folgt der macOS-Akzentfarbe." - } - }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Color of the selected workspace, attention ring, agent status, and other cmux highlights. System follows the macOS accent color." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Color del espacio de trabajo seleccionado, el anillo de atención, el estado del agente y otros resaltados de cmux. Sistema sigue el color de acento de macOS." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Couleur de l’espace de travail sélectionné, de l’anneau d’attention, de l’état de l’agent et des autres mises en évidence de cmux. Système suit la couleur d’accentuation de macOS." - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "Colore dell’area di lavoro selezionata, dell’anello di attenzione, dello stato dell’agente e degli altri elementi evidenziati di cmux. Sistema segue il colore di evidenziazione di macOS." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "選択中のワークスペース、注意リング、エージェントの状態など、cmux のハイライトの色です。「システム」は macOS のアクセントカラーに従います。" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "선택한 워크스페이스, 주의 링, 에이전트 상태 등 cmux 강조 표시의 색상입니다. 시스템은 macOS 강조 색상을 따릅니다." - } - }, - "nb": { - "stringUnit": { - "state": "translated", - "value": "Farge for det valgte arbeidsområdet, oppmerksomhetsringen, agentstatus og andre cmux-uthevinger. System følger macOS-aksentfargen." - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "value": "Kolor wybranego obszaru roboczego, pierścienia uwagi, stanu agenta i innych wyróżnień cmux. Systemowy podąża za kolorem akcentu macOS." - } - }, - "pt-BR": { - "stringUnit": { - "state": "translated", - "value": "Cor do espaço de trabalho selecionado, do anel de atenção, do status do agente e de outros destaques do cmux. Sistema segue a cor de destaque do macOS." - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Цвет выбранного рабочего пространства, кольца внимания, статуса агента и других выделений cmux. «Системный» следует цвету акцента macOS." - } - }, - "th": { - "stringUnit": { - "state": "translated", - "value": "สีของพื้นที่ทำงานที่เลือก วงแจ้งเตือน สถานะเอเจนต์ และไฮไลต์อื่นๆ ของ cmux ตัวเลือกระบบจะใช้สีเน้นของ macOS" - } - }, - "tr": { - "stringUnit": { - "state": "translated", - "value": "Seçili çalışma alanı, dikkat halkası, ajan durumu ve diğer cmux vurgularının rengi. Sistem, macOS vurgu rengini izler." - } - }, - "uk": { - "stringUnit": { - "state": "translated", - "value": "Колір вибраного робочого простору, кільця уваги, статусу агента та інших виділень cmux. «Системний» використовує колір акценту macOS." - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "所选工作区、提醒环、代理状态和其他 cmux 高亮的颜色。“系统”跟随 macOS 强调色。" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "所選工作區、提醒環、代理狀態和其他 cmux 醒目提示的顏色。「系統」跟隨 macOS 強調色。" - } - } - } - }, - "settings.app.accentColor.system": { - "localizations": { - "ar": { - "stringUnit": { - "state": "translated", - "value": "النظام" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Sistem" - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "System" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Systemfarbe" - } - }, - "en": { - "stringUnit": { - "state": "translated", - "value": "System" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Sistema" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Système" - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "Sistema" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "システム" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "시스템" - } - }, - "nb": { - "stringUnit": { - "state": "translated", - "value": "System" - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "value": "Systemowy" - } - }, - "pt-BR": { - "stringUnit": { - "state": "translated", - "value": "Sistema" - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Системный" - } - }, - "th": { - "stringUnit": { - "state": "translated", - "value": "ระบบ" - } - }, - "tr": { - "stringUnit": { - "state": "translated", - "value": "Sistem" - } - }, - "uk": { - "stringUnit": { - "state": "translated", - "value": "Системний" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "系统" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "系統" - } - } - } - }, - "settings.app.accentColor.systemToggle": { - "localizations": { - "ar": { - "stringUnit": { - "state": "translated", - "value": "لون التمييز للنظام" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Sistemska boja naglaska" - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "Systemets accentfarve" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "System-Akzentfarbe" - } - }, - "en": { - "stringUnit": { - "state": "translated", - "value": "System Accent Color" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Color de acento del sistema" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Couleur d’accentuation du système" - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "Colore di evidenziazione di sistema" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "システムのアクセントカラー" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "시스템 강조 색상" - } - }, - "nb": { - "stringUnit": { - "state": "translated", - "value": "Systemets aksentfarge" - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "value": "Systemowy kolor akcentu" - } - }, - "pt-BR": { - "stringUnit": { - "state": "translated", - "value": "Cor de destaque do sistema" - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Системный цвет акцента" - } - }, - "th": { - "stringUnit": { - "state": "translated", - "value": "สีเน้นของระบบ" - } - }, - "tr": { - "stringUnit": { - "state": "translated", - "value": "Sistem Vurgu Rengi" - } - }, - "uk": { - "stringUnit": { - "state": "translated", - "value": "Системний колір акценту" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "系统强调色" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "系統強調色" - } - } - } - }, "settings.app.appearance": { "extractionState": "manual", "localizations": { @@ -345952,124 +344686,6 @@ } } }, - "settings.search.alias.setting.app.accent-color": { - "localizations": { - "ar": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue لون التمييز أزرق النظام" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue boja naglaska plava sistem" - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue accentfarve blå system" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue Akzentfarbe blau System" - } - }, - "en": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue color de acento azul sistema" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue couleur d’accentuation bleu système" - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue colore di evidenziazione blu sistema" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue アクセントカラー 青 システム" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue 강조 색상 파란색 시스템" - } - }, - "nb": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue aksentfarge blå system" - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue kolor akcentu niebieski systemowy" - } - }, - "pt-BR": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue cor de destaque azul sistema" - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue цвет акцента синий системный" - } - }, - "th": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue สีเน้น สีน้ำเงิน ระบบ" - } - }, - "tr": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue vurgu rengi mavi sistem" - } - }, - "uk": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue колір акценту синій системний" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue 强调色 蓝色 系统" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue 強調色 藍色 系統" - } - } - } - }, "settings.search.alias.setting.app.appearance": { "extractionState": "manual", "localizations": { @@ -353778,124 +352394,6 @@ } } }, - "settings.search.alias.setting.browser.hidden-webview-discard-mode": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload メモリセーバー モード 予算 タイマー 非表示 タブ 破棄 解放" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload Speichersparmodus Modus Budget zeitgesteuert ausgeblendete Tabs verwerfen entladen" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload économiseur de mémoire mode budget minuteur onglets masqués rejeter décharger" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload توفير الذاكرة وضع ميزانية مؤقت علامات تبويب مخفية تجاهل إلغاء تحميل" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload ahorro de memoria modo presupuesto temporizador pestañas ocultas descartar descargar" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload 記憶體節省 方式 預算 計時器 隱藏 標籤頁 捨棄 卸載" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload 内存节省 方式 预算 计时器 隐藏 标签页 丢弃 卸载" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload 메모리 절약 방식 예산 타이머 숨겨진 탭 삭제 언로드" - } - } - } - }, - "settings.search.alias.setting.browser.hidden-webview-memory-budget": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload メモリ 予算 上限 メガバイト 非表示 タブ 破棄 解放" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload Speicher Budget Limit Megabyte ausgeblendete Tabs verwerfen entladen" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload mémoire budget limite mégaoctets onglets masqués rejeter décharger" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload ذاكرة ميزانية حد ميغابايت علامات تبويب مخفية تجاهل إلغاء تحميل" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload memoria presupuesto límite megabytes pestañas ocultas descartar descargar" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload 記憶體 預算 上限 MB 隱藏 標籤頁 捨棄 卸載" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload 内存 预算 上限 MB 隐藏 标签页 丢弃 卸载" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload 메모리 예산 한도 메가바이트 숨겨진 탭 삭제 언로드" - } - } - } - }, "settings.search.alias.setting.browser.hidden-webview-discard-delay": { "extractionState": "manual", "localizations": { @@ -549995,54 +548493,14 @@ "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": { @@ -550819,6 +549277,662 @@ } } }, + "machines.agent.pi": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "bs": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "km": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "nb": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "pl": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "Pi" + } + } + } + }, + "cli.setBuffer.error.invalidUTF8": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "set-buffer: stdin is not valid UTF-8 text" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "set-buffer: محتوى stdin ليس نص UTF-8 صالحًا" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "set-buffer: stdin ist kein gültiger UTF-8-Text" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "set-buffer: stdin no es texto UTF-8 válido" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "set-buffer : stdin n’est pas un texte UTF-8 valide" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "set-buffer: stdin が有効な UTF-8 テキストではありません" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "set-buffer: stdin이 유효한 UTF-8 텍스트가 아닙니다" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "set-buffer:stdin 不是有效的 UTF-8 文本" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "set-buffer:stdin 不是有效的 UTF-8 文字" + } + } + } + }, + "cli.help.paste": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "الاستخدام: cmux paste [flags] [--] [text | -]\n\nيلصق نصًا في سطح طرفية عبر مسار اللصق نفسه الذي يستخدمه Cmd+V. إذا كان البرنامج قيد التشغيل قد فعّل اللصق المحاط (bracketed paste)، يصل النص كلصقة واحدة وتبقى الأسطر الجديدة داخلها؛ وإلا يُرسل كل سطر جديد كضغطة Enter. كما في Cmd+V، تُستبدل أحرف التحكم مثل Esc وBackspace وCtrl-C وCtrl-U بمسافات. لا تُفسَّر تسلسلات الهروب مثل \\n. بدون وسيطة نصية، أو مع - قبل --، يُقرأ النص من stdin. يُرفض النص الذي يتجاوز 15 ميبيبايت بعد ترميز JSON.\n\nإذا كانت مطالبة الوكيل في الهدف تحتوي على نص يكتبه شخص ما، أو كان هناك سؤال أو مربع حوار أذونات مفتوح، فلن يُرسل شيء ويفشل الأمر. يرسل --force على أي حال.\n\nالخيارات:\n --workspace <id|ref|index> مساحة العمل المستهدفة (الافتراضي: $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> السطح المستهدف (الافتراضي: $CMUX_SURFACE_ID)\n --window <id|ref|index> سياق النافذة لمراجع وفهارس مساحة العمل/السطح\n --submit يضغط مفتاح الإرسال الخاص بالوكيل بعد اللصق\n --force الإرسال حتى فوق مسودة أو إلى مربع حوار مفتوح\n\nمثال:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Verwendung: cmux paste [flags] [--] [text | -]\n\nFügt Text über denselben Einfügepfad wie Cmd+V in eine Terminal-Oberfläche ein. Hat das laufende Programm Bracketed Paste aktiviert, kommt der Text als ein einziges Einfügen an und Zeilenumbrüche bleiben darin erhalten; andernfalls wird jeder Zeilenumbruch als Enter gesendet. Wie bei Cmd+V werden Steuerzeichen wie Esc, Rücktaste, Strg-C und Strg-U durch Leerzeichen ersetzt. Escape-Sequenzen wie \\n werden nicht interpretiert. Ohne Textargument oder mit - vor -- wird der Text von stdin gelesen. Text über 15 MiB nach JSON-Escaping wird abgelehnt.\n\nWenn eine Agent-Eingabe im Ziel Text enthält, den jemand gerade tippt, oder eine Frage oder ein Berechtigungsdialog offen ist, wird nichts gesendet und der Befehl schlägt fehl. --force sendet trotzdem.\n\nFlags:\n --workspace <id|ref|index> Ziel-Workspace (Standard: $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> Ziel-Oberfläche (Standard: $CMUX_SURFACE_ID)\n --window <id|ref|index> Fensterkontext für Workspace-/Oberflächen-Refs und -Indizes\n --submit Drückt nach dem Einfügen die Absende-Taste des Agenten\n --force Auch über einen Entwurf oder in einen offenen Dialog senden\n\nBeispiel:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Usage: cmux paste [flags] [--] [text | -]\n\nPaste text into a terminal surface through the same paste path as Cmd+V. If the running program has turned on bracketed paste, the text arrives as one paste and newlines stay inside it; otherwise each newline is sent as Enter. As with Cmd+V, control characters such as Esc, Backspace, Ctrl-C and Ctrl-U are replaced with spaces. Escape sequences such as \\n are not interpreted. With no text argument, or with - before --, the text is read from stdin. Text over 15 MiB after JSON escaping is rejected.\n\nIf an agent prompt in the target holds text someone is typing, or a question or permission dialog is open, nothing is sent and the command fails. --force sends anyway.\n\nFlags:\n --workspace <id|ref|index> Target workspace (default: $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> Target surface (default: $CMUX_SURFACE_ID)\n --window <id|ref|index> Window context for workspace/surface refs and indexes\n --submit Press the agent's submit key after the paste\n --force Send even over a draft or into an open dialog\n\nExample:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Uso: cmux paste [flags] [--] [text | -]\n\nPega texto en una superficie de terminal por la misma ruta de pegado que Cmd+V. Si el programa en ejecución activó el pegado entre corchetes (bracketed paste), el texto llega como un único pegado y los saltos de línea se conservan dentro; si no, cada salto de línea se envía como Intro. Igual que con Cmd+V, los caracteres de control como Esc, Retroceso, Ctrl-C y Ctrl-U se sustituyen por espacios. Las secuencias de escape como \\n no se interpretan. Sin argumento de texto, o con - antes de --, el texto se lee de stdin. Se rechaza el texto de más de 15 MiB tras el escapado JSON.\n\nSi el prompt de un agente en el destino contiene texto que alguien está escribiendo, o hay una pregunta o un diálogo de permisos abierto, no se envía nada y el comando falla. --force lo envía de todos modos.\n\nOpciones:\n --workspace <id|ref|index> Espacio de trabajo de destino (predeterminado: $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> Superficie de destino (predeterminada: $CMUX_SURFACE_ID)\n --window <id|ref|index> Contexto de ventana para referencias e índices de espacio de trabajo/superficie\n --submit Pulsa la tecla de envío del agente después del pegado\n --force Enviar aunque haya un borrador o un diálogo abierto\n\nEjemplo:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Utilisation : cmux paste [flags] [--] [text | -]\n\nColle du texte dans une surface de terminal par le même chemin de collage que Cmd+V. Si le programme en cours a activé le collage entre crochets (bracketed paste), le texte arrive en un seul collage et les retours à la ligne y restent ; sinon, chaque retour à la ligne est envoyé comme Entrée. Comme avec Cmd+V, les caractères de contrôle tels que Échap, Retour arrière, Ctrl-C et Ctrl-U sont remplacés par des espaces. Les séquences d’échappement comme \\n ne sont pas interprétées. Sans argument texte, ou avec - avant --, le texte est lu depuis stdin. Un texte de plus de 15 Mio après échappement JSON est refusé.\n\nSi l'invite d'un agent dans la cible contient du texte en cours de saisie, ou si une question ou une boîte de dialogue d'autorisation est ouverte, rien n'est envoyé et la commande échoue. --force envoie quand même.\n\nOptions :\n --workspace <id|ref|index> Espace de travail cible (par défaut : $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> Surface cible (par défaut : $CMUX_SURFACE_ID)\n --window <id|ref|index> Contexte de fenêtre pour les références et index d’espace de travail/surface\n --submit Appuie sur la touche d’envoi de l’agent après le collage\n --force Envoyer même par-dessus un brouillon ou dans une boîte de dialogue ouverte\n\nExemple :\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "使用方法: cmux paste [flags] [--] [text | -]\n\nCmd+V と同じ貼り付け経路で、ターミナルサーフェスにテキストを貼り付けます。実行中のプログラムがブラケットペースト(bracketed paste)を有効にしている場合、テキストは 1 回の貼り付けとして届き、改行はその中に残ります。そうでない場合、各改行は Enter として送信されます。Cmd+V と同様に、Esc、Backspace、Ctrl-C、Ctrl-U などの制御文字は空白に置き換えられます。\\n などのエスケープシーケンスは解釈されません。テキスト引数がない場合や -- より前に - を指定した場合は、stdin からテキストを読み取ります。JSON エスケープ後に 15 MiB を超えるテキストは拒否されます。\n\n対象のエージェントのプロンプトに誰かが入力中のテキストがある場合、または質問や権限ダイアログが開いている場合は、何も送信されずコマンドは失敗します。--force を指定すると送信します。\n\nフラグ:\n --workspace <id|ref|index> 対象ワークスペース(既定: $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> 対象サーフェス(既定: $CMUX_SURFACE_ID)\n --window <id|ref|index> ワークスペース/サーフェスの参照とインデックスに使うウィンドウコンテキスト\n --submit 貼り付け後にエージェントの送信キーを押す\n --force 下書きや開いているダイアログがあっても送信します\n\n例:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "사용법: cmux paste [flags] [--] [text | -]\n\nCmd+V와 같은 붙여넣기 경로로 터미널 서피스에 텍스트를 붙여넣습니다. 실행 중인 프로그램이 브래킷 붙여넣기(bracketed paste)를 켰다면 텍스트는 하나의 붙여넣기로 도착하고 줄바꿈이 그 안에 유지됩니다. 그렇지 않으면 각 줄바꿈이 Enter로 전송됩니다. Cmd+V와 마찬가지로 Esc, Backspace, Ctrl-C, Ctrl-U 같은 제어 문자는 공백으로 바뀝니다. \\n 같은 이스케이프 시퀀스는 해석되지 않습니다. 텍스트 인수가 없거나 -- 앞에 -를 주면 stdin에서 텍스트를 읽습니다. JSON 이스케이프 후 15MiB를 넘는 텍스트는 거부됩니다.\n\n대상의 에이전트 프롬프트에 누군가 입력 중인 텍스트가 있거나 질문 또는 권한 대화상자가 열려 있으면 아무것도 보내지 않고 명령이 실패합니다. --force를 지정하면 그래도 보냅니다.\n\n플래그:\n --workspace <id|ref|index> 대상 워크스페이스 (기본값: $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> 대상 서피스 (기본값: $CMUX_SURFACE_ID)\n --window <id|ref|index> 워크스페이스/서피스 참조와 인덱스에 사용할 창 컨텍스트\n --submit 붙여넣은 뒤 에이전트의 제출 키를 누릅니다\n --force 초안이 있거나 대화상자가 열려 있어도 보냅니다\n\n예:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "用法:cmux paste [flags] [--] [text | -]\n\n通过与 Cmd+V 相同的粘贴路径,将文本粘贴到终端表面。如果正在运行的程序已启用括号粘贴(bracketed paste),文本会作为一次粘贴到达,换行保留在其中;否则每个换行都会作为 Enter 发送。与 Cmd+V 一样,Esc、Backspace、Ctrl-C、Ctrl-U 等控制字符会被替换为空格。不会解析 \\n 等转义序列。未提供文本参数,或在 -- 之前使用 - 时,从 stdin 读取文本。经 JSON 转义后超过 15 MiB 的文本会被拒绝。\n\n如果目标中的代理提示里有人正在输入文本,或有问题或权限对话框处于打开状态,则不会发送任何内容,命令会失败。使用 --force 可强制发送。\n\n标志:\n --workspace <id|ref|index> 目标工作区(默认:$CMUX_WORKSPACE_ID)\n --surface <id|ref|index> 目标表面(默认:$CMUX_SURFACE_ID)\n --window <id|ref|index> 工作区/表面引用与索引的窗口上下文\n --submit 粘贴后按下代理的提交键\n --force 即使有草稿或对话框打开也发送\n\n示例:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "用法:cmux paste [flags] [--] [text | -]\n\n透過與 Cmd+V 相同的貼上路徑,將文字貼到終端機表面。如果執行中的程式已啟用括號貼上(bracketed paste),文字會以單次貼上送達,換行會保留在其中;否則每個換行都會以 Enter 送出。與 Cmd+V 相同,Esc、Backspace、Ctrl-C、Ctrl-U 等控制字元會被替換為空格。不會解讀 \\n 等跳脫序列。未提供文字參數,或在 -- 之前使用 - 時,會從 stdin 讀取文字。經 JSON 跳脫後超過 15 MiB 的文字會被拒絕。\n\n如果目標中的代理程式提示裡有人正在輸入文字,或有問題或權限對話框開啟,則不會傳送任何內容,指令會失敗。使用 --force 可強制傳送。\n\n旗標:\n --workspace <id|ref|index> 目標工作區(預設:$CMUX_WORKSPACE_ID)\n --surface <id|ref|index> 目標表面(預設:$CMUX_SURFACE_ID)\n --window <id|ref|index> 工作區/表面參照與索引所用的視窗上下文\n --submit 貼上後按下代理程式的送出鍵\n --force 即使有草稿或對話框開啟也傳送\n\n範例:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + } + } + } + }, + "cli.paste.error.invalidUTF8": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "paste: stdin is not valid UTF-8 text" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "paste: محتوى stdin ليس نص UTF-8 صالحًا" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "paste: stdin ist kein gültiger UTF-8-Text" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "paste: stdin no es texto UTF-8 válido" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "paste : stdin n’est pas un texte UTF-8 valide" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "paste: stdin が有効な UTF-8 テキストではありません" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "paste: stdin이 유효한 UTF-8 텍스트가 아닙니다" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "paste:stdin 不是有效的 UTF-8 文本" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "paste:stdin 不是有效的 UTF-8 文字" + } + } + } + }, + "cli.paste.error.missingText": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "paste requires text as an argument or on stdin" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "يتطلب paste نصًا كوسيطة أو عبر stdin" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "paste benötigt Text als Argument oder über stdin" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "paste requiere texto como argumento o en stdin" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "paste nécessite du texte en argument ou sur stdin" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "paste には引数または stdin からのテキストが必要です" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "paste에는 인수 또는 stdin으로 텍스트가 필요합니다" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "paste 需要通过参数或 stdin 提供文本" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "paste 需要以參數或 stdin 提供文字" + } + } + } + }, + "cli.paste.warning.submitFailed": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "warning: text was pasted but the submit key was not sent (%@)" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تحذير: تم لصق النص لكن لم يُرسل مفتاح الإرسال (%@)" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Warnung: Der Text wurde eingefügt, aber die Absende-Taste wurde nicht gesendet (%@)" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "advertencia: el texto se pegó pero no se envió la tecla de envío (%@)" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "avertissement : le texte a été collé mais la touche d’envoi n’a pas été envoyée (%@)" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "警告: テキストは貼り付けられましたが、送信キーは送られませんでした(%@)" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "경고: 텍스트는 붙여넣었지만 제출 키를 보내지 못했습니다 (%@)" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "警告:文本已粘贴,但未发送提交键(%@)" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "警告:文字已貼上,但未送出送出鍵(%@)" + } + } + } + }, + "cli.paste.error.textAndStdin": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "paste: pass text or -, not both" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "paste: مرّر نصًا أو -، وليس كليهما" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "paste: Text oder - angeben, nicht beides" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "paste: pasa texto o -, no ambos" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "paste : indiquez du texte ou -, pas les deux" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "paste: テキストか - のどちらか一方を指定してください" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "paste: 텍스트 또는 - 중 하나만 전달하세요" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "paste:请提供文本或 -,不能同时提供" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "paste:請提供文字或 -,不能同時提供" + } + } + } + }, + "cli.paste.error.unknownFlag": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "paste: unknown flag or missing value: %@ (put text that starts with - after a -- separator)" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "paste: خيار غير معروف أو قيمة مفقودة: %@ (ضع النص الذي يبدأ بـ - بعد فاصل --)" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "paste: unbekanntes Flag oder fehlender Wert: %@ (Text, der mit - beginnt, nach einem Trennzeichen -- angeben)" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "paste: opción desconocida o valor faltante: %@ (coloca el texto que empieza por - después de un separador --)" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "paste : option inconnue ou valeur manquante : %@ (placez le texte qui commence par - après un séparateur --)" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "paste: 不明なフラグ、または値がありません: %@(- で始まるテキストは -- 区切りの後に置いてください)" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "paste: 알 수 없는 플래그이거나 값이 없습니다: %@ (-로 시작하는 텍스트는 -- 구분자 뒤에 넣으세요)" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "paste:未知标志或缺少值:%@(以 - 开头的文本请放在 -- 分隔符之后)" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "paste:未知的旗標或缺少值:%@(以 - 開頭的文字請放在 -- 分隔符之後)" + } + } + } + }, + "cli.paste.error.tooLarge": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "%@: text is too large; the limit is %@ MiB after JSON escaping" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "%@: النص كبير جدًا؛ الحد هو %@ ميبيبايت بعد ترميز JSON" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "%@: Text ist zu groß; die Grenze liegt bei %@ MiB nach JSON-Escaping" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "%@: el texto es demasiado grande; el límite es de %@ MiB tras el escapado JSON" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "%@ : le texte est trop volumineux ; la limite est de %@ Mio après échappement JSON" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@: テキストが大きすぎます。JSON エスケープ後の上限は %@ MiB です" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "%@: 텍스트가 너무 큽니다. JSON 이스케이프 후 한도는 %@MiB입니다" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "%@:文本过大;经 JSON 转义后的上限为 %@ MiB" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "%@:文字過大;經 JSON 跳脫後的上限為 %@ MiB" + } + } + } + }, + "globalSearch.kind.terminal": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Terminal" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ターミナル" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "터미널" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "طرفية" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "終端" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "终端" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Terminal" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Terminal" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Terminal" + } + } + } + }, "terminal.passwordInput.indicator": { "extractionState": "manual", "localizations": { @@ -551114,474 +550228,1247 @@ } } }, - "cli.setBuffer.error.invalidUTF8": { + "browser.omnibar.accessibilityLabel": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "set-buffer: stdin is not valid UTF-8 text" + "value": "Address and search bar" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Adress- und Suchleiste" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Barre d’adresse et de recherche" } }, "ar": { "stringUnit": { "state": "translated", - "value": "set-buffer: محتوى stdin ليس نص UTF-8 صالحًا" + "value": "شريط العنوان والبحث" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Barra de direcciones y búsqueda" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "網址與搜尋列" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "地址和搜索栏" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "주소 및 검색 막대" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アドレスと検索バー" + } + } + } + }, + "projectPanel.reload": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Reload Project" } }, "de": { "stringUnit": { "state": "translated", - "value": "set-buffer: stdin ist kein gültiger UTF-8-Text" + "value": "Projekt neu laden" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Recharger le projet" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "إعادة تحميل المشروع" } }, "es": { "stringUnit": { "state": "translated", - "value": "set-buffer: stdin no es texto UTF-8 válido" + "value": "Recargar proyecto" } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "set-buffer : stdin n’est pas un texte UTF-8 valide" + "value": "重新載入專案" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "set-buffer: stdin が有効な UTF-8 テキストではありません" + "value": "重新加载项目" } }, "ko": { "stringUnit": { "state": "translated", - "value": "set-buffer: stdin이 유효한 UTF-8 텍스트가 아닙니다" + "value": "프로젝트 다시 불러오기" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "set-buffer:stdin 不是有效的 UTF-8 文本" + "value": "プロジェクトを再読み込み" + } + } + } + }, + "projectPanel.reloadErrors": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Reload returned errors: %@" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Beim Neuladen sind Fehler aufgetreten: %@" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Le rechargement a renvoyé des erreurs : %@" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "أعادت إعادة التحميل أخطاء: %@" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "La recarga devolvió errores: %@" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "set-buffer:stdin 不是有效的 UTF-8 文字" + "value": "重新載入時發生錯誤:%@" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "重新加载时出现错误:%@" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "다시 불러오기 중 오류 발생: %@" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "再読み込みでエラーが発生しました: %@" } } } }, - "cli.help.paste": { + "projectPanel.dismissReloadErrors": { "extractionState": "manual", "localizations": { - "ar": { + "en": { "stringUnit": { "state": "translated", - "value": "الاستخدام: cmux paste [flags] [--] [text | -]\n\nيلصق نصًا في سطح طرفية عبر مسار اللصق نفسه الذي يستخدمه Cmd+V. إذا كان البرنامج قيد التشغيل قد فعّل اللصق المحاط (bracketed paste)، يصل النص كلصقة واحدة وتبقى الأسطر الجديدة داخلها؛ وإلا يُرسل كل سطر جديد كضغطة Enter. كما في Cmd+V، تُستبدل أحرف التحكم مثل Esc وBackspace وCtrl-C وCtrl-U بمسافات. لا تُفسَّر تسلسلات الهروب مثل \\n. بدون وسيطة نصية، أو مع - قبل --، يُقرأ النص من stdin. يُرفض النص الذي يتجاوز 15 ميبيبايت بعد ترميز JSON.\n\nإذا كانت مطالبة الوكيل في الهدف تحتوي على نص يكتبه شخص ما، أو كان هناك سؤال أو مربع حوار أذونات مفتوح، فلن يُرسل شيء ويفشل الأمر. يرسل --force على أي حال.\n\nالخيارات:\n --workspace <id|ref|index> مساحة العمل المستهدفة (الافتراضي: $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> السطح المستهدف (الافتراضي: $CMUX_SURFACE_ID)\n --window <id|ref|index> سياق النافذة لمراجع وفهارس مساحة العمل/السطح\n --submit يضغط مفتاح الإرسال الخاص بالوكيل بعد اللصق\n --force الإرسال حتى فوق مسودة أو إلى مربع حوار مفتوح\n\nمثال:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + "value": "Dismiss Errors" } }, "de": { "stringUnit": { "state": "translated", - "value": "Verwendung: cmux paste [flags] [--] [text | -]\n\nFügt Text über denselben Einfügepfad wie Cmd+V in eine Terminal-Oberfläche ein. Hat das laufende Programm Bracketed Paste aktiviert, kommt der Text als ein einziges Einfügen an und Zeilenumbrüche bleiben darin erhalten; andernfalls wird jeder Zeilenumbruch als Enter gesendet. Wie bei Cmd+V werden Steuerzeichen wie Esc, Rücktaste, Strg-C und Strg-U durch Leerzeichen ersetzt. Escape-Sequenzen wie \\n werden nicht interpretiert. Ohne Textargument oder mit - vor -- wird der Text von stdin gelesen. Text über 15 MiB nach JSON-Escaping wird abgelehnt.\n\nWenn eine Agent-Eingabe im Ziel Text enthält, den jemand gerade tippt, oder eine Frage oder ein Berechtigungsdialog offen ist, wird nichts gesendet und der Befehl schlägt fehl. --force sendet trotzdem.\n\nFlags:\n --workspace <id|ref|index> Ziel-Workspace (Standard: $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> Ziel-Oberfläche (Standard: $CMUX_SURFACE_ID)\n --window <id|ref|index> Fensterkontext für Workspace-/Oberflächen-Refs und -Indizes\n --submit Drückt nach dem Einfügen die Absende-Taste des Agenten\n --force Auch über einen Entwurf oder in einen offenen Dialog senden\n\nBeispiel:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + "value": "Fehler ausblenden" } }, - "en": { + "fr": { "stringUnit": { "state": "translated", - "value": "Usage: cmux paste [flags] [--] [text | -]\n\nPaste text into a terminal surface through the same paste path as Cmd+V. If the running program has turned on bracketed paste, the text arrives as one paste and newlines stay inside it; otherwise each newline is sent as Enter. As with Cmd+V, control characters such as Esc, Backspace, Ctrl-C and Ctrl-U are replaced with spaces. Escape sequences such as \\n are not interpreted. With no text argument, or with - before --, the text is read from stdin. Text over 15 MiB after JSON escaping is rejected.\n\nIf an agent prompt in the target holds text someone is typing, or a question or permission dialog is open, nothing is sent and the command fails. --force sends anyway.\n\nFlags:\n --workspace <id|ref|index> Target workspace (default: $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> Target surface (default: $CMUX_SURFACE_ID)\n --window <id|ref|index> Window context for workspace/surface refs and indexes\n --submit Press the agent's submit key after the paste\n --force Send even over a draft or into an open dialog\n\nExample:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + "value": "Ignorer les erreurs" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تجاهل الأخطاء" } }, "es": { "stringUnit": { "state": "translated", - "value": "Uso: cmux paste [flags] [--] [text | -]\n\nPega texto en una superficie de terminal por la misma ruta de pegado que Cmd+V. Si el programa en ejecución activó el pegado entre corchetes (bracketed paste), el texto llega como un único pegado y los saltos de línea se conservan dentro; si no, cada salto de línea se envía como Intro. Igual que con Cmd+V, los caracteres de control como Esc, Retroceso, Ctrl-C y Ctrl-U se sustituyen por espacios. Las secuencias de escape como \\n no se interpretan. Sin argumento de texto, o con - antes de --, el texto se lee de stdin. Se rechaza el texto de más de 15 MiB tras el escapado JSON.\n\nSi el prompt de un agente en el destino contiene texto que alguien está escribiendo, o hay una pregunta o un diálogo de permisos abierto, no se envía nada y el comando falla. --force lo envía de todos modos.\n\nOpciones:\n --workspace <id|ref|index> Espacio de trabajo de destino (predeterminado: $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> Superficie de destino (predeterminada: $CMUX_SURFACE_ID)\n --window <id|ref|index> Contexto de ventana para referencias e índices de espacio de trabajo/superficie\n --submit Pulsa la tecla de envío del agente después del pegado\n --force Enviar aunque haya un borrador o un diálogo abierto\n\nEjemplo:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + "value": "Descartar errores" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "關閉錯誤" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "关闭错误" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "오류 닫기" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "エラーを閉じる" + } + } + } + }, + "projectPanel.scheme": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Scheme" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Schema" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Utilisation : cmux paste [flags] [--] [text | -]\n\nColle du texte dans une surface de terminal par le même chemin de collage que Cmd+V. Si le programme en cours a activé le collage entre crochets (bracketed paste), le texte arrive en un seul collage et les retours à la ligne y restent ; sinon, chaque retour à la ligne est envoyé comme Entrée. Comme avec Cmd+V, les caractères de contrôle tels que Échap, Retour arrière, Ctrl-C et Ctrl-U sont remplacés par des espaces. Les séquences d’échappement comme \\n ne sont pas interprétées. Sans argument texte, ou avec - avant --, le texte est lu depuis stdin. Un texte de plus de 15 Mio après échappement JSON est refusé.\n\nSi l'invite d'un agent dans la cible contient du texte en cours de saisie, ou si une question ou une boîte de dialogue d'autorisation est ouverte, rien n'est envoyé et la commande échoue. --force envoie quand même.\n\nOptions :\n --workspace <id|ref|index> Espace de travail cible (par défaut : $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> Surface cible (par défaut : $CMUX_SURFACE_ID)\n --window <id|ref|index> Contexte de fenêtre pour les références et index d’espace de travail/surface\n --submit Appuie sur la touche d’envoi de l’agent après le collage\n --force Envoyer même par-dessus un brouillon ou dans une boîte de dialogue ouverte\n\nExemple :\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + "value": "Schéma" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "المخطط" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Esquema" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "方案" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "方案" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "스킴" } }, "ja": { "stringUnit": { "state": "translated", - "value": "使用方法: cmux paste [flags] [--] [text | -]\n\nCmd+V と同じ貼り付け経路で、ターミナルサーフェスにテキストを貼り付けます。実行中のプログラムがブラケットペースト(bracketed paste)を有効にしている場合、テキストは 1 回の貼り付けとして届き、改行はその中に残ります。そうでない場合、各改行は Enter として送信されます。Cmd+V と同様に、Esc、Backspace、Ctrl-C、Ctrl-U などの制御文字は空白に置き換えられます。\\n などのエスケープシーケンスは解釈されません。テキスト引数がない場合や -- より前に - を指定した場合は、stdin からテキストを読み取ります。JSON エスケープ後に 15 MiB を超えるテキストは拒否されます。\n\n対象のエージェントのプロンプトに誰かが入力中のテキストがある場合、または質問や権限ダイアログが開いている場合は、何も送信されずコマンドは失敗します。--force を指定すると送信します。\n\nフラグ:\n --workspace <id|ref|index> 対象ワークスペース(既定: $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> 対象サーフェス(既定: $CMUX_SURFACE_ID)\n --window <id|ref|index> ワークスペース/サーフェスの参照とインデックスに使うウィンドウコンテキスト\n --submit 貼り付け後にエージェントの送信キーを押す\n --force 下書きや開いているダイアログがあっても送信します\n\n例:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + "value": "スキーム" + } + } + } + }, + "projectPanel.configuration": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Configuration" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Konfiguration" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Configuration de build" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "التكوين" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Configuración" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "組態" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "配置" } }, "ko": { "stringUnit": { "state": "translated", - "value": "사용법: cmux paste [flags] [--] [text | -]\n\nCmd+V와 같은 붙여넣기 경로로 터미널 서피스에 텍스트를 붙여넣습니다. 실행 중인 프로그램이 브래킷 붙여넣기(bracketed paste)를 켰다면 텍스트는 하나의 붙여넣기로 도착하고 줄바꿈이 그 안에 유지됩니다. 그렇지 않으면 각 줄바꿈이 Enter로 전송됩니다. Cmd+V와 마찬가지로 Esc, Backspace, Ctrl-C, Ctrl-U 같은 제어 문자는 공백으로 바뀝니다. \\n 같은 이스케이프 시퀀스는 해석되지 않습니다. 텍스트 인수가 없거나 -- 앞에 -를 주면 stdin에서 텍스트를 읽습니다. JSON 이스케이프 후 15MiB를 넘는 텍스트는 거부됩니다.\n\n대상의 에이전트 프롬프트에 누군가 입력 중인 텍스트가 있거나 질문 또는 권한 대화상자가 열려 있으면 아무것도 보내지 않고 명령이 실패합니다. --force를 지정하면 그래도 보냅니다.\n\n플래그:\n --workspace <id|ref|index> 대상 워크스페이스 (기본값: $CMUX_WORKSPACE_ID)\n --surface <id|ref|index> 대상 서피스 (기본값: $CMUX_SURFACE_ID)\n --window <id|ref|index> 워크스페이스/서피스 참조와 인덱스에 사용할 창 컨텍스트\n --submit 붙여넣은 뒤 에이전트의 제출 키를 누릅니다\n --force 초안이 있거나 대화상자가 열려 있어도 보냅니다\n\n예:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + "value": "구성" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "構成" + } + } + } + }, + "projectPanel.loadingFormat": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Loading %@" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "%@ wird geladen" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Chargement de %@" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "جارٍ تحميل %@" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Cargando %@" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "正在載入 %@" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "用法:cmux paste [flags] [--] [text | -]\n\n通过与 Cmd+V 相同的粘贴路径,将文本粘贴到终端表面。如果正在运行的程序已启用括号粘贴(bracketed paste),文本会作为一次粘贴到达,换行保留在其中;否则每个换行都会作为 Enter 发送。与 Cmd+V 一样,Esc、Backspace、Ctrl-C、Ctrl-U 等控制字符会被替换为空格。不会解析 \\n 等转义序列。未提供文本参数,或在 -- 之前使用 - 时,从 stdin 读取文本。经 JSON 转义后超过 15 MiB 的文本会被拒绝。\n\n如果目标中的代理提示里有人正在输入文本,或有问题或权限对话框处于打开状态,则不会发送任何内容,命令会失败。使用 --force 可强制发送。\n\n标志:\n --workspace <id|ref|index> 目标工作区(默认:$CMUX_WORKSPACE_ID)\n --surface <id|ref|index> 目标表面(默认:$CMUX_SURFACE_ID)\n --window <id|ref|index> 工作区/表面引用与索引的窗口上下文\n --submit 粘贴后按下代理的提交键\n --force 即使有草稿或对话框打开也发送\n\n示例:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + "value": "正在加载 %@" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "%@ 불러오는 중" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%@ を読み込み中" + } + } + } + }, + "projectPanel.failedFormat": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Failed: %@" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Fehlgeschlagen: %@" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Échec : %@" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "فشل: %@" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Error: %@" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "用法:cmux paste [flags] [--] [text | -]\n\n透過與 Cmd+V 相同的貼上路徑,將文字貼到終端機表面。如果執行中的程式已啟用括號貼上(bracketed paste),文字會以單次貼上送達,換行會保留在其中;否則每個換行都會以 Enter 送出。與 Cmd+V 相同,Esc、Backspace、Ctrl-C、Ctrl-U 等控制字元會被替換為空格。不會解讀 \\n 等跳脫序列。未提供文字參數,或在 -- 之前使用 - 時,會從 stdin 讀取文字。經 JSON 跳脫後超過 15 MiB 的文字會被拒絕。\n\n如果目標中的代理程式提示裡有人正在輸入文字,或有問題或權限對話框開啟,則不會傳送任何內容,指令會失敗。使用 --force 可強制傳送。\n\n旗標:\n --workspace <id|ref|index> 目標工作區(預設:$CMUX_WORKSPACE_ID)\n --surface <id|ref|index> 目標表面(預設:$CMUX_SURFACE_ID)\n --window <id|ref|index> 工作區/表面參照與索引所用的視窗上下文\n --submit 貼上後按下代理程式的送出鍵\n --force 即使有草稿或對話框開啟也傳送\n\n範例:\n git diff | cmux paste --surface surface:2\n cmux read-screen --surface surface:1 --lines 40 | cmux paste --surface surface:2\n cmux paste --surface surface:2 --submit \"Review this change\"" + "value": "失敗:%@" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "失败:%@" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "실패: %@" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "失敗: %@" } } } }, - "cli.paste.error.invalidUTF8": { + "dialog.close.dontAskAgain": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "paste: stdin is not valid UTF-8 text" + "value": "Don’t ask again" } }, "ar": { "stringUnit": { "state": "translated", - "value": "paste: محتوى stdin ليس نص UTF-8 صالحًا" + "value": "لا تسأل مرة أخرى" } }, "de": { "stringUnit": { "state": "translated", - "value": "paste: stdin ist kein gültiger UTF-8-Text" + "value": "Nicht mehr fragen" } }, "es": { "stringUnit": { "state": "translated", - "value": "paste: stdin no es texto UTF-8 válido" + "value": "No volver a preguntar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "paste : stdin n’est pas un texte UTF-8 valide" + "value": "Ne plus demander" } }, "ja": { "stringUnit": { "state": "translated", - "value": "paste: stdin が有効な UTF-8 テキストではありません" + "value": "今後確認しない" } }, "ko": { "stringUnit": { "state": "translated", - "value": "paste: stdin이 유효한 UTF-8 텍스트가 아닙니다" + "value": "다시 묻지 않기" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Більше не запитувати" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "paste:stdin 不是有效的 UTF-8 文本" + "value": "不再询问" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "paste:stdin 不是有效的 UTF-8 文字" + "value": "不再詢問" } } } }, - "cli.paste.error.missingText": { - "extractionState": "manual", + "settings.app.accentColor": { "localizations": { - "en": { + "ar": { "stringUnit": { "state": "translated", - "value": "paste requires text as an argument or on stdin" + "value": "لون التمييز" } }, - "ar": { + "bs": { "stringUnit": { "state": "translated", - "value": "يتطلب paste نصًا كوسيطة أو عبر stdin" + "value": "Boja naglaska" + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "Accentfarve" } }, "de": { "stringUnit": { "state": "translated", - "value": "paste benötigt Text als Argument oder über stdin" + "value": "Akzentfarbe" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Accent Color" } }, "es": { "stringUnit": { "state": "translated", - "value": "paste requiere texto como argumento o en stdin" + "value": "Color de acento" } }, "fr": { "stringUnit": { "state": "translated", - "value": "paste nécessite du texte en argument ou sur stdin" + "value": "Couleur d’accentuation" + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "Colore di evidenziazione" } }, "ja": { "stringUnit": { "state": "translated", - "value": "paste には引数または stdin からのテキストが必要です" + "value": "アクセントカラー" } }, "ko": { "stringUnit": { "state": "translated", - "value": "paste에는 인수 또는 stdin으로 텍스트가 필요합니다" + "value": "강조 색상" + } + }, + "nb": { + "stringUnit": { + "state": "translated", + "value": "Aksentfarge" + } + }, + "pl": { + "stringUnit": { + "state": "translated", + "value": "Kolor akcentu" + } + }, + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "Cor de destaque" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Цвет акцента" + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "สีเน้น" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Vurgu Rengi" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Колір акценту" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "paste 需要通过参数或 stdin 提供文本" + "value": "强调色" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "paste 需要以參數或 stdin 提供文字" + "value": "強調色" } } } }, - "cli.paste.warning.submitFailed": { - "extractionState": "manual", + "settings.app.accentColor.cmux": { "localizations": { - "en": { + "ar": { "stringUnit": { "state": "translated", - "value": "warning: text was pasted but the submit key was not sent (%@)" + "value": "أزرق cmux" } }, - "ar": { + "bs": { "stringUnit": { "state": "translated", - "value": "تحذير: تم لصق النص لكن لم يُرسل مفتاح الإرسال (%@)" + "value": "cmux plava" + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "cmux-blå" } }, "de": { "stringUnit": { "state": "translated", - "value": "Warnung: Der Text wurde eingefügt, aber die Absende-Taste wurde nicht gesendet (%@)" + "value": "cmux-Blau" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "cmux Blue" } }, "es": { "stringUnit": { "state": "translated", - "value": "advertencia: el texto se pegó pero no se envió la tecla de envío (%@)" + "value": "Azul de cmux" } }, "fr": { "stringUnit": { "state": "translated", - "value": "avertissement : le texte a été collé mais la touche d’envoi n’a pas été envoyée (%@)" + "value": "Bleu cmux" + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "Blu cmux" } }, "ja": { "stringUnit": { "state": "translated", - "value": "警告: テキストは貼り付けられましたが、送信キーは送られませんでした(%@)" + "value": "cmux ブルー" } }, "ko": { "stringUnit": { "state": "translated", - "value": "경고: 텍스트는 붙여넣었지만 제출 키를 보내지 못했습니다 (%@)" + "value": "cmux 파란색" + } + }, + "nb": { + "stringUnit": { + "state": "translated", + "value": "cmux-blå" + } + }, + "pl": { + "stringUnit": { + "state": "translated", + "value": "Niebieski cmux" + } + }, + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "Azul do cmux" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Синий cmux" + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "สีน้ำเงิน cmux" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "cmux Mavisi" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Синій cmux" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "警告:文本已粘贴,但未发送提交键(%@)" + "value": "cmux 蓝" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "警告:文字已貼上,但未送出送出鍵(%@)" + "value": "cmux 藍" } } } }, - "cli.paste.error.textAndStdin": { - "extractionState": "manual", + "settings.app.accentColor.subtitle": { "localizations": { - "en": { + "ar": { "stringUnit": { "state": "translated", - "value": "paste: pass text or -, not both" + "value": "لون مساحة العمل المحددة وحلقة التنبيه وحالة الوكيل وإبرازات cmux الأخرى. يتبع خيار النظام لون التمييز في macOS." } }, - "ar": { + "bs": { "stringUnit": { "state": "translated", - "value": "paste: مرّر نصًا أو -، وليس كليهما" + "value": "Boja odabranog radnog prostora, prstena pažnje, statusa agenta i ostalih cmux istaknutih elemenata. Sistem prati boju naglaska macOS-a." + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "Farve for det valgte arbejdsområde, opmærksomhedsringen, agentstatus og andre cmux-fremhævninger. System følger macOS-accentfarven." } }, "de": { "stringUnit": { "state": "translated", - "value": "paste: Text oder - angeben, nicht beides" + "value": "Farbe des ausgewählten Workspace, des Aufmerksamkeitsrings, des Agentenstatus und anderer cmux-Hervorhebungen. „Systemfarbe“ folgt der macOS-Akzentfarbe." + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Color of the selected workspace, attention ring, agent status, and other cmux highlights. System follows the macOS accent color." } }, "es": { "stringUnit": { "state": "translated", - "value": "paste: pasa texto o -, no ambos" + "value": "Color del espacio de trabajo seleccionado, el anillo de atención, el estado del agente y otros resaltados de cmux. Sistema sigue el color de acento de macOS." } }, "fr": { "stringUnit": { "state": "translated", - "value": "paste : indiquez du texte ou -, pas les deux" + "value": "Couleur de l’espace de travail sélectionné, de l’anneau d’attention, de l’état de l’agent et des autres mises en évidence de cmux. Système suit la couleur d’accentuation de macOS." + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "Colore dell’area di lavoro selezionata, dell’anello di attenzione, dello stato dell’agente e degli altri elementi evidenziati di cmux. Sistema segue il colore di evidenziazione di macOS." } }, "ja": { "stringUnit": { "state": "translated", - "value": "paste: テキストか - のどちらか一方を指定してください" + "value": "選択中のワークスペース、注意リング、エージェントの状態など、cmux のハイライトの色です。「システム」は macOS のアクセントカラーに従います。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "paste: 텍스트 또는 - 중 하나만 전달하세요" + "value": "선택한 워크스페이스, 주의 링, 에이전트 상태 등 cmux 강조 표시의 색상입니다. 시스템은 macOS 강조 색상을 따릅니다." + } + }, + "nb": { + "stringUnit": { + "state": "translated", + "value": "Farge for det valgte arbeidsområdet, oppmerksomhetsringen, agentstatus og andre cmux-uthevinger. System følger macOS-aksentfargen." + } + }, + "pl": { + "stringUnit": { + "state": "translated", + "value": "Kolor wybranego obszaru roboczego, pierścienia uwagi, stanu agenta i innych wyróżnień cmux. Systemowy podąża za kolorem akcentu macOS." + } + }, + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "Cor do espaço de trabalho selecionado, do anel de atenção, do status do agente e de outros destaques do cmux. Sistema segue a cor de destaque do macOS." + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Цвет выбранного рабочего пространства, кольца внимания, статуса агента и других выделений cmux. «Системный» следует цвету акцента macOS." + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "สีของพื้นที่ทำงานที่เลือก วงแจ้งเตือน สถานะเอเจนต์ และไฮไลต์อื่นๆ ของ cmux ตัวเลือกระบบจะใช้สีเน้นของ macOS" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Seçili çalışma alanı, dikkat halkası, ajan durumu ve diğer cmux vurgularının rengi. Sistem, macOS vurgu rengini izler." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Колір вибраного робочого простору, кільця уваги, статусу агента та інших виділень cmux. «Системний» використовує колір акценту macOS." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "paste:请提供文本或 -,不能同时提供" + "value": "所选工作区、提醒环、代理状态和其他 cmux 高亮的颜色。“系统”跟随 macOS 强调色。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "paste:請提供文字或 -,不能同時提供" + "value": "所選工作區、提醒環、代理狀態和其他 cmux 醒目提示的顏色。「系統」跟隨 macOS 強調色。" } } } }, - "cli.paste.error.unknownFlag": { - "extractionState": "manual", + "settings.app.accentColor.system": { "localizations": { - "en": { + "ar": { "stringUnit": { "state": "translated", - "value": "paste: unknown flag or missing value: %@ (put text that starts with - after a -- separator)" + "value": "النظام" } }, - "ar": { + "bs": { "stringUnit": { "state": "translated", - "value": "paste: خيار غير معروف أو قيمة مفقودة: %@ (ضع النص الذي يبدأ بـ - بعد فاصل --)" + "value": "Sistem" + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "System" } }, "de": { "stringUnit": { "state": "translated", - "value": "paste: unbekanntes Flag oder fehlender Wert: %@ (Text, der mit - beginnt, nach einem Trennzeichen -- angeben)" + "value": "Systemfarbe" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "System" } }, "es": { "stringUnit": { "state": "translated", - "value": "paste: opción desconocida o valor faltante: %@ (coloca el texto que empieza por - después de un separador --)" + "value": "Sistema" } }, "fr": { "stringUnit": { "state": "translated", - "value": "paste : option inconnue ou valeur manquante : %@ (placez le texte qui commence par - après un séparateur --)" + "value": "Système" + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "Sistema" } }, "ja": { "stringUnit": { "state": "translated", - "value": "paste: 不明なフラグ、または値がありません: %@(- で始まるテキストは -- 区切りの後に置いてください)" + "value": "システム" } }, "ko": { "stringUnit": { "state": "translated", - "value": "paste: 알 수 없는 플래그이거나 값이 없습니다: %@ (-로 시작하는 텍스트는 -- 구분자 뒤에 넣으세요)" + "value": "시스템" + } + }, + "nb": { + "stringUnit": { + "state": "translated", + "value": "System" + } + }, + "pl": { + "stringUnit": { + "state": "translated", + "value": "Systemowy" + } + }, + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "Sistema" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Системный" + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "ระบบ" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Sistem" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Системний" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "paste:未知标志或缺少值:%@(以 - 开头的文本请放在 -- 分隔符之后)" + "value": "系统" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "paste:未知的旗標或缺少值:%@(以 - 開頭的文字請放在 -- 分隔符之後)" + "value": "系統" } } } }, - "cli.paste.error.tooLarge": { - "extractionState": "manual", + "settings.app.accentColor.systemToggle": { "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "لون التمييز للنظام" + } + }, + "bs": { + "stringUnit": { + "state": "translated", + "value": "Sistemska boja naglaska" + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "Systemets accentfarve" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "System-Akzentfarbe" + } + }, "en": { "stringUnit": { "state": "translated", - "value": "%@: text is too large; the limit is %@ MiB after JSON escaping" + "value": "System Accent Color" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Color de acento del sistema" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Couleur d’accentuation du système" + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "Colore di evidenziazione di sistema" } }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "システムのアクセントカラー" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "시스템 강조 색상" + } + }, + "nb": { + "stringUnit": { + "state": "translated", + "value": "Systemets aksentfarge" + } + }, + "pl": { + "stringUnit": { + "state": "translated", + "value": "Systemowy kolor akcentu" + } + }, + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "Cor de destaque do sistema" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Системный цвет акцента" + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "สีเน้นของระบบ" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Sistem Vurgu Rengi" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Системний колір акценту" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "系统强调色" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "系統強調色" + } + } + } + }, + "settings.search.alias.setting.app.accent-color": { + "localizations": { "ar": { "stringUnit": { "state": "translated", - "value": "%@: النص كبير جدًا؛ الحد هو %@ ميبيبايت بعد ترميز JSON" + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue لون التمييز أزرق النظام" + } + }, + "bs": { + "stringUnit": { + "state": "translated", + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue boja naglaska plava sistem" + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue accentfarve blå system" } }, "de": { "stringUnit": { "state": "translated", - "value": "%@: Text ist zu groß; die Grenze liegt bei %@ MiB nach JSON-Escaping" + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue Akzentfarbe blau System" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue" } }, "es": { "stringUnit": { "state": "translated", - "value": "%@: el texto es demasiado grande; el límite es de %@ MiB tras el escapado JSON" + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue color de acento azul sistema" } }, "fr": { "stringUnit": { "state": "translated", - "value": "%@ : le texte est trop volumineux ; la limite est de %@ Mio après échappement JSON" + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue couleur d’accentuation bleu système" + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue colore di evidenziazione blu sistema" } }, "ja": { "stringUnit": { "state": "translated", - "value": "%@: テキストが大きすぎます。JSON エスケープ後の上限は %@ MiB です" + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue アクセントカラー 青 システム" } }, "ko": { "stringUnit": { "state": "translated", - "value": "%@: 텍스트가 너무 큽니다. JSON 이스케이프 후 한도는 %@MiB입니다" + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue 강조 색상 파란색 시스템" + } + }, + "nb": { + "stringUnit": { + "state": "translated", + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue aksentfarge blå system" + } + }, + "pl": { + "stringUnit": { + "state": "translated", + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue kolor akcentu niebieski systemowy" + } + }, + "pt-BR": { + "stringUnit": { + "state": "translated", + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue cor de destaque azul sistema" + } + }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue цвет акцента синий системный" + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue สีเน้น สีน้ำเงิน ระบบ" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue vurgu rengi mavi sistem" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue колір акценту синій системний" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%@:文本过大;经 JSON 转义后的上限为 %@ MiB" + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue 强调色 蓝色 系统" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%@:文字過大;經 JSON 跳脫後的上限為 %@ MiB" + "value": "app.accentColor accent color highlight tint blue purple system accent macOS accent cmux blue 強調色 藍色 系統" } } } @@ -565162,832 +565049,6 @@ } } }, - "browser.discard.restoring": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Restoring…" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "جارٍ الاستعادة…" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Wird wiederhergestellt…" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Restaurando…" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Restauration…" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "復元中…" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "복원 중…" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "正在恢复…" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "正在還原…" - } - } - } - }, - "settings.browser.hiddenWebViewDiscardMode": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Memory Saver Mode" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "وضع توفير الذاكرة" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Speichersparmodus-Art" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Modo de ahorro de memoria" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Mode de l’économiseur de mémoire" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メモリセーバーのモード" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "메모리 절약 방식" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "内存节省方式" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "記憶體節省方式" - } - } - } - }, - "settings.browser.hiddenWebViewMemoryBudget": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Hidden Tab Memory Budget" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "ميزانية ذاكرة علامات التبويب المخفية" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Speicherbudget für ausgeblendete Tabs" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Presupuesto de memoria de pestañas ocultas" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Budget mémoire des onglets masqués" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "非表示タブのメモリ予算" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "숨겨진 탭 메모리 예산" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "隐藏标签页内存预算" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "隱藏標籤頁記憶體預算" - } - } - } - }, - "settings.browser.hiddenWebViewDiscardMode.memoryBudget": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Memory Budget" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "ميزانية الذاكرة" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Speicherbudget" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Presupuesto de memoria" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Budget mémoire" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メモリ予算" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "메모리 예산" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "内存预算" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "記憶體預算" - } - } - } - }, - "settings.browser.hiddenWebViewDiscardMode.subtitle": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Memory Budget frees the tabs hidden longest once hidden tabs use more than the budget. Timer frees every tab hidden longer than the delay." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "يحرر «ميزانية الذاكرة» علامات التبويب المخفية منذ أطول مدة عندما تتجاوز علامات التبويب المخفية الميزانية. ويحرر «المؤقت» كل علامة تبويب مخفية لمدة أطول من التأخير." - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "„Speicherbudget“ gibt die am längsten ausgeblendeten Tabs frei, sobald ausgeblendete Tabs mehr als das Budget belegen. „Zeitgesteuert“ gibt jeden Tab frei, der länger als die Verzögerung ausgeblendet ist." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "«Presupuesto de memoria» libera las pestañas ocultas desde hace más tiempo cuando las pestañas ocultas superan el presupuesto. «Temporizador» libera cada pestaña oculta durante más tiempo que la demora." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "« Budget mémoire » libère les onglets masqués depuis le plus longtemps dès que les onglets masqués dépassent le budget. « Minuteur » libère chaque onglet masqué depuis plus longtemps que le délai." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "「メモリ予算」は、非表示のタブが予算を超えてメモリを使うと、最も長く非表示になっているタブから解放します。「タイマー」は、遅延時間より長く非表示になっているすべてのタブを解放します。" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "'메모리 예산'은 숨겨진 탭이 예산보다 많은 메모리를 사용하면 가장 오래 숨겨진 탭부터 해제합니다. '타이머'는 지연 시간보다 오래 숨겨진 모든 탭을 해제합니다." - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "“内存预算”会在隐藏标签页占用的内存超过预算时,释放隐藏最久的标签页。“计时器”会释放隐藏时间超过延迟的每个标签页。" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "「記憶體預算」會在隱藏標籤頁使用的記憶體超過預算時,釋放隱藏最久的標籤頁。「計時器」會釋放隱藏時間超過延遲的每個標籤頁。" - } - } - } - }, - "settings.browser.hiddenWebViewDiscardMode.timer": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Timer" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "المؤقت" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Zeitgesteuert" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Temporizador" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Minuteur" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "タイマー" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "타이머" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "计时器" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "計時器" - } - } - } - }, - "settings.browser.hiddenWebViewMemoryBudget.subtitle": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "How much memory hidden browser tabs may use before cmux frees the ones hidden longest." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "مقدار الذاكرة التي يمكن أن تستخدمها علامات تبويب المتصفح المخفية قبل أن يحرر cmux العلامات المخفية منذ أطول مدة." - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Wie viel Speicher ausgeblendete Browser-Tabs belegen dürfen, bevor cmux die am längsten ausgeblendeten freigibt." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Cuánta memoria pueden usar las pestañas ocultas del navegador antes de que cmux libere las que llevan más tiempo ocultas." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Quantité de mémoire que les onglets de navigateur masqués peuvent utiliser avant que cmux libère ceux masqués depuis le plus longtemps." - } - }, - "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 會釋放隱藏最久的標籤頁。" - } - } - } - }, - "command.browserKeepPageActive.enable.title": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Keep Page Active While Hidden" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Seite im Hintergrund aktiv halten" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Garder la page active lorsqu’elle est masquée" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "إبقاء الصفحة نشطة أثناء إخفائها" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Mantener la página activa mientras está oculta" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "隱藏時保持頁面啟用" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "隐藏时保持页面活跃" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "숨겨져 있을 때 페이지 활성 상태 유지" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "非表示中もページをアクティブに保つ" - } - } - } - }, - "command.browserKeepPageActive.disable.title": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Allow Page to Unload While Hidden" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Entladen der Seite im Hintergrund erlauben" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Autoriser le déchargement de la page lorsqu’elle est masquée" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "السماح بإلغاء تحميل الصفحة أثناء إخفائها" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Permitir descargar la página mientras está oculta" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "允許在隱藏時卸載頁面" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "允许在隐藏时卸载页面" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "숨겨져 있을 때 페이지 언로드 허용" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "非表示中のページのアンロードを許可" - } - } - } - }, - "browser.discard.unloadedMessage": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "This page was unloaded to save memory." - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Diese Seite wurde entladen, um Arbeitsspeicher zu sparen." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Cette page a été déchargée pour économiser de la mémoire." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "تم إلغاء تحميل هذه الصفحة لتوفير الذاكرة." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Esta página se descargó para ahorrar memoria." - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "已卸載此網頁以節省記憶體。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "已卸载此页面以节省内存。" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "메모리를 절약하기 위해 이 페이지를 언로드했습니다." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "メモリを節約するため、このページはアンロードされました。" - } - } - } - }, - "browser.discard.restore": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Restore" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Wiederherstellen" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Restaurer" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "استعادة" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Restaurar" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "還原" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "恢复" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "복원" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "復元" - } - } - } - }, - "settings.browser.autoRestoreUnloadedPages": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Restore Unloaded Pages Automatically" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Entladene Seiten automatisch wiederherstellen" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Restaurer automatiquement les pages déchargées" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "استعادة الصفحات التي أُلغي تحميلها تلقائيًا" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Restaurar automáticamente las páginas descargadas" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "自動還原已卸載的網頁" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "自动恢复已卸载的页面" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "언로드된 페이지 자동 복원" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "アンロードされたページを自動的に復元" - } - } - } - }, - "settings.browser.autoRestoreUnloadedPages.subtitle": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Brings back an unloaded page as soon as its tab is shown. When off, the tab shows the page's last snapshot until you click Restore." - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Stellt eine entladene Seite wieder her, sobald ihr Tab angezeigt wird. Wenn deaktiviert, zeigt der Tab die letzte Momentaufnahme der Seite, bis Sie auf „Wiederherstellen“ klicken." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Restaure une page déchargée dès que son onglet est affiché. Si cette option est désactivée, l’onglet affiche le dernier aperçu de la page jusqu’à ce que vous cliquiez sur Restaurer." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "يستعيد الصفحة التي أُلغي تحميلها بمجرد عرض علامة تبويبها. عند إيقاف هذا الخيار، تعرض علامة التبويب آخر لقطة للصفحة إلى أن تنقر على استعادة." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Recupera una página descargada en cuanto se muestra su pestaña. Si está desactivado, la pestaña muestra la última captura de la página hasta que hagas clic en Restaurar." - } - }, - "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.browser.unloaded-page-auto-restore": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "browser.autoRestoreUnloadedPages restore reload unloaded discarded hidden tabs placeholder" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "browser.autoRestoreUnloadedPages wiederherstellen neu laden entladen verworfen ausgeblendete Tabs Platzhalter" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "browser.autoRestoreUnloadedPages restaurer recharger déchargée supprimée onglets masqués espace réservé" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "browser.autoRestoreUnloadedPages استعادة إعادة تحميل إلغاء التحميل مهملة علامات التبويب المخفية عنصر نائب" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "browser.autoRestoreUnloadedPages restaurar recargar descargada descartada pestañas ocultas marcador de posición" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "browser.autoRestoreUnloadedPages 還原 重新載入 已卸載 已捨棄 隱藏標籤頁 預留位置" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "browser.autoRestoreUnloadedPages 恢复 重新加载 已卸载 已丢弃 隐藏标签页 占位符" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "browser.autoRestoreUnloadedPages 복원 새로고침 언로드 삭제됨 숨겨진 탭 자리 표시자" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "browser.autoRestoreUnloadedPages 復元 再読み込み アンロード 破棄 非表示のタブ プレースホルダ" - } - } - } - }, "devices.discovery.settingsDisabled": { "extractionState": "manual", "localizations": { @@ -567758,6 +566819,669 @@ } } }, + "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.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": "クラウドに再接続中…" + } + } + } + }, "devices.link.error.notDiscoverable": { "extractionState": "manual", "localizations": { @@ -568884,130 +568608,130 @@ } }, "mobile.pairing.error.teamUnavailable": { - "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 チームを読み込めませんでした。インターネット接続を確認してから、もう一度お試しください。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "无法加载你的 cmux 团队。请检查网络连接,然后重试。" - } - }, - "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." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "تعذّر تحميل فريق cmux الخاص بك. تحقّق من اتصالك بالإنترنت، ثم حاول مرة أخرى." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "No se pudo cargar tu equipo de cmux. Comprueba tu conexión a internet e inténtalo de nuevo." - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "無法載入你的 cmux 團隊。請檢查網路連線,然後再試一次。" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "cmux 팀을 불러올 수 없습니다. 인터넷 연결을 확인한 후 다시 시도하세요." - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Nije moguće učitati vaš cmux tim. Provjerite internetsku vezu i pokušajte ponovo." - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "Din cmux-team kunne ikke indlæses. Kontrollér din internetforbindelse, og prøv igen." - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "Impossibile caricare il tuo team cmux. Controlla la connessione Internet e riprova." - } - }, - "km": { - "stringUnit": { - "state": "translated", - "value": "មិនអាចផ្ទុកក្រុម cmux របស់អ្នកបានទេ។ សូមពិនិត្យការតភ្ជាប់អ៊ីនធឺណិត ហើយព្យាយាមម្ដងទៀត។" - } - }, - "nb": { - "stringUnit": { - "state": "translated", - "value": "Kunne ikke laste inn cmux-teamet ditt. Kontroller internettilkoblingen, og prøv igjen." - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "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": "Não foi possível carregar sua equipe cmux. Verifique sua conexão com a internet e tente novamente." - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Не удалось загрузить вашу команду cmux. Проверьте подключение к интернету и попробуйте ещё раз." - } - }, - "th": { - "stringUnit": { - "state": "translated", - "value": "ไม่สามารถโหลดทีม cmux ของคุณได้ ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตแล้วลองอีกครั้ง" - } - }, - "tr": { - "stringUnit": { - "state": "translated", - "value": "cmux ekibiniz yüklenemedi. İnternet bağlantınızı kontrol edip tekrar deneyin." - } - }, - "uk": { - "stringUnit": { - "state": "translated", - "value": "Не вдалося завантажити вашу команду cmux. Перевірте підключення до інтернету й спробуйте ще раз." - } - } + "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 チームを読み込めませんでした。インターネット接続を確認してから、もう一度お試しください。" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "无法加载你的 cmux 团队。请检查网络连接,然后重试。" + } + }, + "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." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تعذّر تحميل فريق cmux الخاص بك. تحقّق من اتصالك بالإنترنت، ثم حاول مرة أخرى." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "No se pudo cargar tu equipo de cmux. Comprueba tu conexión a internet e inténtalo de nuevo." + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "無法載入你的 cmux 團隊。請檢查網路連線,然後再試一次。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "cmux 팀을 불러올 수 없습니다. 인터넷 연결을 확인한 후 다시 시도하세요." + } + }, + "bs": { + "stringUnit": { + "state": "translated", + "value": "Nije moguće učitati vaš cmux tim. Provjerite internetsku vezu i pokušajte ponovo." + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "Din cmux-team kunne ikke indlæses. Kontrollér din internetforbindelse, og prøv igen." + } + }, + "it": { + "stringUnit": { + "state": "translated", + "value": "Impossibile caricare il tuo team cmux. Controlla la connessione Internet e riprova." + } + }, + "km": { + "stringUnit": { + "state": "translated", + "value": "មិនអាចផ្ទុកក្រុម cmux របស់អ្នកបានទេ។ សូមពិនិត្យការតភ្ជាប់អ៊ីនធឺណិត ហើយព្យាយាមម្ដងទៀត។" + } + }, + "nb": { + "stringUnit": { + "state": "translated", + "value": "Kunne ikke laste inn cmux-teamet ditt. Kontroller internettilkoblingen, og prøv igjen." + } + }, + "pl": { + "stringUnit": { + "state": "translated", + "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": "Não foi possível carregar sua equipe cmux. Verifique sua conexão com a internet e tente novamente." } }, + "ru": { + "stringUnit": { + "state": "translated", + "value": "Не удалось загрузить вашу команду cmux. Проверьте подключение к интернету и попробуйте ещё раз." + } + }, + "th": { + "stringUnit": { + "state": "translated", + "value": "ไม่สามารถโหลดทีม cmux ของคุณได้ ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตแล้วลองอีกครั้ง" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "cmux ekibiniz yüklenemedi. İnternet bağlantınızı kontrol edip tekrar deneyin." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Не вдалося завантажити вашу команду cmux. Перевірте підключення до інтернету й спробуйте ще раз." + } + } + } +}, "command.newPaneAutoLayout.title": { "extractionState": "manual", "localizations": { @@ -569303,70 +569027,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 ще відновлює термінал після повторного відкриття та перевіряє, який сеанс агента відновити. Спробуйте ще раз за кілька секунд." } } } @@ -569428,70 +569152,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" : "Термінал закривається, і його не можна прочитати." } } } @@ -569553,70 +569277,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 призупинив неактивного агента, щоб заощадити пам’ять. Розбудіть його, показавши термінал (його вікно перейде на передній план), і спробуйте ще раз: %@" } } } @@ -569678,70 +569402,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, щоб розбудити його, і спробуйте ще раз." } } } @@ -569803,70 +569527,70 @@ "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" : "Термінал ще не запущено. Спробуйте ще раз за кілька секунд." } } } @@ -570697,710 +570421,592 @@ } } }, - "cli.session.help": { + "cli.sessions.live.empty": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Usage: cmux session restore [--list] [--session <id>]...\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 <id> Restore only this session (repeatable)." - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Verwendung: cmux session restore [--list] [--session <id>]...\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 <id> Nur diese Sitzung wiederherstellen (wiederholbar)." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Utilisation : cmux session restore [--list] [--session <id>]...\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 <id> Restaurer uniquement cette session (répétable)." + "value": "No live agent sessions." } }, "ar": { "stringUnit": { "state": "translated", - "value": "الاستخدام: cmux session restore [--list] [--session <id>]...\n\nيعيد فتح جلسات Claude التي كانت قيد التشغيل عندما أُغلق cmux بشكل غير متوقع آخر مرة.\nيعثر cmux عليها في سجل الوكيل، ويتخطى ما يعمل منها أو المفتوح بالفعل،\nويستأنف كل جلسة في مساحة عمل خاصة بها\nعبر المشغّل الذي بدأها.\n\nبدون --session، لا تعمل الاستعادة إلا بعد إغلاق غير متوقع.\n\nالخيارات:\n --list عرض الجلسات دون استعادتها.\n --session <id> استعادة هذه الجلسة فقط (قابل للتكرار)." + "value": "لا توجد جلسات وكيل حية." } }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Uso: cmux session restore [--list] [--session <id>]...\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 <id> Restaurar solo esta sesión (repetible)." - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "用法: cmux session restore [--list] [--session <id>]...\n\n重新開啟 cmux 上次意外結束時仍在執行的 Claude 工作階段。\ncmux 會從代理日誌中找出它們,略過仍在執行或已開啟的工作階段,\n並透過原本啟動它的啟動器\n在各自的工作區中繼續。\n\n未指定 --session 時,restore 只會在意外結束後執行。\n\n選項:\n --list 只列出工作階段,不還原。\n --session <id> 只還原此工作階段(可重複)。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "用法: cmux session restore [--list] [--session <id>]...\n\n重新打开 cmux 上次意外退出时仍在运行的 Claude 会话。\ncmux 会从代理日志中找到它们,跳过仍在运行或已打开的会话,\n并通过最初启动它的启动器\n在各自的工作区中继续。\n\n未指定 --session 时,restore 只会在意外退出后执行。\n\n选项:\n --list 只列出会话,不恢复。\n --session <id> 只恢复此会话(可重复)。" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "사용법: cmux session restore [--list] [--session <id>]...\n\ncmux가 마지막으로 예기치 않게 종료될 때 실행 중이던 Claude 세션을 다시 엽니다.\ncmux는 에이전트 저널에서 세션을 찾고, 실행 중이거나 이미 열려 있는 세션은 건너뛰며,\n각 세션을 시작한 런처를 통해\n자체 워크스페이스에서 이어갑니다.\n\n--session이 없으면 restore는 예기치 않은 종료 후에만 동작합니다.\n\n옵션:\n --list 복원하지 않고 세션만 표시합니다.\n --session <id> 이 세션만 복원합니다(반복 가능)." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "使用法: cmux session restore [--list] [--session <id>]...\n\ncmux が前回予期せず終了したときに実行中だった Claude セッションを再び開きます。\ncmux はエージェントジャーナルからセッションを見つけ、実行中または既に開いている\nものはスキップし、それぞれを起動したランチャー経由で\n専用のワークスペースで再開します。\n\n--session を指定しない場合、restore は予期しない終了の後にのみ動作します。\n\nオプション:\n --list 復元せずにセッションを表示します。\n --session <id> このセッションのみ復元します(複数指定可)。" - } - } - } - }, - "cli.session.error.expectedRestore": { - "extractionState": "manual", - "localizations": { - "en": { + "de": { "stringUnit": { "state": "translated", - "value": "session: expected 'restore' (see cmux help session)" + "value": "Keine Live-Agenten-Sitzungen." } }, - "de": { + "es": { "stringUnit": { "state": "translated", - "value": "session: 'restore' erwartet (siehe cmux help session)" + "value": "No hay sesiones de agente en vivo." } }, "fr": { "stringUnit": { "state": "translated", - "value": "session : « restore » attendu (voir cmux help session)" + "value": "Aucune session d'agent en direct." } }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "session: كان المتوقع 'restore' (راجع cmux help session)" - } - }, - "es": { + "ja": { "stringUnit": { "state": "translated", - "value": "session: se esperaba 'restore' (consulta cmux help session)" + "value": "ライブのエージェントセッションはありません。" } }, - "zh-Hant": { + "ko": { "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 참조)" + "value": "没有实时代理会话。" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "session: 'restore' が必要です(cmux help session を参照)" + "value": "沒有即時代理程式工作階段。" } } } }, - "cli.session.error.sessionRequiresId": { + "cli.sessions.live.emptyAfterFilter": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "session restore: --session requires an id" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "session restore: --session erfordert eine ID" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "session restore : --session nécessite un identifiant" + "value": "No live agent sessions matched." } }, "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" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "session restore:--session 需要一个 ID" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "session restore: --session에는 ID가 필요합니다" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "session restore: --session には ID が必要です" - } - } - } - }, - "cli.session.error.unknownArgument": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "session restore: unknown argument '%@'" + "value": "لا توجد جلسات وكيل حية مطابقة." } }, "de": { "stringUnit": { "state": "translated", - "value": "session restore: unbekanntes Argument '%@'" + "value": "Keine Live-Agenten-Sitzungen stimmten überein." } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "session restore : argument inconnu « %@ »" + "value": "No coincidió ninguna sesión de agente en vivo." } }, - "ar": { + "fr": { "stringUnit": { "state": "translated", - "value": "session restore: وسيط غير معروف '%@'" + "value": "Aucune session d'agent en direct ne correspond." } }, - "es": { + "ja": { "stringUnit": { "state": "translated", - "value": "session restore: argumento desconocido '%@'" + "value": "一致するライブのエージェントセッションはありません。" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "session restore:未知的參數 '%@'" + "value": "일치하는 실시간 에이전트 세션이 없습니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "session restore:未知参数 '%@'" + "value": "没有匹配的实时代理会话。" } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "session restore: 알 수 없는 인수 '%@'" - } - }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "session restore: 不明な引数 '%@'" + "value": "無相符的即時代理程式工作階段。" } } } }, - "cli.session.list.empty": { + "cli.sessions.live.error.conflictingState": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "No agent sessions to restore." + "value": "sessions live: --needs-me conflicts with --state %@" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Keine Agent-Sitzungen zum Wiederherstellen." + "value": "sessions live: يتعارض الخيار --needs-me مع --state %@" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Aucune session d’agent à restaurer." + "value": "sessions live: --needs-me steht im Konflikt mit --state %@" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "لا توجد جلسات وكيل لاستعادتها." + "value": "sessions live: --needs-me entra en conflicto con --state %@" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "No hay sesiones de agente para restaurar." + "value": "sessions live : --needs-me est en conflit avec --state %@" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "沒有可還原的代理工作階段。" + "value": "sessions live: --needs-me は --state %@ と併用できません" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "没有可恢复的代理会话。" + "value": "sessions live: --needs-me는 --state %@과 함께 사용할 수 없습니다" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "복원할 에이전트 세션이 없습니다." + "value": "sessions live:--needs-me 与 --state %@ 冲突" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "復元するエージェントセッションはありません。" + "value": "sessions live: --needs-me 與 --state %@ 衝突" } } } }, - "cli.session.restore.cleanQuit": { + "cli.sessions.live.error.flagAsValue": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "No agent sessions restored: cmux last quit normally. To restore one anyway, pass --session <id> from --list." + "value": "sessions live: %1$@ requires a value, but '%2$@' is another flag" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Keine Agent-Sitzungen wiederhergestellt: cmux wurde zuletzt normal beendet. Um trotzdem eine wiederherzustellen, übergib --session <id> aus --list." + "value": "sessions live: يتطلب %1$@ قيمة، لكن '%2$@' علم آخر" } }, - "fr": { + "de": { "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 <id> depuis --list." + "value": "sessions live: %1$@ erfordert einen Wert, aber „%2$@“ ist ein weiteres Flag" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "لم تتم استعادة أي جلسات وكيل: أُغلق cmux بشكل طبيعي آخر مرة. لاستعادة جلسة على أي حال، مرّر --session <id> من --list." + "value": "sessions live: %1$@ requiere un valor, pero '%2$@' es otra opción" } }, - "es": { + "fr": { "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 <id> de --list." + "value": "sessions live : %1$@ requiert une valeur, mais '%2$@' est une autre option" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "未還原任何代理工作階段:cmux 上次是正常結束。若仍要還原,請傳入 --list 中的 --session <id>。" + "value": "sessions live: %1$@ には値が必要ですが、'%2$@' は別のフラグです" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "未恢复任何代理会话:cmux 上次是正常退出。若仍要恢复,请传入 --list 中的 --session <id>。" + "value": "sessions live: %1$@에 값이 필요하지만 '%2$@'은 다른 플래그입니다" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "복원된 에이전트 세션이 없습니다. cmux가 마지막에 정상적으로 종료되었습니다. 그래도 복원하려면 --list에서 확인한 --session <id>를 전달하세요." + "value": "sessions live:%1$@ 需要一个值,但 '%2$@' 是另一个标志" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "エージェントセッションは復元されませんでした。cmux は前回正常に終了しています。それでも復元する場合は、--list の --session <id> を指定してください。" + "value": "sessions live: %1$@ 需要一個值,但 '%2$@' 是另一個旗標" } } } }, - "cli.session.restore.empty": { + "cli.sessions.live.error.invalidLimit": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "No agent sessions restored." + "value": "sessions live: --limit must be a positive integer" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Keine Agent-Sitzungen wiederhergestellt." + "value": "sessions live: يجب أن يكون الخيار --limit عددًا صحيحًا موجبًا" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Aucune session d’agent restaurée." + "value": "sessions live: --limit muss eine positive Ganzzahl sein" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "لم تتم استعادة أي جلسات وكيل." + "value": "sessions live: --limit debe ser un entero positivo" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "No se restauró ninguna sesión de agente." + "value": "sessions live : --limit doit être un entier positif" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "未還原任何代理工作階段。" + "value": "sessions live: --limit には正の整数を指定してください" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "未恢复任何代理会话。" + "value": "sessions live: --limit은 양의 정수여야 합니다" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "복원된 에이전트 세션이 없습니다." + "value": "sessions live:--limit 必须是正整数" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "エージェントセッションは復元されませんでした。" + "value": "sessions live: --limit 必須為正整數" } } } }, - "cli.session.restore.done": { + "cli.sessions.live.error.missingValue": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Agent sessions restored: %lld" + "value": "sessions live: %@ requires a value" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Wiederhergestellte Agent-Sitzungen: %lld" + "value": "sessions live: يتطلب %@ قيمة" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Sessions d’agent restaurées : %lld" + "value": "sessions live: %@ erfordert einen Wert" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "جلسات الوكيل المستعادة: %lld" + "value": "sessions live: %@ requiere un valor" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "Sesiones de agente restauradas: %lld" + "value": "sessions live : %@ requiert une valeur" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "已還原的代理工作階段:%lld" + "value": "sessions live: %@ には値が必要です" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "已恢复的代理会话:%lld" + "value": "sessions live: %@에 값이 필요합니다" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "복원된 에이전트 세션: %lld" + "value": "sessions live:%@ 需要一个值" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "復元したエージェントセッション: %lld" + "value": "sessions live: %@ 需要一個值" } } } }, - "agentRecovery.alert.title": { + "cli.sessions.live.error.unexpectedArgument": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Restore agent sessions?" + "value": "sessions live: unexpected argument '%@'" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Agent-Sitzungen wiederherstellen?" + "value": "sessions live: وسيط غير متوقع '%@'" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Restaurer les sessions d’agent ?" + "value": "sessions live: unerwartetes Argument „%@“" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "هل تريد استعادة جلسات الوكيل؟" + "value": "sessions live: argumento inesperado '%@'" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "¿Restaurar las sesiones de agente?" + "value": "sessions live : argument inattendu '%@'" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "要還原代理工作階段嗎?" + "value": "sessions live: 予期しない引数 '%@'" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "要恢复代理会话吗?" + "value": "sessions live: 예기치 않은 인수 '%@'" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "에이전트 세션을 복원할까요?" + "value": "sessions live:意外参数 '%@'" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "エージェントセッションを復元しますか?" + "value": "sessions live: 未預期的引數 '%@'" } } } }, - "agentRecovery.alert.message": { + "cli.sessions.live.error.unknownAgent": { "extractionState": "manual", "localizations": { "en": { "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": "sessions live: unknown agent '%@'" } }, - "de": { + "ar": { "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": "sessions live: وكيل غير معروف '%@'" } }, - "fr": { + "de": { "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": "sessions live: unbekannter Agent „%@“" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "أُغلق cmux بشكل غير متوقع أثناء تشغيل جلسات الوكيل. الجلسات المطلوب استعادتها: %lld. تُفتح كل جلسة في مساحة عمل خاصة بها وتُستأنف من حيث توقفت." + "value": "sessions live: agente desconocido '%@'" } }, - "es": { + "fr": { "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": "sessions live : agent inconnu '%@'" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "cmux 在代理工作階段執行時意外結束。要還原的工作階段:%lld。每個工作階段都會在各自的工作區重新開啟,並從中斷處繼續。" + "value": "sessions live: 不明なエージェント '%@'" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "cmux 在代理会话运行时意外退出。要恢复的会话:%lld。每个会话都会在各自的工作区重新打开,并从中断处继续。" + "value": "sessions live: 알 수 없는 에이전트 '%@'" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "에이전트 세션이 실행 중일 때 cmux가 예기치 않게 종료되었습니다. 복원할 세션: %lld. 각 세션은 자체 워크스페이스에서 다시 열리고 중단된 곳에서 이어집니다." + "value": "sessions live:未知代理 '%@'" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "エージェントセッションの実行中に cmux が予期せず終了しました。復元するセッション: %lld。各セッションは専用のワークスペースで再び開き、中断したところから再開します。" + "value": "sessions live: 未知的代理程式 '%@'" } } } }, - "agentRecovery.alert.restore": { + "cli.sessions.live.error.unknownFlag": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Restore Agent Sessions" + "value": "sessions live: unknown flag '%@'" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Agent-Sitzungen wiederherstellen" + "value": "sessions live: علم غير معروف '%@'" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Restaurer les sessions d’agent" + "value": "sessions live: unbekanntes Flag „%@“" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "استعادة جلسات الوكيل" + "value": "sessions live: opción desconocida '%@'" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "Restaurar sesiones de agente" + "value": "sessions live : option inconnue '%@'" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "還原代理工作階段" + "value": "sessions live: 不明なフラグ '%@'" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "恢复代理会话" + "value": "sessions live: 알 수 없는 플래그 '%@'" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "에이전트 세션 복원" + "value": "sessions live:未知标志 '%@'" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "エージェントセッションを復元" + "value": "sessions live: 未知的旗標 '%@'" } } } }, - "agentRecovery.alert.notNow": { + "cli.sessions.live.error.unknownState": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Not Now" + "value": "sessions live: unknown state '%@'. Expected needs-input, working, idle or ended" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Nicht jetzt" + "value": "sessions live: حالة غير معروفة '%@'. المتوقع: needs-input أو working أو idle أو ended" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Pas maintenant" + "value": "sessions live: unbekannter Zustand „%@“. Erwartet: needs-input, working, idle oder ended" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "ليس الآن" + "value": "sessions live: estado desconocido '%@'. Se esperaba needs-input, working, idle o ended" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "Ahora no" + "value": "sessions live : état inconnu '%@'. Attendu : needs-input, working, idle ou ended" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "稍後" + "value": "sessions live: 不明な状態 '%@'。needs-input、working、idle、ended のいずれかを指定してください" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "以后再说" + "value": "sessions live: 알 수 없는 상태 '%@'. needs-input, working, idle 또는 ended여야 합니다" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "나중에" + "value": "sessions live:未知状态 '%@'。应为 needs-input、working、idle 或 ended" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "後で" + "value": "sessions live: 未知的狀態 '%@'。預期為 needs-input、working、idle 或 ended" } } } @@ -571995,124 +571601,6 @@ } } }, - "cli.focus.defaultHelp": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "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": "Standard: bei interaktiver Ausführung fokussieren, bei Ausführung durch einen Agenten oder ein Skript im Hintergrund bleiben." - } - }, - "fr": { - "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." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "الافتراضي: التركيز عند التشغيل التفاعلي، والبقاء في الخلفية عند التشغيل بواسطة وكيل أو برنامج نصي." - } - }, - "es": { - "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." - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "預設:互動執行時取得焦點;由代理程式或指令稿執行時保持在背景。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "默认:交互式运行时获得焦点;由代理或脚本运行时保持在后台。" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "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": "フォーカス:\n --focus 新しいワークスペースに切り替えます\n --no-focus バックグラウンドで開きます" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Fokus:\n --focus Zum neuen Workspace wechseln\n --no-focus Im Hintergrund öffnen" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Focus :\n --focus Bascule vers le nouvel espace de travail\n --no-focus L’ouvre en arrière-plan" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "التركيز:\n --focus ينتقل إلى مساحة العمل الجديدة\n --no-focus يفتحها في الخلفية" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Foco:\n --focus Cambia al nuevo espacio de trabajo\n --no-focus Lo abre en segundo plano" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "焦點:\n --focus 切換到新的工作區\n --no-focus 在背景開啟" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "焦点:\n --focus 切换到新的工作区\n --no-focus 在后台打开" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "포커스:\n --focus 새 워크스페이스로 전환합니다\n --no-focus 백그라운드에서 엽니다" - } - } - } - }, "settings.app.reorderOnNotification.mode.agentActivity": { "extractionState": "manual", "localizations": { @@ -572766,15749 +572254,15513 @@ } } }, - "machines.requiresPro.upgrade.short": { + "shortcut.sizeTerminalToMyWindow.label": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Upgrade" + "value": "Size Terminal to My Window" } }, "ar": { "stringUnit": { "state": "translated", - "value": "ترقية" + "value": "ضبط حجم الطرفية على نافذتي" } }, "de": { "stringUnit": { "state": "translated", - "value": "Upgraden" + "value": "Terminal an mein Fenster anpassen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Actualizar" + "value": "Ajustar la terminal a mi ventana" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Mettre à niveau" + "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": "讓終端機符合我的視窗大小" } } } }, - "machines.sessionRejected.signInAgain.short": { + "command.terminalDisconnectOtherClients.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Sign In" + "value": "Disconnect Other Terminal Clients…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تسجيل الدخول" + "value": "قطع اتصال عملاء الطرفية الآخرين…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Anmelden" + "value": "Andere Terminal-Clients trennen…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Iniciar sesión" + "value": "Desconectar otros clientes de la terminal…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Se reconnecter" + "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": "中斷其他終端機用戶端的連線…" } } } }, - "machines.requiresPro.stale": { + "command.terminalShowSizePanel.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud machines need cmux Pro — showing last known" + "value": "Show Terminal Size Panel" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تتطلب الأجهزة السحابية إصدار cmux Pro — يتم عرض آخر حالة معروفة" + "value": "إظهار لوحة حجم الطرفية" } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud-Maschinen erfordern cmux Pro – zeige letzten bekannten Stand" + "value": "Terminalgrößen-Bereich anzeigen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Las máquinas en la nube requieren cmux Pro — se muestra el último estado conocido" + "value": "Mostrar el panel de tamaño de la terminal" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Les machines Cloud nécessitent cmux Pro — affichage des dernières informations connues" + "value": "Afficher le panneau de taille du terminal" } }, "ja": { "stringUnit": { "state": "translated", - "value": "Cloud マシンには 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": "顯示終端機大小面板" } } } }, - "machines.sessionRejected.stale": { + "command.terminalSizeToMyWindow.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Sign-in needs a refresh — showing last known" + "value": "Size Terminal to My Window" } }, "ar": { "stringUnit": { "state": "translated", - "value": "يحتاج تسجيل الدخول إلى تحديث — يتم عرض آخر حالة معروفة" + "value": "ضبط حجم الطرفية على نافذتي" } }, "de": { "stringUnit": { "state": "translated", - "value": "Anmeldung muss aktualisiert werden – zeige letzten bekannten Stand" + "value": "Terminal an mein Fenster anpassen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Es necesario actualizar el inicio de sesión — se muestra el último estado conocido" + "value": "Ajustar la terminal a mi ventana" } }, "fr": { "stringUnit": { "state": "translated", - "value": "La connexion doit être actualisée — affichage des dernières informations connues" + "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": "讓終端機符合我的視窗大小" } } } }, - "sidebar.extensions.action.noSpaceForPane": { + "terminalSharing.detached.hostShutdown": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "No space for new pane" + "value": "The terminal host shut down at %@." } }, "ar": { "stringUnit": { "state": "translated", - "value": "لا توجد مساحة للوحة جديدة" + "value": "توقف مضيف الطرفية في %@." } }, "de": { "stringUnit": { "state": "translated", - "value": "Kein Platz für einen neuen Bereich" + "value": "Der Terminal-Host wurde um %@ beendet." } }, "es": { "stringUnit": { "state": "translated", - "value": "No hay espacio para un panel nuevo" + "value": "El host de la terminal se detuvo a las %@." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Pas de place pour un nouveau panneau" + "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": "終端機主機已於 %@ 關閉。" } } } }, - "settings.app.compactAgentStatus": { + "terminalSharing.detached.network": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Compact Agent Status" + "value": "The network dropped." } }, "ar": { "stringUnit": { "state": "translated", - "value": "حالة الوكيل المختصرة" + "value": "انقطع اتصال الشبكة." } }, "de": { "stringUnit": { "state": "translated", - "value": "Kompakter Agentenstatus" + "value": "Die Netzwerkverbindung wurde unterbrochen." } }, "es": { "stringUnit": { "state": "translated", - "value": "Estado de agente compacto" + "value": "Se perdió la conexión de red." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Statut d’agent compact" + "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": "網路連線中斷。" } } } }, - "settings.app.compactAgentStatus.subtitle": { + "terminalSharing.detached.reattach": { "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": "Reattach" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إظهار حالة الوكيل والعناصر غير المقروءة وطلب السحب لمساحة العمل كأيقونة ملونة واحدة قبل العنوان بدلاً من صفوف منفصلة. مرّر المؤشر فوق الأيقونة لعرض التفاصيل." + "value": "إعادة الإرفاق" } }, "de": { "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": "Erneut verbinden" } }, "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": "Volver a conectar" } }, "fr": { "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": "Se reconnecter" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ワークスペースのエージェント、未読、プルリクエストの状態を、個別の行ではなくタイトルの前の色付きアイコン1つで示します。詳細はアイコンにポインタを合わせると表示されます。" + "value": "再接続" } }, "ko": { "stringUnit": { "state": "translated", - "value": "워크스페이스의 에이전트, 읽지 않음, 풀 리퀘스트 상태를 별도의 줄이 아니라 제목 앞의 색상 아이콘 하나로 나타냅니다. 자세한 내용은 아이콘 위에 포인터를 올려 확인하세요." + "value": "다시 연결" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "用标题前的单个彩色图标表示工作区的代理、未读和拉取请求状态,而不是各自占一行。将指针悬停在图标上可查看详细信息。" + "value": "重新连接" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "以標題前的單一彩色圖示表示工作區的代理、未讀與拉取請求狀態,而非各自佔一行。將游標移到圖示上可查看詳細資訊。" + "value": "重新連接" } } } }, - "settings.search.alias.setting.app.compact-agent-status": { + "terminalSharing.detached.reattachAsViewer": { "extractionState": "manual", "localizations": { - "ar": { + "en": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex مختصر وكيل حالة أيقونة سطر العنوان" + "value": "Reattach as Viewer" } }, - "de": { + "ar": { "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": "إعادة الإرفاق كمشاهد" } }, - "en": { + "de": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex" + "value": "Als Zuschauer erneut verbinden" } }, "es": { "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": "Volver a conectar como espectador" } }, "fr": { "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": "Se reconnecter en lecture seule" } }, "ja": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex コンパクト エージェント 状態 アイコン タイトル行" + "value": "閲覧者として再接続" } }, "ko": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex 간결 에이전트 상태 아이콘 제목 줄" + "value": "보기 전용으로 다시 연결" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex 精简 代理 状态 图标 标题行" + "value": "以查看者身份重新连接" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex 精簡 代理 狀態 圖示 標題列" + "value": "以檢視者身分重新連接" } } } }, - "sidebar.agentStatus.glyph.tooltip": { + "terminalSharing.detached.reattachAsViewer.help": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Reattach without changing the terminal size" } }, "ar": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "إعادة الإرفاق دون تغيير حجم الطرفية" } }, "de": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Erneut verbinden, ohne die Terminalgröße zu ändern" } }, "es": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Volver a conectar sin cambiar el tamaño de la terminal" } }, "fr": { "stringUnit": { "state": "translated", - "value": "%1$@ : %2$@" + "value": "Se reconnecter sans modifier la taille 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": "重新連接但不變更終端機大小" } } } }, - "sidebar.compactStatus.profile": { + "terminalSharing.detached.someone": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Profile" + "value": "Someone" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الملف الشخصي" + "value": "شخص ما" } }, "de": { "stringUnit": { "state": "translated", - "value": "Profil" + "value": "Jemand" } }, "es": { "stringUnit": { "state": "translated", - "value": "Perfil" + "value": "Alguien" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Profil" + "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": "有人" } } } }, - "cli.sshPtyAttach.launchAcknowledgementTimeoutRetry": { + "terminalSharing.detached.superseded": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux did not acknowledge the SSH launch; retrying %s in %ss." + "value": "Another window of this Mac replaced this one at %@." } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux hat den SSH-Start nicht bestätigt; neuer Versuch %s in %ss." + "value": "استبدلت نافذة أخرى على جهاز Mac هذا هذه النافذة في %@." } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux n’a pas confirmé le démarrage SSH ; nouvelle tentative %s dans %ss." + "value": "Ein anderes Fenster dieses Macs hat dieses um %@ ersetzt." } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "[cmux] لم يؤكد cmux بدء SSH؛ ستتم إعادة المحاولة %s خلال %s ث." + "value": "Otra ventana de este Mac reemplazó a esta a las %@." } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux no confirmó el inicio de SSH; reintentando %s en %ss." + "value": "Une autre fenêtre de ce Mac a remplacé celle-ci à %@." } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux 未確認 SSH 啟動;將在第 %s 次於 %s 秒後重試。" + "value": "このMacの別のウィンドウが %@ にこのウィンドウを置き換えました。" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux 未确认 SSH 启动;将在第 %s 次于 %s 秒后重试。" + "value": "이 Mac의 다른 창이 %@에 이 창을 대체했습니다." } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux가 SSH 시작을 확인하지 못했습니다. %s번째로 %s초 후 다시 시도합니다." + "value": "这台 Mac 的另一个窗口已于 %@ 替换此窗口。" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux が SSH の起動を確認できないため、%s 回目を %s 秒後に再試行します。" + "value": "這台 Mac 的另一個視窗已於 %@ 取代此視窗。" } - }, - "bs": { + } + } + }, + "terminalSharing.participant.personDevice": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux nije potvrdio SSH pokretanje; ponovni pokušaj %s za %ss." + "value": "%1$@ · %2$@" } }, - "da": { + "ja": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux bekræftede ikke SSH-starten; prøver igen %s om %ss." + "value": "%1$@ · %2$@" } - }, - "it": { + } + } + }, + "terminalSharing.device.browser": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux non ha confermato l’avvio SSH; nuovo tentativo %s tra %ss." + "value": "Browser" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux មិនបានបញ្ជាក់ការចាប់ផ្តើម SSH ទេ; កំពុងព្យាយាមម្តងទៀត %s ក្នុងរយៈពេល %ss។" + "value": "المتصفح" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux bekreftet ikke SSH-oppstarten; prøver på nytt %s om %ss." + "value": "Browser" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux nie potwierdził uruchomienia SSH; ponawianie próby %s za %ss." + "value": "Navegador" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "[cmux] o cmux não confirmou o início do SSH; tentando novamente %s em %ss." + "value": "Navigateur" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux не подтвердил запуск SSH; повторная попытка %s через %ss." + "value": "ブラウザ" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux ไม่ยืนยันการเริ่มต้น SSH; กำลังลองใหม่ครั้งที่ %s ในอีก %s วินาที" + "value": "브라우저" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux SSH başlatmasını onaylamadı; %s saniye içinde %s. deneme yapılıyor." + "value": "浏览器" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "[cmux] cmux не підтвердив запуск SSH; повторна спроба %s через %s с." + "value": "瀏覽器" } } } }, - "socket.mainActorHop.timeout.mayHaveRun": { + "terminalSharing.device.ipad": { "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." + "value": "iPad" } }, "ja": { "stringUnit": { "state": "translated", - "value": "コマンドの開始後 10 秒以内に cmux が応答しなかったため、結果は不明です。再試行する前に効果を確認してください。" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "命令开始后 10 秒内 cmux 没有响应,因此结果未知。请先确认效果再重试。" - } - }, - "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." - } - }, - "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": "iPad" } - }, - "ar": { + } + } + }, + "terminalSharing.device.iphone": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "لم يستجب cmux خلال 10 ثوانٍ بعد بدء الأمر، لذا فإن نتيجته غير معروفة. تحقق من الأثر قبل إعادة المحاولة." + "value": "iPhone" } }, - "es": { + "ja": { "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": "iPhone" } - }, - "zh-Hant": { + } + } + }, + "terminalSharing.device.mac": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "命令開始後 10 秒內 cmux 沒有回應,因此結果未知。請先確認效果再重試。" + "value": "Mac" } }, - "ko": { + "ja": { "stringUnit": { "state": "translated", - "value": "명령이 시작된 후 10초 안에 cmux가 응답하지 않아 결과를 알 수 없습니다. 다시 시도하기 전에 효과를 확인하세요." + "value": "Mac" } } } }, - "socket.mainActorHop.timeout.notRun": { + "terminalSharing.device.tui": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "cmux did not respond within 10 seconds, so the command was not run. Retry in a moment." + "value": "Terminal client" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "cmux が 10 秒以内に応答しなかったため、コマンドは実行されませんでした。しばらくしてから再試行してください。" + "value": "عميل طرفية" } }, - "zh-Hans": { + "de": { "stringUnit": { "state": "translated", - "value": "cmux 在 10 秒内没有响应,因此未运行该命令。请稍后重试。" + "value": "Terminal-Client" } }, - "de": { + "es": { "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": "Cliente de terminal" } }, "fr": { "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": "Client terminal" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "لم يستجب cmux خلال 10 ثوانٍ، لذا لم يتم تنفيذ الأمر. أعد المحاولة بعد لحظات." + "value": "ターミナルクライアント" } }, - "es": { + "ko": { "stringUnit": { "state": "translated", - "value": "cmux no respondió en 10 segundos, por lo que el comando no se ejecutó. Reintenta en un momento." + "value": "터미널 클라이언트" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux 在 10 秒內沒有回應,因此未執行該命令。請稍後重試。" + "value": "终端客户端" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux가 10초 안에 응답하지 않아 명령이 실행되지 않았습니다. 잠시 후 다시 시도하세요." + "value": "終端機用戶端" } } } }, - "socket.overloaded.message": { + "terminalSharing.device.unknown": { "extractionState": "manual", "localizations": { "en": { "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": "Device" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "cmux は現在、制御ソケットの要求を処理しきれないため、この要求は実行されませんでした。しばらくしてから再試行してください。" + "value": "جهاز" } }, - "zh-Hans": { + "de": { "stringUnit": { "state": "translated", - "value": "cmux 当前正在处理过多的控制套接字请求,因此未运行此请求。请稍后重试。" + "value": "Gerät" } }, - "de": { + "es": { "stringUnit": { "state": "translated", - "value": "cmux verarbeitet gerade zu viele Control-Socket-Anfragen, diese wurde daher nicht ausgeführt. Versuche es gleich noch einmal." + "value": "Dispositivo" } }, "fr": { "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": "Appareil" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "يعالج cmux حاليًا عددًا كبيرًا جدًا من طلبات مقبس التحكم، لذا لم يتم تنفيذ هذا الطلب. أعد المحاولة بعد لحظات." + "value": "デバイス" } }, - "es": { + "ko": { "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": "기기" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux 目前正在處理過多的控制 socket 請求,因此未執行此請求。請稍後重試。" + "value": "设备" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux가 지금 너무 많은 제어 소켓 요청을 처리하고 있어 이 요청은 실행되지 않았습니다. 잠시 후 다시 시도하세요." + "value": "裝置" } } } }, - "socket.request.cancelled": { + "terminalSharing.owner.held": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Request was cancelled" + "value": "Held size" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "リクエストはキャンセルされました" + "value": "حجم محتفظ به" } }, - "zh-Hans": { + "de": { "stringUnit": { "state": "translated", - "value": "请求已取消" + "value": "Beibehaltene Größe" } }, - "de": { + "es": { "stringUnit": { "state": "translated", - "value": "Die Anfrage wurde abgebrochen" + "value": "Tamaño conservado" } }, "fr": { "stringUnit": { "state": "translated", - "value": "La requête a été annulée" + "value": "Taille conservée" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "تم إلغاء الطلب" + "value": "保持されたサイズ" } }, - "es": { + "ko": { "stringUnit": { "state": "translated", - "value": "Se canceló la solicitud" + "value": "유지된 크기" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "請求已取消" + "value": "保留的大小" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "요청이 취소되었습니다" + "value": "保留的大小" } } } }, - "socket.request.failedBeforeResult": { + "terminalSharing.owner.largest": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Request failed before returning a result" + "value": "Largest window" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "結果を返す前にリクエストが失敗しました" + "value": "أكبر نافذة" } }, - "zh-Hans": { + "de": { "stringUnit": { "state": "translated", - "value": "请求在返回结果之前失败" + "value": "Größtes Fenster" } }, - "de": { + "es": { "stringUnit": { "state": "translated", - "value": "Die Anfrage ist fehlgeschlagen, bevor ein Ergebnis zurückgegeben wurde" + "value": "Ventana más grande" } }, "fr": { "stringUnit": { "state": "translated", - "value": "La requête a échoué avant de renvoyer un résultat" + "value": "Plus grande fenêtre" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "فشل الطلب قبل إرجاع نتيجة" + "value": "最大のウィンドウ" } }, - "es": { + "ko": { "stringUnit": { "state": "translated", - "value": "La solicitud falló antes de devolver un resultado" + "value": "가장 큰 창" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "請求在傳回結果之前失敗" + "value": "最大的窗口" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "결과를 반환하기 전에 요청이 실패했습니다" + "value": "最大的視窗" } } } }, - "agent.codex.fork.notice.body": { + "terminalSharing.owner.shared": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "cmux could not identify the new fork session. Start the fork again from the parent pane." + "value": "Shared size" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "cmux は新しいフォーク セッションを特定できませんでした。親ペインからもう一度フォークしてください。" + "value": "حجم مشترك" } }, "de": { "stringUnit": { "state": "translated", - "value": "cmux konnte die neue Fork-Sitzung nicht erkennen. Starten Sie den Fork erneut im übergeordneten Pane." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "cmux n’a pas pu identifier la nouvelle session forkée. Relancez le fork depuis le volet parent." - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "تعذر على cmux تحديد جلسة التفريع الجديدة. ابدأ التفريع مرة أخرى من الجزء الأصلي." + "value": "Gemeinsame Größe" } }, "es": { "stringUnit": { "state": "translated", - "value": "cmux no pudo identificar la nueva sesión bifurcada. Inicia el fork de nuevo desde el panel principal." + "value": "Tamaño compartido" } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "cmux 無法識別新的分支工作階段。請從父窗格重新開始分支。" + "value": "Taille partagée" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "cmux 无法识别新的分支会话。请从父窗格重新开始分支。" + "value": "共有サイズ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux가 새 포크 세션을 식별하지 못했습니다. 부모 패널에서 포크를 다시 시작하세요." + "value": "공유 크기" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux nije mogao prepoznati novu sesiju račvanja. Ponovo pokrenite račvanje iz nadređenog okna." + "value": "共享大小" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux kunne ikke identificere den nye forgreningssession. Start forgreningen igen fra forældreruden." + "value": "共用大小" } - }, - "it": { + } + } + }, + "terminalSharing.owner.smallest": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "cmux non ha potuto identificare la nuova sessione fork. Avvia di nuovo il fork dal riquadro principale." + "value": "Fits everyone" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "cmux មិនអាចកំណត់អត្តសញ្ញាណសម័យ fork ថ្មីបានទេ។ ចាប់ផ្ដើម fork ម្ដងទៀតពីផ្ទាំងមេ។" + "value": "يناسب الجميع" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "cmux kunne ikke identifisere den nye forgreningsøkten. Start forgreningen på nytt fra den overordnede ruten." + "value": "Passt für alle" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "cmux nie mógł zidentyfikować nowej sesji forka. Uruchom fork ponownie z panelu nadrzędnego." + "value": "Se ajusta a todos" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "O cmux não conseguiu identificar a nova sessão bifurcada. Inicie o fork novamente no painel principal." + "value": "Convient à tous" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "cmux не удалось определить новый сеанс форка. Запустите форк снова из родительской панели." + "value": "全員に合わせる" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "cmux ไม่สามารถระบุเซสชันที่แยกใหม่ได้ เริ่มการแยกอีกครั้งจากบานหน้าต่างหลัก" + "value": "모두에게 맞춤" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux yeni fork oturumunu belirleyemedi. Fork'u üst panelden yeniden başlatın." + "value": "适合所有人" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux не вдалося визначити новий сеанс форка. Запустіть форк ще раз із батьківської панелі." + "value": "符合所有人" } } } }, - "agent.codex.fork.notice.parentClearFailed.body": { + "terminalSharing.participant.thisMac": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "cmux could not safely bind the new fork session. Retry the fork from the parent pane." + "value": "This Mac" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "cmux は新しいフォーク セッションを安全にバインドできませんでした。親ペインからもう一度フォークしてください。" + "value": "جهاز Mac هذا" } }, "de": { "stringUnit": { "state": "translated", - "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": "تعذر على cmux ربط جلسة التفريع الجديدة بأمان. أعد بدء التفريع من الجزء الأصلي." + "value": "Dieser Mac" } }, "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": "Este Mac" } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "cmux 無法安全繫結新的分支工作階段。請從父窗格重新開始分支。" + "value": "Ce Mac" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "cmux 无法安全绑定新的分支会话。请从父窗格重新开始分支。" + "value": "このMac" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux가 새 포크 세션을 안전하게 연결하지 못했습니다. 부모 패널에서 포크를 다시 시작하세요." + "value": "이 Mac" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux nije mogao sigurno povezati novu sesiju račvanja. Ponovo pokrenite račvanje iz nadređenog okna." + "value": "这台 Mac" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux kunne ikke binde den nye forgreningssession sikkert. Start forgreningen igen fra forældreruden." + "value": "這台 Mac" } - }, - "it": { + } + } + }, + "terminalSharing.owner.possessiveDevice": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "cmux non ha potuto associare in sicurezza la nuova sessione fork. Avvia di nuovo il fork dal riquadro principale." + "value": "%1$@'s %2$@" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "cmux មិនអាចភ្ជាប់សម័យ fork ថ្មីដោយសុវត្ថិភាពបានទេ។ ចាប់ផ្ដើម fork ម្ដងទៀតពីផ្ទាំងមេ។" + "value": "%1$@ · %2$@" } }, - "nb": { + "de": { "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": "%1$@ · %2$@" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "cmux nie mógł bezpiecznie powiązać nowej sesji forka. Uruchom fork ponownie z panelu nadrzędnego." + "value": "%1$@ · %2$@" } }, - "pt-BR": { + "fr": { "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": "%1$@ · %2$@" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "cmux не удалось безопасно привязать новый сеанс форка. Запустите форк снова из родительской панели." + "value": "%1$@の%2$@" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "cmux ไม่สามารถผูกเซสชันที่แยกใหม่ได้อย่างปลอดภัย เริ่มการแยกอีกครั้งจากบานหน้าต่างหลัก" + "value": "%1$@의 %2$@" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux yeni fork oturumunu güvenli bir şekilde bağlayamadı. Fork'u üst panelden yeniden başlatın." + "value": "%1$@的%2$@" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux не вдалося безпечно прив’язати новий сеанс форка. Запустіть форк ще раз із батьківської панелі." + "value": "%1$@的%2$@" } } } }, - "agent.codex.fork.notice.subtitle": { + "terminalSharing.owner.fixedShort": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Fork unavailable" + "value": "Fixed" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "フォークを利用できません" + "value": "ثابت" } }, "de": { "stringUnit": { "state": "translated", - "value": "Fork nicht verfügbar" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Fork indisponible" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "التفريع غير متاح" + "value": "Fest" } }, "es": { "stringUnit": { "state": "translated", - "value": "Fork no disponible" + "value": "Fijo" } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "無法使用分支" + "value": "Fixe" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "分支不可用" + "value": "固定" } }, "ko": { "stringUnit": { "state": "translated", - "value": "포크를 사용할 수 없음" + "value": "고정" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Račvanje nije dostupno" + "value": "固定" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Fork ikke tilgængelig" + "value": "固定" } - }, - "it": { + } + } + }, + "terminalSharing.tab.tooltip": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Fork non disponibile" + "value": "Size set by %1$@ · %2$@" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "មិនអាចប្រើការបំបែកបាន" + "value": "الحجم يحدده %1$@ · %2$@" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Fork utilgjengelig" + "value": "Größe festgelegt von %1$@ · %2$@" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Fork niedostępny" + "value": "Tamaño definido por %1$@ · %2$@" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Fork indisponível" + "value": "Taille définie par %1$@ · %2$@" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Форк недоступен" + "value": "%1$@がサイズを設定 · %2$@" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "ไม่สามารถใช้การแยกสาขาได้" + "value": "크기 설정: %1$@ · %2$@" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Fork kullanılamıyor" + "value": "尺寸由%1$@设定 · %2$@" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Форк недоступний" + "value": "尺寸由%1$@設定 · %2$@" } } } }, - "agent.codex.fork.notice.title": { + "terminalSharing.panel.sizeLabel": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Agent fork" + "value": "Size" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "エージェントフォーク" + "value": "الحجم" } }, "de": { "stringUnit": { "state": "translated", - "value": "Agent-Fork" - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Fork d’agent" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "تفريع الوكيل" + "value": "Größe" } }, "es": { "stringUnit": { "state": "translated", - "value": "Fork del agente" + "value": "Tamaño" } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "代理程式分支" + "value": "Taille" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "代理分支" + "value": "サイズ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "에이전트 포크" + "value": "크기" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Račvanje agenta" + "value": "尺寸" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Agentfork" + "value": "尺寸" } - }, - "it": { + } + } + }, + "terminalSharing.sizeMode.latest": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Fork dell'agente" + "value": "Follow Latest" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "ការបំបែកភ្នាក់ងារ" + "value": "اتباع الأحدث" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Agentforgrening" + "value": "Letzter Eingabe folgen" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Fork agenta" + "value": "Seguir la última entrada" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Fork do agente" + "value": "Suivre la dernière saisie" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Форк агента" + "value": "最新の入力に合わせる" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "การแยกสาขาของเอเจนต์" + "value": "최근 입력 따르기" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Ajan çatalı" + "value": "跟随最新输入" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Форк агента" + "value": "跟隨最新輸入" } } } }, - "socket.authTeam.committedStatusTimedOut": { + "terminalSharing.sizeMode.smallest": { "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": "Fit Everyone" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "チームの変更は適用されましたが、cmux は 10 秒以内に更新後のステータスを報告しませんでした。`cmux auth status` を実行して確認してください。" + "value": "ملاءمة الجميع" } }, - "zh-Hans": { + "de": { "stringUnit": { "state": "translated", - "value": "团队更改已应用,但 cmux 未能在 10 秒内报告更新后的状态。请运行 `cmux auth status` 确认。" + "value": "Allen anpassen" } }, - "de": { + "es": { "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": "Ajustar a todos" } }, "fr": { "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": "Adapter à tous" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "تم تطبيق تغيير الفريق، لكن cmux لم يُبلّغ عن الحالة المحدّثة خلال 10 ثوانٍ. شغّل `cmux auth status` للتأكيد." + "value": "全員に合わせる" } }, - "es": { + "ko": { "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": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "團隊變更已套用,但 cmux 未能在 10 秒內回報更新後的狀態。請執行 `cmux auth status` 確認。" + "value": "适合所有人" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "팀 변경은 적용되었지만 cmux가 10초 안에 업데이트된 상태를 보고하지 않았습니다. `cmux auth status`를 실행해 확인하세요." + "value": "適合所有人" } } } }, - "settings.mobile.browserTunnel.allowOtherHosts": { + "terminalSharing.sizeMode.largest": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "iOS Browser Reaches Other Hosts" + "value": "Largest Window" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "iOS-Browser erreicht andere Hosts" + "value": "أكبر نافذة" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Le navigateur iOS accède aux autres hôtes" + "value": "Größtes Fenster" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "متصفح iOS يصل إلى مضيفين آخرين" + "value": "Ventana más grande" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "El navegador de iOS accede a otros hosts" + "value": "Plus grande fenêtre" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "iOS 瀏覽器可連線至其他主機" + "value": "最大のウインドウ" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "iOS 浏览器可访问其他主机" + "value": "가장 큰 윈도우" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "iOS 브라우저의 다른 호스트 접근" + "value": "最大窗口" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "iOSブラウザから他のホストに接続" + "value": "最大視窗" } } } }, - "settings.mobile.browserTunnel.allowOtherHosts.subtitleOn": { + "terminalSharing.sizeMode.priority": { "extractionState": "manual", "localizations": { "en": { "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": "Priority" } }, - "de": { + "ar": { "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": "الأولوية" } }, - "fr": { + "de": { "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": "Priorität" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "يمكن لمتصفح iOS تحميل مضيفي الشبكة المحلية وVPN والإنترنت عبر جهاز Mac هذا. لا تمر عناوين الارتباط المحلي وعناوين بيانات التعريف السحابية عبر جهاز Mac هذا أبدًا؛ يحمّلها iPhone بنفسه." + "value": "Prioridad" } }, - "es": { + "fr": { "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": "Priorité" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "iOS 瀏覽器可透過這台 Mac 載入區域網路、VPN 與網際網路主機。連結本機位址與雲端中繼資料位址絕不經過這台 Mac,由 iPhone 自行載入。" + "value": "優先順位" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "iOS 浏览器可通过这台 Mac 加载局域网、VPN 和互联网主机。链路本地地址和云元数据地址绝不经过这台 Mac,由 iPhone 自行加载。" + "value": "우선순위" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "iOS 브라우저가 이 Mac을 통해 LAN, VPN, 인터넷 호스트를 불러올 수 있습니다. 링크 로컬 및 클라우드 메타데이터 주소는 이 Mac을 거치지 않으며 iPhone이 직접 불러옵니다." + "value": "优先级" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "iOSブラウザはこのMac経由でLAN、VPN、インターネット上のホストを読み込めます。リンクローカルとクラウドメタデータのアドレスはこのMacを経由せず、iPhoneが直接読み込みます。" + "value": "優先順序" } } } }, - "settings.mobile.browserTunnel.allowOtherHosts.subtitleOff": { + "terminalSharing.sizeMode.fixed": { "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": "Fixed" } }, - "de": { + "ar": { "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": "ثابت" } }, - "fr": { + "de": { "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": "Fest" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "لا يصل متصفح iOS عبر جهاز Mac هذا إلا إلى localhost الخاص به. تُحمَّل المواقع الأخرى عبر شبكة الهاتف نفسه." + "value": "Fijo" } }, - "es": { + "fr": { "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": "Fixe" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "iOS 瀏覽器只會透過這台 Mac 連線至它的 localhost。其他網站會透過手機本身的網路載入。" + "value": "固定" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "iOS 浏览器只会通过这台 Mac 访问它的 localhost。其他网站通过手机自身的网络加载。" + "value": "고정" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "iOS 브라우저는 이 Mac을 통해 이 Mac의 localhost에만 접근합니다. 다른 사이트는 휴대폰 자체 네트워크로 불러옵니다." + "value": "固定" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "iOSブラウザがこのMac経由で接続するのは、このMacのlocalhostだけです。他のサイトは電話自身のネットワークで読み込みます。" + "value": "固定" } } } }, - "settings.search.alias.setting.mobile.browserTunnelAllowOtherHosts": { + "terminalSharing.panel.setsSize": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security" + "value": "sets size" } }, - "de": { + "ar": { "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": "يحدد الحجم" } }, - "fr": { + "de": { "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": "legt Größe fest" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security متصفح نفق وكيل شبكة محلية مضيفون شبكة أمان" + "value": "define el tamaño" } }, - "es": { + "fr": { "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": "définit la taille" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security 行動裝置 瀏覽器 通道 代理 區域網路 主機 網路 安全性" + "value": "サイズを設定" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security 移动 浏览器 隧道 代理 局域网 主机 网络 安全" + "value": "크기 설정" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security 모바일 브라우저 터널 프록시 로컬 네트워크 호스트 네트워크 보안" + "value": "设定尺寸" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security モバイル ブラウザ トンネル プロキシ ローカルネットワーク ホスト ネットワーク セキュリティ" + "value": "設定尺寸" } } } }, - "cli.browser.inputFiles.error.usage": { + "terminalSharing.panel.notCounted": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "set-input-files requires --selector <css> and either --file <path> (repeatable) or --clear" + "value": "not counted" } }, "ar": { "stringUnit": { "state": "translated", - "value": "يتطلب set-input-files الخيار --selector <css> مع --file <path> (يمكن تكراره) أو --clear" + "value": "غير محتسب" } }, "de": { "stringUnit": { "state": "translated", - "value": "set-input-files benötigt --selector <css> und entweder --file <path> (wiederholbar) oder --clear" + "value": "nicht gezählt" } }, "es": { "stringUnit": { "state": "translated", - "value": "set-input-files requiere --selector <css> y --file <path> (repetible) o --clear" + "value": "no cuenta" } }, "fr": { "stringUnit": { "state": "translated", - "value": "set-input-files nécessite --selector <css> et soit --file <path> (répétable), soit --clear" + "value": "non compté" } }, "ja": { "stringUnit": { "state": "translated", - "value": "set-input-files には --selector <css> と、--file <path>(複数指定可)または --clear が必要です" + "value": "カウント対象外" } }, "ko": { "stringUnit": { "state": "translated", - "value": "set-input-files에는 --selector <css>와 --file <path>(반복 가능) 또는 --clear가 필요합니다" + "value": "계산 안 됨" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "set-input-files 需要 --selector <css>,以及 --file <path>(可重复)或 --clear" + "value": "不计入" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "set-input-files 需要 --selector <css>,以及 --file <path>(可重複)或 --clear" + "value": "不計入" } } } }, - "cli.browser.inputFiles.help": { + "terminalSharing.panel.rowOptions": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n Select local files (up to 128 files, 32 MiB total) or clear the selection. Directory uploads are unsupported." + "value": "Options for %@" } }, "ar": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n اختر ملفات محلية (حتى 128 ملفًا بإجمالي 32 MiB) أو امسح الاختيار. رفع المجلدات غير مدعوم." + "value": "خيارات %@" } }, "de": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector <css> (--file <path> ... | --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": "Optionen für %@" } }, "es": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector <css> (--file <path> ... | --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": "Opciones de %@" } }, "fr": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector <css> (--file <path> ... | --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": "Options pour %@" } }, "ja": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n ローカルファイルを選択(最大128個、合計32 MiB)するか、選択を解除します。ディレクトリのアップロードには対応していません。" + "value": "%@のオプション" } }, "ko": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n 로컬 파일을 선택하거나(최대 128개, 총 32 MiB) 선택을 지웁니다. 디렉터리 업로드는 지원되지 않습니다." + "value": "%@ 옵션" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n 选择本地文件(最多 128 个文件,总计 32 MiB)或清除选择。不支持上传目录。" + "value": "%@的选项" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n 選取本機檔案(最多 128 個檔案,總計 32 MiB)或清除選取。不支援上傳目錄。" + "value": "%@的選項" } } } }, - "browser.inputFiles.error.invalidTarget": { + "terminalSharing.panel.disconnectOthersButton": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The selector must match a file input without directory selection" + "value": "Disconnect Others" } }, "ar": { "stringUnit": { "state": "translated", - "value": "يجب أن يطابق المحدد حقل إدخال ملفات لا يستخدم اختيار المجلدات" + "value": "قطع اتصال الآخرين" } }, "de": { "stringUnit": { "state": "translated", - "value": "Der Selektor muss ein Dateieingabefeld ohne Ordnerauswahl treffen" + "value": "Andere trennen" } }, "es": { "stringUnit": { "state": "translated", - "value": "El selector debe coincidir con un campo de archivos sin selección de carpetas" + "value": "Desconectar a los demás" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Le sélecteur doit correspondre à un champ de fichier sans sélection de dossier" + "value": "Déconnecter les autres" } }, "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": "中斷其他連線" } } } }, - "browser.inputFiles.error.multipleRequired": { + "terminalSharing.detached.titleShort": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "This file input does not allow multiple files" + "value": "Detached" } }, "ar": { "stringUnit": { "state": "translated", - "value": "لا يسمح حقل إدخال الملفات هذا باختيار عدة ملفات" + "value": "تم الفصل" } }, "de": { "stringUnit": { "state": "translated", - "value": "Dieses Dateieingabefeld erlaubt nicht mehrere Dateien" + "value": "Getrennt" } }, "es": { "stringUnit": { "state": "translated", - "value": "Este campo de archivos no permite seleccionar varios archivos" + "value": "Desconectado" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ce champ de fichier ne permet pas de sélectionner plusieurs fichiers" + "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": "已分離" } } } }, - "browser.inputFiles.error.cancelled": { + "terminalSharing.detached.byMessageShort": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "File upload preparation was cancelled" + "value": "%1$@ disconnected this Mac at %2$@." } }, "ar": { "stringUnit": { "state": "translated", - "value": "تم إلغاء تجهيز الملفات للرفع" + "value": "قطع %1$@ اتصال هذا الـMac في %2$@." } }, "de": { "stringUnit": { "state": "translated", - "value": "Die Vorbereitung des Datei-Uploads wurde abgebrochen" + "value": "%1$@ hat diesen Mac um %2$@ getrennt." } }, "es": { "stringUnit": { "state": "translated", - "value": "Se canceló la preparación de los archivos para subir" + "value": "%1$@ desconectó este Mac a las %2$@." } }, "fr": { "stringUnit": { "state": "translated", - "value": "La préparation des fichiers à envoyer a été annulée" + "value": "%1$@ a déconnecté ce Mac à %2$@." } }, "ja": { "stringUnit": { "state": "translated", - "value": "ファイルのアップロード準備がキャンセルされました" + "value": "%1$@が%2$@にこのMacを切断しました。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "파일 업로드 준비가 취소되었습니다" + "value": "%1$@이(가) %2$@에 이 Mac의 연결을 끊었습니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "已取消准备上传文件" + "value": "%1$@于%2$@断开了这台Mac的连接。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "已取消準備上傳檔案" + "value": "%1$@於%2$@中斷了這台Mac的連線。" } } } }, - "browser.inputFiles.error.invalidParameters": { + "terminalSharing.chip.hiddenColumns": { "extractionState": "manual", "localizations": { "en": { - "stringUnit": { - "state": "translated", - "value": "set-input-files requires a selector and a files array of absolute paths" + "variations": { + "plural": { + "one": { + "stringUnit": { + "state": "translated", + "value": "%ld col hidden" + } + }, + "other": { + "stringUnit": { + "state": "translated", + "value": "%ld cols hidden" + } + } + } } }, "ar": { - "stringUnit": { - "state": "translated", - "value": "يتطلب set-input-files محددًا ومصفوفة files تحتوي على مسارات مطلقة" + "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": { - "stringUnit": { - "state": "translated", - "value": "set-input-files benötigt einen Selektor und ein files-Array mit absoluten Pfaden" + "variations": { + "plural": { + "one": { + "stringUnit": { + "state": "translated", + "value": "%ld Spalte ausgeblendet" + } + }, + "other": { + "stringUnit": { + "state": "translated", + "value": "%ld Spalten ausgeblendet" + } + } + } } }, "es": { - "stringUnit": { - "state": "translated", - "value": "set-input-files requiere un selector y una matriz files de rutas absolutas" + "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": { - "stringUnit": { - "state": "translated", - "value": "set-input-files nécessite un sélecteur et un tableau files de chemins absolus" + "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": { - "stringUnit": { - "state": "translated", - "value": "set-input-files にはセレクターと絶対パスを含む files 配列が必要です" + "variations": { + "plural": { + "other": { + "stringUnit": { + "state": "translated", + "value": "%ld列が非表示" + } + } + } } }, "ko": { - "stringUnit": { - "state": "translated", - "value": "set-input-files에는 선택자와 절대 경로로 구성된 files 배열이 필요합니다" + "variations": { + "plural": { + "other": { + "stringUnit": { + "state": "translated", + "value": "%ld열 숨겨짐" + } + } + } } }, "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "set-input-files 需要选择器及包含绝对路径的 files 数组" + "variations": { + "plural": { + "other": { + "stringUnit": { + "state": "translated", + "value": "隐藏 %ld 列" + } + } + } } }, "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "set-input-files 需要選取器及包含絕對路徑的 files 陣列" + "variations": { + "plural": { + "other": { + "stringUnit": { + "state": "translated", + "value": "隱藏 %ld 欄" + } + } + } } } } }, - "browser.inputFiles.error.invalidSelection": { + "terminalSharing.panel.cancel": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Select at most 128 files using absolute paths" + "value": "Cancel" } }, "ar": { "stringUnit": { "state": "translated", - "value": "اختر ما يصل إلى 128 ملفًا باستخدام مسارات مطلقة" + "value": "إلغاء" } }, "de": { "stringUnit": { "state": "translated", - "value": "Wählen Sie höchstens 128 Dateien mit absoluten Pfaden aus" + "value": "Abbrechen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Selecciona como máximo 128 archivos mediante rutas absolutas" + "value": "Cancelar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Sélectionnez au maximum 128 fichiers avec des chemins absolus" + "value": "Annuler" } }, "ja": { "stringUnit": { "state": "translated", - "value": "絶対パスで最大128個のファイルを選択してください" + "value": "キャンセル" } }, "ko": { "stringUnit": { "state": "translated", - "value": "절대 경로를 사용하여 최대 128개의 파일을 선택하세요" + "value": "취소" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "请使用绝对路径选择最多 128 个文件" + "value": "取消" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "請使用絕對路徑選取最多 128 個檔案" + "value": "取消" } } } }, - "browser.inputFiles.error.timeout": { + "terminalSharing.panel.disconnectOthers.confirm": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Timed out preparing files for upload" + "value": "Disconnect all other clients?" } }, "ar": { "stringUnit": { "state": "translated", - "value": "انتهت مهلة تجهيز الملفات للرفع" + "value": "هل تريد قطع اتصال جميع العملاء الآخرين؟" } }, "de": { "stringUnit": { "state": "translated", - "value": "Zeitüberschreitung beim Vorbereiten der Dateien für den Upload" + "value": "Alle anderen Clients trennen?" } }, "es": { "stringUnit": { "state": "translated", - "value": "Se agotó el tiempo de preparación de los archivos para subir" + "value": "¿Desconectar todos los demás clientes?" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Le délai de préparation des fichiers à envoyer a été dépassé" + "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": "要中斷其他所有用戶端的連線嗎?" } } } }, - "browser.inputFiles.error.tooLarge": { + "terminalSharing.panel.disconnectOthers.confirmButton": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The combined upload must be no larger than 32 MiB" + "value": "Disconnect" } }, "ar": { "stringUnit": { "state": "translated", - "value": "يجب ألا يتجاوز الحجم الإجمالي للملفات المرفوعة 32 MiB" + "value": "قطع الاتصال" } }, "de": { "stringUnit": { "state": "translated", - "value": "Die Uploads dürfen insgesamt nicht größer als 32 MiB sein" + "value": "Trennen" } }, "es": { "stringUnit": { "state": "translated", - "value": "El tamaño total de los archivos para subir no debe superar los 32 MiB" + "value": "Desconectar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "La taille totale des fichiers à envoyer ne doit pas dépasser 32 MiB" + "value": "Déconnecter" } }, "ja": { "stringUnit": { "state": "translated", - "value": "アップロードするファイルの合計サイズは32 MiB以下にしてください" + "value": "切断" } }, "ko": { "stringUnit": { "state": "translated", - "value": "전체 업로드 크기는 32 MiB를 초과할 수 없습니다" + "value": "연결 끊기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "上传文件的总大小不得超过 32 MiB" + "value": "断开连接" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "上傳檔案的總大小不得超過 32 MiB" + "value": "中斷連線" } } } }, - "browser.inputFiles.error.unreadableFile": { + "terminalSharing.panel.fixedColumns": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Every upload path must be a readable regular file" + "value": "Columns" } }, "ar": { "stringUnit": { "state": "translated", - "value": "يجب أن يشير كل مسار للرفع إلى ملف عادي قابل للقراءة" + "value": "الأعمدة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Jeder Upload-Pfad muss auf eine lesbare reguläre Datei verweisen" + "value": "Spalten" } }, "es": { "stringUnit": { "state": "translated", - "value": "Cada ruta de subida debe apuntar a un archivo normal que se pueda leer" + "value": "Columnas" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Chaque chemin à envoyer doit désigner un fichier ordinaire lisible" + "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": "欄數" } } } }, - "cloudTree.group.cloudMachines.usage": { + "terminalSharing.panel.fixedRows": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "%1$d/%2$d" + "value": "Rows" } }, - "fr": { + "ar": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "الصفوف" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "Zeilen" } }, "es": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "Filas" } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "Lignes" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "行" } }, "ko": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "%1$d/%2$d" + "value": "행" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "行数" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "列數" } - }, - "it": { + } + } + }, + "terminalSharing.panel.unavailable": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "This terminal is not shared." } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "هذه الطرفية غير مشتركة." } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "Dieses Terminal wird nicht geteilt." } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "Esta terminal no está compartida." } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "Ce terminal n’est pas partagé." } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "このターミナルは共有されていません。" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "이 터미널은 공유되지 않았습니다." } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "此终端未共享。" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%1$d/%2$d" + "value": "此終端機未共用。" } } } }, - "cloud.ports.vpnOff.explanation": { + "terminalSharing.panel.counts": { "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": "Counts toward size" } }, - "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": "يُحتسب في الحجم" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "تُفتح المنافذ في cmux دون إعداد. لاستخدام العناوين الخاصة في التطبيقات الأخرى، أعدّ Cloud VPN." + "value": "Zählt für die Größe" } }, "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": "Cuenta para el tamaño" } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "無需設定即可在 cmux 中開啟連接埠。如要在其他 App 使用私有位址,請設定 Cloud VPN。" + "value": "Compte pour la taille" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "无需设置即可在 cmux 中打开端口。要在其他应用中使用私有地址,请设置云 VPN。" + "value": "サイズに反映" } }, "ko": { "stringUnit": { "state": "translated", - "value": "별도 설정 없이 cmux에서 포트를 열 수 있습니다. 다른 앱에서 비공개 주소를 사용하려면 Cloud VPN을 설정하세요." + "value": "크기에 반영" } }, - "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": "计入大小" } }, - "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": "計入大小" } - }, - "it": { + } + } + }, + "terminalSharing.panel.disconnect": { + "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": "Disconnect" } }, - "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": "Trennen" } }, - "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": "Desconectar" } }, - "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": "Déconnecter" } }, - "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": { + "cli.sshPtyAttach.launchAcknowledgementTimeoutRetry": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Optional: Cloud VPN" + "value": "[cmux] cmux did not acknowledge the SSH launch; retrying %s in %ss." } }, "de": { "stringUnit": { "state": "translated", - "value": "Optional: Cloud-VPN" + "value": "[cmux] cmux hat den SSH-Start nicht bestätigt; neuer Versuch %s in %ss." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Facultatif : VPN Cloud" + "value": "[cmux] cmux n’a pas confirmé le démarrage SSH ; nouvelle tentative %s dans %ss." } }, "ar": { "stringUnit": { "state": "translated", - "value": "اختياري: Cloud VPN" + "value": "[cmux] لم يؤكد cmux بدء SSH؛ ستتم إعادة المحاولة %s خلال %s ث." } }, "es": { "stringUnit": { "state": "translated", - "value": "Opcional: Cloud VPN" + "value": "[cmux] cmux no confirmó el inicio de SSH; reintentando %s en %ss." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "選用:Cloud VPN" + "value": "[cmux] cmux 未確認 SSH 啟動;將在第 %s 次於 %s 秒後重試。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "可选:云 VPN" + "value": "[cmux] cmux 未确认 SSH 启动;将在第 %s 次于 %s 秒后重试。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "선택 사항: Cloud VPN" + "value": "[cmux] cmux가 SSH 시작을 확인하지 못했습니다. %s번째로 %s초 후 다시 시도합니다." } }, "ja": { "stringUnit": { "state": "translated", - "value": "任意:Cloud VPN" + "value": "[cmux] cmux が SSH の起動を確認できないため、%s 回目を %s 秒後に再試行します。" } }, "bs": { "stringUnit": { - "state": "needs_review", - "value": "Opcionalno: Cloud VPN" + "state": "translated", + "value": "[cmux] cmux nije potvrdio SSH pokretanje; ponovni pokušaj %s za %ss." } }, "da": { "stringUnit": { - "state": "needs_review", - "value": "Valgfrit: Cloud VPN" + "state": "translated", + "value": "[cmux] cmux bekræftede ikke SSH-starten; prøver igen %s om %ss." } }, "it": { "stringUnit": { - "state": "needs_review", - "value": "Facoltativo: Cloud VPN" + "state": "translated", + "value": "[cmux] cmux non ha confermato l’avvio SSH; nuovo tentativo %s tra %ss." } }, "km": { "stringUnit": { - "state": "needs_review", - "value": "ជាជម្រើស៖ Cloud VPN" + "state": "translated", + "value": "[cmux] cmux មិនបានបញ្ជាក់ការចាប់ផ្តើម SSH ទេ; កំពុងព្យាយាមម្តងទៀត %s ក្នុងរយៈពេល %ss។" } }, "nb": { "stringUnit": { - "state": "needs_review", - "value": "Valgfritt: Cloud VPN" + "state": "translated", + "value": "[cmux] cmux bekreftet ikke SSH-oppstarten; prøver på nytt %s om %ss." } }, "pl": { "stringUnit": { - "state": "needs_review", - "value": "Opcjonalnie: Cloud VPN" + "state": "translated", + "value": "[cmux] cmux nie potwierdził uruchomienia SSH; ponawianie próby %s za %ss." } }, "pt-BR": { "stringUnit": { - "state": "needs_review", - "value": "Opcional: Cloud VPN" + "state": "translated", + "value": "[cmux] o cmux não confirmou o início do SSH; tentando novamente %s em %ss." } }, "ru": { "stringUnit": { - "state": "needs_review", - "value": "Необязательно: Cloud VPN" + "state": "translated", + "value": "[cmux] cmux не подтвердил запуск SSH; повторная попытка %s через %ss." } }, "th": { "stringUnit": { - "state": "needs_review", - "value": "ตัวเลือกเพิ่มเติม: Cloud VPN" + "state": "translated", + "value": "[cmux] cmux ไม่ยืนยันการเริ่มต้น SSH; กำลังลองใหม่ครั้งที่ %s ในอีก %s วินาที" } }, "tr": { "stringUnit": { - "state": "needs_review", - "value": "İsteğe bağlı: Cloud VPN" + "state": "translated", + "value": "[cmux] cmux SSH başlatmasını onaylamadı; %s saniye içinde %s. deneme yapılıyor." } }, "uk": { "stringUnit": { - "state": "needs_review", - "value": "Необов’язково: Cloud VPN" + "state": "translated", + "value": "[cmux] cmux не підтвердив запуск SSH; повторна спроба %s через %s с." } } } }, - "cloud.vpn.setup.address.body": { + "machines.requiresPro.upgrade.short": { "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": "Upgrade" } }, - "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": "ترقية" } }, - "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": "Upgraden" } }, "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": "Actualizar" } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "每台机器都有自己的私有 IP。两台机器可以同时使用端口 3000,例如 10.40.0.10:3000 和 10.40.0.11:3000。连接后右键点击 Cloud 端口,选择“复制私有地址 URL”。这些地址是私有地址,不是公开分享链接。" + "value": "Mettre à niveau" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "每台機器都有自己的私有 IP。兩台機器可以同時使用連接埠 3000,例如 10.40.0.10:3000 和 10.40.0.11:3000。連線後對 Cloud 連接埠按右鍵,選擇「複製私有位址 URL」。這些位址是私有位址,不是公開分享連結。" + "value": "アップグレード" } }, "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": "업그레이드" } }, - "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": "升级" } }, - "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": "升級" } - }, - "it": { + } + } + }, + "machines.sessionRejected.signInAgain.short": { + "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": "Sign In" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "ម៉ាស៊ីននីមួយៗមាន IP ឯកជនផ្ទាល់ខ្លួន។ ម៉ាស៊ីនពីរអាចប្រើច្រក 3000 ដូចគ្នា ឧទាហរណ៍ 10.40.0.10:3000 និង 10.40.0.11:3000។ បន្ទាប់ពីភ្ជាប់ ចុចខាងស្តាំលើច្រក Cloud ហើយជ្រើស ចម្លង URL អាសយដ្ឋានឯកជន។ ទាំងនេះជាអាសយដ្ឋានឯកជន មិនមែនតំណចែករំលែកសាធារណៈទេ។" + "value": "تسجيل الدخول" } }, - "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": "Anmelden" } }, - "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": "Iniciar 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": "Se reconnecter" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "У каждой машины свой частный IP. Две машины могут использовать порт 3000, например 10.40.0.10:3000 и 10.40.0.11:3000. После подключения щёлкните правой кнопкой мыши порт Cloud и выберите Скопировать URL частного адреса. Это частные адреса, а не публичные ссылки." + "value": "再サインイン" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "แต่ละเครื่องมี IP ส่วนตัวของตนเอง สองเครื่องสามารถใช้พอร์ต 3000 ได้ เช่น 10.40.0.10:3000 และ 10.40.0.11:3000 หลังเชื่อมต่อ คลิกขวาที่พอร์ต Cloud แล้วเลือกคัดลอก URL ที่อยู่ส่วนตัว ที่อยู่เหล่านี้เป็นส่วนตัว ไม่ใช่ลิงก์สาธารณะ" + "value": "다시 로그인" } }, - "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": "重新登录" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Кожна машина має власну приватну IP-адресу. Дві машини можуть використовувати порт 3000, наприклад 10.40.0.10:3000 і 10.40.0.11:3000. Після підключення клацніть правою кнопкою миші порт Cloud і виберіть Копіювати URL приватної адреси. Це приватні адреси, а не публічні посилання для спільного доступу." + "value": "重新登入" } } } }, - "cloud.vpn.setup.cancel": { + "machines.requiresPro.stale": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cancel" + "value": "Cloud machines need cmux Pro — showing last known" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Abbrechen" + "value": "تتطلب الأجهزة السحابية إصدار cmux Pro — يتم عرض آخر حالة معروفة" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Annuler" + "value": "Cloud-Maschinen erfordern cmux Pro – zeige letzten bekannten Stand" } }, "es": { "stringUnit": { "state": "translated", - "value": "Cancelar" - } - }, - "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": "Otkaži" + "value": "云端机器需要 cmux Pro —— 显示的是最后已知状态" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Annuller" + "value": "雲端機器需要 cmux Pro — 顯示上次已知的狀態" } - }, - "it": { + } + } + }, + "machines.sessionRejected.stale": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Annulla" + "value": "Sign-in needs a refresh — showing last known" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "បោះបង់" + "value": "يحتاج تسجيل الدخول إلى تحديث — يتم عرض آخر حالة معروفة" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Avbryt" + "value": "Anmeldung muss aktualisiert werden – zeige letzten bekannten Stand" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Anuluj" + "value": "Es necesario actualizar el inicio de sesión — se muestra el último estado conocido" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Cancelar" + "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": "İptal" + "value": "登录状态需要刷新 —— 显示的是最后已知状态" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Скасувати" + "value": "登入狀態需要重新整理 — 顯示上次已知的狀態" } } } }, - "cloud.vpn.setup.connect": { + "sidebar.extensions.action.noSpaceForPane": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Connect Cloud VPN" + "value": "No space for new pane" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Cloud-VPN verbinden" + "value": "لا توجد مساحة للوحة جديدة" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Connecter le VPN Cloud" + "value": "Kein Platz für einen neuen Bereich" } }, "es": { "stringUnit": { "state": "translated", - "value": "Conectar VPN de Cloud" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Cloud VPNに接続" + "value": "No hay espacio para un panel nuevo" } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "连接 Cloud VPN" + "value": "Pas de place pour un nouveau panneau" } }, - "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": { + } + } + }, + "cli.focus.defaultHelp": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Connetti VPN Cloud" + "value": "Default: focus when run interactively, stay in the background when run by an agent or script." } }, - "km": { + "ja": { "stringUnit": { "state": "translated", - "value": "ភ្ជាប់ Cloud VPN" + "value": "既定: 対話的に実行した場合はフォーカスし、エージェントやスクリプトから実行した場合はバックグラウンドのままにします。" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Koble til Cloud VPN" + "value": "Standard: bei interaktiver Ausführung fokussieren, bei Ausführung durch einen Agenten oder ein Skript im Hintergrund bleiben." } }, - "pl": { + "fr": { "stringUnit": { "state": "translated", - "value": "Połącz z Cloud VPN" + "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." } }, - "pt-BR": { + "ar": { "stringUnit": { "state": "translated", - "value": "Conectar Cloud VPN" + "value": "الافتراضي: التركيز عند التشغيل التفاعلي، والبقاء في الخلفية عند التشغيل بواسطة وكيل أو برنامج نصي." } }, - "ru": { + "es": { "stringUnit": { "state": "translated", - "value": "Подключить Cloud VPN" + "value": "Predeterminado: enfoca al ejecutarse de forma interactiva y se queda en segundo plano cuando lo ejecuta un agente o un script." } }, - "th": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "เชื่อมต่อ Cloud VPN" + "value": "預設:互動執行時取得焦點;由代理程式或指令稿執行時保持在背景。" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud VPN’e bağlan" + "value": "默认:交互式运行时获得焦点;由代理或脚本运行时保持在后台。" } }, - "uk": { + "ko": { "stringUnit": { "state": "translated", - "value": "Підключити Cloud VPN" + "value": "기본값: 대화형으로 실행하면 포커스를 가져오고, 에이전트나 스크립트가 실행하면 백그라운드에 머뭅니다." } } } }, - "cloud.vpn.setup.connected": { + "cli.help.openFocusFlags": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Connected" + "value": "Focus:\n --focus Switch to the new workspace\n --no-focus Open it in the background" } }, - "de": { + "ja": { "stringUnit": { "state": "translated", - "value": "Verbunden" + "value": "フォーカス:\n --focus 新しいワークスペースに切り替えます\n --no-focus バックグラウンドで開きます" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Connecté" + "value": "Fokus:\n --focus Zum neuen Workspace wechseln\n --no-focus Im Hintergrund öffnen" } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "Conectada" + "value": "Focus :\n --focus Bascule vers le nouvel espace de travail\n --no-focus L’ouvre en arrière-plan" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "接続済み" + "value": "التركيز:\n --focus ينتقل إلى مساحة العمل الجديدة\n --no-focus يفتحها في الخلفية" } }, - "zh-Hans": { + "es": { "stringUnit": { "state": "translated", - "value": "已连接" + "value": "Foco:\n --focus Cambia al nuevo espacio de trabajo\n --no-focus Lo abre en segundo plano" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "已連線" + "value": "焦點:\n --focus 切換到新的工作區\n --no-focus 在背景開啟" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "연결됨" + "value": "焦点:\n --focus 切换到新的工作区\n --no-focus 在后台打开" } }, - "ar": { + "ko": { "stringUnit": { "state": "translated", - "value": "متصل" + "value": "포커스:\n --focus 새 워크스페이스로 전환합니다\n --no-focus 백그라운드에서 엽니다" } - }, - "bs": { + } + } + }, + "settings.app.compactAgentStatus": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Povezano" + "value": "Compact Agent Status" } }, - "da": { + "ar": { "stringUnit": { "state": "translated", - "value": "Forbundet" - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "Connessa" - } - }, - "km": { - "stringUnit": { - "state": "translated", - "value": "បានភ្ជាប់" + "value": "حالة الوكيل المختصرة" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Tilkoblet" + "value": "Kompakter Agentenstatus" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Połączono" + "value": "Estado de agente compacto" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Conectada" + "value": "Statut d’agent compact" } }, - "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": { + "settings.app.compactAgentStatus.subtitle": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Disconnect" + "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." } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Trennen" + "value": "إظهار حالة الوكيل والعناصر غير المقروءة وطلب السحب لمساحة العمل كأيقونة ملونة واحدة قبل العنوان بدلاً من صفوف منفصلة. مرّر المؤشر فوق الأيقونة لعرض التفاصيل." } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Déconnecter" + "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." } }, "es": { "stringUnit": { "state": "translated", - "value": "Desconectar" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "切断" + "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." } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "断开连接" + "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." } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "中斷連線" + "value": "ワークスペースのエージェント、未読、プルリクエストの状態を、個別の行ではなくタイトルの前の色付きアイコン1つで示します。詳細はアイコンにポインタを合わせると表示されます。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "연결 해제" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "قطع الاتصال" + "value": "워크스페이스의 에이전트, 읽지 않음, 풀 리퀘스트 상태를 별도의 줄이 아니라 제목 앞의 색상 아이콘 하나로 나타냅니다. 자세한 내용은 아이콘 위에 포인터를 올려 확인하세요." } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Prekini vezu" + "value": "用标题前的单个彩色图标表示工作区的代理、未读和拉取请求状态,而不是各自占一行。将指针悬停在图标上可查看详细信息。" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Afbryd" + "value": "以標題前的單一彩色圖示表示工作區的代理、未讀與拉取請求狀態,而非各自佔一行。將游標移到圖示上可查看詳細資訊。" } - }, - "it": { + } + } + }, + "settings.search.alias.setting.app.compact-agent-status": { + "extractionState": "manual", + "localizations": { + "ar": { "stringUnit": { "state": "translated", - "value": "Disconnetti" + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex مختصر وكيل حالة أيقونة سطر العنوان" } }, - "km": { + "de": { "stringUnit": { "state": "translated", - "value": "ផ្តាច់" + "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": "Koble fra" + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Rozłącz" + "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": "Desconectar" + "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": "Отключить" + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex コンパクト エージェント 状態 アイコン タイトル行" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "ตัดการเชื่อมต่อ" + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex 간결 에이전트 상태 아이콘 제목 줄" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Bağlantıyı kes" + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex 精简 代理 状态 图标 标题行" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Від’єднати" + "value": "sidebar.compactAgentStatus compact agent status running needs input glyph icon title line dense claude codex 精簡 代理 狀態 圖示 標題列" } } } }, - "cloud.vpn.setup.entry.subtitle": { + "sidebar.agentStatus.glyph.tooltip": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Optional private IP access for other apps" + "value": "%1$@: %2$@" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Optionaler Zugriff auf private IPs für andere Apps" + "value": "%1$@: %2$@" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Accès facultatif aux IP privées pour les autres apps" + "value": "%1$@: %2$@" } }, "es": { "stringUnit": { "state": "translated", - "value": "Acceso opcional a IP privadas para otras apps" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "ほかのアプリからプライベートIPへアクセスする任意の設定" + "value": "%1$@: %2$@" } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "为其他应用提供可选的私有 IP 访问" + "value": "%1$@ : %2$@" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "為其他 App 提供選用的私有 IP 存取" + "value": "%1$@:%2$@" } }, "ko": { "stringUnit": { "state": "translated", - "value": "다른 앱의 비공개 IP 접근을 위한 선택 설정" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "وصول اختياري إلى عناوين IP الخاصة للتطبيقات الأخرى" + "value": "%1$@: %2$@" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Opcionalni pristup privatnim IP adresama za druge aplikacije" + "value": "%1$@:%2$@" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Valgfri privat IP-adgang for andre apps" + "value": "%1$@:%2$@" } - }, - "it": { + } + } + }, + "sidebar.compactStatus.profile": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Accesso facoltativo agli IP privati per altre app" + "value": "Profile" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "ចូលប្រើ IP ឯកជនសម្រាប់កម្មវិធីផ្សេងៗជាជម្រើស" + "value": "الملف الشخصي" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Valgfri privat IP-tilgang for andre apper" + "value": "Profil" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Opcjonalny dostęp innych aplikacji do prywatnych adresów IP" + "value": "Perfil" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Acesso opcional a IPs privados para outros apps" + "value": "Profil" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Необязательный доступ других приложений к частным IP" + "value": "プロファイル" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "การเข้าถึง IP ส่วนตัวสำหรับแอปอื่นแบบไม่บังคับ" + "value": "프로필" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Diğer uygulamalar için isteğe bağlı özel IP erişimi" + "value": "配置文件" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Необов’язковий доступ інших програм до приватних IP" + "value": "設定檔" } } } }, - "cloud.vpn.setup.failed": { + "terminal.clipboardReadConfirmation.deny": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Needs attention" + "value": "Deny" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Aktion erforderlich" + "value": "رفض" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Action requise" + "value": "Ablehnen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Requiere atención" + "value": "Denegar" } }, - "ja": { + "fr": { "stringUnit": { "state": "translated", - "value": "対応が必要" + "value": "Refuser" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "需要处理" + "value": "拒否" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "需要處理" + "value": "거부" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "조치 필요" + "value": "拒绝" } }, - "ar": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "يتطلب إجراءً" + "value": "拒絕" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Potrebna pažnja" + "value": "Odbij" } }, "da": { "stringUnit": { "state": "translated", - "value": "Kræver opmærksomhed" + "value": "Afvis" } }, "it": { "stringUnit": { "state": "translated", - "value": "Richiede attenzione" + "value": "Nega" } }, "km": { "stringUnit": { "state": "translated", - "value": "ត្រូវការការយកចិត្តទុកដាក់" + "value": "បដិសេធ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Krever handling" + "value": "Avslå" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Wymaga uwagi" + "value": "Odmów" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Requer atenção" + "value": "Negar" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Требуется действие" + "value": "Запретить" } }, "th": { "stringUnit": { "state": "translated", - "value": "ต้องดำเนินการ" + "value": "ปฏิเสธ" } }, "tr": { "stringUnit": { "state": "translated", - "value": "İlgilenilmeli" + "value": "Reddet" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Потрібна увага" + "value": "Заборонити" } } } }, - "cloud.vpn.setup.off": { + "terminal.clipboardReadConfirmation.message": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Off" + "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": "Aus" + "value": "يريد برنامج في هذه الطرفية قراءة الحافظة. اسمح بذلك فقط إذا كنت تثق بالبرنامج." } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "Désactivé" + "value": "Ein Programm in diesem Terminal möchte deine Zwischenablage lesen. Erlaube es nur, wenn du dem Programm vertraust." } }, "es": { "stringUnit": { "state": "translated", - "value": "Desactivada" + "value": "Un programa de esta terminal quiere leer tu portapapeles. Permítelo solo si confías en el programa." } }, - "ja": { + "fr": { "stringUnit": { "state": "translated", - "value": "オフ" + "value": "Un programme de ce terminal veut lire votre presse-papiers. Ne l’autorisez que si vous faites confiance à ce programme." } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "已关闭" + "value": "このターミナルのプログラムがクリップボードを読み取ろうとしています。信頼できるプログラムの場合にのみ許可してください。" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "已關閉" + "value": "이 터미널의 프로그램이 클립보드를 읽으려고 합니다. 프로그램을 신뢰할 수 있을 때만 허용하세요." } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "꺼짐" + "value": "此终端中的程序想要读取你的剪贴板。只有在你信任该程序时才允许。" } }, - "ar": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "متوقف" + "value": "此終端機中的程式想要讀取你的剪貼簿。只有在你信任該程式時才允許。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Isključeno" + "value": "Program u ovom terminalu želi čitati vaš međuspremnik. Dozvolite samo ako vjerujete programu." } }, "da": { "stringUnit": { "state": "translated", - "value": "Fra" + "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": "Disattivata" + "value": "Un programma in questo terminale vuole leggere gli appunti. Consentilo solo se ti fidi del programma." } }, "km": { "stringUnit": { "state": "translated", - "value": "បិទ" + "value": "កម្មវិធីក្នុងស្ថានីយនេះចង់អានក្ដារតម្បៀតខ្ទាស់របស់អ្នក។ អនុញ្ញាតតែបើអ្នកទុកចិត្តកម្មវិធីនេះ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Av" + "value": "Et program i denne terminalen vil lese utklippstavlen din. Tillat det bare hvis du stoler på programmet." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Wyłączona" + "value": "Program w tym terminalu chce odczytać schowek. Zezwól tylko, jeśli ufasz temu programowi." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Desativada" + "value": "Um programa neste terminal quer ler sua área de transferência. Permita somente se você confiar no programa." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Выключено" + "value": "Программа в этом терминале хочет прочитать буфер обмена. Разрешайте только программам, которым доверяете." } }, "th": { "stringUnit": { "state": "translated", - "value": "ปิด" + "value": "โปรแกรมในเทอร์มินัลนี้ต้องการอ่านคลิปบอร์ดของคุณ อนุญาตเฉพาะเมื่อคุณเชื่อถือโปรแกรมนี้" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Kapalı" + "value": "Bu terminaldeki bir program panonuzu okumak istiyor. Yalnızca programa güveniyorsanız izin verin." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Вимкнено" + "value": "Програма в цьому терміналі хоче прочитати ваш буфер обміну. Дозволяйте, лише якщо довіряєте програмі." } } } }, - "cloud.vpn.setup.openUnavailable": { + "terminal.clipboardReadConfirmation.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud VPN setup is unavailable" + "value": "Allow Clipboard Access?" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Cloud-VPN-Einrichtung ist nicht verfügbar" + "value": "السماح بالوصول إلى الحافظة؟" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "La configuration du VPN Cloud est indisponible" + "value": "Zugriff auf die Zwischenablage erlauben?" } }, "es": { "stringUnit": { "state": "translated", - "value": "La configuración de VPN de Cloud no está disponible" + "value": "¿Permitir el acceso al portapapeles?" } }, - "ja": { + "fr": { "stringUnit": { "state": "translated", - "value": "Cloud VPN設定は利用できません" + "value": "Autoriser l’accès au presse-papiers ?" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "Cloud VPN 设置不可用" + "value": "クリップボードへのアクセスを許可しますか?" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "無法使用 Cloud VPN 設定" + "value": "클립보드 접근을 허용하시겠습니까?" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud VPN 설정을 사용할 수 없습니다" + "value": "允许访问剪贴板?" } }, - "ar": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "إعداد VPN الخاص بـ Cloud غير متاح" + "value": "允許存取剪貼簿?" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Podešavanje Cloud VPN-a nije dostupno" + "value": "Dozvoliti pristup međuspremniku?" } }, "da": { "stringUnit": { "state": "translated", - "value": "Cloud VPN-opsætning er ikke tilgængelig" + "value": "Tillad adgang til udklipsholderen?" } }, "it": { "stringUnit": { "state": "translated", - "value": "La configurazione VPN Cloud non è disponibile" + "value": "Consentire l'accesso agli appunti?" } }, "km": { "stringUnit": { "state": "translated", - "value": "ការរៀបចំ Cloud VPN មិនអាចប្រើបាន" + "value": "អនុញ្ញាតឱ្យចូលប្រើក្ដារតម្បៀតខ្ទាស់?" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Cloud VPN-oppsett er ikke tilgjengelig" + "value": "Tillat tilgang til utklippstavlen?" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Konfiguracja Cloud VPN jest niedostępna" + "value": "Zezwolić na dostęp do schowka?" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "A configuração do Cloud VPN não está disponível" + "value": "Permitir acesso à área de transferência?" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Настройка Cloud VPN недоступна" + "value": "Разрешить доступ к буферу обмена?" } }, "th": { "stringUnit": { "state": "translated", - "value": "การตั้งค่า Cloud VPN ไม่พร้อมใช้งาน" + "value": "อนุญาตให้เข้าถึงคลิปบอร์ดหรือไม่?" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Cloud VPN kurulumu kullanılamıyor" + "value": "Panoya erişime izin verilsin mi?" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Налаштування Cloud VPN недоступне" + "value": "Дозволити доступ до буфера обміну?" } } } }, - "cloud.vpn.setup.permission.body": { + "notification.remoteRelay.hostFallback": { "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": "Remote host" } }, - "de": { + "ar": { "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": "مضيف بعيد" } }, - "fr": { + "de": { "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." + "value": "Remote-Host" } }, "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": "Host remoto" } }, - "ja": { + "fr": { "stringUnit": { "state": "translated", - "value": "VPNソフトウェアはcmuxに含まれています。別のアプリは不要です。承認時にmacOSがパスワードまたはTouch IDを求めることがあります。" + "value": "Hôte distant" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "cmux 已包含 VPN 软件,无需其他应用。批准时,macOS 可能要求您输入密码或使用触控 ID。" + "value": "リモートホスト" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "cmux 已包含 VPN 軟體,不需要其他 App。核准時,macOS 可能要求您輸入密碼或使用 Touch ID。" + "value": "원격 호스트" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "VPN 소프트웨어는 cmux에 포함되어 있습니다. 다른 앱은 필요하지 않습니다. 승인 시 macOS에서 암호 또는 Touch ID를 요청할 수 있습니다." + "value": "远程主机" } }, - "ar": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "برنامج VPN مضمن في cmux. لا تحتاج إلى تطبيق آخر. قد يطلب macOS كلمة المرور أو Touch ID أثناء الموافقة." + "value": "遠端主機" } }, "bs": { "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": "Udaljeni host" } }, "da": { "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": "Fjernvært" } }, "it": { "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": "Host remoto" } }, "km": { "stringUnit": { "state": "translated", - "value": "កម្មវិធី VPN មាននៅក្នុង cmux។ អ្នកមិនត្រូវការកម្មវិធីផ្សេងទៀតទេ។ macOS អាចស្នើពាក្យសម្ងាត់ ឬ Touch ID ក្នុងពេលអនុម័ត។" + "value": "ម៉ាស៊ីនពីចម្ងាយ" } }, "nb": { "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": "Ekstern vert" } }, "pl": { "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": "Zdalny host" } }, "pt-BR": { "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": "Host remoto" } }, "ru": { "stringUnit": { "state": "translated", - "value": "VPN-программа уже входит в cmux. Другие приложения не нужны. Во время подтверждения macOS может запросить пароль или Touch ID." + "value": "Удалённый хост" } }, "th": { "stringUnit": { "state": "translated", - "value": "ซอฟต์แวร์ VPN รวมอยู่ใน cmux แล้ว ไม่ต้องใช้แอปอื่น macOS อาจขอรหัสผ่านหรือ Touch ID ระหว่างการอนุมัติ" + "value": "โฮสต์ระยะไกล" } }, "tr": { "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": "Uzak ana bilgisayar" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Програмне забезпечення VPN входить до cmux. Інша програма не потрібна. Під час схвалення macOS може попросити пароль або Touch ID." + "value": "Віддалений хост" } } } }, - "cloud.vpn.setup.status.title": { + "notification.remoteRelay.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Private network status" + "value": "%1$@: %2$@" } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Status des privaten Netzwerks" + "value": "%1$@: %2$@" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "État du réseau privé" + "value": "%1$@: %2$@" } }, "es": { "stringUnit": { "state": "translated", - "value": "Estado de la red privada" + "value": "%1$@: %2$@" } }, - "ja": { + "fr": { "stringUnit": { "state": "translated", - "value": "プライベートネットワークの状態" + "value": "%1$@: %2$@" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "私有网络状态" + "value": "%1$@: %2$@" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "私有網路狀態" + "value": "%1$@: %2$@" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "비공개 네트워크 상태" + "value": "%1$@: %2$@" } }, - "ar": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "حالة الشبكة الخاصة" + "value": "%1$@: %2$@" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Status privatne mreže" + "value": "%1$@: %2$@" } }, "da": { "stringUnit": { "state": "translated", - "value": "Status for privat netværk" + "value": "%1$@: %2$@" } }, "it": { "stringUnit": { "state": "translated", - "value": "Stato della rete privata" + "value": "%1$@: %2$@" } }, "km": { "stringUnit": { "state": "translated", - "value": "ស្ថានភាពបណ្តាញឯកជន" + "value": "%1$@: %2$@" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Status for privat nettverk" + "value": "%1$@: %2$@" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Stan sieci prywatnej" + "value": "%1$@: %2$@" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Status da rede privada" + "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 ağ durumu" + "value": "%1$@: %2$@" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Стан приватної мережі" + "value": "%1$@: %2$@" } } } }, - "cloud.vpn.setup.title": { + "socket.mainActorHop.timeout.mayHaveRun": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "cmux did not respond within 10 seconds after the command started, so its result is unknown. Check the effect before retrying." } }, - "de": { + "ja": { "stringUnit": { "state": "translated", - "value": "Cloud-VPN" + "value": "コマンドの開始後 10 秒以内に cmux が応答しなかったため、結果は不明です。再試行する前に効果を確認してください。" } }, - "fr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "VPN Cloud" + "value": "命令开始后 10 秒内 cmux 没有响应,因此结果未知。请先确认效果再重试。" } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "VPN de Cloud" + "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." } }, - "ja": { + "fr": { "stringUnit": { "state": "translated", - "value": "クラウドVPN" + "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." } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "云端 VPN" + "value": "لم يستجب cmux خلال 10 ثوانٍ بعد بدء الأمر، لذا فإن نتيجته غير معروفة. تحقق من الأثر قبل إعادة المحاولة." + } + }, + "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." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "雲端 VPN" + "value": "命令開始後 10 秒內 cmux 沒有回應,因此結果未知。請先確認效果再重試。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "클라우드 VPN" + "value": "명령이 시작된 후 10초 안에 cmux가 응답하지 않아 결과를 알 수 없습니다. 다시 시도하기 전에 효과를 확인하세요." + } + } + } + }, + "socket.mainActorHop.timeout.notRun": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "cmux did not respond within 10 seconds, so the command was not run. Retry in a moment." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "شبكة Cloud الخاصة" + "value": "cmux が 10 秒以内に応答しなかったため、コマンドは実行されませんでした。しばらくしてから再試行してください。" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "cmux 在 10 秒内没有响应,因此未运行该命令。请稍后重试。" } }, - "da": { + "de": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "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": "VPN Cloud" + "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": "Cloud VPN" + "value": "لم يستجب cmux خلال 10 ثوانٍ، لذا لم يتم تنفيذ الأمر. أعد المحاولة بعد لحظات." } }, - "nb": { + "es": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "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": "Cloud VPN" + "value": "cmux 在 10 秒內沒有回應,因此未執行該命令。請稍後重試。" } }, - "pt-BR": { + "ko": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "cmux가 10초 안에 응답하지 않아 명령이 실행되지 않았습니다. 잠시 후 다시 시도하세요." + } + } + } + }, + "socket.overloaded.message": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "cmux is handling too many control-socket requests right now, so this one was not run. Retry in a moment." } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "cmux は現在、制御ソケットの要求を処理しきれないため、この要求は実行されませんでした。しばらくしてから再試行してください。" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "cmux 当前正在处理过多的控制套接字请求,因此未运行此请求。请稍后重试。" } }, - "tr": { + "de": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "value": "cmux verarbeitet gerade zu viele Control-Socket-Anfragen, diese wurde daher nicht ausgeführt. Versuche es gleich noch einmal." } }, - "uk": { + "fr": { "stringUnit": { "state": "translated", - "value": "Cloud VPN" + "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." } - } - } - }, - "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": "يعالج cmux حاليًا عددًا كبيرًا جدًا من طلبات مقبس التحكم، لذا لم يتم تنفيذ هذا الطلب. أعد المحاولة بعد لحظات." } }, - "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": "cmux está gestionando demasiadas solicitudes del socket de control ahora mismo, por lo que esta no se ejecutó. Reintenta en un momento." } }, - "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": "cmux 目前正在處理過多的控制 socket 請求,因此未執行此請求。請稍後重試。" } }, - "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": "cmux가 지금 너무 많은 제어 소켓 요청을 처리하고 있어 이 요청은 실행되지 않았습니다. 잠시 후 다시 시도하세요." + } + } + } + }, + "socket.request.cancelled": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Request was cancelled" } }, "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": "Die Anfrage wurde abgebrochen" } }, - "ko": { + "fr": { "stringUnit": { "state": "translated", - "value": "이 cmux에는 서명된 VPN 확장이 포함되어 있지 않습니다. Cloud VPN을 지원하는 cmux 릴리스를 사용하세요. Cloud 터미널, 포트 및 데스크탑은 VPN 없이도 사용할 수 있습니다." + "value": "La requête a été annulée" } }, "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": "Se canceló la solicitud" } }, - "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": "요청이 취소되었습니다" + } + } + } + }, + "socket.request.failedBeforeResult": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Request failed before returning a result" } }, - "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": "Die Anfrage ist fehlgeschlagen, bevor ein Ergebnis zurückgegeben wurde" } }, - "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": "La requête a échoué avant de renvoyer un résultat" } }, - "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": "La solicitud falló antes de devolver un resultado" } }, - "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.codex.fork.notice.body": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Waiting" + "value": "cmux could not identify the new fork session. Start the fork again from the parent pane." } }, - "de": { + "ja": { "stringUnit": { "state": "translated", - "value": "Warten" + "value": "cmux は新しいフォーク セッションを特定できませんでした。親ペインからもう一度フォークしてください。" } }, - "fr": { + "de": { "stringUnit": { "state": "translated", - "value": "En attente" + "value": "cmux konnte die neue Fork-Sitzung nicht erkennen. Starten Sie den Fork erneut im übergeordneten Pane." } }, - "es": { + "fr": { "stringUnit": { "state": "translated", - "value": "En espera" + "value": "cmux n’a pas pu identifier la nouvelle session forkée. Relancez le fork depuis le volet parent." } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "待機中" + "value": "تعذر على cmux تحديد جلسة التفريع الجديدة. ابدأ التفريع مرة أخرى من الجزء الأصلي." } }, - "zh-Hans": { + "es": { "stringUnit": { "state": "translated", - "value": "等待中" + "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": "等待中" + "value": "cmux 無法識別新的分支工作階段。請從父窗格重新開始分支。" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "대기 중" + "value": "cmux 无法识别新的分支会话。请从父窗格重新开始分支。" } }, - "ar": { + "ko": { "stringUnit": { "state": "translated", - "value": "قيد الانتظار" + "value": "cmux가 새 포크 세션을 식별하지 못했습니다. 부모 패널에서 포크를 다시 시작하세요." } }, "bs": { "stringUnit": { "state": "translated", - "value": "Čekanje" + "value": "cmux nije mogao prepoznati novu sesiju račvanja. Ponovo pokrenite račvanje iz nadređenog okna." } }, "da": { "stringUnit": { "state": "translated", - "value": "Venter" + "value": "cmux kunne ikke identificere den nye forgreningssession. Start forgreningen igen fra forældreruden." } }, "it": { "stringUnit": { "state": "translated", - "value": "In attesa" + "value": "cmux non ha potuto identificare 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": "Venter" + "value": "cmux kunne ikke identifisere den nye forgreningsøkten. Start forgreningen på nytt fra den overordnede ruten." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Oczekiwanie" + "value": "cmux nie mógł zidentyfikować nowej sesji forka. Uruchom fork ponownie z panelu nadrzędnego." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Aguardando" + "value": "O cmux não conseguiu identificar 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": "Bekliyor" + "value": "cmux yeni fork oturumunu belirleyemedi. Fork'u üst panelden yeniden başlatın." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Очікування" + "value": "cmux не вдалося визначити новий сеанс форка. Запустіть форк ще раз із батьківської панелі." } } } }, - "cloudTree.ports.action.wake": { + "agent.codex.fork.notice.parentClearFailed.body": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Wake Machine" + "value": "cmux could not safely bind the new fork session. Retry the fork from the parent pane." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "cmux は新しいフォーク セッションを安全にバインドできませんでした。親ペインからもう一度フォークしてください。" } }, "de": { "stringUnit": { "state": "translated", - "value": "Maschine aktivieren" + "value": "cmux konnte die neue Fork-Sitzung nicht sicher binden. Starten Sie den Fork erneut im übergeordneten Pane." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Réveiller la machine" + "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": "Activar máquina" + "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": "Probudi mašinu" + "value": "cmux nije mogao sigurno povezati novu sesiju račvanja. Ponovo pokrenite račvanje iz nadređenog okna." } }, "da": { "stringUnit": { "state": "translated", - "value": "Væk maskine" + "value": "cmux kunne ikke binde den nye forgreningssession sikkert. Start forgreningen igen fra forældreruden." } }, "it": { "stringUnit": { "state": "translated", - "value": "Riattiva macchina" + "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": "Vekk maskin" + "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": "Wybudź maszynę" + "value": "cmux nie mógł bezpiecznie powiązać nowej sesji forka. Uruchom fork ponownie z panelu nadrzędnego." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Despertar máquina" + "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": "Makineyi uyandır" + "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.asleep.detail": { + "agent.codex.fork.notice.subtitle": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Wake the machine to check its services. cmux’s in-app forwarding does not need Cloud VPN." + "value": "Fork unavailable" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "フォークを利用できません" } }, "de": { "stringUnit": { "state": "translated", - "value": "Aktivieren Sie die Maschine, um ihre Dienste zu prüfen. Die Weiterleitung in cmux benötigt kein Cloud-VPN." + "value": "Fork nicht verfügbar" } }, "fr": { "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": "Fork indisponible" } }, "ar": { "stringUnit": { "state": "translated", - "value": "أيقظ الجهاز لفحص خدماته. لا تحتاج إعادة التوجيه داخل cmux إلى Cloud VPN." + "value": "التفريع غير متاح" } }, "es": { "stringUnit": { "state": "translated", - "value": "Activa la máquina para comprobar sus servicios. El reenvío integrado 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": "Probudite mašinu da provjerite njene servise. Prosljeđivanje unutar cmux-a ne treba Cloud VPN." + "value": "Račvanje nije dostupno" } }, "da": { "stringUnit": { "state": "translated", - "value": "Væk maskinen for at kontrollere dens tjenester. Videresendelse i cmux kræver ikke Cloud VPN." + "value": "Fork ikke tilgængelig" } }, "it": { "stringUnit": { "state": "translated", - "value": "Riattiva la macchina per controllarne i servizi. L’inoltro all’interno 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": "Vekk maskinen for å sjekke tjenestene. Videresending i cmux trenger ikke Cloud VPN." + "value": "Fork utilgjengelig" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Wybudź maszynę, aby sprawdzić jej usługi. Przekierowywanie w cmux nie wymaga Cloud VPN." + "value": "Fork niedostępny" } }, "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": "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": "Hizmetlerini denetlemek için makineyi uyandırın. cmux içi yönlendirme Cloud VPN gerektirmez." + "value": "Fork kullanılamıyor" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Розбудіть машину, щоб перевірити її служби. Перенаправлення всередині cmux не потребує Cloud VPN." + "value": "Форк недоступний" } } } }, - "cloudTree.ports.available.title": { + "agent.codex.fork.notice.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Listening services" + "value": "Agent fork" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "エージェントフォーク" } }, "de": { "stringUnit": { "state": "translated", - "value": "Lauschende Dienste" + "value": "Agent-Fork" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Services en écoute" + "value": "Fork d’agent" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الخدمات المستمعة" + "value": "تفريع الوكيل" } }, "es": { "stringUnit": { "state": "translated", - "value": "Servicios en escucha" + "value": "Fork del agente" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "監聽中的服務" + "value": "代理程式分支" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "监听中的服务" + "value": "代理分支" } }, "ko": { "stringUnit": { "state": "translated", - "value": "수신 대기 서비스" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "待ち受け中のサービス" + "value": "에이전트 포크" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Servisi koji slušaju" + "value": "Račvanje agenta" } }, "da": { "stringUnit": { "state": "translated", - "value": "Lyttende tjenester" + "value": "Agentfork" } }, "it": { "stringUnit": { "state": "translated", - "value": "Servizi in ascolto" + "value": "Fork dell'agente" } }, "km": { "stringUnit": { "state": "translated", - "value": "សេវាកម្មដែលកំពុងស្តាប់" + "value": "ការបំបែកភ្នាក់ងារ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Lyttende tjenester" + "value": "Agentforgrening" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Nasłuchujące usługi" + "value": "Fork agenta" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Serviços em escuta" + "value": "Fork do agente" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Прослушивающие службы" + "value": "Форк агента" } }, "th": { "stringUnit": { "state": "translated", - "value": "บริการที่กำลังรับฟัง" + "value": "การแยกสาขาของเอเจนต์" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Dinleyen hizmetler" + "value": "Ajan çatalı" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Служби, що прослуховують" + "value": "Форк агента" } } } }, - "cloudTree.ports.binding.detail": { + "socket.authTeam.committedStatusTimedOut": { "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." - } - }, - "de": { - "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." - } - }, - "fr": { - "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": "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": "يتصل مسار متصفح cmux بالعنوان 127.0.0.1 على الجهاز. اربط الخدمة بالعنوان 127.0.0.1 أو 0.0.0.0 ثم حدّث. تشغيل Cloud VPN لا يغير هذا المسار." + "value": "チームの変更は適用されましたが、cmux は 10 秒以内に更新後のステータスを報告しませんでした。`cmux auth status` を実行して確認してください。" } }, - "es": { + "zh-Hans": { "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": "团队更改已应用,但 cmux 未能在 10 秒内报告更新后的状态。请运行 `cmux auth status` 确认。" } }, - "zh-Hant": { + "de": { "stringUnit": { "state": "translated", - "value": "cmux 的瀏覽器路徑會連線到機器上的 127.0.0.1。請將服務繫結至 127.0.0.1 或 0.0.0.0 後重新整理。開啟 Cloud VPN 不會改變此路徑。" + "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": "cmux 的浏览器路由连接到机器上的 127.0.0.1。请将服务绑定到 127.0.0.1 或 0.0.0.0 后刷新。开启 Cloud VPN 不会改变此路由。" + "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": "cmux 브라우저 경로는 머신의 127.0.0.1에 연결합니다. 서비스를 127.0.0.1 또는 0.0.0.0에 바인딩한 후 새로 고치세요. Cloud VPN을 켜도 이 경로는 바뀌지 않습니다." + "value": "تم تطبيق تغيير الفريق، لكن cmux لم يُبلّغ عن الحالة المحدّثة خلال 10 ثوانٍ. شغّل `cmux auth status` للتأكيد." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "cmux のブラウザはマシン上の 127.0.0.1 に接続します。サービスを 127.0.0.1 または 0.0.0.0 にバインドして更新してください。Cloud VPN を有効にしてもこの経路は変わりません。" + "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": "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": "團隊變更已套用,但 cmux 未能在 10 秒內回報更新後的狀態。請執行 `cmux auth status` 確認。" } }, - "da": { + "ko": { "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": "팀 변경은 적용되었지만 cmux가 10초 안에 업데이트된 상태를 보고하지 않았습니다. `cmux auth status`를 실행해 확인하세요." } - }, - "it": { + } + } + }, + "settings.mobile.browserTunnel.allowOtherHosts": { + "extractionState": "manual", + "localizations": { + "en": { "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": "iOS Browser Reaches Other Hosts" } }, - "km": { + "de": { "stringUnit": { "state": "translated", - "value": "ផ្លូវកម្មវិធីរុករករបស់ cmux ភ្ជាប់ទៅ 127.0.0.1 នៅលើម៉ាស៊ីន។ ចងសេវាកម្មទៅ 127.0.0.1 ឬ 0.0.0.0 រួចផ្ទុកឡើងវិញ។ ការបើក Cloud VPN មិនផ្លាស់ប្តូរផ្លូវនេះទេ។" + "value": "iOS-Browser erreicht andere Hosts" } }, - "nb": { + "fr": { "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": "Le navigateur iOS accède aux autres hôtes" } }, - "pl": { + "ar": { "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": "متصفح iOS يصل إلى مضيفين آخرين" } }, - "pt-BR": { + "es": { "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": "El navegador de iOS accede a otros hosts" } }, - "ru": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Браузерный маршрут cmux подключается к 127.0.0.1 на машине. Привяжите службу к 127.0.0.1 или 0.0.0.0, затем обновите. Включение Cloud VPN не меняет этот маршрут." + "value": "iOS 瀏覽器可連線至其他主機" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "เส้นทางเบราว์เซอร์ของ cmux เชื่อมต่อกับ 127.0.0.1 บนเครื่อง ผูกบริการกับ 127.0.0.1 หรือ 0.0.0.0 แล้วรีเฟรช การเปิด Cloud VPN ไม่ได้เปลี่ยนเส้นทางนี้" + "value": "iOS 浏览器可访问其他主机" } }, - "tr": { + "ko": { "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": "iOS 브라우저의 다른 호스트 접근" } }, - "uk": { + "ja": { "stringUnit": { "state": "translated", - "value": "Браузерний маршрут cmux підключається до 127.0.0.1 на машині. Прив’яжіть службу до 127.0.0.1 або 0.0.0.0, потім оновіть. Увімкнення Cloud VPN не змінює цей маршрут." + "value": "iOSブラウザから他のホストに接続" } } } }, - "cloudTree.ports.binding.title": { + "settings.mobile.browserTunnel.allowOtherHosts.subtitleOn": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Services use another interface" + "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": "Dienste verwenden eine andere Schnittstelle" + "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": "Les services utilisent une autre interface" + "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": "تستخدم الخدمات واجهة أخرى" + "value": "يمكن لمتصفح iOS تحميل مضيفي الشبكة المحلية وVPN والإنترنت عبر جهاز Mac هذا. لا تمر عناوين الارتباط المحلي وعناوين بيانات التعريف السحابية عبر جهاز Mac هذا أبدًا؛ يحمّلها iPhone بنفسه." } }, "es": { "stringUnit": { "state": "translated", - "value": "Los servicios usan otra interfaz" + "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": "服務使用其他介面" + "value": "iOS 瀏覽器可透過這台 Mac 載入區域網路、VPN 與網際網路主機。連結本機位址與雲端中繼資料位址絕不經過這台 Mac,由 iPhone 自行載入。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "服务使用其他接口" + "value": "iOS 浏览器可通过这台 Mac 加载局域网、VPN 和互联网主机。链路本地地址和云元数据地址绝不经过这台 Mac,由 iPhone 自行加载。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "서비스가 다른 인터페이스를 사용함" + "value": "iOS 브라우저가 이 Mac을 통해 LAN, VPN, 인터넷 호스트를 불러올 수 있습니다. 링크 로컬 및 클라우드 메타데이터 주소는 이 Mac을 거치지 않으며 iPhone이 직접 불러옵니다." } }, "ja": { "stringUnit": { "state": "translated", - "value": "サービスが別のインターフェイスを使用しています" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Servisi koriste drugi interfejs" - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "Tjenester bruger en anden grænseflade" + "value": "iOSブラウザはこのMac経由でLAN、VPN、インターネット上のホストを読み込めます。リンクローカルとクラウドメタデータのアドレスはこのMacを経由せず、iPhoneが直接読み込みます。" } - }, - "it": { + } + } + }, + "settings.mobile.browserTunnel.allowOtherHosts.subtitleOff": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "I servizi usano un’altra interfaccia" + "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": "សេវាកម្មប្រើចំណុចប្រទាក់ផ្សេង" + "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": "Tjenester bruker et annet grensesnitt" + "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": "Usługi używają innego interfejsu" + "value": "لا يصل متصفح iOS عبر جهاز Mac هذا إلا إلى localhost الخاص به. تُحمَّل المواقع الأخرى عبر شبكة الهاتف نفسه." } }, - "pt-BR": { + "es": { "stringUnit": { "state": "translated", - "value": "Os serviços usam outra interface" + "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": "Службы используют другой интерфейс" + "value": "iOS 瀏覽器只會透過這台 Mac 連線至它的 localhost。其他網站會透過手機本身的網路載入。" } }, - "th": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "บริการใช้อินเทอร์เฟซอื่น" + "value": "iOS 浏览器只会通过这台 Mac 访问它的 localhost。其他网站通过手机自身的网络加载。" } }, - "tr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Hizmetler başka bir arabirim kullanıyor" + "value": "iOS 브라우저는 이 Mac을 통해 이 Mac의 localhost에만 접근합니다. 다른 사이트는 휴대폰 자체 네트워크로 불러옵니다." } }, - "uk": { + "ja": { "stringUnit": { "state": "translated", - "value": "Служби використовують інший інтерфейс" + "value": "iOSブラウザがこのMac経由で接続するのは、このMacのlocalhostだけです。他のサイトは電話自身のネットワークで読み込みます。" } } } }, - "cloudTree.ports.empty.noService": { + "settings.search.alias.setting.mobile.browserTunnelAllowOtherHosts": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Start a web server on this machine, then refresh." + "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security" } }, "de": { "stringUnit": { "state": "translated", - "value": "Starte einen Webserver auf diesem Rechner und aktualisiere dann die Liste." + "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": "Démarrez un serveur web sur cette machine, puis actualisez." + "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": "Inicia un servidor web en esta máquina y luego actualiza." + "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 行動裝置 瀏覽器 通道 代理 區域網路 主機 網路 安全性" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "在此机器上启动网页服务器,然后刷新。" + "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security 移动 浏览器 隧道 代理 局域网 主机 网络 安全" } }, "ko": { "stringUnit": { "state": "translated", - "value": "이 머신에서 웹 서버를 시작한 다음 새로 고치세요." + "value": "mobile ios iphone browser on iphone tunnel proxy localhost lan vpn internet hosts network security 모바일 브라우저 터널 프록시 로컬 네트워크 호스트 네트워크 보안" } }, "ja": { "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": "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": "needs_review", - "value": "Avvia un server web su questa macchina, poi aggiorna." + "state": "translated", + "value": "set-input-files requires --selector <css> and either --file <path> (repeatable) or --clear" } }, - "km": { + "ar": { "stringUnit": { - "state": "needs_review", - "value": "ចាប់ផ្តើមម៉ាស៊ីនមេបណ្តាញនៅលើម៉ាស៊ីននេះ រួចផ្ទុកឡើងវិញ។" + "state": "translated", + "value": "يتطلب set-input-files الخيار --selector <css> مع --file <path> (يمكن تكراره) أو --clear" } }, - "nb": { + "de": { "stringUnit": { - "state": "needs_review", - "value": "Start en webserver på denne maskinen, og oppdater deretter." + "state": "translated", + "value": "set-input-files benötigt --selector <css> und entweder --file <path> (wiederholbar) oder --clear" } }, - "pl": { + "es": { "stringUnit": { - "state": "needs_review", - "value": "Uruchom serwer WWW na tej maszynie, a następnie odśwież." + "state": "translated", + "value": "set-input-files requiere --selector <css> y --file <path> (repetible) o --clear" } }, - "pt-BR": { + "fr": { "stringUnit": { - "state": "needs_review", - "value": "Inicie um servidor web nesta máquina e atualize." + "state": "translated", + "value": "set-input-files nécessite --selector <css> et soit --file <path> (répétable), soit --clear" } }, - "ru": { + "ja": { "stringUnit": { - "state": "needs_review", - "value": "Запустите веб-сервер на этой машине, затем обновите список." + "state": "translated", + "value": "set-input-files には --selector <css> と、--file <path>(複数指定可)または --clear が必要です" } }, - "th": { + "ko": { "stringUnit": { - "state": "needs_review", - "value": "เริ่มเว็บเซิร์ฟเวอร์บนเครื่องนี้ แล้วรีเฟรช" + "state": "translated", + "value": "set-input-files에는 --selector <css>와 --file <path>(반복 가능) 또는 --clear가 필요합니다" } }, - "tr": { + "zh-Hans": { "stringUnit": { - "state": "needs_review", - "value": "Bu makinede bir web sunucusu başlatın, ardından yenileyin." + "state": "translated", + "value": "set-input-files 需要 --selector <css>,以及 --file <path>(可重复)或 --clear" } }, - "uk": { + "zh-Hant": { "stringUnit": { - "state": "needs_review", - "value": "Запустіть вебсервер на цій машині, а потім оновіть список." + "state": "translated", + "value": "set-input-files 需要 --selector <css>,以及 --file <path>(可重複)或 --clear" } } } }, - "cloudTree.ports.hub.detail": { + "cli.browser.inputFiles.help": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "This build cannot start cmux’s authenticated Cloud forward. Update cmux, then retry." - } - }, - "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": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n Select local files (up to 128 files, 32 MiB total) or clear the selection. Directory uploads are unsupported." } }, - "fr": { + "ar": { "stringUnit": { "state": "translated", - "value": "Cette version ne peut pas démarrer le transfert Cloud authentifié de cmux. Mettez cmux à jour, puis réessayez." + "value": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n اختر ملفات محلية (حتى 128 ملفًا بإجمالي 32 MiB) أو امسح الاختيار. رفع المجلدات غير مدعوم." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "لا يمكن لهذا الإصدار بدء إعادة توجيه Cloud الموثّقة من cmux. حدّث cmux ثم أعد المحاولة." + "value": "set-input-files --selector <css> (--file <path> ... | --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." } }, "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": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n Selecciona archivos locales (hasta 128 archivos, 32 MiB en total) o borra la selección. No se admite subir carpetas." } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "此版本無法啟動 cmux 的已驗證 Cloud 轉送。請更新 cmux 後重試。" + "value": "set-input-files --selector <css> (--file <path> ... | --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-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "此版本无法启动 cmux 的已验证 Cloud 转发。请更新 cmux 后重试。" + "value": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n ローカルファイルを選択(最大128個、合計32 MiB)するか、選択を解除します。ディレクトリのアップロードには対応していません。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "이 빌드에서는 cmux 인증 Cloud 전달을 시작할 수 없습니다. cmux를 업데이트한 후 다시 시도하세요." - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "このビルドでは cmux の認証済み Cloud 転送を開始できません。cmux を更新して再試行してください。" + "value": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n 로컬 파일을 선택하거나(최대 128개, 총 32 MiB) 선택을 지웁니다. 디렉터리 업로드는 지원되지 않습니다." } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Ova verzija ne može pokrenuti autentificirano Cloud prosljeđivanje cmux-a. Ažurirajte cmux, zatim pokušajte ponovo." + "value": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n 选择本地文件(最多 128 个文件,总计 32 MiB)或清除选择。不支持上传目录。" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Denne build kan ikke starte cmux’ godkendte Cloud-videresendelse. Opdater cmux, og prøv igen." + "value": "set-input-files --selector <css> (--file <path> ... | --clear) [--snapshot-after]\n 選取本機檔案(最多 128 個檔案,總計 32 MiB)或清除選取。不支援上傳目錄。" } - }, - "it": { + } + } + }, + "browser.inputFiles.error.invalidTarget": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Questa build non può avviare l’inoltro Cloud autenticato di cmux. Aggiorna cmux, quindi riprova." + "value": "The selector must match a file input without directory selection" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "កំណែនេះមិនអាចចាប់ផ្តើមការបញ្ជូនបន្ត Cloud ដែលបានផ្ទៀងផ្ទាត់របស់ cmux បានទេ។ ធ្វើបច្ចុប្បន្នភាព cmux រួចព្យាយាមម្តងទៀត។" + "value": "يجب أن يطابق المحدد حقل إدخال ملفات لا يستخدم اختيار المجلدات" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Denne versjonen kan ikke starte cmux sin autentiserte Cloud-videresending. Oppdater cmux, og prøv igjen." + "value": "Der Selektor muss ein Dateieingabefeld ohne Ordnerauswahl treffen" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Ta kompilacja nie może uruchomić uwierzytelnionego przekierowania Cloud w cmux. Zaktualizuj cmux i spróbuj ponownie." + "value": "El selector debe coincidir con un campo de archivos sin selección de carpetas" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Esta versão não consegue iniciar o encaminhamento Cloud autenticado do cmux. Atualize o cmux e tente novamente." + "value": "Le sélecteur doit correspondre à un champ de fichier sans sélection de dossier" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Эта сборка не может запустить аутентифицированное перенаправление Cloud в cmux. Обновите cmux и повторите попытку." + "value": "セレクターはディレクトリ選択を使わないファイル入力欄に一致する必要があります" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "บิลด์นี้ไม่สามารถเริ่มการส่งต่อ Cloud ที่ยืนยันตัวตนแล้วของ cmux ได้ อัปเดต cmux แล้วลองอีกครั้ง" + "value": "선택자는 디렉터리 선택이 없는 파일 입력 요소와 일치해야 합니다" } }, - "tr": { + "zh-Hans": { "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": "选择器必须匹配未启用目录选择的文件输入字段" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Ця збірка не може запустити автентифіковане перенаправлення Cloud у cmux. Оновіть cmux і повторіть спробу." + "value": "選取器必須符合未啟用目錄選取的檔案輸入欄位" } } } }, - "cloudTree.ports.link.detail": { + "browser.inputFiles.error.multipleRequired": { "extractionState": "manual", "localizations": { "en": { "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." - } - }, - "de": { - "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": "This file input does not allow multiple files" } }, - "fr": { + "ar": { "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": { + "de": { "stringUnit": { "state": "translated", - "value": "تعذر اتصال اكتشاف المنافذ بهذا الجهاز. قد تظل منافذ cmux الحالية تعمل. حدّث لإعادة الاتصال؛ Cloud VPN غير مطلوب." + "value": "Dieses Dateieingabefeld erlaubt nicht mehrere Dateien" } }, "es": { "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": "Este campo de archivos no permite seleccionar varios archivos" } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "連接埠探索無法連線到此機器。現有 cmux 連接埠可能仍可使用。請重新整理以重新連線;不需要 Cloud VPN。" + "value": "Ce champ de fichier ne permet pas de sélectionner plusieurs fichiers" } }, - "zh-Hans": { + "ja": { "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": { + "zh-Hans": { "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-Hant": { "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": { + } + } + }, + "browser.inputFiles.error.cancelled": { + "extractionState": "manual", + "localizations": { + "en": { "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": "File upload preparation was cancelled" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "ការស្វែងរកច្រកមិនអាចភ្ជាប់ទៅម៉ាស៊ីននេះបានទេ។ ច្រក cmux ដែលមានស្រាប់អាចនៅតែដំណើរការ។ ផ្ទុកឡើងវិញដើម្បីភ្ជាប់ម្តងទៀត; មិនត្រូវការ Cloud VPN ទេ។" + "value": "تم إلغاء تجهيز الملفات للرفع" } }, - "nb": { + "de": { "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": "Die Vorbereitung des Datei-Uploads wurde abgebrochen" } }, - "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": "Se canceló la preparación de los archivos para subir" } }, - "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": "La préparation des fichiers à envoyer a été annulée" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Обнаружению портов не удалось подключиться к этой машине. Существующие порты cmux могут по-прежнему работать. Обновите, чтобы переподключиться; Cloud VPN не требуется." + "value": "ファイルのアップロード準備がキャンセルされました" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "การค้นหาพอร์ตไม่สามารถเชื่อมต่อกับเครื่องนี้ได้ พอร์ต cmux ที่มีอยู่อาจยังใช้งานได้ รีเฟรชเพื่อเชื่อมต่อใหม่ ไม่จำเป็นต้องใช้ Cloud VPN" + "value": "파일 업로드 준비가 취소되었습니다" } }, - "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": "已取消准备上传文件" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Виявленню портів не вдалося підключитися до цієї машини. Наявні порти cmux можуть і далі працювати. Оновіть, щоб підключитися знову; Cloud VPN не потрібен." + "value": "已取消準備上傳檔案" } } } }, - "cloudTree.ports.link.title": { + "browser.inputFiles.error.invalidParameters": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud link unavailable" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Cloud-Verbindung nicht verfügbar" + "value": "set-input-files requires a selector and a files array of absolute paths" } }, - "fr": { + "ar": { "stringUnit": { "state": "translated", - "value": "Connexion Cloud indisponible" + "value": "يتطلب set-input-files محددًا ومصفوفة files تحتوي على مسارات مطلقة" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "اتصال Cloud غير متاح" + "value": "set-input-files benötigt einen Selektor und ein files-Array mit absoluten Pfaden" } }, "es": { "stringUnit": { "state": "translated", - "value": "Conexión de Cloud no disponible" + "value": "set-input-files requiere un selector y una matriz files de rutas absolutas" } }, - "zh-Hant": { + "fr": { "stringUnit": { "state": "translated", - "value": "Cloud 連線無法使用" + "value": "set-input-files nécessite un sélecteur et un tableau files de chemins absolus" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "Cloud 连接不可用" + "value": "set-input-files にはセレクターと絶対パスを含む files 配列が必要です" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Cloud 연결을 사용할 수 없음" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "Cloud 接続を利用できません" + "value": "set-input-files에는 선택자와 절대 경로로 구성된 files 배열이 필요합니다" } }, - "bs": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud veza nije dostupna" + "value": "set-input-files 需要选择器及包含绝对路径的 files 数组" } }, - "da": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Cloud-forbindelse utilgængelig" + "value": "set-input-files 需要選取器及包含絕對路徑的 files 陣列" } - }, - "it": { + } + } + }, + "browser.inputFiles.error.invalidSelection": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Collegamento Cloud non disponibile" + "value": "Select at most 128 files using absolute paths" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "តំណ Cloud មិនអាចប្រើបាន" + "value": "اختر ما يصل إلى 128 ملفًا باستخدام مسارات مطلقة" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Cloud-tilkobling utilgjengelig" + "value": "Wählen Sie höchstens 128 Dateien mit absoluten Pfaden aus" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Połączenie Cloud niedostępne" + "value": "Selecciona como máximo 128 archivos mediante rutas absolutas" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Conexão Cloud indisponível" + "value": "Sélectionnez au maximum 128 fichiers avec des chemins absolus" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Связь с Cloud недоступна" + "value": "絶対パスで最大128個のファイルを選択してください" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "ลิงก์ Cloud ไม่พร้อมใช้งาน" + "value": "절대 경로를 사용하여 최대 128개의 파일을 선택하세요" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cloud bağlantısı kullanılamıyor" + "value": "请使用绝对路径选择最多 128 个文件" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Зв’язок із Cloud недоступний" + "value": "請使用絕對路徑選取最多 128 個檔案" } } } }, - "cloudTree.ports.loading.detail": { + "browser.inputFiles.error.timeout": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Checking services through cmux’s authenticated Cloud link. No system VPN is needed." + "value": "Timed out preparing files for upload" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "انتهت مهلة تجهيز الملفات للرفع" } }, "de": { "stringUnit": { "state": "translated", - "value": "Dienste werden über die authentifizierte Cloud-Verbindung von cmux geprüft. Ein System-VPN ist nicht erforderlich." + "value": "Zeitüberschreitung beim Vorbereiten der Dateien für den Upload" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Se agotó el tiempo de preparación de los archivos para subir" } }, "fr": { "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": "Le délai de préparation des fichiers à envoyer a été dépassé" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "جارٍ فحص الخدمات عبر اتصال Cloud الموثّق من cmux. لا حاجة إلى VPN النظام." + "value": "アップロードするファイルの準備がタイムアウトしました" } }, - "es": { + "ko": { "stringUnit": { "state": "translated", - "value": "Comprobando servicios mediante la conexión autenticada de Cloud de cmux. No se necesita una VPN del sistema." + "value": "업로드할 파일 준비 시간이 초과되었습니다" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "准备上传文件超时" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "正在透過 cmux 的已驗證 Cloud 連線檢查服務。不需要系統 VPN。" + "value": "準備上傳檔案逾時" + } + } + } + }, + "browser.inputFiles.error.tooLarge": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "The combined upload must be no larger than 32 MiB" } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "正在通过 cmux 的已验证 Cloud 连接检查服务。无需系统 VPN。" + "value": "يجب ألا يتجاوز الحجم الإجمالي للملفات المرفوعة 32 MiB" } }, - "ko": { + "de": { "stringUnit": { "state": "translated", - "value": "cmux의 인증된 Cloud 연결로 서비스를 확인하고 있습니다. 시스템 VPN은 필요하지 않습니다." + "value": "Die Uploads dürfen insgesamt nicht größer als 32 MiB sein" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "El tamaño total de los archivos para subir no debe superar los 32 MiB" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "La taille totale des fichiers à envoyer ne doit pas dépasser 32 MiB" } }, "ja": { "stringUnit": { "state": "translated", - "value": "cmux の認証済み Cloud 接続でサービスを確認しています。システム VPN は不要です。" + "value": "アップロードするファイルの合計サイズは32 MiB以下にしてください" } }, - "bs": { + "ko": { "stringUnit": { "state": "translated", - "value": "Provjera servisa putem autentificirane Cloud veze cmux-a. Sistemski VPN nije potreban." + "value": "전체 업로드 크기는 32 MiB를 초과할 수 없습니다" } }, - "da": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Kontrollerer tjenester via cmux’ godkendte Cloud-forbindelse. Der kræves ingen system-VPN." + "value": "上传文件的总大小不得超过 32 MiB" } }, - "it": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Controllo dei servizi tramite il collegamento Cloud autenticato di cmux. Non serve una VPN di sistema." + "value": "上傳檔案的總大小不得超過 32 MiB" + } + } + } + }, + "browser.inputFiles.error.unreadableFile": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Every upload path must be a readable regular file" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "កំពុងពិនិត្យសេវាកម្មតាមរយៈតំណ Cloud ដែលបានផ្ទៀងផ្ទាត់របស់ cmux។ មិនត្រូវការ VPN របស់ប្រព័ន្ធទេ។" + "value": "يجب أن يشير كل مسار للرفع إلى ملف عادي قابل للقراءة" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Sjekker tjenester via cmux sin autentiserte Cloud-tilkobling. Ingen system-VPN er nødvendig." + "value": "Jeder Upload-Pfad muss auf eine lesbare reguläre Datei verweisen" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Sprawdzanie usług przez uwierzytelnione połączenie Cloud w cmux. Systemowa sieć VPN nie jest potrzebna." + "value": "Cada ruta de subida debe apuntar a un archivo normal que se pueda leer" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Verificando serviços pela conexão Cloud autenticada do cmux. Nenhuma VPN do sistema é necessária." + "value": "Chaque chemin à envoyer doit désigner un fichier ordinaire lisible" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Проверка служб через аутентифицированную связь cmux с Cloud. Системный VPN не нужен." + "value": "各アップロードパスは読み取り可能な通常ファイルである必要があります" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "กำลังตรวจสอบบริการผ่านลิงก์ Cloud ที่ยืนยันตัวตนแล้วของ cmux ไม่ต้องใช้ VPN ของระบบ" + "value": "모든 업로드 경로는 읽을 수 있는 일반 파일이어야 합니다" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Hizmetler cmux’un kimliği doğrulanmış Cloud bağlantısı üzerinden denetleniyor. Sistem VPN’i gerekmez." + "value": "每个上传路径都必须指向可读取的普通文件" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Перевірка служб через автентифікований зв’язок cmux із Cloud. Системний VPN не потрібен." + "value": "每個上傳路徑都必須指向可讀取的一般檔案" } } } }, - "cloudTree.ports.loopback.detail": { + "cloudTree.group.cloudMachines.usage": { "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": "%1$d/%2$d" } }, "de": { "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": "%1$d/%2$d" } }, "fr": { "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": "%1$d/%2$d" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تُفتح هذه الخدمات داخل cmux دون Cloud VPN. وهي تستمع على عنوان الواجهة المحلية للجهاز، لذا لا تستطيع التطبيقات الأخرى الوصول إليها عبر عنوان IP الخاص به حتى مع اتصال VPN." + "value": "%1$d/%2$d" } }, "es": { "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": "%1$d/%2$d" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "這些服務可在 cmux 中開啟,不需要 Cloud VPN。它們在機器的迴路位址上監聽,因此即使已連線 VPN,其他 App 也無法透過其私人 IP 存取。" + "value": "%1$d/%2$d" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "这些服务可在 cmux 中打开,无需 Cloud VPN。它们监听机器的回环地址,因此即使已连接 VPN,其他应用也无法通过其专用 IP 访问。" + "value": "%1$d/%2$d" } }, "ko": { "stringUnit": { "state": "translated", - "value": "이 서비스는 Cloud VPN 없이 cmux에서 열립니다. 머신의 루프백 주소에서 수신 대기하므로 VPN에 연결해도 다른 앱은 비공개 IP로 접근할 수 없습니다." + "value": "%1$d/%2$d" } }, "ja": { "stringUnit": { "state": "translated", - "value": "これらのサービスは Cloud VPN なしで cmux から開けます。マシンのループバックアドレスで待ち受けるため、VPN 接続中でも他のアプリからプライベート IP 経由ではアクセスできません。" + "value": "%1$d/%2$d" } }, "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": "%1$d/%2$d" } }, "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": "%1$d/%2$d" } }, "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": "%1$d/%2$d" } }, "km": { "stringUnit": { "state": "translated", - "value": "សេវាកម្មទាំងនេះបើកនៅក្នុង cmux ដោយមិនត្រូវការ Cloud VPN។ ពួកវាស្តាប់នៅលើអាសយដ្ឋាន loopback របស់ម៉ាស៊ីន ដូច្នេះកម្មវិធីផ្សេងទៀតមិនអាចចូលដល់ពួកវាតាមរយៈ IP ឯកជនរបស់វាបានទេ ទោះបីភ្ជាប់ VPN ក៏ដោយ។" + "value": "%1$d/%2$d" } }, "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": "%1$d/%2$d" } }, "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": "%1$d/%2$d" } }, "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": "%1$d/%2$d" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Эти службы открываются в cmux без Cloud VPN. Они прослушивают loopback-адрес машины, поэтому другие приложения не могут обратиться к ним через её частный IP даже при подключённом VPN." + "value": "%1$d/%2$d" } }, "th": { "stringUnit": { "state": "translated", - "value": "บริการเหล่านี้เปิดใน cmux ได้โดยไม่ต้องใช้ Cloud VPN บริการรับฟังบนที่อยู่ loopback ของเครื่อง แอปอื่นจึงเข้าถึงผ่าน IP ส่วนตัวของเครื่องไม่ได้ แม้จะเชื่อมต่อ VPN แล้วก็ตาม" + "value": "%1$d/%2$d" } }, "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": "%1$d/%2$d" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Ці служби відкриваються в cmux без Cloud VPN. Вони прослуховують loopback-адресу машини, тому інші застосунки не можуть дістатися до них через її приватну IP-адресу, навіть із підключеним VPN." + "value": "%1$d/%2$d" } } } }, - "cloudTree.ports.loopback.title": { + "cloud.ports.vpnOff.explanation": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Loopback services available" + "value": "Ports open in cmux without setup. To use private addresses in other apps, set up Cloud VPN." } }, "de": { "stringUnit": { "state": "translated", - "value": "Loopback-Dienste verfügbar" + "value": "Ports lassen sich in cmux ohne Einrichtung öffnen. Richte Cloud-VPN ein, um private Adressen in anderen Apps zu verwenden." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Services locaux disponibles" + "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": "خدمات الواجهة المحلية متاحة" + "value": "تُفتح المنافذ في cmux دون إعداد. لاستخدام العناوين الخاصة في التطبيقات الأخرى، أعدّ Cloud VPN." } }, "es": { "stringUnit": { "state": "translated", - "value": "Servicios de bucle local disponibles" + "value": "Los puertos se abren en cmux sin configuración. Para usar direcciones privadas en otras apps, configura Cloud VPN." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "可使用迴路服務" + "value": "無需設定即可在 cmux 中開啟連接埠。如要在其他 App 使用私有位址,請設定 Cloud VPN。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "回环服务可用" + "value": "无需设置即可在 cmux 中打开端口。要在其他应用中使用私有地址,请设置云 VPN。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "루프백 서비스 사용 가능" + "value": "별도 설정 없이 cmux에서 포트를 열 수 있습니다. 다른 앱에서 비공개 주소를 사용하려면 Cloud VPN을 설정하세요." } }, "ja": { "stringUnit": { "state": "translated", - "value": "ループバックのサービスを利用できます" + "value": "設定なしで cmux 内のポートを開けます。他のアプリでプライベートアドレスを使うには、Cloud VPN を設定してください。" } }, "bs": { "stringUnit": { - "state": "translated", - "value": "Dostupni loopback servisi" + "state": "needs_review", + "value": "Portovi se otvaraju u cmux-u bez podešavanja. Za korištenje privatnih adresa u drugim aplikacijama podesite Cloud VPN." } }, "da": { "stringUnit": { - "state": "translated", - "value": "Loopback-tjenester tilgængelige" + "state": "needs_review", + "value": "Porte åbnes i cmux uden opsætning. Opsæt Cloud VPN for at bruge private adresser i andre apps." } }, "it": { "stringUnit": { - "state": "translated", - "value": "Servizi di loopback disponibili" + "state": "needs_review", + "value": "Le porte si aprono in cmux senza configurazione. Per usare gli indirizzi privati in altre app, configura Cloud VPN." } }, "km": { "stringUnit": { - "state": "translated", - "value": "មានសេវាកម្ម loopback" + "state": "needs_review", + "value": "ច្រកអាចបើកក្នុង cmux ដោយមិនចាំបាច់រៀបចំ។ ដើម្បីប្រើអាសយដ្ឋានឯកជនក្នុងកម្មវិធីផ្សេងទៀត សូមរៀបចំ Cloud VPN។" } }, "nb": { "stringUnit": { - "state": "translated", - "value": "Loopback-tjenester tilgjengelige" + "state": "needs_review", + "value": "Porter åpnes i cmux uten oppsett. Sett opp Cloud VPN for å bruke private adresser i andre apper." } }, "pl": { "stringUnit": { - "state": "translated", - "value": "Dostępne usługi pętli zwrotnej" + "state": "needs_review", + "value": "Porty otwierają się w cmux bez konfiguracji. Aby używać prywatnych adresów w innych aplikacjach, skonfiguruj Cloud VPN." } }, "pt-BR": { "stringUnit": { - "state": "translated", - "value": "Serviços de loopback disponíveis" + "state": "needs_review", + "value": "As portas abrem no cmux sem configuração. Para usar endereços privados em outros apps, configure o Cloud VPN." } }, "ru": { "stringUnit": { - "state": "translated", - "value": "Доступны loopback-службы" + "state": "needs_review", + "value": "Порты открываются в cmux без настройки. Чтобы использовать приватные адреса в других приложениях, настройте Cloud VPN." } }, "th": { "stringUnit": { - "state": "translated", - "value": "มีบริการ loopback พร้อมใช้งาน" + "state": "needs_review", + "value": "เปิดพอร์ตใน cmux ได้โดยไม่ต้องตั้งค่า หากต้องการใช้ที่อยู่ส่วนตัวในแอปอื่น ให้ตั้งค่า Cloud VPN" } }, "tr": { "stringUnit": { - "state": "translated", - "value": "Geri döngü hizmetleri kullanılabilir" + "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": "translated", - "value": "Доступні loopback-служби" + "state": "needs_review", + "value": "Порти відкриваються в cmux без налаштування. Щоб використовувати приватні адреси в інших застосунках, налаштуйте Cloud VPN." } } } }, - "cloudTree.ports.notRequested.title": { + "cloud.ports.vpnOff.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Ports not checked yet" + "value": "Optional: Cloud VPN" } }, "de": { "stringUnit": { "state": "translated", - "value": "Ports noch nicht geprüft" + "value": "Optional: Cloud-VPN" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ports pas encore vérifiés" + "value": "Facultatif : VPN Cloud" } }, "ar": { "stringUnit": { "state": "translated", - "value": "لم يتم فحص المنافذ بعد" + "value": "اختياري: Cloud VPN" } }, "es": { "stringUnit": { "state": "translated", - "value": "Puertos aún sin comprobar" + "value": "Opcional: Cloud VPN" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "尚未檢查連接埠" + "value": "選用:Cloud VPN" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "尚未检查端口" + "value": "可选:云 VPN" } }, "ko": { "stringUnit": { "state": "translated", - "value": "아직 포트를 확인하지 않음" + "value": "선택 사항: Cloud VPN" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ポートは未確認です" + "value": "任意:Cloud VPN" } }, "bs": { "stringUnit": { - "state": "translated", - "value": "Portovi još nisu provjereni" + "state": "needs_review", + "value": "Opcionalno: Cloud VPN" } }, "da": { "stringUnit": { - "state": "translated", - "value": "Porte er ikke kontrolleret endnu" + "state": "needs_review", + "value": "Valgfrit: Cloud VPN" } }, "it": { "stringUnit": { - "state": "translated", - "value": "Porte non ancora controllate" + "state": "needs_review", + "value": "Facoltativo: Cloud VPN" } }, "km": { "stringUnit": { - "state": "translated", - "value": "មិនទាន់បានពិនិត្យច្រកនៅឡើយ" + "state": "needs_review", + "value": "ជាជម្រើស៖ Cloud VPN" } }, "nb": { "stringUnit": { - "state": "translated", - "value": "Porter er ikke sjekket ennå" + "state": "needs_review", + "value": "Valgfritt: Cloud VPN" } }, "pl": { "stringUnit": { - "state": "translated", - "value": "Porty nie zostały jeszcze sprawdzone" + "state": "needs_review", + "value": "Opcjonalnie: Cloud VPN" } }, "pt-BR": { "stringUnit": { - "state": "translated", - "value": "Portas ainda não verificadas" + "state": "needs_review", + "value": "Opcional: Cloud VPN" } }, "ru": { "stringUnit": { - "state": "translated", - "value": "Порты ещё не проверены" + "state": "needs_review", + "value": "Необязательно: Cloud VPN" } }, "th": { "stringUnit": { - "state": "translated", - "value": "ยังไม่ได้ตรวจสอบพอร์ต" + "state": "needs_review", + "value": "ตัวเลือกเพิ่มเติม: Cloud VPN" } }, "tr": { "stringUnit": { - "state": "translated", - "value": "Portlar henüz denetlenmedi" + "state": "needs_review", + "value": "İsteğe bağlı: Cloud VPN" } }, "uk": { "stringUnit": { - "state": "translated", - "value": "Порти ще не перевірено" + "state": "needs_review", + "value": "Необов’язково: Cloud VPN" } } } }, - "cloudTree.ports.privateAddress": { + "cloud.vpn.setup.address.body": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Private address unavailable" + "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": "Private Adresse nicht verfügbar" + "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": "Adresse privée indisponible" + "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." } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "العنوان الخاص غير متاح" + "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." } }, - "es": { + "ja": { "stringUnit": { "state": "translated", - "value": "Dirección privada no disponible" + "value": "各マシンには個別のプライベートIPがあります。2台のマシンがどちらもポート3000を使えます(例:10.40.0.10:3000と10.40.0.11:3000)。接続後にCloudポートを右クリックし、「プライベートアドレスURLをコピー」を選びます。これらはプライベートアドレスで、公開共有リンクではありません。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "私人位址無法使用" + "value": "每台机器都有自己的私有 IP。两台机器可以同时使用端口 3000,例如 10.40.0.10:3000 和 10.40.0.11:3000。连接后右键点击 Cloud 端口,选择“复制私有地址 URL”。这些地址是私有地址,不是公开分享链接。" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "专用地址不可用" + "value": "每台機器都有自己的私有 IP。兩台機器可以同時使用連接埠 3000,例如 10.40.0.10:3000 和 10.40.0.11:3000。連線後對 Cloud 連接埠按右鍵,選擇「複製私有位址 URL」。這些位址是私有位址,不是公開分享連結。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "비공개 주소를 사용할 수 없음" + "value": "각 머신에는 고유한 비공개 IP가 있습니다. 두 머신 모두 포트 3000을 사용할 수 있습니다(예: 10.40.0.10:3000 및 10.40.0.11:3000). 연결 후 Cloud 포트를 오른쪽 클릭하고 비공개 주소 URL 복사를 선택하세요. 이 주소는 비공개이며 공개 공유 링크가 아닙니다." } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "プライベートアドレスを利用できません" + "value": "لكل جهاز عنوان IP خاص به. يمكن لجهازين استخدام المنفذ 3000، مثل 10.40.0.10:3000 و10.40.0.11:3000. بعد الاتصال، انقر بزر الماوس الأيمن على منفذ Cloud واختر نسخ رابط العنوان الخاص. هذه عناوين خاصة وليست روابط مشاركة عامة." } }, "bs": { "stringUnit": { "state": "translated", - "value": "Privatna adresa nije dostupna" + "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." } }, "da": { "stringUnit": { "state": "translated", - "value": "Privat adresse utilgængelig" + "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." } }, "it": { "stringUnit": { "state": "translated", - "value": "Indirizzo privato non disponibile" + "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." } }, "km": { "stringUnit": { "state": "translated", - "value": "អាសយដ្ឋានឯកជនមិនអាចប្រើបាន" + "value": "ម៉ាស៊ីននីមួយៗមាន IP ឯកជនផ្ទាល់ខ្លួន។ ម៉ាស៊ីនពីរអាចប្រើច្រក 3000 ដូចគ្នា ឧទាហរណ៍ 10.40.0.10:3000 និង 10.40.0.11:3000។ បន្ទាប់ពីភ្ជាប់ ចុចខាងស្តាំលើច្រក Cloud ហើយជ្រើស ចម្លង URL អាសយដ្ឋានឯកជន។ ទាំងនេះជាអាសយដ្ឋានឯកជន មិនមែនតំណចែករំលែកសាធារណៈទេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Privat adresse utilgjengelig" + "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." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Adres prywatny niedostępny" + "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." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Endereço privado indisponível" + "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." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Частный адрес недоступен" + "value": "У каждой машины свой частный IP. Две машины могут использовать порт 3000, например 10.40.0.10:3000 и 10.40.0.11:3000. После подключения щёлкните правой кнопкой мыши порт Cloud и выберите Скопировать URL частного адреса. Это частные адреса, а не публичные ссылки." } }, "th": { "stringUnit": { "state": "translated", - "value": "ไม่มีที่อยู่ส่วนตัว" + "value": "แต่ละเครื่องมี IP ส่วนตัวของตนเอง สองเครื่องสามารถใช้พอร์ต 3000 ได้ เช่น 10.40.0.10:3000 และ 10.40.0.11:3000 หลังเชื่อมต่อ คลิกขวาที่พอร์ต Cloud แล้วเลือกคัดลอก URL ที่อยู่ส่วนตัว ที่อยู่เหล่านี้เป็นส่วนตัว ไม่ใช่ลิงก์สาธารณะ" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Özel adres kullanılamıyor" + "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." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Приватна адреса недоступна" + "value": "Кожна машина має власну приватну IP-адресу. Дві машини можуть використовувати порт 3000, наприклад 10.40.0.10:3000 і 10.40.0.11:3000. Після підключення клацніть правою кнопкою миші порт Cloud і виберіть Копіювати URL приватної адреси. Це приватні адреси, а не публічні посилання для спільного доступу." } } } }, - "cloudTree.ports.privateAddress.detail": { + "cloud.vpn.setup.cancel": { "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": "Cancel" } }, "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": "Abbrechen" } }, "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": "Annuler" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "يحتاج مسار cmux الموثّق إلى العنوان الخاص لهذا الجهاز. حدّث لاسترجاعه. تشغيل Cloud VPN لا يعيّن عنوانًا مفقودًا." + "value": "Cancelar" } }, - "es": { + "ja": { "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": "キャンセル" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux 的已驗證路徑需要此機器的私人位址。請重新整理以取得位址。開啟 Cloud VPN 不會指派缺少的位址。" + "value": "取消" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux 的已验证路由需要此机器的专用地址。请刷新以获取地址。开启 Cloud VPN 不会分配缺失的地址。" + "value": "取消" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux의 인증된 경로에는 이 머신의 비공개 주소가 필요합니다. 새로 고쳐 주소를 가져오세요. Cloud VPN을 켜도 누락된 주소가 할당되지는 않습니다." + "value": "취소" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "cmux の認証済み経路にはこのマシンのプライベートアドレスが必要です。更新して取得してください。Cloud VPN を有効にしても不足しているアドレスは割り当てられません。" + "value": "إلغاء" } }, "bs": { "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": "Otkaži" } }, "da": { "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": "Annuller" } }, "it": { "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": "Annulla" } }, "km": { "stringUnit": { "state": "translated", - "value": "ផ្លូវដែលបានផ្ទៀងផ្ទាត់របស់ cmux ត្រូវការអាសយដ្ឋានឯកជនរបស់ម៉ាស៊ីននេះ។ ផ្ទុកឡើងវិញដើម្បីទាញយកវា។ ការបើក Cloud VPN មិនផ្តល់អាសយដ្ឋានដែលបាត់ទេ។" + "value": "បោះបង់" } }, "nb": { "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": "Avbryt" } }, "pl": { "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": "Anuluj" } }, "pt-BR": { "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": "Cancelar" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Аутентифицированному маршруту cmux нужен частный адрес этой машины. Обновите, чтобы получить его. Включение Cloud VPN не назначает отсутствующий адрес." + "value": "Отменить" } }, "th": { "stringUnit": { "state": "translated", - "value": "เส้นทางที่ยืนยันตัวตนแล้วของ cmux ต้องใช้ที่อยู่ส่วนตัวของเครื่องนี้ รีเฟรชเพื่อดึงข้อมูล การเปิด Cloud VPN ไม่ได้กำหนดที่อยู่ที่ขาดหายไป" + "value": "ยกเลิก" } }, "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." + "value": "İptal" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Автентифікованому маршруту cmux потрібна приватна адреса цієї машини. Оновіть, щоб отримати її. Увімкнення Cloud VPN не призначає відсутню адресу." + "value": "Скасувати" } } } }, - "cloudTree.ports.routeNote": { + "cloud.vpn.setup.connect": { "extractionState": "manual", "localizations": { "en": { "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": "Connect Cloud VPN" } }, "de": { "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": "Cloud-VPN verbinden" } }, "fr": { "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": "Connecter le VPN Cloud" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "يعيد cmux توجيه المنافذ دون Cloud VPN. تحتاج متصفحات الويب وتطبيقات Mac الأخرى إلى Cloud VPN للوصول إلى الخدمات المرتبطة بالعنوان الخاص للجهاز." + "value": "Conectar VPN de Cloud" } }, - "es": { + "ja": { "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": "Cloud VPNに接続" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux 可轉送連接埠,不需要 Cloud VPN。網頁瀏覽器和其他 Mac App 需要 Cloud VPN,才能存取繫結至機器私人位址的服務。" + "value": "连接 Cloud VPN" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmux 可转发端口,无需 Cloud VPN。网页浏览器和其他 Mac 应用需要 Cloud VPN,才能访问绑定到机器专用地址的服务。" + "value": "連接 Cloud VPN" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux는 Cloud VPN 없이 포트를 전달합니다. 웹 브라우저 및 다른 Mac 앱이 머신의 비공개 주소에 바인딩된 서비스에 접근하려면 Cloud VPN이 필요합니다." + "value": "Cloud VPN 연결" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "cmux は Cloud VPN なしでポートを転送します。Web ブラウザやその他の Mac アプリからマシンのプライベートアドレスにバインドされたサービスにアクセスするには Cloud VPN が必要です。" + "value": "توصيل VPN الخاص بـ Cloud" } }, "bs": { "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": "Poveži Cloud VPN" } }, "da": { "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": "Forbind Cloud VPN" } }, "it": { "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": "Connetti VPN Cloud" } }, "km": { "stringUnit": { "state": "translated", - "value": "cmux បញ្ជូនបន្តច្រកដោយមិនត្រូវការ Cloud VPN។ កម្មវិធីរុករកបណ្តាញ និងកម្មវិធី Mac ផ្សេងទៀតត្រូវការ Cloud VPN ដើម្បីចូលដល់សេវាកម្មដែលចងទៅអាសយដ្ឋានឯកជនរបស់ម៉ាស៊ីន។" + "value": "ភ្ជាប់ Cloud VPN" } }, "nb": { "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": "Koble til Cloud VPN" } }, "pl": { "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": "Połącz z Cloud VPN" } }, "pt-BR": { "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": "Conectar Cloud VPN" } }, "ru": { "stringUnit": { "state": "translated", - "value": "cmux перенаправляет порты без Cloud VPN. Веб-браузерам и другим приложениям Mac нужен Cloud VPN, чтобы обращаться к службам, привязанным к частному адресу машины." + "value": "Подключить Cloud VPN" } }, "th": { "stringUnit": { "state": "translated", - "value": "cmux ส่งต่อพอร์ตได้โดยไม่ต้องใช้ Cloud VPN เว็บเบราว์เซอร์และแอป Mac อื่นๆ ต้องใช้ Cloud VPN เพื่อเข้าถึงบริการที่ผูกกับที่อยู่ส่วนตัวของเครื่อง" + "value": "เชื่อมต่อ Cloud VPN" } }, "tr": { "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": "Cloud VPN’e bağlan" } }, "uk": { "stringUnit": { "state": "translated", - "value": "cmux перенаправляє порти без Cloud VPN. Веббраузерам та іншим застосункам Mac потрібен Cloud VPN, щоб звертатися до служб, прив’язаних до приватної адреси машини." + "value": "Підключити Cloud VPN" } } } }, - "cloudTree.ports.setupVPN": { + "cloud.vpn.setup.connected": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Set Up VPN…" + "value": "Connected" } }, "de": { "stringUnit": { "state": "translated", - "value": "VPN einrichten…" + "value": "Verbunden" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Configurer le VPN…" + "value": "Connecté" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "إعداد VPN…" + "value": "Conectada" } }, - "es": { + "ja": { "stringUnit": { "state": "translated", - "value": "Configurar VPN…" + "value": "接続済み" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "設定 VPN…" + "value": "已连接" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "设置 VPN…" + "value": "已連線" } }, "ko": { "stringUnit": { "state": "translated", - "value": "VPN 설정…" + "value": "연결됨" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "VPN を設定…" + "value": "متصل" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Postavi VPN…" + "value": "Povezano" } }, "da": { "stringUnit": { "state": "translated", - "value": "Konfigurer VPN…" + "value": "Forbundet" } }, "it": { "stringUnit": { "state": "translated", - "value": "Configura VPN…" + "value": "Connessa" } }, "km": { "stringUnit": { "state": "translated", - "value": "រៀបចំ VPN…" + "value": "បានភ្ជាប់" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Konfigurer VPN…" + "value": "Tilkoblet" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Skonfiguruj VPN…" + "value": "Połączono" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Configurar VPN…" + "value": "Conectada" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Настроить VPN…" + "value": "Подключено" } }, "th": { "stringUnit": { "state": "translated", - "value": "ตั้งค่า VPN…" + "value": "เชื่อมต่อแล้ว" } }, "tr": { "stringUnit": { "state": "translated", - "value": "VPN’i Kur…" + "value": "Bağlandı" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Налаштувати VPN…" + "value": "Підключено" } } } }, - "cloudTree.ports.stale": { + "cloud.vpn.setup.disconnect": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Port list may be out of date" + "value": "Disconnect" } }, "de": { "stringUnit": { "state": "translated", - "value": "Portliste möglicherweise veraltet" + "value": "Trennen" } }, "fr": { "stringUnit": { "state": "translated", - "value": "La liste des ports peut être obsolète" + "value": "Déconnecter" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "قد تكون قائمة المنافذ قديمة" + "value": "Desconectar" } }, - "es": { + "ja": { "stringUnit": { "state": "translated", - "value": "La lista de puertos puede estar desactualizada" + "value": "切断" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "連接埠清單可能已過時" + "value": "断开连接" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "端口列表可能已过期" + "value": "中斷連線" } }, "ko": { "stringUnit": { "state": "translated", - "value": "포트 목록이 오래되었을 수 있음" + "value": "연결 해제" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "ポートリストが古い可能性があります" + "value": "قطع الاتصال" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Lista portova je možda zastarjela" + "value": "Prekini vezu" } }, "da": { "stringUnit": { "state": "translated", - "value": "Portlisten er muligvis forældet" + "value": "Afbryd" } }, "it": { "stringUnit": { "state": "translated", - "value": "L’elenco delle porte potrebbe non essere aggiornato" + "value": "Disconnetti" } }, "km": { "stringUnit": { "state": "translated", - "value": "បញ្ជីច្រកអាចហួសសម័យ" + "value": "ផ្តាច់" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Portlisten kan være utdatert" + "value": "Koble fra" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Lista portów może być nieaktualna" + "value": "Rozłącz" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "A lista de portas pode estar desatualizada" + "value": "Desconectar" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Список портов может быть устаревшим" + "value": "Отключить" } }, "th": { "stringUnit": { "state": "translated", - "value": "รายการพอร์ตอาจไม่เป็นปัจจุบัน" + "value": "ตัดการเชื่อมต่อ" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Port listesi güncel olmayabilir" + "value": "Bağlantıyı kes" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Список портів може бути застарілим" + "value": "Від’єднати" } } } }, - "cloudTree.ports.stale.detail": { + "cloud.vpn.setup.entry.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": "Optional private IP access for other apps" } }, "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": "Optionaler Zugriff auf private IPs für andere Apps" } }, "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": "Accès facultatif aux IP privées pour les autres apps" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "تعذر تحديث آخر فحص. ربما تغيرت الخدمات المدرجة؛ حدّث للفحص مجددًا. لا تحتاج إعادة توجيه cmux إلى Cloud VPN." + "value": "Acceso opcional a IP privadas para otras apps" } }, - "es": { + "ja": { "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": "ほかのアプリからプライベートIPへアクセスする任意の設定" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "無法重新整理上次掃描結果。列出的服務可能已變更;請重新整理以再次檢查。cmux 轉送不需要 Cloud VPN。" + "value": "为其他应用提供可选的私有 IP 访问" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "无法刷新上次扫描结果。列出的服务可能已更改;请刷新以再次检查。cmux 转发无需 Cloud VPN。" + "value": "為其他 App 提供選用的私有 IP 存取" } }, "ko": { "stringUnit": { "state": "translated", - "value": "마지막 검색 결과를 새로 고치지 못했습니다. 나열된 서비스가 변경되었을 수 있으니 새로 고쳐 확인하세요. cmux 전달에는 Cloud VPN이 필요하지 않습니다." + "value": "다른 앱의 비공개 IP 접근을 위한 선택 설정" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "前回のスキャンを更新できませんでした。表示されたサービスが変わっている可能性があります。更新して再確認してください。cmux の転送に Cloud VPN は不要です。" + "value": "وصول اختياري إلى عناوين IP الخاصة للتطبيقات الأخرى" } }, "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": "Opcionalni pristup privatnim IP adresama za druge aplikacije" } }, "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": "Valgfri privat IP-adgang for andre apps" } }, "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": "Accesso facoltativo agli IP privati per altre app" } }, "km": { "stringUnit": { "state": "translated", - "value": "មិនអាចផ្ទុកការស្កេនចុងក្រោយឡើងវិញបានទេ។ សេវាកម្មដែលបានរាយអាចបានផ្លាស់ប្តូរ; ផ្ទុកឡើងវិញដើម្បីពិនិត្យម្តងទៀត។ ការបញ្ជូនបន្តរបស់ cmux មិនត្រូវការ Cloud VPN ទេ។" + "value": "ចូលប្រើ IP ឯកជនសម្រាប់កម្មវិធីផ្សេងៗជាជម្រើស" } }, "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": "Valgfri privat IP-tilgang for andre apper" } }, "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": "Opcjonalny dostęp innych aplikacji do prywatnych adresów IP" } }, "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": "Acesso opcional a IPs privados para outros apps" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Не удалось обновить последнее сканирование. Перечисленные службы могли измениться; обновите, чтобы проверить снова. Перенаправлению cmux Cloud VPN не нужен." + "value": "Необязательный доступ других приложений к частным IP" } }, "th": { "stringUnit": { "state": "translated", - "value": "ไม่สามารถรีเฟรชการสแกนครั้งล่าสุดได้ บริการที่แสดงอาจเปลี่ยนไปแล้ว รีเฟรชเพื่อตรวจสอบอีกครั้ง การส่งต่อของ cmux ไม่ต้องใช้ Cloud VPN" + "value": "การเข้าถึง IP ส่วนตัวสำหรับแอปอื่นแบบไม่บังคับ" } }, "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": "Diğer uygulamalar için isteğe bağlı özel IP erişimi" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Не вдалося оновити останнє сканування. Перелічені служби могли змінитися; оновіть, щоб перевірити знову. Перенаправлення cmux не потребує Cloud VPN." + "value": "Необов’язковий доступ інших програм до приватних IP" } } } }, - "cloudTree.ports.unavailable.detail": { + "cloud.vpn.setup.failed": { "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": "Needs attention" } }, "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": "Aktion erforderlich" } }, "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": "Action requise" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "فشل فحص المنافذ؛ هذا لا يعني عدم وجود خدمة تستمع. قد تظل منافذ cmux الحالية تعمل. حدّث للمحاولة مجددًا؛ Cloud VPN غير مطلوب." + "value": "Requiere atención" } }, - "es": { + "ja": { "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": "対応が必要" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "連接埠掃描失敗;這不代表沒有服務正在監聽。現有 cmux 連接埠可能仍可使用。請重新整理以重試;不需要 Cloud VPN。" + "value": "需要处理" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "端口扫描失败;这并不代表没有服务正在监听。现有 cmux 端口可能仍可使用。请刷新以重试;无需 Cloud VPN。" + "value": "需要處理" } }, "ko": { "stringUnit": { "state": "translated", - "value": "포트 검색이 실패했지만 수신 대기 서비스가 없다는 뜻은 아닙니다. 기존 cmux 포트는 계속 작동할 수 있습니다. 새로 고쳐 다시 시도하세요. Cloud VPN은 필요하지 않습니다." + "value": "조치 필요" } }, - "ja": { + "ar": { "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": "Potrebna pažnja" } }, "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": "Kræver opmærksomhed" } }, "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": "Richiede attenzione" } }, "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": "Krever handling" } }, "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": "Wymaga uwagi" } }, "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": "Requer atenção" } }, "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": "İlgilenilmeli" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Сканування портів не вдалося; це не означає, що жодна служба не прослуховує. Наявні порти cmux можуть і далі працювати. Оновіть, щоб повторити; Cloud VPN не потрібен." + "value": "Потрібна увага" } } } }, - "cloudTree.ports.unsupported": { + "cloud.vpn.setup.off": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Ports are not supported by this provider." + "value": "Off" } }, "de": { "stringUnit": { "state": "translated", - "value": "Ports werden von diesem Anbieter nicht unterstützt." + "value": "Aus" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Les ports ne sont pas pris en charge par ce fournisseur." + "value": "Désactivé" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "لا يدعم هذا الموفر المنافذ." + "value": "Desactivada" } }, - "es": { + "ja": { "stringUnit": { "state": "translated", - "value": "Este proveedor no admite puertos." + "value": "オフ" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "此提供者不支援連接埠。" + "value": "已关闭" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "此提供商不支持端口。" + "value": "已關閉" } }, "ko": { "stringUnit": { "state": "translated", - "value": "이 제공자는 포트를 지원하지 않습니다." + "value": "꺼짐" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "このプロバイダーはポートをサポートしていません。" + "value": "متوقف" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Ovaj pružalac ne podržava portove." + "value": "Isključeno" } }, "da": { "stringUnit": { "state": "translated", - "value": "Porte understøttes ikke af denne udbyder." + "value": "Fra" } }, "it": { "stringUnit": { "state": "translated", - "value": "Le porte non sono supportate da questo provider." + "value": "Disattivata" } }, "km": { "stringUnit": { "state": "translated", - "value": "អ្នកផ្តល់សេវានេះមិនគាំទ្រច្រកទេ។" + "value": "បិទ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Porter støttes ikke av denne leverandøren." + "value": "Av" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Ten dostawca nie obsługuje portów." + "value": "Wyłączona" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Este provedor não oferece suporte a portas." + "value": "Desativada" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Этот провайдер не поддерживает порты." + "value": "Выключено" } }, "th": { "stringUnit": { "state": "translated", - "value": "ผู้ให้บริการนี้ไม่รองรับพอร์ต" + "value": "ปิด" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Bu sağlayıcı portları desteklemiyor." + "value": "Kapalı" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Цей постачальник не підтримує порти." + "value": "Вимкнено" } } } }, - "cloudTree.ports.unsupported.detail": { + "cloud.vpn.setup.openUnavailable": { "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": "Cloud VPN setup is unavailable" } }, "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": "Cloud-VPN-Einrichtung ist nicht verfügbar" } }, "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": "La configuration du VPN Cloud est indisponible" } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "لا يدعم هذا الموفر مسار منافذ داخل التطبيق. افتح صدفة للوصول إلى الخدمة داخل الجهاز. لا يضيف Cloud VPN دعمًا للموفر." + "value": "La configuración de VPN de Cloud no está disponible" } }, - "es": { + "ja": { "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": "Cloud VPN設定は利用できません" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "此提供者不支援應用程式內連接埠路徑。請開啟 Shell 以在機器內存取服務。Cloud VPN 不會新增提供者支援。" + "value": "Cloud VPN 设置不可用" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "此提供商不支持应用内端口路由。请打开 Shell 以在机器内部访问服务。Cloud VPN 不会添加提供商支持。" + "value": "無法使用 Cloud VPN 設定" } }, "ko": { "stringUnit": { "state": "translated", - "value": "이 제공자는 앱 내 포트 경로를 지원하지 않습니다. 셸을 열어 머신 내부의 서비스에 접근하세요. Cloud VPN으로 제공자 지원이 추가되지는 않습니다." + "value": "Cloud VPN 설정을 사용할 수 없습니다" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "このプロバイダーはアプリ内のポート経路に対応していません。シェルを開き、マシン内でサービスにアクセスしてください。Cloud VPN を有効にしても対応は追加されません。" + "value": "إعداد VPN الخاص بـ Cloud غير متاح" } }, "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." + "value": "Podešavanje Cloud VPN-a nije dostupno" } }, "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": "Cloud VPN-opsætning er ikke tilgængelig" } }, "it": { "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": "La configurazione VPN Cloud non è disponibile" } }, "km": { "stringUnit": { "state": "translated", - "value": "អ្នកផ្តល់សេវានេះគ្មានផ្លូវច្រកក្នុងកម្មវិធីដែលគាំទ្រទេ។ បើក shell ដើម្បីចូលប្រើសេវាកម្មនៅខាងក្នុងម៉ាស៊ីន។ Cloud VPN មិនបន្ថែមការគាំទ្រអ្នកផ្តល់សេវាទេ។" + "value": "ការរៀបចំ Cloud VPN មិនអាចប្រើបាន" } }, "nb": { "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": "Cloud VPN-oppsett er ikke tilgjengelig" } }, "pl": { "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": "Konfiguracja Cloud VPN jest niedostępna" } }, "pt-BR": { "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 configuração do Cloud VPN não está disponível" } }, "ru": { "stringUnit": { "state": "translated", - "value": "У этого провайдера нет поддерживаемого маршрута портов в приложении. Откройте оболочку, чтобы получить доступ к службе внутри машины. Cloud VPN не добавляет поддержку провайдера." + "value": "Настройка Cloud VPN недоступна" } }, "th": { "stringUnit": { "state": "translated", - "value": "ผู้ให้บริการนี้ไม่มีเส้นทางพอร์ตในแอปที่รองรับ เปิดเชลล์เพื่อเข้าถึงบริการภายในเครื่อง Cloud VPN ไม่ได้เพิ่มการรองรับผู้ให้บริการ" + "value": "การตั้งค่า Cloud VPN ไม่พร้อมใช้งาน" } }, "tr": { "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": "Cloud VPN kurulumu kullanılamıyor" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Цей постачальник не має підтримуваного маршруту портів у застосунку. Відкрийте оболонку, щоб отримати доступ до служби всередині машини. Cloud VPN не додає підтримку постачальника." + "value": "Налаштування Cloud VPN недоступне" } } } }, - "cloudTree.port.openInCmux": { + "cloud.vpn.setup.permission.body": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open in cmux" + "value": "The VPN software is included in cmux. You do not need another app. macOS may require your password or Touch ID during approval." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "فتح في cmux" + "value": "Die VPN-Software ist in cmux enthalten. Sie brauchen keine weitere App. macOS kann bei der Genehmigung Ihr Passwort oder Touch ID verlangen." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "In cmux öffnen" + "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": "Abrir en cmux" + "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." } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "Ouvrir dans cmux" + "value": "VPNソフトウェアはcmuxに含まれています。別のアプリは不要です。承認時にmacOSがパスワードまたはTouch IDを求めることがあります。" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmuxで開く" + "value": "cmux 已包含 VPN 软件,无需其他应用。批准时,macOS 可能要求您输入密码或使用触控 ID。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "cmux 已包含 VPN 軟體,不需要其他 App。核准時,macOS 可能要求您輸入密碼或使用 Touch ID。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux에서 열기" + "value": "VPN 소프트웨어는 cmux에 포함되어 있습니다. 다른 앱은 필요하지 않습니다. 승인 시 macOS에서 암호 또는 Touch ID를 요청할 수 있습니다." } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "在 cmux 中打开" + "value": "برنامج VPN مضمن في cmux. لا تحتاج إلى تطبيق آخر. قد يطلب macOS كلمة المرور أو Touch ID أثناء الموافقة." } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "在 cmux 中開啟" + "value": "VPN softver je uključen u cmux. Nije potrebna druga aplikacija. macOS može zatražiti lozinku ili Touch ID tokom odobravanja." } - } - } - }, - "cloudTree.port.openInCmux.help": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Open in cmux. No VPN setup needed." + "value": "VPN-softwaren er inkluderet i cmux. Du behøver ingen anden app. macOS kan bede om din adgangskode eller Touch ID under godkendelsen." } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "افتح في cmux. لا يلزم إعداد VPN." + "value": "Il software VPN è incluso in cmux. Non serve un’altra app. macOS potrebbe chiedere la password o Touch ID durante l’autorizzazione." } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "In cmux öffnen. Keine VPN-Einrichtung nötig." + "value": "កម្មវិធី VPN មាននៅក្នុង cmux។ អ្នកមិនត្រូវការកម្មវិធីផ្សេងទៀតទេ។ macOS អាចស្នើពាក្យសម្ងាត់ ឬ Touch ID ក្នុងពេលអនុម័ត។" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Abrir en cmux. No hace falta configurar una VPN." + "value": "VPN-programvaren er inkludert i cmux. Du trenger ingen annen app. macOS kan be om passord eller Touch ID under godkjenningen." } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Ouvrir dans cmux. Aucune configuration VPN nécessaire." + "value": "Oprogramowanie VPN jest zawarte w cmux. Nie potrzebujesz innej aplikacji. macOS może poprosić o hasło lub Touch ID podczas zatwierdzania." } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "cmux で開きます。VPN の設定は不要です。" + "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." } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "cmux에서 열기. VPN 설정이 필요하지 않습니다." + "value": "VPN-программа уже входит в cmux. Другие приложения не нужны. Во время подтверждения macOS может запросить пароль или Touch ID." } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "在 cmux 中打开。无需设置 VPN。" + "value": "ซอฟต์แวร์ VPN รวมอยู่ใน cmux แล้ว ไม่ต้องใช้แอปอื่น macOS อาจขอรหัสผ่านหรือ Touch ID ระหว่างการอนุมัติ" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "在 cmux 中開啟。無需設定 VPN。" + "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." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Програмне забезпечення VPN входить до cmux. Інша програма не потрібна. Під час схвалення macOS може попросити пароль або Touch ID." } } } }, - "cloudTree.port.title": { + "cloud.vpn.setup.status.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Port %@" + "value": "Private network status" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "المنفذ %@" + "value": "Status des privaten Netzwerks" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Port-Nr. %@" + "value": "État du réseau privé" } }, "es": { "stringUnit": { "state": "translated", - "value": "Puerto %@" + "value": "Estado de la red privada" } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "Port n° %@" + "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": "Status privatne mreže" } - } - } - }, - "cloudTree.placeholder.deviceOffline": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Offline — its workspaces return when it does" + "value": "Status for privat netværk" } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "غير متصل — ستعود مساحات عمله عند اتصاله مجددًا" + "value": "Stato della rete privata" } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "Offline — die Arbeitsbereiche erscheinen wieder, sobald das Gerät online ist" + "value": "ស្ថានភាពបណ្តាញឯកជន" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Sin conexión — sus espacios de trabajo volverán cuando se conecte" + "value": "Status for privat nettverk" } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Hors ligne — ses espaces de travail réapparaîtront à sa reconnexion" + "value": "Stan sieci prywatnej" } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "オフライン — 再接続するとワークスペースが戻ります" + "value": "Status da rede privada" } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "오프라인 — 다시 연결되면 작업 공간이 돌아옵니다" + "value": "Состояние частной сети" } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "离线 — 重新连接后会恢复工作区" + "value": "สถานะเครือข่ายส่วนตัว" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "離線 — 重新連線後會恢復工作區" + "value": "Özel ağ durumu" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Стан приватної мережі" } } } }, - "cloud.vpn.setup.heading": { + "cloud.vpn.setup.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Use Cloud machines from any app" + "value": "Cloud VPN" } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud-Maschinen aus jeder App verwenden" + "value": "Cloud-VPN" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Utiliser les machines Cloud depuis toute app" + "value": "VPN Cloud" } }, "es": { "stringUnit": { "state": "translated", - "value": "Usar máquinas Cloud desde cualquier app" + "value": "VPN de Cloud" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ほかのアプリからCloudマシンを使う" + "value": "クラウドVPN" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "从任何应用使用 Cloud 机器" + "value": "云端 VPN" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "從任何 App 使用 Cloud 機器" + "value": "雲端 VPN" } }, "ko": { "stringUnit": { "state": "translated", - "value": "모든 앱에서 Cloud 머신 사용" + "value": "클라우드 VPN" } }, "ar": { "stringUnit": { "state": "translated", - "value": "استخدام أجهزة Cloud من أي تطبيق" + "value": "شبكة Cloud الخاصة" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Koristite Cloud mašine iz bilo koje aplikacije" + "value": "Cloud VPN" } }, "da": { "stringUnit": { "state": "translated", - "value": "Brug Cloud-maskiner fra alle apps" + "value": "Cloud VPN" } }, "it": { "stringUnit": { "state": "translated", - "value": "Usa le macchine Cloud da qualsiasi app" + "value": "VPN Cloud" } }, "km": { "stringUnit": { "state": "translated", - "value": "ប្រើម៉ាស៊ីន Cloud ពីកម្មវិធីណាមួយ" + "value": "Cloud VPN" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Bruk Cloud-maskiner fra alle apper" + "value": "Cloud VPN" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Używaj maszyn Cloud z dowolnej aplikacji" + "value": "Cloud VPN" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Use máquinas Cloud em qualquer app" + "value": "Cloud VPN" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Используйте Cloud-машины из любого приложения" + "value": "Cloud VPN" } }, "th": { "stringUnit": { "state": "translated", - "value": "ใช้เครื่อง Cloud จากทุกแอป" + "value": "Cloud VPN" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Cloud makinelerini her uygulamadan kullanın" + "value": "Cloud VPN" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Використовуйте Cloud-машини з будь-якої програми" + "value": "Cloud VPN" } } } }, - "cloud.vpn.setup.subtitle": { + "cloud.vpn.setup.unavailable": { "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": "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." } }, "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": "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." } }, "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": "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." } }, "es": { "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": "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." } }, "ja": { "stringUnit": { "state": "translated", - "value": "各VMのプライベートアドレスと元のポート(例:10.40.0.10:3000)にアクセスするための任意の設定です。" + "value": "このcmuxには署名済みのVPN機能拡張が含まれていません。Cloud VPN対応のcmuxリリースを使用してください。Cloudのターミナル、ポート、デスクトップはVPNなしでも使えます。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "可选设置,用于访问每台 VM 的私有地址和原始端口,例如 10.40.0.10:3000。" + "value": "此 cmux 副本未包含已签名的 VPN 扩展。请使用支持 Cloud VPN 的 cmux 版本。Cloud 终端、端口和桌面无需 VPN 仍可使用。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "選用設定,可存取每台 VM 的私有位址和原始連接埠,例如 10.40.0.10:3000。" + "value": "此 cmux 副本未包含已簽署的 VPN 延伸功能。請使用支援 Cloud VPN 的 cmux 版本。Cloud 終端機、連接埠和桌面不需要 VPN 仍可使用。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "각 VM의 비공개 주소와 원래 포트(예: 10.40.0.10:3000)에 접근하기 위한 선택 설정입니다." + "value": "이 cmux에는 서명된 VPN 확장이 포함되어 있지 않습니다. Cloud VPN을 지원하는 cmux 릴리스를 사용하세요. Cloud 터미널, 포트 및 데스크탑은 VPN 없이도 사용할 수 있습니다." } }, "ar": { "stringUnit": { "state": "translated", - "value": "وصول اختياري إلى العنوان الخاص والمنافذ الأصلية لكل جهاز افتراضي، مثل 10.40.0.10:3000." + "value": "لا تتضمن هذه النسخة من cmux امتداد VPN موقعًا. استخدم إصدار cmux يدعم VPN الخاص بـ Cloud. تظل طرفيات Cloud والمنافذ وسطح المكتب متاحة بدون VPN." } }, "bs": { "stringUnit": { "state": "translated", - "value": "Opcionalni pristup privatnoj adresi i izvornim portovima svake VM, na primjer 10.40.0.10:3000." + "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." } }, "da": { "stringUnit": { "state": "translated", - "value": "Valgfri adgang til hver VM’s private adresse og oprindelige porte, f.eks. 10.40.0.10:3000." + "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." } }, "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": "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." } }, "km": { "stringUnit": { "state": "translated", - "value": "ចូលប្រើអាសយដ្ឋានឯកជន និងច្រកដើមរបស់ VM នីមួយៗ ដូចជា 10.40.0.10:3000 ជាជម្រើស។" + "value": "cmux ច្បាប់នេះមិនមានផ្នែកបន្ថែម VPN ដែលបានចុះហត្ថលេខាទេ។ ប្រើកំណែ cmux ដែលគាំទ្រ Cloud VPN។ Terminal, Ports និង Desktop របស់ Cloud នៅតែប្រើបានដោយគ្មាន VPN។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Valgfri tilgang til hver VMs private adresse og opprinnelige porter, som 10.40.0.10:3000." + "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": "Opcjonalny dostęp do prywatnego adresu i oryginalnych portów każdej maszyny VM, na przykład 10.40.0.10:3000." + "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": "Acesso opcional ao endereço privado e às portas originais de cada VM, como 10.40.0.10:3000." + "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": "Необязательный доступ к частному адресу и исходным портам каждой VM, например 10.40.0.10:3000." + "value": "В этой копии cmux нет подписанного VPN-расширения. Используйте выпуск cmux с поддержкой Cloud VPN. Cloud-терминалы, порты и рабочий стол доступны без VPN." } }, "th": { "stringUnit": { "state": "translated", - "value": "การเข้าถึงที่ไม่บังคับไปยังที่อยู่ส่วนตัวและพอร์ตเดิมของ VM แต่ละเครื่อง เช่น 10.40.0.10:3000" + "value": "cmux รุ่นนี้ไม่มีส่วนขยาย VPN ที่ลงนามแล้ว ใช้รุ่น cmux ที่รองรับ Cloud VPN เทอร์มินัล Cloud พอร์ต และเดสก์ท็อปยังใช้ได้โดยไม่ต้องมี 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": "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": "Необов’язковий доступ до приватної адреси та початкових портів кожної VM, наприклад 10.40.0.10:3000." + "value": "Ця копія cmux не містить підписаного VPN-розширення. Використовуйте випуск cmux із підтримкою Cloud VPN. Cloud-термінали, порти й робочий стіл доступні без VPN." } } } }, - "cloud.vpn.setup.howItWorks.title": { + "cloud.vpn.setup.waiting": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "How it works" + "value": "Waiting" } }, "de": { "stringUnit": { "state": "translated", - "value": "So funktioniert es" + "value": "Warten" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Fonctionnement" + "value": "En attente" } }, "es": { "stringUnit": { "state": "translated", - "value": "Cómo funciona" + "value": "En espera" } }, "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": "Kako radi" + "value": "Čekanje" } }, "da": { "stringUnit": { "state": "translated", - "value": "Sådan fungerer det" + "value": "Venter" } }, "it": { "stringUnit": { "state": "translated", - "value": "Come funziona" + "value": "In attesa" } }, "km": { "stringUnit": { "state": "translated", - "value": "របៀបដំណើរការ" + "value": "កំពុងរង់ចាំ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Slik fungerer det" + "value": "Venter" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Jak to działa" + "value": "Oczekiwanie" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Como funciona" + "value": "Aguardando" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Как это работает" + "value": "Ожидание" } }, "th": { "stringUnit": { "state": "translated", - "value": "วิธีการทำงาน" + "value": "กำลังรอ" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Nasıl çalışır" + "value": "Bekliyor" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Як це працює" + "value": "Очікування" } } } }, - "cloud.vpn.setup.status.off": { + "cloudTree.ports.action.wake": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Off. Your Cloud panes continue to work through cmux's built-in route." + "value": "Wake Machine" } }, "de": { "stringUnit": { "state": "translated", - "value": "Aus. Ihre Cloud-Bereiche funktionieren weiterhin über die integrierte Verbindung von cmux." + "value": "Maschine aktivieren" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Désactivé. Vos volets Cloud continuent de fonctionner via la connexion intégrée de cmux." + "value": "Réveiller la machine" } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Desactivada. Tus paneles Cloud siguen funcionando mediante la conexión integrada de cmux." + "value": "إيقاظ الجهاز" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "オフ。Cloudペインは引き続きcmux内蔵の接続経路で動作します。" + "value": "Activar máquina" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "已关闭。Cloud 面板仍通过 cmux 内置连接工作。" + "value": "喚醒機器" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "已關閉。Cloud 面板仍透過 cmux 內建連線運作。" + "value": "唤醒机器" } }, "ko": { "stringUnit": { "state": "translated", - "value": "꺼짐. Cloud 패널은 cmux의 내장 연결을 통해 계속 작동합니다." + "value": "머신 깨우기" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "متوقف. تستمر لوحات Cloud في العمل عبر اتصال cmux المضمن." + "value": "マシンを起動" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Isključeno. Cloud paneli i dalje rade preko ugrađene cmux veze." + "value": "Probudi mašinu" } }, "da": { "stringUnit": { "state": "translated", - "value": "Fra. Dine Cloud-paneler fungerer stadig via cmux’ indbyggede forbindelse." + "value": "Væk maskine" } }, "it": { "stringUnit": { "state": "translated", - "value": "Disattivata. I pannelli Cloud continuano a funzionare tramite la connessione integrata di cmux." + "value": "Riattiva macchina" } }, "km": { "stringUnit": { "state": "translated", - "value": "បិទ។ ផ្ទាំង Cloud របស់អ្នកនៅតែដំណើរការតាមការភ្ជាប់ដែលមានស្រាប់របស់ cmux។" + "value": "ដាស់ម៉ាស៊ីន" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Av. Cloud-panelene dine fortsetter å fungere gjennom cmux sin innebygde forbindelse." + "value": "Vekk maskin" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Wyłączona. Panele Cloud nadal działają przez wbudowane połączenie cmux." + "value": "Wybudź maszynę" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Desativada. Seus painéis Cloud continuam funcionando pela conexão integrada do cmux." + "value": "Despertar máquina" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Выключено. Панели Cloud продолжают работать через встроенное соединение cmux." + "value": "Разбудить машину" } }, "th": { "stringUnit": { "state": "translated", - "value": "ปิดอยู่ แผง Cloud ยังคงทำงานผ่านการเชื่อมต่อในตัวของ cmux" + "value": "ปลุกเครื่อง" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Kapalı. Cloud panelleriniz cmux’un yerleşik bağlantısıyla çalışmaya devam eder." + "value": "Makineyi uyandır" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Вимкнено. Панелі Cloud продовжують працювати через вбудоване з’єднання cmux." + "value": "Розбудити машину" } } } }, - "cloud.vpn.setup.steps.title": { + "cloudTree.ports.asleep.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "First-time setup" + "value": "Wake the machine to check its services. cmux’s in-app forwarding does not need Cloud VPN." } }, "de": { "stringUnit": { "state": "translated", - "value": "Ersteinrichtung" + "value": "Aktivieren Sie die Maschine, um ihre Dienste zu prüfen. Die Weiterleitung in cmux benötigt kein Cloud-VPN." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Première configuration" + "value": "Réveillez la machine pour vérifier ses services. Le transfert intégré à cmux ne nécessite pas de VPN Cloud." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Configuración inicial" + "value": "أيقظ الجهاز لفحص خدماته. لا تحتاج إعادة التوجيه داخل cmux إلى Cloud VPN." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "初回設定" + "value": "Activa la máquina para comprobar sus servicios. El reenvío integrado de cmux no necesita Cloud VPN." } }, - "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": "Probudite mašinu da provjerite njene servise. Prosljeđivanje unutar cmux-a ne treba Cloud VPN." } }, "da": { "stringUnit": { "state": "translated", - "value": "Første opsætning" + "value": "Væk maskinen for at kontrollere dens tjenester. Videresendelse i cmux kræver ikke Cloud VPN." } }, "it": { "stringUnit": { "state": "translated", - "value": "Prima configurazione" + "value": "Riattiva la macchina per controllarne i servizi. L’inoltro all’interno di cmux non richiede la VPN Cloud." } }, "km": { "stringUnit": { "state": "translated", - "value": "ការរៀបចំលើកដំបូង" + "value": "ដាស់ម៉ាស៊ីនដើម្បីពិនិត្យសេវាកម្មរបស់វា។ ការបញ្ជូនបន្តនៅក្នុង cmux មិនត្រូវការ Cloud VPN ទេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Førstegangsoppsett" + "value": "Vekk maskinen for å sjekke tjenestene. Videresending i cmux trenger ikke Cloud VPN." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Pierwsza konfiguracja" + "value": "Wybudź maszynę, aby sprawdzić jej usługi. Przekierowywanie w cmux nie wymaga Cloud VPN." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Primeira configuração" + "value": "Desperte a máquina para verificar os serviços. O encaminhamento dentro do cmux não precisa do Cloud VPN." } }, "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": "Hizmetlerini denetlemek için makineyi uyandırın. cmux içi yönlendirme Cloud VPN gerektirmez." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Перше налаштування" + "value": "Розбудіть машину, щоб перевірити її служби. Перенаправлення всередині cmux не потребує Cloud VPN." } } } }, - "cloud.vpn.setup.steps.extension": { + "cloudTree.ports.available.title": { "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": "Listening services" } }, "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": "Lauschende Dienste" } }, "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": "Services en écoute" } }, - "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": "Servicios en escucha" } }, - "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": "Servisi koji slušaju" } }, "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": "Lyttende tjenester" } }, "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": "Servizi in ascolto" } }, "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": "Lyttende tjenester" } }, "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": "Nasłuchujące usługi" } }, "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": "Serviços em escuta" } }, "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": "Dinleyen hizmetler" } }, "uk": { "stringUnit": { "state": "translated", - "value": "1. Натисніть Підключити Cloud VPN. Коли macOS попросить, дозвольте мережеве розширення cmux у Системних параметрах." + "value": "Служби, що прослуховують" } } } }, - "cloud.vpn.setup.steps.settings": { + "cloudTree.ports.binding.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open General > Login Items & Extensions > Network Extensions, then enable cmux." + "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": "Öffnen Sie Allgemein > Anmeldeobjekte & Erweiterungen > Netzwerkerweiterungen und aktivieren Sie cmux." + "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": "Ouvrez Général > Ouverture et extensions > Extensions réseau, puis activez cmux." + "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." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Abre General > Ítems de inicio y extensiones > Extensiones de red y activa cmux." + "value": "يتصل مسار متصفح cmux بالعنوان 127.0.0.1 على الجهاز. اربط الخدمة بالعنوان 127.0.0.1 أو 0.0.0.0 ثم حدّث. تشغيل Cloud VPN لا يغير هذا المسار." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "「一般」>「ログイン項目と機能拡張」>「ネットワーク機能拡張」を開き、cmuxを有効にします。" + "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-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "打开“通用”>“登录项与扩展”>“网络扩展”,然后启用 cmux。" + "value": "cmux 的瀏覽器路徑會連線到機器上的 127.0.0.1。請將服務繫結至 127.0.0.1 或 0.0.0.0 後重新整理。開啟 Cloud VPN 不會改變此路徑。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "打開「一般」>「登入項目與延伸功能」>「網路延伸功能」,然後啟用 cmux。" + "value": "cmux 的浏览器路由连接到机器上的 127.0.0.1。请将服务绑定到 127.0.0.1 或 0.0.0.0 后刷新。开启 Cloud VPN 不会改变此路由。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "일반 > 로그인 항목 및 확장 프로그램 > 네트워크 확장을 열고 cmux를 활성화합니다." + "value": "cmux 브라우저 경로는 머신의 127.0.0.1에 연결합니다. 서비스를 127.0.0.1 또는 0.0.0.0에 바인딩한 후 새로 고치세요. Cloud VPN을 켜도 이 경로는 바뀌지 않습니다." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "افتح عام > عناصر الدخول والامتدادات > امتدادات الشبكة، ثم فعّل cmux." + "value": "cmux のブラウザはマシン上の 127.0.0.1 に接続します。サービスを 127.0.0.1 または 0.0.0.0 にバインドして更新してください。Cloud VPN を有効にしてもこの経路は変わりません。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Otvorite Opšte > Stavke za prijavu i dodaci > Mrežni dodaci, pa omogućite cmux." + "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": "Åbn Generelt > Loginemner og udvidelser > Netværksudvidelser, og aktivér cmux." + "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": "Apri Generali > Elementi login ed estensioni > Estensioni di rete, quindi abilita cmux." + "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។" + "value": "ផ្លូវកម្មវិធីរុករករបស់ cmux ភ្ជាប់ទៅ 127.0.0.1 នៅលើម៉ាស៊ីន។ ចងសេវាកម្មទៅ 127.0.0.1 ឬ 0.0.0.0 រួចផ្ទុកឡើងវិញ។ ការបើក Cloud VPN មិនផ្លាស់ប្តូរផ្លូវនេះទេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Åpne Generelt > Påloggingselementer og utvidelser > Nettverksutvidelser, og aktiver cmux." + "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": "Otwórz Ogólne > Elementy logowania i rozszerzenia > Rozszerzenia sieciowe, a następnie włącz cmux." + "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": "Abra Geral > Itens de Início e Extensões > Extensões de Rede e ative o cmux." + "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." + "value": "Браузерный маршрут cmux подключается к 127.0.0.1 на машине. Привяжите службу к 127.0.0.1 или 0.0.0.0, затем обновите. Включение Cloud VPN не меняет этот маршрут." } }, "th": { "stringUnit": { "state": "translated", - "value": "เปิด ทั่วไป > รายการเข้าสู่ระบบและส่วนขยาย > ส่วนขยายเครือข่าย แล้วเปิดใช้ cmux" + "value": "เส้นทางเบราว์เซอร์ของ cmux เชื่อมต่อกับ 127.0.0.1 บนเครื่อง ผูกบริการกับ 127.0.0.1 หรือ 0.0.0.0 แล้วรีเฟรช การเปิด 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": "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." + "value": "Браузерний маршрут cmux підключається до 127.0.0.1 на машині. Прив’яжіть службу до 127.0.0.1 або 0.0.0.0, потім оновіть. Увімкнення Cloud VPN не змінює цей маршрут." } } } }, - "cloud.vpn.setup.steps.settingsLegacy": { + "cloudTree.ports.binding.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open Privacy & Security and allow the cmux extension." + "value": "Services use another interface" } }, "de": { "stringUnit": { "state": "translated", - "value": "Öffnen Sie Datenschutz & Sicherheit und erlauben Sie die cmux-Erweiterung." + "value": "Dienste verwenden eine andere Schnittstelle" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ouvrez Confidentialité et sécurité et autorisez l’extension cmux." + "value": "Les services utilisent une autre interface" } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Abre Privacidad y seguridad y permite la extensión de cmux." + "value": "تستخدم الخدمات واجهة أخرى" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "「プライバシーとセキュリティ」を開き、cmuxの機能拡張を許可します。" + "value": "Los servicios usan otra interfaz" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "打开“隐私与安全性”,然后允许 cmux 扩展。" + "value": "服務使用其他介面" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "打開「隱私權與安全性」,然後允許 cmux 延伸功能。" + "value": "服务使用其他接口" } }, "ko": { "stringUnit": { "state": "translated", - "value": "개인정보 보호 및 보안을 열고 cmux 확장을 허용합니다." + "value": "서비스가 다른 인터페이스를 사용함" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "افتح الخصوصية والأمان واسمح بامتداد cmux." + "value": "サービスが別のインターフェイスを使用しています" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Otvorite Privatnost i sigurnost i dozvolite cmux dodatak." + "value": "Servisi koriste drugi interfejs" } }, "da": { "stringUnit": { "state": "translated", - "value": "Åbn Anonymitet og sikkerhed, og tillad cmux-udvidelsen." + "value": "Tjenester bruger en anden grænseflade" } }, "it": { "stringUnit": { "state": "translated", - "value": "Apri Privacy e sicurezza e consenti l’estensione cmux." + "value": "I servizi usano un’altra interfaccia" } }, "km": { "stringUnit": { "state": "translated", - "value": "បើក ឯកជនភាព និងសុវត្ថិភាព ហើយអនុញ្ញាតផ្នែកបន្ថែម cmux។" + "value": "សេវាកម្មប្រើចំណុចប្រទាក់ផ្សេង" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Åpne Personvern og sikkerhet og tillat cmux-utvidelsen." + "value": "Tjenester bruker et annet grensesnitt" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Otwórz Prywatność i ochrona i zezwól na rozszerzenie cmux." + "value": "Usługi używają innego interfejsu" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Abra Privacidade e Segurança e permita a extensão do cmux." + "value": "Os serviços usam outra interface" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Откройте Конфиденциальность и безопасность и разрешите расширение cmux." + "value": "Службы используют другой интерфейс" } }, "th": { "stringUnit": { "state": "translated", - "value": "เปิด ความเป็นส่วนตัวและความปลอดภัย แล้วอนุญาตส่วนขยาย cmux" + "value": "บริการใช้อินเทอร์เฟซอื่น" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Gizlilik ve Güvenlik’i açın ve cmux uzantısına izin verin." + "value": "Hizmetler başka bir arabirim kullanıyor" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Відкрийте Конфіденційність і безпека та дозвольте розширення cmux." + "value": "Служби використовують інший інтерфейс" } } } }, - "cloud.vpn.setup.steps.configuration": { + "cloudTree.ports.empty.noService": { "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": "Start a web server on this machine, then refresh." } }, "de": { "stringUnit": { "state": "translated", - "value": "2. Erlauben Sie cmux, eine VPN-Konfiguration namens cmux Cloud hinzuzufügen. Dies ist eine separate macOS-Berechtigung." + "value": "Starte einen Webserver auf diesem Rechner und aktualisiere dann die Liste." } }, "fr": { "stringUnit": { "state": "translated", - "value": "2. Autorisez cmux à ajouter une configuration VPN nommée cmux Cloud. Il s’agit d’une autorisation macOS distincte." + "value": "Démarrez un serveur web sur cette machine, puis actualisez." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "2. Permite que cmux añada una configuración VPN llamada cmux Cloud. Este es un permiso independiente de macOS." + "value": "شغّل خادم ويب على هذا الجهاز، ثم حدّث القائمة." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "2. cmux Cloudという名前のVPN構成の追加を許可します。これは別のmacOS権限です。" + "value": "Inicia un servidor web en esta máquina y luego actualiza." } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "2. 允许 cmux 添加名为 cmux Cloud 的 VPN 配置。这是单独的 macOS 权限。" + "value": "在這台機器上啟動網頁伺服器,然後重新整理。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "2. 允許 cmux 加入名為 cmux Cloud 的 VPN 設定。這是另一項 macOS 權限。" + "value": "在此机器上启动网页服务器,然后刷新。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "2. cmux가 cmux Cloud라는 VPN 구성을 추가하도록 허용합니다. 이는 별도의 macOS 권한입니다." + "value": "이 머신에서 웹 서버를 시작한 다음 새로 고치세요." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "2. اسمح لـ cmux بإضافة إعداد VPN باسم cmux Cloud. هذا إذن منفصل في macOS." + "value": "このマシンで Web サーバーを起動してから、更新してください。" } }, "bs": { "stringUnit": { - "state": "translated", - "value": "2. Dozvolite cmux-u da doda VPN konfiguraciju pod imenom cmux Cloud. Ovo je posebna macOS dozvola." + "state": "needs_review", + "value": "Pokrenite web server na ovoj mašini, zatim osvježite." } }, "da": { "stringUnit": { - "state": "translated", - "value": "2. Tillad cmux at tilføje en VPN-konfiguration med navnet cmux Cloud. Dette er en separat macOS-tilladelse." + "state": "needs_review", + "value": "Start en webserver på denne maskine, og opdater derefter." } }, "it": { "stringUnit": { - "state": "translated", - "value": "2. Consenti a cmux di aggiungere una configurazione VPN chiamata cmux Cloud. È un’autorizzazione macOS separata." + "state": "needs_review", + "value": "Avvia un server web su questa macchina, poi aggiorna." } }, "km": { "stringUnit": { - "state": "translated", - "value": "2. អនុញ្ញាតឱ្យ cmux បន្ថែមការកំណត់ VPN ឈ្មោះ cmux Cloud។ នេះជាសិទ្ធិ macOS ផ្សេងមួយ។" + "state": "needs_review", + "value": "ចាប់ផ្តើមម៉ាស៊ីនមេបណ្តាញនៅលើម៉ាស៊ីននេះ រួចផ្ទុកឡើងវិញ។" } }, "nb": { "stringUnit": { - "state": "translated", - "value": "2. Tillat cmux å legge til en VPN-konfigurasjon kalt cmux Cloud. Dette er en separat macOS-tillatelse." + "state": "needs_review", + "value": "Start en webserver på denne maskinen, og oppdater deretter." } }, "pl": { "stringUnit": { - "state": "translated", - "value": "2. Zezwól cmux dodać konfigurację VPN o nazwie cmux Cloud. To osobne uprawnienie macOS." + "state": "needs_review", + "value": "Uruchom serwer WWW na tej maszynie, a następnie odśwież." } }, "pt-BR": { "stringUnit": { - "state": "translated", - "value": "2. Permita que o cmux adicione uma configuração VPN chamada cmux Cloud. Esta é uma permissão separada do macOS." + "state": "needs_review", + "value": "Inicie um servidor web nesta máquina e atualize." } }, "ru": { "stringUnit": { - "state": "translated", - "value": "2. Разрешите cmux добавить VPN-конфигурацию с именем cmux Cloud. Это отдельное разрешение macOS." + "state": "needs_review", + "value": "Запустите веб-сервер на этой машине, затем обновите список." } }, "th": { "stringUnit": { - "state": "translated", - "value": "2. อนุญาตให้ cmux เพิ่มการกำหนดค่า VPN ชื่อ cmux Cloud นี่เป็นสิทธิ์ macOS แยกต่างหาก" + "state": "needs_review", + "value": "เริ่มเว็บเซิร์ฟเวอร์บนเครื่องนี้ แล้วรีเฟรช" } }, "tr": { "stringUnit": { - "state": "translated", - "value": "2. cmux’un cmux Cloud adlı bir VPN yapılandırması eklemesine izin verin. Bu ayrı bir macOS iznidir." + "state": "needs_review", + "value": "Bu makinede bir web sunucusu başlatın, ardından yenileyin." } }, "uk": { "stringUnit": { - "state": "translated", - "value": "2. Дозвольте cmux додати конфігурацію VPN з назвою cmux Cloud. Це окремий дозвіл macOS." + "state": "needs_review", + "value": "Запустіть вебсервер на цій машині, а потім оновіть список." } } } }, - "cloud.vpn.setup.steps.return": { + "cloudTree.ports.hub.detail": { "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": "This build cannot start cmux’s authenticated Cloud forward. Update cmux, then retry." } }, "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": "Dieser Build kann die authentifizierte Cloud-Weiterleitung von cmux nicht starten. Aktualisieren Sie cmux und versuchen Sie es erneut." } }, "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": "Cette version ne peut pas démarrer le transfert Cloud authentifié de cmux. Mettez cmux à jour, puis réessayez." } }, - "es": { + "ar": { "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": "لا يمكن لهذا الإصدار بدء إعادة توجيه Cloud الموثّقة من cmux. حدّث cmux ثم أعد المحاولة." } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "3. このペインに戻ります。承認後、接続は自動的に続行されます。使い終わったらここで切断してください。cmuxの終了やサインアウトでも切断されます。" + "value": "Esta compilación no puede iniciar el reenvío autenticado de Cloud de cmux. Actualiza cmux y vuelve a intentarlo." } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "3. 返回此面板。批准后连接会自动继续。完成后可在此断开连接。退出 cmux 或退出登录也会断开连接。" + "value": "此版本無法啟動 cmux 的已驗證 Cloud 轉送。請更新 cmux 後重試。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "3. 返回此面板。核准後連線會自動繼續。完成後可在此中斷連線。結束 cmux 或登出也會中斷連線。" + "value": "此版本无法启动 cmux 的已验证 Cloud 转发。请更新 cmux 后重试。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "3. 이 패널로 돌아옵니다. 승인 후 연결이 자동으로 계속됩니다. 사용을 마치면 여기에서 연결을 해제하세요. cmux를 종료하거나 로그아웃해도 연결이 해제됩니다." + "value": "이 빌드에서는 cmux 인증 Cloud 전달을 시작할 수 없습니다. cmux를 업데이트한 후 다시 시도하세요." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "3. ارجع إلى هذه اللوحة. يستمر الاتصال تلقائيًا بعد الموافقة. اقطع الاتصال هنا عند الانتهاء. يؤدي إنهاء cmux أو تسجيل الخروج أيضًا إلى قطع الاتصال." + "value": "このビルドでは cmux の認証済み Cloud 転送を開始できません。cmux を更新して再試行してください。" } }, "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": "Ova verzija ne može pokrenuti autentificirano Cloud prosljeđivanje cmux-a. Ažurirajte cmux, zatim pokušajte ponovo." } }, "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": "Denne build kan ikke starte cmux’ godkendte Cloud-videresendelse. Opdater cmux, og prøv igen." } }, "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": "Questa build non può avviare l’inoltro Cloud autenticato di cmux. Aggiorna cmux, quindi riprova." } }, "km": { "stringUnit": { "state": "translated", - "value": "3. ត្រឡប់ទៅផ្ទាំងនេះ។ ការភ្ជាប់នឹងបន្តដោយស្វ័យប្រវត្តិបន្ទាប់ពីអនុម័ត។ ផ្តាច់នៅទីនេះពេលបញ្ចប់។ ការបិទ cmux ឬចាកចេញក៏ផ្តាច់ការភ្ជាប់ដែរ។" + "value": "កំណែនេះមិនអាចចាប់ផ្តើមការបញ្ជូនបន្ត Cloud ដែលបានផ្ទៀងផ្ទាត់របស់ cmux បានទេ។ ធ្វើបច្ចុប្បន្នភាព cmux រួចព្យាយាមម្តងទៀត។" } }, "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": "Denne versjonen kan ikke starte cmux sin autentiserte Cloud-videresending. Oppdater cmux, og prøv igjen." } }, "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": "Ta kompilacja nie może uruchomić uwierzytelnionego przekierowania Cloud w cmux. Zaktualizuj cmux i spróbuj ponownie." } }, "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": "Esta versão não consegue iniciar o encaminhamento Cloud autenticado do cmux. Atualize o cmux e tente novamente." } }, "ru": { "stringUnit": { "state": "translated", - "value": "3. Вернитесь в эту панель. После подтверждения соединение продолжится автоматически. Завершив работу, отключите его здесь. Выход из cmux или системы также отключает соединение." + "value": "Эта сборка не может запустить аутентифицированное перенаправление Cloud в cmux. Обновите cmux и повторите попытку." } }, "th": { "stringUnit": { "state": "translated", - "value": "3. กลับมาที่แผงนี้ การเชื่อมต่อจะดำเนินต่อโดยอัตโนมัติหลังการอนุมัติ ตัดการเชื่อมต่อที่นี่เมื่อเสร็จแล้ว การออกจาก cmux หรือออกจากระบบจะตัดการเชื่อมต่อด้วย" + "value": "บิลด์นี้ไม่สามารถเริ่มการส่งต่อ Cloud ที่ยืนยันตัวตนแล้วของ cmux ได้ อัปเดต cmux แล้วลองอีกครั้ง" } }, "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": "Bu derleme cmux’un kimliği doğrulanmış Cloud yönlendirmesini başlatamıyor. cmux’u güncelleyin, ardından yeniden deneyin." } }, "uk": { "stringUnit": { "state": "translated", - "value": "3. Поверніться до цієї панелі. Після схвалення з’єднання продовжиться автоматично. Завершивши роботу, від’єднайте його тут. Вихід із cmux або системи також від’єднає з’єднання." + "value": "Ця збірка не може запустити автентифіковане перенаправлення Cloud у cmux. Оновіть cmux і повторіть спробу." } } } }, - "cloud.vpn.setup.address.title": { + "cloudTree.ports.link.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Private addresses" + "value": "Port discovery could not connect to this machine. Existing cmux ports may still work. Refresh to reconnect; Cloud VPN is not required." } }, "de": { "stringUnit": { "state": "translated", - "value": "Private Adressen" + "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." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Adresses privées" + "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." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Direcciones privadas" + "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。" } }, - "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": "Privatne adrese" + "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." } }, "da": { "stringUnit": { "state": "translated", - "value": "Private adresser" + "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." } }, "it": { "stringUnit": { "state": "translated", - "value": "Indirizzi privati" + "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." } }, "km": { "stringUnit": { "state": "translated", - "value": "អាសយដ្ឋានឯកជន" + "value": "ការស្វែងរកច្រកមិនអាចភ្ជាប់ទៅម៉ាស៊ីននេះបានទេ។ ច្រក cmux ដែលមានស្រាប់អាចនៅតែដំណើរការ។ ផ្ទុកឡើងវិញដើម្បីភ្ជាប់ម្តងទៀត; មិនត្រូវការ Cloud VPN ទេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Private adresser" + "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." } }, "pl": { "stringUnit": { "state": "translated", - "value": "Prywatne adresy" + "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." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Endereços privados" + "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." } }, "ru": { "stringUnit": { "state": "translated", - "value": "Частные адреса" + "value": "Обнаружению портов не удалось подключиться к этой машине. Существующие порты cmux могут по-прежнему работать. Обновите, чтобы переподключиться; Cloud VPN не требуется." } }, "th": { "stringUnit": { "state": "translated", - "value": "ที่อยู่ส่วนตัว" + "value": "การค้นหาพอร์ตไม่สามารถเชื่อมต่อกับเครื่องนี้ได้ พอร์ต cmux ที่มีอยู่อาจยังใช้งานได้ รีเฟรชเพื่อเชื่อมต่อใหม่ ไม่จำเป็นต้องใช้ Cloud VPN" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Özel adresler" + "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." } }, "uk": { "stringUnit": { "state": "translated", - "value": "Приватні адреси" + "value": "Виявленню портів не вдалося підключитися до цієї машини. Наявні порти cmux можуть і далі працювати. Оновіть, щоб підключитися знову; Cloud VPN не потрібен." } } } }, - "cloud.vpn.setup.openSettings": { + "cloudTree.ports.link.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open System Settings" + "value": "Cloud link unavailable" } }, "de": { "stringUnit": { "state": "translated", - "value": "Systemeinstellungen öffnen" + "value": "Cloud-Verbindung nicht verfügbar" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ouvrir Réglages Système" + "value": "Connexion Cloud indisponible" } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Abrir Ajustes del Sistema" + "value": "اتصال Cloud غير متاح" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "システム設定を開く" + "value": "Conexión de Cloud no disponible" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "打开系统设置" + "value": "Cloud 連線無法使用" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "打開系統設定" + "value": "Cloud 连接不可用" } }, "ko": { "stringUnit": { "state": "translated", - "value": "시스템 설정 열기" + "value": "Cloud 연결을 사용할 수 없음" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "فتح إعدادات النظام" + "value": "Cloud 接続を利用できません" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Otvori Postavke sistema" + "value": "Cloud veza nije dostupna" } }, "da": { "stringUnit": { "state": "translated", - "value": "Åbn Systemindstillinger" + "value": "Cloud-forbindelse utilgængelig" } }, "it": { "stringUnit": { "state": "translated", - "value": "Apri Impostazioni di Sistema" + "value": "Collegamento Cloud non disponibile" } }, "km": { "stringUnit": { "state": "translated", - "value": "បើកការកំណត់ប្រព័ន្ធ" + "value": "តំណ Cloud មិនអាចប្រើបាន" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Åpne Systeminnstillinger" + "value": "Cloud-tilkobling utilgjengelig" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Otwórz Ustawienia systemowe" + "value": "Połączenie Cloud niedostępne" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Abrir Ajustes do Sistema" + "value": "Conexão Cloud indisponível" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Открыть системные настройки" + "value": "Связь с Cloud недоступна" } }, "th": { "stringUnit": { "state": "translated", - "value": "เปิดการตั้งค่าระบบ" + "value": "ลิงก์ Cloud ไม่พร้อมใช้งาน" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Sistem Ayarlarını aç" + "value": "Cloud bağlantısı kullanılamıyor" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Відкрити Системні параметри" + "value": "Зв’язок із Cloud недоступний" } } } }, - "settings.app.accentColor.custom": { + "cloudTree.ports.loading.detail": { + "extractionState": "manual", "localizations": { - "ar": { + "en": { "stringUnit": { "state": "translated", - "value": "مخصص" + "value": "Checking services through cmux’s authenticated Cloud link. No system VPN is needed." } }, - "bs": { + "de": { "stringUnit": { "state": "translated", - "value": "Prilagođeno" + "value": "Dienste werden über die authentifizierte Cloud-Verbindung von cmux geprüft. Ein System-VPN ist nicht erforderlich." } }, - "da": { + "fr": { "stringUnit": { "state": "translated", - "value": "Tilpasset" + "value": "Vérification des services via la connexion Cloud authentifiée de cmux. Aucun VPN système n’est nécessaire." } }, - "de": { + "ar": { "stringUnit": { "state": "translated", - "value": "Benutzerdefiniert" + "value": "جارٍ فحص الخدمات عبر اتصال Cloud الموثّق من cmux. لا حاجة إلى VPN النظام." } }, - "en": { + "es": { "stringUnit": { "state": "translated", - "value": "Custom" + "value": "Comprobando servicios mediante la conexión autenticada de Cloud de cmux. No se necesita una VPN del sistema." } }, - "es": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Personalizado" + "value": "正在透過 cmux 的已驗證 Cloud 連線檢查服務。不需要系統 VPN。" } }, - "fr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Personnalisée" + "value": "正在通过 cmux 的已验证 Cloud 连接检查服务。无需系统 VPN。" } }, - "it": { + "ko": { "stringUnit": { "state": "translated", - "value": "Personalizzato" + "value": "cmux의 인증된 Cloud 연결로 서비스를 확인하고 있습니다. 시스템 VPN은 필요하지 않습니다." } }, "ja": { "stringUnit": { "state": "translated", - "value": "カスタム" + "value": "cmux の認証済み Cloud 接続でサービスを確認しています。システム VPN は不要です。" } }, - "ko": { + "bs": { "stringUnit": { "state": "translated", - "value": "사용자 지정" + "value": "Provjera servisa putem autentificirane Cloud veze cmux-a. Sistemski VPN nije potreban." } }, - "nb": { + "da": { "stringUnit": { "state": "translated", - "value": "Egendefinert" + "value": "Kontrollerer tjenester via cmux’ godkendte Cloud-forbindelse. Der kræves ingen system-VPN." } }, - "pl": { + "it": { "stringUnit": { "state": "translated", - "value": "Niestandardowy" + "value": "Controllo dei servizi tramite il collegamento Cloud autenticato di cmux. Non serve una VPN di sistema." } }, - "pt-BR": { + "km": { "stringUnit": { "state": "translated", - "value": "Personalizado" + "value": "កំពុងពិនិត្យសេវាកម្មតាមរយៈតំណ Cloud ដែលបានផ្ទៀងផ្ទាត់របស់ cmux។ មិនត្រូវការ VPN របស់ប្រព័ន្ធទេ។" } }, - "ru": { + "nb": { "stringUnit": { "state": "translated", - "value": "Пользовательский" + "value": "Sjekker tjenester via cmux sin autentiserte Cloud-tilkobling. Ingen system-VPN er nødvendig." } }, - "th": { + "pl": { "stringUnit": { "state": "translated", - "value": "กำหนดเอง" + "value": "Sprawdzanie usług przez uwierzytelnione połączenie Cloud w cmux. Systemowa sieć VPN nie jest potrzebna." } }, - "tr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Özel" + "value": "Verificando serviços pela conexão Cloud autenticada do cmux. Nenhuma VPN do sistema é necessária." } }, - "uk": { + "ru": { "stringUnit": { "state": "translated", - "value": "Власний" + "value": "Проверка служб через аутентифицированную связь cmux с Cloud. Системный VPN не нужен." } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "自定义" + "value": "กำลังตรวจสอบบริการผ่านลิงก์ Cloud ที่ยืนยันตัวตนแล้วของ cmux ไม่ต้องใช้ VPN ของระบบ" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "自訂" + "value": "Hizmetler cmux’un kimliği doğrulanmış Cloud bağlantısı üzerinden denetleniyor. Sistem VPN’i gerekmez." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Перевірка служб через автентифікований зв’язок cmux із Cloud. Системний VPN не потрібен." } } } }, - "terminal.clipboardReadConfirmation.deny": { + "cloudTree.ports.loopback.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Deny" + "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." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "رفض" + "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." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Ablehnen" + "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." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Denegar" + "value": "تُفتح هذه الخدمات داخل cmux دون Cloud VPN. وهي تستمع على عنوان الواجهة المحلية للجهاز، لذا لا تستطيع التطبيقات الأخرى الوصول إليها عبر عنوان IP الخاص به حتى مع اتصال VPN." } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "Refuser" + "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." } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "拒否" + "value": "這些服務可在 cmux 中開啟,不需要 Cloud VPN。它們在機器的迴路位址上監聽,因此即使已連線 VPN,其他 App 也無法透過其私人 IP 存取。" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "거부" + "value": "这些服务可在 cmux 中打开,无需 Cloud VPN。它们监听机器的回环地址,因此即使已连接 VPN,其他应用也无法通过其专用 IP 访问。" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "拒绝" + "value": "이 서비스는 Cloud VPN 없이 cmux에서 열립니다. 머신의 루프백 주소에서 수신 대기하므로 VPN에 연결해도 다른 앱은 비공개 IP로 접근할 수 없습니다." } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "拒絕" + "value": "これらのサービスは Cloud VPN なしで cmux から開けます。マシンのループバックアドレスで待ち受けるため、VPN 接続中でも他のアプリからプライベート IP 経由ではアクセスできません。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Odbij" + "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": "Afvis" + "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": "Nega" + "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": "Avslå" + "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": "Odmów" + "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": "Negar" + "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": "Reddet" + "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." } } } }, - "terminal.clipboardReadConfirmation.message": { + "cloudTree.ports.loopback.title": { "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": "Loopback services available" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "يريد برنامج في هذه الطرفية قراءة الحافظة. اسمح بذلك فقط إذا كنت تثق بالبرنامج." + "value": "Loopback-Dienste verfügbar" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Ein Programm in diesem Terminal möchte deine Zwischenablage lesen. Erlaube es nur, wenn du dem Programm vertraust." + "value": "Services locaux disponibles" } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Un programa de esta terminal quiere leer tu portapapeles. Permítelo solo si confías en el programa." + "value": "خدمات الواجهة المحلية متاحة" } }, - "fr": { + "es": { "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": "Servicios de bucle local disponibles" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "このターミナルのプログラムがクリップボードを読み取ろうとしています。信頼できるプログラムの場合にのみ許可してください。" + "value": "可使用迴路服務" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "이 터미널의 프로그램이 클립보드를 읽으려고 합니다. 프로그램을 신뢰할 수 있을 때만 허용하세요." + "value": "回环服务可用" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "此终端中的程序想要读取你的剪贴板。只有在你信任该程序时才允许。" + "value": "루프백 서비스 사용 가능" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "此終端機中的程式想要讀取你的剪貼簿。只有在你信任該程式時才允許。" + "value": "ループバックのサービスを利用できます" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Program u ovom terminalu želi čitati vaš međuspremnik. Dozvolite samo ako vjerujete programu." + "value": "Dostupni loopback servisi" } }, "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": "Loopback-tjenester tilgængelige" } }, "it": { "stringUnit": { "state": "translated", - "value": "Un programma in questo terminale vuole leggere gli appunti. Consentilo solo se ti fidi del programma." + "value": "Servizi di loopback disponibili" } }, "km": { "stringUnit": { "state": "translated", - "value": "កម្មវិធីក្នុងស្ថានីយនេះចង់អានក្ដារតម្បៀតខ្ទាស់របស់អ្នក។ អនុញ្ញាតតែបើអ្នកទុកចិត្តកម្មវិធីនេះ។" + "value": "មានសេវាកម្ម loopback" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Et program i denne terminalen vil lese utklippstavlen din. Tillat det bare hvis du stoler på programmet." + "value": "Loopback-tjenester tilgjengelige" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Program w tym terminalu chce odczytać schowek. Zezwól tylko, jeśli ufasz temu programowi." + "value": "Dostępne usługi pętli zwrotnej" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Um programa neste terminal quer ler sua área de transferência. Permita somente se você confiar no programa." + "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": "Bu terminaldeki bir program panonuzu okumak istiyor. Yalnızca programa güveniyorsanız izin verin." + "value": "Geri döngü hizmetleri kullanılabilir" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Програма в цьому терміналі хоче прочитати ваш буфер обміну. Дозволяйте, лише якщо довіряєте програмі." + "value": "Доступні loopback-служби" } } } }, - "terminal.clipboardReadConfirmation.title": { + "cloudTree.ports.notRequested.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Allow Clipboard Access?" + "value": "Ports not checked yet" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "السماح بالوصول إلى الحافظة؟" + "value": "Ports noch nicht geprüft" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Zugriff auf die Zwischenablage erlauben?" + "value": "Ports pas encore vérifiés" } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "¿Permitir el acceso al portapapeles?" + "value": "لم يتم فحص المنافذ بعد" } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "Autoriser l’accès au presse-papiers ?" + "value": "Puertos aún sin comprobar" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "クリップボードへのアクセスを許可しますか?" + "value": "尚未檢查連接埠" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "클립보드 접근을 허용하시겠습니까?" + "value": "尚未检查端口" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "允许访问剪贴板?" + "value": "아직 포트를 확인하지 않음" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "允許存取剪貼簿?" + "value": "ポートは未確認です" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Dozvoliti pristup međuspremniku?" + "value": "Portovi još nisu provjereni" } }, "da": { "stringUnit": { "state": "translated", - "value": "Tillad adgang til udklipsholderen?" + "value": "Porte er ikke kontrolleret endnu" } }, "it": { "stringUnit": { "state": "translated", - "value": "Consentire l'accesso agli appunti?" + "value": "Porte non ancora controllate" } }, "km": { "stringUnit": { "state": "translated", - "value": "អនុញ្ញាតឱ្យចូលប្រើក្ដារតម្បៀតខ្ទាស់?" + "value": "មិនទាន់បានពិនិត្យច្រកនៅឡើយ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Tillat tilgang til utklippstavlen?" + "value": "Porter er ikke sjekket ennå" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Zezwolić na dostęp do schowka?" + "value": "Porty nie zostały jeszcze sprawdzone" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Permitir acesso à área de transferência?" + "value": "Portas ainda não verificadas" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Разрешить доступ к буферу обмена?" + "value": "Порты ещё не проверены" } }, "th": { "stringUnit": { "state": "translated", - "value": "อนุญาตให้เข้าถึงคลิปบอร์ดหรือไม่?" + "value": "ยังไม่ได้ตรวจสอบพอร์ต" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Panoya erişime izin verilsin mi?" + "value": "Portlar henüz denetlenmedi" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Дозволити доступ до буфера обміну?" + "value": "Порти ще не перевірено" } } } }, - "notification.remoteRelay.hostFallback": { + "cloudTree.ports.privateAddress": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Remote host" + "value": "Private address unavailable" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "مضيف بعيد" + "value": "Private Adresse nicht verfügbar" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Remote-Host" + "value": "Adresse privée indisponible" } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "Host remoto" + "value": "العنوان الخاص غير متاح" } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "Hôte distant" + "value": "Dirección privada no disponible" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "リモートホスト" + "value": "私人位址無法使用" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "원격 호스트" + "value": "专用地址不可用" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "远程主机" + "value": "비공개 주소를 사용할 수 없음" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "遠端主機" + "value": "プライベートアドレスを利用できません" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Udaljeni host" + "value": "Privatna adresa nije dostupna" } }, "da": { "stringUnit": { "state": "translated", - "value": "Fjernvært" + "value": "Privat adresse utilgængelig" } }, "it": { "stringUnit": { "state": "translated", - "value": "Host remoto" + "value": "Indirizzo privato non disponibile" } }, "km": { "stringUnit": { "state": "translated", - "value": "ម៉ាស៊ីនពីចម្ងាយ" + "value": "អាសយដ្ឋានឯកជនមិនអាចប្រើបាន" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Ekstern vert" + "value": "Privat adresse utilgjengelig" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Zdalny host" + "value": "Adres prywatny niedostępny" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Host remoto" + "value": "Endereço privado indisponível" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Удалённый хост" + "value": "Частный адрес недоступен" } }, "th": { "stringUnit": { "state": "translated", - "value": "โฮสต์ระยะไกล" + "value": "ไม่มีที่อยู่ส่วนตัว" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Uzak ana bilgisayar" + "value": "Özel adres kullanılamıyor" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Віддалений хост" + "value": "Приватна адреса недоступна" } } } }, - "notification.remoteRelay.title": { + "cloudTree.ports.privateAddress.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "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." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "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." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "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." } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "يحتاج مسار cmux الموثّق إلى العنوان الخاص لهذا الجهاز. حدّث لاسترجاعه. تشغيل Cloud VPN لا يعيّن عنوانًا مفقودًا." } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "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." } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "cmux 的已驗證路徑需要此機器的私人位址。請重新整理以取得位址。開啟 Cloud VPN 不會指派缺少的位址。" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "cmux 的已验证路由需要此机器的专用地址。请刷新以获取地址。开启 Cloud VPN 不会分配缺失的地址。" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "cmux의 인증된 경로에는 이 머신의 비공개 주소가 필요합니다. 새로 고쳐 주소를 가져오세요. Cloud VPN을 켜도 누락된 주소가 할당되지는 않습니다." } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "cmux の認証済み経路にはこのマシンのプライベートアドレスが必要です。更新して取得してください。Cloud VPN を有効にしても不足しているアドレスは割り当てられません。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "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." } }, "da": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "cmux’ godkendte rute kræver denne maskines private adresse. Opdater for at hente den. Aktivering af Cloud VPN tildeler ikke en manglende adresse." } }, "it": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "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." } }, "km": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "ផ្លូវដែលបានផ្ទៀងផ្ទាត់របស់ cmux ត្រូវការអាសយដ្ឋានឯកជនរបស់ម៉ាស៊ីននេះ។ ផ្ទុកឡើងវិញដើម្បីទាញយកវា។ ការបើក Cloud VPN មិនផ្តល់អាសយដ្ឋានដែលបាត់ទេ។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "cmux sin autentiserte rute trenger denne maskinens private adresse. Oppdater for å hente den. Å slå på Cloud VPN tildeler ikke en manglende adresse." } }, "pl": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Uwierzytelniona trasa cmux wymaga prywatnego adresu tej maszyny. Odśwież, aby go pobrać. Włączenie Cloud VPN nie przypisuje brakującego adresu." } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "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." } }, "ru": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "Аутентифицированному маршруту cmux нужен частный адрес этой машины. Обновите, чтобы получить его. Включение Cloud VPN не назначает отсутствующий адрес." } }, "th": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "value": "เส้นทางที่ยืนยันตัวตนแล้วของ cmux ต้องใช้ที่อยู่ส่วนตัวของเครื่องนี้ รีเฟรชเพื่อดึงข้อมูล การเปิด Cloud VPN ไม่ได้กำหนดที่อยู่ที่ขาดหายไป" } }, "tr": { "stringUnit": { "state": "translated", - "value": "%1$@: %2$@" + "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": "%1$@: %2$@" + "value": "Автентифікованому маршруту cmux потрібна приватна адреса цієї машини. Оновіть, щоб отримати її. Увімкнення Cloud VPN не призначає відсутню адресу." } } } }, - "devices.incoming.confirm.enable": { + "cloudTree.ports.routeNote": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Make Discoverable" + "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." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "جعل الجهاز قابلاً للاكتشاف" + "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." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Auffindbar machen" + "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": "Hacer detectable" + "value": "يعيد cmux توجيه المنافذ دون Cloud VPN. تحتاج متصفحات الويب وتطبيقات Mac الأخرى إلى Cloud VPN للوصول إلى الخدمات المرتبطة بالعنوان الخاص للجهاز." } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "Rendre détectable" + "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." } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "検出可能にする" + "value": "cmux 可轉送連接埠,不需要 Cloud VPN。網頁瀏覽器和其他 Mac App 需要 Cloud VPN,才能存取繫結至機器私人位址的服務。" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "검색 허용" + "value": "cmux 可转发端口,无需 Cloud VPN。网页浏览器和其他 Mac 应用需要 Cloud VPN,才能访问绑定到机器专用地址的服务。" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "允许发现" + "value": "cmux는 Cloud VPN 없이 포트를 전달합니다. 웹 브라우저 및 다른 Mac 앱이 머신의 비공개 주소에 바인딩된 서비스에 접근하려면 Cloud VPN이 필요합니다." } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "允許探索" + "value": "cmux は Cloud VPN なしでポートを転送します。Web ブラウザやその他の Mac アプリからマシンのプライベートアドレスにバインドされたサービスにアクセスするには Cloud VPN が必要です。" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Učini dostupnim" + "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": "Gør synlig" + "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": "Rendi individuabile" + "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": "ធ្វើឲ្យអាចរកឃើញ" + "value": "cmux បញ្ជូនបន្តច្រកដោយមិនត្រូវការ Cloud VPN។ កម្មវិធីរុករកបណ្តាញ និងកម្មវិធី Mac ផ្សេងទៀតត្រូវការ Cloud VPN ដើម្បីចូលដល់សេវាកម្មដែលចងទៅអាសយដ្ឋានឯកជនរបស់ម៉ាស៊ីន។" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Gjør denne Mac-en synlig" + "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": "Włącz wykrywanie" + "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": "Tornar detectável" + "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": "Сделать доступным для обнаружения" + "value": "cmux перенаправляет порты без Cloud VPN. Веб-браузерам и другим приложениям Mac нужен Cloud VPN, чтобы обращаться к службам, привязанным к частному адресу машины." } }, "th": { "stringUnit": { "state": "translated", - "value": "ทำให้ Mac เครื่องนี้ค้นพบได้" + "value": "cmux ส่งต่อพอร์ตได้โดยไม่ต้องใช้ Cloud VPN เว็บเบราว์เซอร์และแอป Mac อื่นๆ ต้องใช้ Cloud VPN เพื่อเข้าถึงบริการที่ผูกกับที่อยู่ส่วนตัวของเครื่อง" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Keşfedilebilir yap" + "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": "Зробити цей Mac видимим" + "value": "cmux перенаправляє порти без Cloud VPN. Веббраузерам та іншим застосункам Mac потрібен Cloud VPN, щоб звертатися до служб, прив’язаних до приватної адреси машини." } } } }, - "devices.incoming.confirm.message": { + "cloudTree.ports.setupVPN": { "extractionState": "manual", "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?" + "value": "Set Up VPN…" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "قد تكتشف أجهزة Mac الأخرى التي سجّلت الدخول إلى حساب cmux هذا الـ Mac وتتصل بمساحات العمل فيه. هل تريد المتابعة؟" + "value": "VPN einrichten…" } }, - "de": { + "fr": { "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": "Configurer le VPN…" } }, - "es": { + "ar": { "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": "إعداد VPN…" } }, - "fr": { + "es": { "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": "Configurar VPN…" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "cmuxアカウントにサインインしているほかのMacから、このMacが検出され、ワークスペースに接続されることがあります。続けますか?" + "value": "設定 VPN…" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux 계정에 로그인한 다른 Mac에서 이 Mac을 검색하고 작업 공간에 연결할 수 있습니다. 계속하시겠습니까?" + "value": "设置 VPN…" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "登录你 cmux 帐户的其他 Mac 可能会发现此 Mac 并连接到其工作区。要继续吗?" + "value": "VPN 설정…" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "登入您 cmux 帳戶的其他 Mac 可能會探索此 Mac 並連線至其工作區。要繼續嗎?" + "value": "VPN を設定…" } }, "bs": { "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": "Postavi VPN…" } }, "da": { "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": "Konfigurer VPN…" } }, "it": { "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": "Configura VPN…" } }, "km": { "stringUnit": { "state": "translated", - "value": "Mac ផ្សេងទៀតដែលបានចូលគណនី cmux របស់អ្នក អាចរកឃើញ Mac នេះ និងភ្ជាប់ទៅកាន់ workspace របស់វា។ តើអ្នកចង់បន្តឬទេ?" + "value": "រៀបចំ VPN…" } }, "nb": { "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": "Konfigurer VPN…" } }, "pl": { "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": "Skonfiguruj VPN…" } }, "pt-BR": { "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": "Configurar VPN…" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Другие Mac, вошедшие в вашу учётную запись cmux, могут обнаружить этот Mac и подключиться к его рабочим пространствам. Продолжить?" + "value": "Настроить VPN…" } }, "th": { "stringUnit": { "state": "translated", - "value": "Mac เครื่องอื่นที่ลงชื่อเข้าใช้บัญชี cmux ของคุณอาจค้นพบ Mac เครื่องนี้และเชื่อมต่อกับพื้นที่ทำงานของเครื่องนี้ คุณต้องการดำเนินการต่อหรือไม่" + "value": "ตั้งค่า VPN…" } }, "tr": { "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": "VPN’i Kur…" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Інші Mac, на яких виконано вхід у ваш обліковий запис cmux, можуть виявити цей Mac і підключитися до його робочих просторів. Продовжити?" + "value": "Налаштувати VPN…" } } } }, - "devices.incoming.confirm.title": { + "cloudTree.ports.stale": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Make this Mac discoverable?" + "value": "Port list may be out of date" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "هل تريد جعل جهاز Mac هذا قابلاً للاكتشاف؟" + "value": "Portliste möglicherweise veraltet" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Diesen Mac auffindbar machen?" + "value": "La liste des ports peut être obsolète" } }, - "es": { + "ar": { "stringUnit": { "state": "translated", - "value": "¿Hacer que este Mac sea detectable?" + "value": "قد تكون قائمة المنافذ قديمة" } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "Rendre ce Mac détectable ?" + "value": "La lista de puertos puede estar desactualizada" } }, - "ja": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "このMacを検出可能にしますか?" + "value": "連接埠清單可能已過時" } }, - "ko": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "이 Mac을 검색 가능하게 할까요?" + "value": "端口列表可能已过期" } }, - "zh-Hans": { + "ko": { "stringUnit": { "state": "translated", - "value": "允许发现此 Mac 吗?" + "value": "포트 목록이 오래되었을 수 있음" } }, - "zh-Hant": { + "ja": { "stringUnit": { "state": "translated", - "value": "要允許探索此 Mac 嗎?" + "value": "ポートリストが古い可能性があります" } }, "bs": { "stringUnit": { "state": "translated", - "value": "Učiniti ovaj Mac dostupnim?" + "value": "Lista portova je možda zastarjela" } }, "da": { "stringUnit": { "state": "translated", - "value": "Gør denne Mac synlig?" + "value": "Portlisten er muligvis forældet" } }, "it": { "stringUnit": { "state": "translated", - "value": "Rendere individuabile questo Mac?" + "value": "L’elenco delle porte potrebbe non essere aggiornato" } }, "km": { "stringUnit": { "state": "translated", - "value": "ធ្វើឲ្យ Mac នេះអាចរកឃើញ?" + "value": "បញ្ជីច្រកអាចហួសសម័យ" } }, "nb": { "stringUnit": { "state": "translated", - "value": "Gjøre denne Mac-en synlig?" + "value": "Portlisten kan være utdatert" } }, "pl": { "stringUnit": { "state": "translated", - "value": "Uwidocznić tego Maca?" + "value": "Lista portów może być nieaktualna" } }, "pt-BR": { "stringUnit": { "state": "translated", - "value": "Tornar este Mac detectável?" + "value": "A lista de portas pode estar desatualizada" } }, "ru": { "stringUnit": { "state": "translated", - "value": "Сделать этот Mac доступным для обнаружения?" + "value": "Список портов может быть устаревшим" } }, "th": { "stringUnit": { "state": "translated", - "value": "ทำให้ Mac เครื่องนี้ค้นพบได้หรือไม่" + "value": "รายการพอร์ตอาจไม่เป็นปัจจุบัน" } }, "tr": { "stringUnit": { "state": "translated", - "value": "Bu Mac keşfedilebilir yapılsın mı?" + "value": "Port listesi güncel olmayabilir" } }, "uk": { "stringUnit": { "state": "translated", - "value": "Зробити цей Mac доступним для виявлення?" + "value": "Список портів може бути застарілим" } } } }, - "cloudTree.device.status.connecting": { + "cloudTree.ports.stale.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Connecting…" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "جارٍ الاتصال…" + "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": "Wird verbunden…" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Conectando…" + "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": "Connexion…" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "接続中…" + "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." } }, - "ko": { + "ar": { "stringUnit": { "state": "translated", - "value": "연결 중…" + "value": "تعذر تحديث آخر فحص. ربما تغيرت الخدمات المدرجة؛ حدّث للفحص مجددًا. لا تحتاج إعادة توجيه cmux إلى Cloud VPN." } }, - "zh-Hans": { + "es": { "stringUnit": { "state": "translated", - "value": "正在连接…" + "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-Hant": { "stringUnit": { "state": "translated", - "value": "正在連線…" - } - } - } - }, - "cloud.teamPicker.createSheet.create": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Create" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "إنشاء" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Erstellen" + "value": "無法重新整理上次掃描結果。列出的服務可能已變更;請重新整理以再次檢查。cmux 轉送不需要 Cloud VPN。" } }, - "es": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Crear" + "value": "无法刷新上次扫描结果。列出的服务可能已更改;请刷新以再次检查。cmux 转发无需 Cloud VPN。" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Créer" + "value": "마지막 검색 결과를 새로 고치지 못했습니다. 나열된 서비스가 변경되었을 수 있으니 새로 고쳐 확인하세요. cmux 전달에는 Cloud VPN이 필요하지 않습니다." } }, "ja": { "stringUnit": { "state": "translated", - "value": "作成" + "value": "前回のスキャンを更新できませんでした。表示されたサービスが変わっている可能性があります。更新して再確認してください。cmux の転送に Cloud VPN は不要です。" } }, - "ko": { + "bs": { "stringUnit": { "state": "translated", - "value": "만들기" + "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." } }, - "zh-Hans": { + "da": { "stringUnit": { "state": "translated", - "value": "创建" + "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." } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "建立" - } - } - } - }, - "cloud.teamPicker.createSheet.title": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "Create Team" + "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." } }, - "ar": { + "km": { "stringUnit": { "state": "translated", - "value": "إنشاء فريق" + "value": "មិនអាចផ្ទុកការស្កេនចុងក្រោយឡើងវិញបានទេ។ សេវាកម្មដែលបានរាយអាចបានផ្លាស់ប្តូរ; ផ្ទុកឡើងវិញដើម្បីពិនិត្យម្តងទៀត។ ការបញ្ជូនបន្តរបស់ cmux មិនត្រូវការ Cloud VPN ទេ។" } }, - "de": { + "nb": { "stringUnit": { "state": "translated", - "value": "Team erstellen" + "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." } }, - "es": { + "pl": { "stringUnit": { "state": "translated", - "value": "Crear equipo" + "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." } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Créer une équipe" + "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." } }, - "ja": { + "ru": { "stringUnit": { "state": "translated", - "value": "チームを作成" + "value": "Не удалось обновить последнее сканирование. Перечисленные службы могли измениться; обновите, чтобы проверить снова. Перенаправлению cmux Cloud VPN не нужен." } }, - "ko": { + "th": { "stringUnit": { "state": "translated", - "value": "팀 만들기" + "value": "ไม่สามารถรีเฟรชการสแกนครั้งล่าสุดได้ บริการที่แสดงอาจเปลี่ยนไปแล้ว รีเฟรชเพื่อตรวจสอบอีกครั้ง การส่งต่อของ cmux ไม่ต้องใช้ Cloud VPN" } }, - "zh-Hans": { + "tr": { "stringUnit": { "state": "translated", - "value": "创建团队" + "value": "Son tarama yenilenemedi. Listelenen hizmetler değişmiş olabilir; yeniden denetlemek için yenileyin. cmux yönlendirmesi Cloud VPN gerektirmez." } }, - "zh-Hant": { + "uk": { "stringUnit": { "state": "translated", - "value": "建立團隊" + "value": "Не вдалося оновити останнє сканування. Перелічені служби могли змінитися; оновіть, щоб перевірити знову. Перенаправлення cmux не потребує Cloud VPN." } } } }, - "cloud.teamPicker.createTeam": { + "cloudTree.ports.unavailable.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Create Team…" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "إنشاء فريق…" + "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": "Team erstellen…" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Crear equipo…" + "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": "Créer une équipe…" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "チームを作成…" + "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." } }, - "ko": { + "ar": { "stringUnit": { "state": "translated", - "value": "팀 만들기…" + "value": "فشل فحص المنافذ؛ هذا لا يعني عدم وجود خدمة تستمع. قد تظل منافذ cmux الحالية تعمل. حدّث للمحاولة مجددًا؛ Cloud VPN غير مطلوب." } }, - "zh-Hans": { + "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-Hant": { "stringUnit": { "state": "translated", - "value": "建立團隊…" - } - } - } - }, - "cloud.teamPicker.switching": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Switching teams…" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "جارٍ تبديل الفريق…" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Team wird gewechselt…" + "value": "連接埠掃描失敗;這不代表沒有服務正在監聽。現有 cmux 連接埠可能仍可使用。請重新整理以重試;不需要 Cloud VPN。" } }, - "es": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Cambiando de equipo…" + "value": "端口扫描失败;这并不代表没有服务正在监听。现有 cmux 端口可能仍可使用。请刷新以重试;无需 Cloud VPN。" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Changement d’équipe…" + "value": "포트 검색이 실패했지만 수신 대기 서비스가 없다는 뜻은 아닙니다. 기존 cmux 포트는 계속 작동할 수 있습니다. 새로 고쳐 다시 시도하세요. Cloud VPN은 필요하지 않습니다." } }, "ja": { "stringUnit": { "state": "translated", - "value": "チームを切り替え中…" + "value": "ポートスキャンが失敗しましたが、サービスが待ち受けていないとは限りません。既存の cmux ポートは引き続き動作する可能性があります。更新して再試行してください。Cloud VPN は不要です。" } }, - "ko": { + "bs": { "stringUnit": { "state": "translated", - "value": "팀 전환 중…" + "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." } }, - "zh-Hans": { + "da": { "stringUnit": { "state": "translated", - "value": "正在切换团队…" + "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." } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "正在切換團隊…" - } - } - } - }, - "cloud.teamPicker.creating": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "Creating team…" + "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." } }, - "ar": { + "km": { "stringUnit": { "state": "translated", - "value": "جارٍ إنشاء الفريق…" + "value": "ការស្កេនច្រកបានបរាជ័យ; នេះមិនមានន័យថាគ្មានសេវាកម្មណាកំពុងស្តាប់ទេ។ ច្រក cmux ដែលមានស្រាប់អាចនៅតែដំណើរការ។ ផ្ទុកឡើងវិញដើម្បីព្យាយាមម្តងទៀត; មិនត្រូវការ Cloud VPN ទេ។" } }, - "de": { + "nb": { "stringUnit": { "state": "translated", - "value": "Team wird erstellt…" + "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." } }, - "es": { + "pl": { "stringUnit": { "state": "translated", - "value": "Creando equipo…" + "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." } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Création de l’équipe…" + "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." } }, - "ja": { + "ru": { "stringUnit": { "state": "translated", - "value": "チームを作成中…" + "value": "Сканирование портов не удалось; это не значит, что ни одна служба не прослушивает порты. Существующие порты cmux могут по-прежнему работать. Обновите, чтобы повторить; Cloud VPN не требуется." } }, - "ko": { + "th": { "stringUnit": { "state": "translated", - "value": "팀 만드는 중…" + "value": "การสแกนพอร์ตล้มเหลว ไม่ได้หมายความว่าไม่มีบริการที่กำลังรับฟัง พอร์ต cmux ที่มีอยู่อาจยังใช้งานได้ รีเฟรชเพื่อลองอีกครั้ง ไม่จำเป็นต้องใช้ Cloud VPN" } }, - "zh-Hans": { + "tr": { "stringUnit": { "state": "translated", - "value": "正在创建团队…" + "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." } }, - "zh-Hant": { + "uk": { "stringUnit": { "state": "translated", - "value": "正在建立團隊…" + "value": "Сканування портів не вдалося; це не означає, що жодна служба не прослуховує. Наявні порти cmux можуть і далі працювати. Оновіть, щоб повторити; Cloud VPN не потрібен." } } } }, - "socket.authTeam.busy": { + "cloudTree.ports.unsupported": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Another team change is in progress. Try again when it finishes." + "value": "Ports are not supported by this provider." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "هناك تغيير آخر في الفريق قيد التنفيذ. حاول مرة أخرى عند انتهائه." + "value": "Ports werden von diesem Anbieter nicht unterstützt." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Eine andere Teamänderung läuft noch. Versuche es erneut, wenn sie abgeschlossen ist." + "value": "Les ports ne sont pas pris en charge par ce fournisseur." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "لا يدعم هذا الموفر المنافذ." } }, "es": { "stringUnit": { "state": "translated", - "value": "Hay otro cambio de equipo en curso. Inténtalo de nuevo cuando termine." + "value": "Este proveedor no admite puertos." } }, - "fr": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Une autre modification d’équipe est en cours. Réessayez une fois terminée." + "value": "此提供者不支援連接埠。" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "別のチーム変更を処理中です。完了してからもう一度お試しください。" + "value": "此提供商不支持端口。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "다른 팀 변경이 진행 중입니다. 완료된 후 다시 시도하세요." + "value": "이 제공자는 포트를 지원하지 않습니다." } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "另一项团队更改正在进行中,请在完成后重试。" + "value": "このプロバイダーはポートをサポートしていません。" } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "另一項團隊變更正在進行中,請在完成後再試一次。" + "value": "Ovaj pružalac ne podržava portove." } - } - } - }, - "cloud.teamPicker.createSheet.message": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "The new team becomes your active team." + "value": "Porte understøttes ikke af denne udbyder." } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "يصبح الفريق الجديد فريقك النشط." + "value": "Le porte non sono supportate da questo provider." } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "Das neue Team wird Ihr aktives Team." + "value": "អ្នកផ្តល់សេវានេះមិនគាំទ្រច្រកទេ។" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "El nuevo equipo pasa a ser su equipo activo." + "value": "Porter støttes ikke av denne leverandøren." } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "La nouvelle équipe devient votre équipe active." + "value": "Ten dostawca nie obsługuje portów." } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "新しいチームがアクティブなチームになります。" + "value": "Este provedor não oferece suporte a portas." } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "새 팀이 활성 팀이 됩니다." + "value": "Этот провайдер не поддерживает порты." } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "新团队将成为你的当前团队。" + "value": "ผู้ให้บริการนี้ไม่รองรับพอร์ต" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "新團隊會成為你使用中的團隊。" + "value": "Bu sağlayıcı portları desteklemiyor." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Цей постачальник не підтримує порти." } } } }, - "shortcut.diffViewerNextHunk.label": { + "cloudTree.ports.unsupported.detail": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Diff Viewer: Next Hunk" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "差分ビューア: 次のハンク" - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "差异查看器:下一个块" + "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": "Diff-Viewer: Nächster Hunk" + "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": "Visionneuse de diff : Bloc suivant" + "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." } }, "ar": { "stringUnit": { "state": "translated", - "value": "عارض الفروق: المقطع التالي" + "value": "لا يدعم هذا الموفر مسار منافذ داخل التطبيق. افتح صدفة للوصول إلى الخدمة داخل الجهاز. لا يضيف Cloud VPN دعمًا للموفر." } }, "es": { "stringUnit": { "state": "translated", - "value": "Visor de diff: Siguiente bloque" + "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-Hant": { "stringUnit": { "state": "translated", - "value": "差異檢視器:下一個區塊" - } - }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "비교 뷰어: 다음 헝크" - } - } - } - }, - "shortcut.diffViewerPreviousHunk.label": { - "extractionState": "manual", - "localizations": { - "en": { - "stringUnit": { - "state": "translated", - "value": "Diff Viewer: Previous Hunk" - } - }, - "ja": { - "stringUnit": { - "state": "translated", - "value": "差分ビューア: 前のハンク" + "value": "此提供者不支援應用程式內連接埠路徑。請開啟 Shell 以在機器內存取服務。Cloud VPN 不會新增提供者支援。" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "差异查看器:上一个块" - } - }, - "de": { - "stringUnit": { - "state": "translated", - "value": "Diff-Viewer: Vorheriger Hunk" + "value": "此提供商不支持应用内端口路由。请打开 Shell 以在机器内部访问服务。Cloud VPN 不会添加提供商支持。" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Visionneuse de diff : Bloc précédent" + "value": "이 제공자는 앱 내 포트 경로를 지원하지 않습니다. 셸을 열어 머신 내부의 서비스에 접근하세요. Cloud VPN으로 제공자 지원이 추가되지는 않습니다." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "عارض الفروق: المقطع السابق" + "value": "このプロバイダーはアプリ内のポート経路に対応していません。シェルを開き、マシン内でサービスにアクセスしてください。Cloud VPN を有効にしても対応は追加されません。" } }, - "es": { + "bs": { "stringUnit": { "state": "translated", - "value": "Visor de diff: Bloque anterior" + "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." } }, - "zh-Hant": { + "da": { "stringUnit": { "state": "translated", - "value": "差異檢視器:上一個區塊" + "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." } }, - "ko": { - "stringUnit": { - "state": "translated", - "value": "비교 뷰어: 이전 헝크" - } - } - } - }, - "cloudMenu.machine.freeAccess": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "Free access" + "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." } }, - "ar": { + "km": { "stringUnit": { "state": "translated", - "value": "وصول مجاني" + "value": "អ្នកផ្តល់សេវានេះគ្មានផ្លូវច្រកក្នុងកម្មវិធីដែលគាំទ្រទេ។ បើក shell ដើម្បីចូលប្រើសេវាកម្មនៅខាងក្នុងម៉ាស៊ីន។ Cloud VPN មិនបន្ថែមការគាំទ្រអ្នកផ្តល់សេវាទេ។" } }, - "de": { + "nb": { "stringUnit": { "state": "translated", - "value": "Kostenloser Zugang" + "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." } }, - "es": { + "pl": { "stringUnit": { "state": "translated", - "value": "Acceso gratuito" + "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." } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Accès gratuit" + "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." } }, - "ja": { + "ru": { "stringUnit": { "state": "translated", - "value": "無料アクセス" + "value": "У этого провайдера нет поддерживаемого маршрута портов в приложении. Откройте оболочку, чтобы получить доступ к службе внутри машины. Cloud VPN не добавляет поддержку провайдера." } }, - "ko": { + "th": { "stringUnit": { "state": "translated", - "value": "무료 이용" + "value": "ผู้ให้บริการนี้ไม่มีเส้นทางพอร์ตในแอปที่รองรับ เปิดเชลล์เพื่อเข้าถึงบริการภายในเครื่อง Cloud VPN ไม่ได้เพิ่มการรองรับผู้ให้บริการ" } }, - "zh-Hans": { + "tr": { "stringUnit": { "state": "translated", - "value": "免费访问" + "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." } }, - "zh-Hant": { + "uk": { "stringUnit": { "state": "translated", - "value": "免費存取" + "value": "Цей постачальник не має підтримуваного маршруту портів у застосунку. Відкрийте оболонку, щоб отримати доступ до служби всередині машини. Cloud VPN не додає підтримку постачальника." } } } }, - "cloudMenu.machine.locked": { + "cloudTree.port.openInCmux": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Locked" + "value": "Open in cmux" } }, "ar": { "stringUnit": { "state": "translated", - "value": "مقفلة" + "value": "فتح في cmux" } }, "de": { "stringUnit": { "state": "translated", - "value": "Gesperrt" + "value": "In cmux öffnen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Bloqueada" + "value": "Abrir en cmux" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Verrouillée" + "value": "Ouvrir dans cmux" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ロック中" + "value": "cmuxで開く" } }, "ko": { "stringUnit": { "state": "translated", - "value": "잠김" + "value": "cmux에서 열기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "已锁定" + "value": "在 cmux 中打开" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "已鎖定" + "value": "在 cmux 中開啟" } } } }, - "cloudMenu.dashboard": { + "cloudTree.port.openInCmux.help": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open Cloud Dashboard" + "value": "Open in cmux. No VPN setup needed." } }, "ar": { "stringUnit": { "state": "translated", - "value": "فتح لوحة تحكم السحابة" + "value": "افتح في cmux. لا يلزم إعداد VPN." } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud-Dashboard öffnen" + "value": "In cmux öffnen. Keine VPN-Einrichtung nötig." } }, "es": { "stringUnit": { "state": "translated", - "value": "Abrir el panel de Cloud" + "value": "Abrir en cmux. No hace falta configurar una VPN." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ouvrir le tableau de bord Cloud" + "value": "Ouvrir dans cmux. Aucune configuration VPN nécessaire." } }, "ja": { "stringUnit": { "state": "translated", - "value": "クラウドダッシュボードを開く" + "value": "cmux で開きます。VPN の設定は不要です。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "클라우드 대시보드 열기" + "value": "cmux에서 열기. VPN 설정이 필요하지 않습니다." } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "打开云端控制面板" + "value": "在 cmux 中打开。无需设置 VPN。" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "打開雲端控制面板" + "value": "在 cmux 中開啟。無需設定 VPN。" } } } }, - "cloudMenu.diagnostics": { + "cloudTree.port.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud Diagnostics" + "value": "Port %@" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تشخيصات السحابة" + "value": "المنفذ %@" } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud-Diagnose" + "value": "Port-Nr. %@" } }, "es": { "stringUnit": { "state": "translated", - "value": "Diagnóstico de Cloud" + "value": "Puerto %@" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Diagnostics Cloud" + "value": "Port n° %@" } }, "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": { + "cloudTree.placeholder.deviceOffline": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "No machines yet" + "value": "Offline — its workspaces return when it does" } }, "ar": { "stringUnit": { "state": "translated", - "value": "لا توجد أجهزة بعد" + "value": "غير متصل — ستعود مساحات عمله عند اتصاله مجددًا" } }, "de": { "stringUnit": { "state": "translated", - "value": "Noch keine Maschinen" + "value": "Offline — die Arbeitsbereiche erscheinen wieder, sobald das Gerät online ist" } }, "es": { "stringUnit": { "state": "translated", - "value": "Aún no hay máquinas" + "value": "Sin conexión — sus espacios de trabajo volverán cuando se conecte" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Aucune machine pour le moment" + "value": "Hors ligne — ses espaces de travail réapparaîtront à sa reconnexion" } }, "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": { + "cloud.vpn.setup.heading": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud Machines" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "أجهزة السحابة" + "value": "Use Cloud machines from any app" } }, "de": { "stringUnit": { "state": "translated", - "value": "Cloud-Maschinen" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Máquinas de Cloud" + "value": "Cloud-Maschinen aus jeder App verwenden" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Machines Cloud" + "value": "Utiliser les machines Cloud depuis toute app" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "クラウドマシン" + "value": "Usar máquinas Cloud desde cualquier app" } }, - "ko": { + "ja": { "stringUnit": { "state": "translated", - "value": "클라우드 머신" + "value": "ほかのアプリからCloudマシンを使う" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "云端机器" + "value": "从任何应用使用 Cloud 机器" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "雲端機器" + "value": "從任何 App 使用 Cloud 機器" } - } - } - }, - "cloudMenu.more": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "ko": { "stringUnit": { "state": "translated", - "value": "More Cloud" + "value": "모든 앱에서 Cloud 머신 사용" } }, "ar": { "stringUnit": { "state": "translated", - "value": "المزيد من السحابة" + "value": "استخدام أجهزة Cloud من أي تطبيق" } }, - "de": { + "bs": { "stringUnit": { "state": "translated", - "value": "Mehr Cloud" + "value": "Koristite Cloud mašine iz bilo koje aplikacije" } }, - "es": { + "da": { "stringUnit": { "state": "translated", - "value": "Más de Cloud" + "value": "Brug Cloud-maskiner fra alle apps" } }, - "fr": { + "it": { "stringUnit": { "state": "translated", - "value": "Plus de Cloud" + "value": "Usa le macchine Cloud da qualsiasi app" } }, - "ja": { + "km": { "stringUnit": { "state": "translated", - "value": "その他のクラウド" + "value": "ប្រើម៉ាស៊ីន Cloud ពីកម្មវិធីណាមួយ" } }, - "ko": { + "nb": { "stringUnit": { "state": "translated", - "value": "클라우드 더 보기" + "value": "Bruk Cloud-maskiner fra alle apper" } }, - "zh-Hans": { + "pl": { "stringUnit": { "state": "translated", - "value": "更多云端项目" + "value": "Używaj maszyn Cloud z dowolnej aplikacji" } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "更多雲端項目" - } - } - } - }, - "cloudMenu.problem.requiresPro": { - "extractionState": "manual", - "localizations": { - "en": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Cloud machines need cmux Pro" + "value": "Use máquinas Cloud em qualquer app" } }, - "ar": { + "ru": { "stringUnit": { "state": "translated", - "value": "تتطلب أجهزة السحابة cmux Pro" + "value": "Используйте Cloud-машины из любого приложения" } }, - "de": { + "th": { "stringUnit": { "state": "translated", - "value": "Cloud-Maschinen erfordern cmux Pro" + "value": "ใช้เครื่อง Cloud จากทุกแอป" } }, - "es": { + "tr": { "stringUnit": { "state": "translated", - "value": "Las máquinas de Cloud requieren cmux Pro" + "value": "Cloud makinelerini her uygulamadan kullanın" } }, - "fr": { + "uk": { "stringUnit": { "state": "translated", - "value": "Les machines Cloud nécessitent cmux Pro" + "value": "Використовуйте Cloud-машини з будь-якої програми" } - }, - "ja": { + } + } + }, + "cloud.vpn.setup.subtitle": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "クラウドマシンには cmux Pro が必要です" + "value": "Optional access to each VM's private address and original ports, such as 10.40.0.10:3000." } }, - "ko": { + "de": { "stringUnit": { "state": "translated", - "value": "클라우드 머신에는 cmux Pro가 필요합니다" + "value": "Optionaler Zugriff auf die private Adresse und die ursprünglichen Ports jeder VM, etwa 10.40.0.10:3000." } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "云端机器需要 cmux Pro" + "value": "Accès facultatif à chaque adresse privée et aux ports d’origine des VM, comme 10.40.0.10:3000." } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "雲端機器需要 cmux Pro" - } - } - } - }, - "cloudMenu.problem.session": { - "extractionState": "manual", - "localizations": { - "en": { + "es": { "stringUnit": { "state": "translated", - "value": "Your Cloud session expired" + "value": "Acceso opcional a la dirección privada y los puertos originales de cada VM, como 10.40.0.10:3000." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "انتهت صلاحية جلسة السحابة" + "value": "各VMのプライベートアドレスと元のポート(例:10.40.0.10:3000)にアクセスするための任意の設定です。" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Deine Cloud-Sitzung ist abgelaufen" + "value": "可选设置,用于访问每台 VM 的私有地址和原始端口,例如 10.40.0.10:3000。" } }, - "es": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Tu sesión de Cloud ha caducado" + "value": "選用設定,可存取每台 VM 的私有位址和原始連接埠,例如 10.40.0.10:3000。" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Votre session Cloud a expiré" + "value": "각 VM의 비공개 주소와 원래 포트(예: 10.40.0.10:3000)에 접근하기 위한 선택 설정입니다." } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "クラウドのセッションが期限切れです" + "value": "وصول اختياري إلى العنوان الخاص والمنافذ الأصلية لكل جهاز افتراضي، مثل 10.40.0.10:3000." } }, - "ko": { + "bs": { "stringUnit": { "state": "translated", - "value": "클라우드 세션이 만료되었습니다" + "value": "Opcionalni pristup privatnoj adresi i izvornim portovima svake VM, na primjer 10.40.0.10:3000." } }, - "zh-Hans": { + "da": { "stringUnit": { "state": "translated", - "value": "你的云端会话已过期" + "value": "Valgfri adgang til hver VM’s private adresse og oprindelige porte, f.eks. 10.40.0.10:3000." } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "你的雲端工作階段已過期" - } - } - } - }, - "cloudMenu.problem.unreachable": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "Could not reach cmux Cloud" + "value": "Accesso facoltativo all’indirizzo privato e alle porte originali di ogni VM, ad esempio 10.40.0.10:3000." } }, - "ar": { + "km": { "stringUnit": { "state": "translated", - "value": "تعذر الوصول إلى cmux Cloud" + "value": "ចូលប្រើអាសយដ្ឋានឯកជន និងច្រកដើមរបស់ VM នីមួយៗ ដូចជា 10.40.0.10:3000 ជាជម្រើស។" } }, - "de": { + "nb": { "stringUnit": { "state": "translated", - "value": "cmux Cloud ist nicht erreichbar" + "value": "Valgfri tilgang til hver VMs private adresse og opprinnelige porter, som 10.40.0.10:3000." } }, - "es": { + "pl": { "stringUnit": { "state": "translated", - "value": "No se pudo conectar con cmux Cloud" + "value": "Opcjonalny dostęp do prywatnego adresu i oryginalnych portów każdej maszyny VM, na przykład 10.40.0.10:3000." } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Impossible de joindre cmux Cloud" + "value": "Acesso opcional ao endereço privado e às portas originais de cada VM, como 10.40.0.10:3000." } }, - "ja": { + "ru": { "stringUnit": { "state": "translated", - "value": "cmux Cloud に接続できません" + "value": "Необязательный доступ к частному адресу и исходным портам каждой VM, например 10.40.0.10:3000." } }, - "ko": { + "th": { "stringUnit": { "state": "translated", - "value": "cmux Cloud에 연결할 수 없습니다" + "value": "การเข้าถึงที่ไม่บังคับไปยังที่อยู่ส่วนตัวและพอร์ตเดิมของ VM แต่ละเครื่อง เช่น 10.40.0.10:3000" } }, - "zh-Hans": { + "tr": { "stringUnit": { "state": "translated", - "value": "无法连接 cmux Cloud" + "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." } }, - "zh-Hant": { + "uk": { "stringUnit": { "state": "translated", - "value": "無法連線到 cmux Cloud" + "value": "Необов’язковий доступ до приватної адреси та початкових портів кожної VM, наприклад 10.40.0.10:3000." } } } }, - "cloudMenu.retry": { + "cloud.vpn.setup.howItWorks.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Try Again" - } - }, - "ar": { - "stringUnit": { - "state": "translated", - "value": "إعادة المحاولة" + "value": "How it works" } }, "de": { "stringUnit": { "state": "translated", - "value": "Erneut versuchen" - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Reintentar" + "value": "So funktioniert es" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Réessayer" + "value": "Fonctionnement" } }, - "ja": { + "es": { "stringUnit": { "state": "translated", - "value": "再試行" + "value": "Cómo funciona" } }, - "ko": { + "ja": { "stringUnit": { "state": "translated", - "value": "다시 시도" + "value": "仕組み" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "重试" + "value": "工作原理" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "再試一次" + "value": "運作方式" } - } - } - }, - "cloudMenu.showMachines": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "ko": { "stringUnit": { "state": "translated", - "value": "Show Machines Sidebar" + "value": "작동 방식" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إظهار الشريط الجانبي للأجهزة" + "value": "طريقة العمل" } }, - "de": { + "bs": { "stringUnit": { "state": "translated", - "value": "Maschinen-Seitenleiste anzeigen" + "value": "Kako radi" } }, - "es": { + "da": { "stringUnit": { "state": "translated", - "value": "Mostrar la barra lateral de máquinas" + "value": "Sådan fungerer det" } }, - "fr": { + "it": { "stringUnit": { "state": "translated", - "value": "Afficher la barre latérale des machines" + "value": "Come funziona" } }, - "ja": { + "km": { "stringUnit": { "state": "translated", - "value": "マシンのサイドバーを表示" + "value": "របៀបដំណើរការ" } }, - "ko": { + "nb": { "stringUnit": { "state": "translated", - "value": "머신 사이드바 보기" + "value": "Slik fungerer det" } }, - "zh-Hans": { + "pl": { "stringUnit": { "state": "translated", - "value": "显示机器侧边栏" + "value": "Jak to działa" } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "顯示機器側邊欄" - } - } - } - }, - "cloudMenu.signOut": { - "extractionState": "manual", - "localizations": { - "en": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Sign Out" + "value": "Como funciona" } }, - "ar": { + "ru": { "stringUnit": { "state": "translated", - "value": "تسجيل الخروج" + "value": "Как это работает" } }, - "de": { + "th": { "stringUnit": { "state": "translated", - "value": "Abmelden" + "value": "วิธีการทำงาน" } }, - "es": { + "tr": { "stringUnit": { "state": "translated", - "value": "Cerrar sesión" + "value": "Nasıl çalışır" } }, - "fr": { + "uk": { "stringUnit": { "state": "translated", - "value": "Se déconnecter" + "value": "Як це працює" } - }, - "ja": { + } + } + }, + "cloud.vpn.setup.status.off": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "サインアウト" + "value": "Off. Your Cloud panes continue to work through cmux's built-in route." } }, - "ko": { + "de": { "stringUnit": { "state": "translated", - "value": "로그아웃" + "value": "Aus. Ihre Cloud-Bereiche funktionieren weiterhin über die integrierte Verbindung von cmux." } }, - "zh-Hans": { + "fr": { "stringUnit": { "state": "translated", - "value": "退出登录" + "value": "Désactivé. Vos volets Cloud continuent de fonctionner via la connexion intégrée de cmux." } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "登出" - } - } - } - }, - "cloudMenu.signedIn": { - "extractionState": "manual", - "localizations": { - "en": { + "es": { "stringUnit": { "state": "translated", - "value": "Signed In" + "value": "Desactivada. Tus paneles Cloud siguen funcionando mediante la conexión integrada de cmux." } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "تم تسجيل الدخول" + "value": "オフ。Cloudペインは引き続きcmux内蔵の接続経路で動作します。" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Angemeldet" + "value": "已关闭。Cloud 面板仍通过 cmux 内置连接工作。" } }, - "es": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Sesión iniciada" + "value": "已關閉。Cloud 面板仍透過 cmux 內建連線運作。" } }, - "fr": { + "ko": { "stringUnit": { "state": "translated", - "value": "Connecté" + "value": "꺼짐. Cloud 패널은 cmux의 내장 연결을 통해 계속 작동합니다." } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "サインイン済み" + "value": "متوقف. تستمر لوحات Cloud في العمل عبر اتصال cmux المضمن." } }, - "ko": { + "bs": { "stringUnit": { "state": "translated", - "value": "로그인됨" + "value": "Isključeno. Cloud paneli i dalje rade preko ugrađene cmux veze." } }, - "zh-Hans": { + "da": { "stringUnit": { "state": "translated", - "value": "已登录" + "value": "Fra. Dine Cloud-paneler fungerer stadig via cmux’ indbyggede forbindelse." } }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "已登入" - } - } - } - }, - "cloudMenu.team": { - "extractionState": "manual", - "localizations": { - "en": { + "it": { "stringUnit": { "state": "translated", - "value": "Team" + "value": "Disattivata. I pannelli Cloud continuano a funzionare tramite la connessione integrata di cmux." } }, - "ar": { + "km": { "stringUnit": { "state": "translated", - "value": "الفريق" + "value": "បិទ។ ផ្ទាំង Cloud របស់អ្នកនៅតែដំណើរការតាមការភ្ជាប់ដែលមានស្រាប់របស់ cmux។" } }, - "de": { + "nb": { "stringUnit": { "state": "translated", - "value": "Team" + "value": "Av. Cloud-panelene dine fortsetter å fungere gjennom cmux sin innebygde forbindelse." } }, - "es": { + "pl": { "stringUnit": { "state": "translated", - "value": "Equipo" + "value": "Wyłączona. Panele Cloud nadal działają przez wbudowane połączenie cmux." } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Équipe" + "value": "Desativada. Seus painéis Cloud continuam funcionando pela conexão integrada do cmux." } }, - "ja": { + "ru": { "stringUnit": { "state": "translated", - "value": "チーム" + "value": "Выключено. Панели Cloud продолжают работать через встроенное соединение cmux." } }, - "ko": { + "th": { "stringUnit": { "state": "translated", - "value": "팀" + "value": "ปิดอยู่ แผง Cloud ยังคงทำงานผ่านการเชื่อมต่อในตัวของ cmux" } }, - "zh-Hans": { + "tr": { "stringUnit": { "state": "translated", - "value": "团队" + "value": "Kapalı. Cloud panelleriniz cmux’un yerleşik bağlantısıyla çalışmaya devam eder." } }, - "zh-Hant": { + "uk": { "stringUnit": { "state": "translated", - "value": "團隊" + "value": "Вимкнено. Панелі Cloud продовжують працювати через вбудоване з’єднання cmux." } } } }, - "cloudMenu.title": { + "cloud.vpn.setup.steps.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud" + "value": "First-time setup" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "السحابة" + "value": "Ersteinrichtung" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Cloud" + "value": "Première configuration" } }, "es": { "stringUnit": { "state": "translated", - "value": "Cloud" + "value": "Configuración inicial" } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "Cloud" + "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" } - } - } - }, - "cloudMenu.tone.attention": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Needs attention" + "value": "Første opsætning" } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "يحتاج إلى انتباه" + "value": "Prima configurazione" } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "Erfordert Aufmerksamkeit" + "value": "ការរៀបចំលើកដំបូង" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Requiere atención" + "value": "Førstegangsoppsett" } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Nécessite une attention" + "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": "Перше налаштування" } } } }, - "menu.cloud.title": { + "cloud.vpn.setup.steps.extension": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cloud" + "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": "Cloud" + "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": "Cloud" + "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": "Cloud" + "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." } - } - } - }, - "cloudMenu.machines.loading": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Cloud Machines · Loading…" + "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": "أجهزة السحابة · جارٍ التحميل…" + "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": "Cloud-Maschinen · Wird geladen…" + "value": "1. ចុច ភ្ជាប់ Cloud VPN។ ពេល macOS ស្នើ សូមអនុញ្ញាតផ្នែកបន្ថែមបណ្តាញ cmux ក្នុងការកំណត់ប្រព័ន្ធ។" } }, - "es": { + "nb": { + "stringUnit": { + "state": "translated", + "value": "1. Klikk Koble til Cloud VPN. Når macOS spør, tillat cmux-nettverksutvidelsen i Systeminnstillinger." + } + }, + "pl": { "stringUnit": { "state": "translated", - "value": "Máquinas de Cloud · Cargando…" + "value": "1. Kliknij Połącz z Cloud VPN. Gdy macOS poprosi, zezwól na rozszerzenie sieci cmux w Ustawieniach systemowych." } }, - "fr": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Machines Cloud · Chargement…" + "value": "1. Clique em Conectar Cloud VPN. Quando o macOS pedir, permita a extensão de rede do cmux nos Ajustes do Sistema." } }, - "ja": { + "ru": { "stringUnit": { "state": "translated", - "value": "クラウドマシン · 読み込み中…" + "value": "1. Нажмите Подключить Cloud VPN. Когда macOS попросит, разрешите сетевое расширение cmux в системных настройках." } }, - "ko": { + "th": { "stringUnit": { "state": "translated", - "value": "클라우드 머신 · 불러오는 중…" + "value": "1. คลิก เชื่อมต่อ Cloud VPN เมื่อ macOS ขอ ให้อนุญาตส่วนขยายเครือข่าย cmux ในการตั้งค่าระบบ" } }, - "zh-Hans": { + "tr": { "stringUnit": { "state": "translated", - "value": "云端机器 · 正在加载…" + "value": "1. Cloud VPN’e bağlan’a tıklayın. macOS istediğinde Sistem Ayarları’nda cmux ağ uzantısına izin verin." } }, - "zh-Hant": { + "uk": { "stringUnit": { "state": "translated", - "value": "雲端機器 · 正在載入…" + "value": "1. Натисніть Підключити Cloud VPN. Коли macOS попросить, дозвольте мережеве розширення cmux у Системних параметрах." } } } }, - "cloudMenu.machines.showAll": { + "cloud.vpn.setup.steps.settings": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Show All Machines…" + "value": "Open General > Login Items & Extensions > Network Extensions, then enable cmux." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "عرض كل الأجهزة…" + "value": "Öffnen Sie Allgemein > Anmeldeobjekte & Erweiterungen > Netzwerkerweiterungen und aktivieren Sie cmux." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Alle Maschinen anzeigen…" + "value": "Ouvrez Général > Ouverture et extensions > Extensions réseau, puis activez cmux." } }, "es": { "stringUnit": { "state": "translated", - "value": "Mostrar todas las máquinas…" + "value": "Abre General > Ítems de inicio y extensiones > Extensiones de red y activa cmux." } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "Afficher toutes les machines…" + "value": "「一般」>「ログイン項目と機能拡張」>「ネットワーク機能拡張」を開き、cmuxを有効にします。" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "すべてのマシンを表示…" + "value": "打开“通用”>“登录项与扩展”>“网络扩展”,然后启用 cmux。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "打開「一般」>「登入項目與延伸功能」>「網路延伸功能」,然後啟用 cmux。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "모든 머신 보기…" + "value": "일반 > 로그인 항목 및 확장 프로그램 > 네트워크 확장을 열고 cmux를 활성화합니다." } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "显示所有机器…" + "value": "افتح عام > عناصر الدخول والامتدادات > امتدادات الشبكة، ثم فعّل cmux." } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "顯示所有機器…" + "value": "Otvorite Opšte > Stavke za prijavu i dodaci > Mrežni dodaci, pa omogućite cmux." } - } - } - }, - "cloudMenu.newMachine": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "New Cloud Machine…" + "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": "Neue Cloud-Maschine…" + "value": "បើក ទូទៅ > ធាតុចូល និងផ្នែកបន្ថែម > ផ្នែកបន្ថែមបណ្តាញ ហើយបើក cmux។" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Nueva máquina de Cloud…" + "value": "Åpne Generelt > Påloggingselementer og utvidelser > Nettverksutvidelser, og aktiver cmux." } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Nouvelle machine Cloud…" + "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." } } } }, - "cloudMenu.signIn": { + "cloud.vpn.setup.steps.settingsLegacy": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Sign In to cmux Cloud…" + "value": "Open Privacy & Security and allow the cmux extension." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "تسجيل الدخول إلى cmux Cloud…" + "value": "Öffnen Sie Datenschutz & Sicherheit und erlauben Sie die cmux-Erweiterung." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Bei cmux Cloud anmelden…" + "value": "Ouvrez Confidentialité et sécurité et autorisez l’extension cmux." } }, "es": { "stringUnit": { "state": "translated", - "value": "Iniciar sesión en cmux Cloud…" + "value": "Abre Privacidad y seguridad y permite la extensión de cmux." } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "Se connecter à cmux Cloud…" + "value": "「プライバシーとセキュリティ」を開き、cmuxの機能拡張を許可します。" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "cmux Cloud にサインイン…" + "value": "打开“隐私与安全性”,然后允许 cmux 扩展。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "打開「隱私權與安全性」,然後允許 cmux 延伸功能。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "cmux Cloud에 로그인…" + "value": "개인정보 보호 및 보안을 열고 cmux 확장을 허용합니다." } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "登录 cmux Cloud…" + "value": "افتح الخصوصية والأمان واسمح بامتداد cmux." } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "登入 cmux Cloud…" + "value": "Otvorite Privatnost i sigurnost i dozvolite cmux dodatak." } - } - } - }, - "cloudMenu.signInAgain": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Sign In Again…" + "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": "Erneut anmelden…" + "value": "បើក ឯកជនភាព និងសុវត្ថិភាព ហើយអនុញ្ញាតផ្នែកបន្ថែម cmux។" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Volver a iniciar sesión…" + "value": "Åpne Personvern og sikkerhet og tillat cmux-utvidelsen." } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Se reconnecter…" + "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." } } } }, - "cloudMenu.signingIn": { + "cloud.vpn.setup.steps.configuration": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Signing In…" + "value": "2. Allow cmux to add a VPN configuration named cmux Cloud. This is a separate macOS permission." } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "جارٍ تسجيل الدخول…" + "value": "2. Erlauben Sie cmux, eine VPN-Konfiguration namens cmux Cloud hinzuzufügen. Dies ist eine separate macOS-Berechtigung." } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Anmeldung läuft…" + "value": "2. Autorisez cmux à ajouter une configuration VPN nommée cmux Cloud. Il s’agit d’une autorisation macOS distincte." } }, "es": { "stringUnit": { "state": "translated", - "value": "Iniciando sesión…" + "value": "2. Permite que cmux añada una configuración VPN llamada cmux Cloud. Este es un permiso independiente de macOS." } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "Connexion…" + "value": "2. cmux Cloudという名前のVPN構成の追加を許可します。これは別のmacOS権限です。" } }, - "ja": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "サインイン中…" + "value": "2. 允许 cmux 添加名为 cmux Cloud 的 VPN 配置。这是单独的 macOS 权限。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "2. 允許 cmux 加入名為 cmux Cloud 的 VPN 設定。這是另一項 macOS 權限。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "로그인 중…" + "value": "2. cmux가 cmux Cloud라는 VPN 구성을 추가하도록 허용합니다. 이는 별도의 macOS 권한입니다." } }, - "zh-Hans": { + "ar": { "stringUnit": { "state": "translated", - "value": "正在登录…" + "value": "2. اسمح لـ cmux بإضافة إعداد VPN باسم cmux Cloud. هذا إذن منفصل في macOS." } }, - "zh-Hant": { + "bs": { "stringUnit": { "state": "translated", - "value": "正在登入…" + "value": "2. Dozvolite cmux-u da doda VPN konfiguraciju pod imenom cmux Cloud. Ovo je posebna macOS dozvola." } - } - } - }, - "cloudMenu.upgrade": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Upgrade to Pro…" + "value": "2. Tillad cmux at tilføje en VPN-konfiguration med navnet cmux Cloud. Dette er en separat macOS-tilladelse." } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "الترقية إلى Pro…" + "value": "2. Consenti a cmux di aggiungere una configurazione VPN chiamata cmux Cloud. È un’autorizzazione macOS separata." } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "Auf Pro upgraden…" + "value": "2. អនុញ្ញាតឱ្យ cmux បន្ថែមការកំណត់ VPN ឈ្មោះ cmux Cloud។ នេះជាសិទ្ធិ macOS ផ្សេងមួយ។" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Mejorar a Pro…" + "value": "2. Tillat cmux å legge til en VPN-konfigurasjon kalt cmux Cloud. Dette er en separat macOS-tillatelse." } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Passer à Pro…" + "value": "2. Zezwól cmux dodać konfigurację VPN o nazwie cmux Cloud. To osobne uprawnienie macOS." } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Pro にアップグレード…" + "value": "2. Permita que o cmux adicione uma configuração VPN chamada cmux Cloud. Esta é uma permissão separada do macOS." } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "Pro로 업그레이드…" + "value": "2. Разрешите cmux добавить VPN-конфигурацию с именем cmux Cloud. Это отдельное разрешение macOS." } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "升级到 Pro…" + "value": "2. อนุญาตให้ cmux เพิ่มการกำหนดค่า VPN ชื่อ cmux Cloud นี่เป็นสิทธิ์ macOS แยกต่างหาก" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "升級至 Pro…" + "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": "2. Дозвольте cmux додати конфігурацію VPN з назвою cmux Cloud. Це окремий дозвіл macOS." } } } }, - "settings.search.alias.section.themes": { + "cloud.vpn.setup.steps.return": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent" + "value": "3. Return to this pane. The connection continues automatically after approval. Disconnect here when finished. Quitting cmux or signing out also disconnects it." } }, "de": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent design designs farbschema farben palette hell dunkel akzent" + "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." } }, "fr": { "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": "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." } }, - "ar": { + "es": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent سمة سمات ألوان لوحة فاتح داكن تمييز" + "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." } }, - "es": { + "ja": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent tema temas colores paleta claro oscuro acento" + "value": "3. このペインに戻ります。承認後、接続は自動的に続行されます。使い終わったらここで切断してください。cmuxの終了やサインアウトでも切断されます。" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent 主題 配色 顏色 調色盤 淺色 深色 強調色" + "value": "3. 返回此面板。批准后连接会自动继续。完成后可在此断开连接。退出 cmux 或退出登录也会断开连接。" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent 主题 配色 颜色 调色板 浅色 深色 强调色" + "value": "3. 返回此面板。核准後連線會自動繼續。完成後可在此中斷連線。結束 cmux 或登出也會中斷連線。" } }, "ko": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent 테마 색상 팔레트 라이트 다크 강조색" + "value": "3. 이 패널로 돌아옵니다. 승인 후 연결이 자동으로 계속됩니다. 사용을 마치면 여기에서 연결을 해제하세요. cmux를 종료하거나 로그아웃해도 연결이 해제됩니다." } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "theme themes color scheme colors palette ghostty light dark mode accent テーマ 配色 カラー パレット ライト ダーク アクセント" + "value": "3. ارجع إلى هذه اللوحة. يستمر الاتصال تلقائيًا بعد الموافقة. اقطع الاتصال هنا عند الانتهاء. يؤدي إنهاء cmux أو تسجيل الخروج أيضًا إلى قطع الاتصال." } - } - } - }, - "settings.section.themes": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "bs": { "stringUnit": { "state": "translated", - "value": "Themes" + "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." } }, - "ar": { + "da": { "stringUnit": { "state": "translated", - "value": "السمات" + "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å." } }, - "de": { + "it": { "stringUnit": { "state": "translated", - "value": "Designs" + "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." } }, - "es": { + "km": { "stringUnit": { "state": "translated", - "value": "Temas" + "value": "3. ត្រឡប់ទៅផ្ទាំងនេះ។ ការភ្ជាប់នឹងបន្តដោយស្វ័យប្រវត្តិបន្ទាប់ពីអនុម័ត។ ផ្តាច់នៅទីនេះពេលបញ្ចប់។ ការបិទ cmux ឬចាកចេញក៏ផ្តាច់ការភ្ជាប់ដែរ។" } }, - "fr": { + "nb": { "stringUnit": { "state": "translated", - "value": "Thèmes" + "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." } }, - "ja": { + "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." } }, - "ko": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "테마" + "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." } }, - "zh-Hans": { + "ru": { "stringUnit": { "state": "translated", - "value": "主题" + "value": "3. Вернитесь в эту панель. После подтверждения соединение продолжится автоматически. Завершив работу, отключите его здесь. Выход из cmux или системы также отключает соединение." } }, - "zh-Hant": { + "th": { "stringUnit": { "state": "translated", - "value": "主題" + "value": "3. กลับมาที่แผงนี้ การเชื่อมต่อจะดำเนินต่อโดยอัตโนมัติหลังการอนุมัติ ตัดการเชื่อมต่อที่นี่เมื่อเสร็จแล้ว การออกจาก cmux หรือออกจากระบบจะตัดการเชื่อมต่อด้วย" + } + }, + "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." + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "3. Поверніться до цієї панелі. Після схвалення з’єднання продовжиться автоматично. Завершивши роботу, від’єднайте його тут. Вихід із cmux або системи також від’єднає з’єднання." } } } }, - "settings.terminal.theme": { + "cloud.vpn.setup.address.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Terminal Theme" + "value": "Private addresses" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "سمة الطرفية" + "value": "Private Adressen" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Terminal-Design" + "value": "Adresses privées" } }, "es": { "stringUnit": { "state": "translated", - "value": "Tema del terminal" + "value": "Direcciones privadas" } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "Thème du terminal" + "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": "Privatne adrese" } - } - } - }, - "shortcut.sizeTerminalToMyWindow.label": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Size Terminal to My Window" + "value": "Private adresser" } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "ضبط حجم الطرفية على نافذتي" + "value": "Indirizzi privati" } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "Terminal an mein Fenster anpassen" + "value": "អាសយដ្ឋានឯកជន" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Ajustar la terminal a mi ventana" + "value": "Private adresser" } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Adapter le terminal à ma fenêtre" + "value": "Prywatne adresy" } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "ターミナルを自分のウィンドウに合わせる" + "value": "Endereços privados" } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "터미널을 내 창 크기에 맞추기" + "value": "Частные адреса" } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "让终端适配我的窗口" + "value": "ที่อยู่ส่วนตัว" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "讓終端機符合我的視窗大小" + "value": "Özel adresler" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Приватні адреси" } } } }, - "command.terminalDisconnectOtherClients.title": { + "cloud.vpn.setup.openSettings": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Disconnect Other Terminal Clients…" + "value": "Open System Settings" } }, - "ar": { + "de": { "stringUnit": { "state": "translated", - "value": "قطع اتصال عملاء الطرفية الآخرين…" + "value": "Systemeinstellungen öffnen" } }, - "de": { + "fr": { "stringUnit": { "state": "translated", - "value": "Andere Terminal-Clients trennen…" + "value": "Ouvrir Réglages Système" } }, "es": { "stringUnit": { "state": "translated", - "value": "Desconectar otros clientes de la terminal…" + "value": "Abrir Ajustes del Sistema" } }, - "fr": { + "ja": { "stringUnit": { "state": "translated", - "value": "Déconnecter les autres clients du terminal…" + "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": "Otvori Postavke sistema" } - } - } - }, - "command.terminalShowSizePanel.title": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "da": { "stringUnit": { "state": "translated", - "value": "Show Terminal Size Panel" + "value": "Åbn Systemindstillinger" } }, - "ar": { + "it": { "stringUnit": { "state": "translated", - "value": "إظهار لوحة حجم الطرفية" + "value": "Apri Impostazioni di Sistema" } }, - "de": { + "km": { "stringUnit": { "state": "translated", - "value": "Terminalgrößen-Bereich anzeigen" + "value": "បើកការកំណត់ប្រព័ន្ធ" } }, - "es": { + "nb": { "stringUnit": { "state": "translated", - "value": "Mostrar el panel de tamaño de la terminal" + "value": "Åpne Systeminnstillinger" } }, - "fr": { + "pl": { "stringUnit": { "state": "translated", - "value": "Afficher le panneau de taille du terminal" + "value": "Otwórz Ustawienia systemowe" } }, - "ja": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "ターミナルサイズパネルを表示" + "value": "Abrir Ajustes do Sistema" } }, - "ko": { + "ru": { "stringUnit": { "state": "translated", - "value": "터미널 크기 패널 보기" + "value": "Открыть системные настройки" } }, - "zh-Hans": { + "th": { "stringUnit": { "state": "translated", - "value": "显示终端大小面板" + "value": "เปิดการตั้งค่าระบบ" } }, - "zh-Hant": { + "tr": { "stringUnit": { "state": "translated", - "value": "顯示終端機大小面板" + "value": "Sistem Ayarlarını aç" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Відкрити Системні параметри" } } } }, - "command.terminalSizeToMyWindow.title": { - "extractionState": "manual", + "settings.app.accentColor.custom": { "localizations": { - "en": { + "ar": { "stringUnit": { "state": "translated", - "value": "Size Terminal to My Window" + "value": "مخصص" } }, - "ar": { + "bs": { "stringUnit": { "state": "translated", - "value": "ضبط حجم الطرفية على نافذتي" + "value": "Prilagođeno" + } + }, + "da": { + "stringUnit": { + "state": "translated", + "value": "Tilpasset" } }, "de": { "stringUnit": { "state": "translated", - "value": "Terminal an mein Fenster anpassen" + "value": "Benutzerdefiniert" } }, - "es": { + "en": { "stringUnit": { "state": "translated", - "value": "Ajustar la terminal a mi ventana" + "value": "Custom" } }, - "fr": { + "es": { "stringUnit": { "state": "translated", - "value": "Adapter le terminal à ma fenêtre" + "value": "Personalizado" } }, - "ja": { + "fr": { "stringUnit": { "state": "translated", - "value": "ターミナルを自分のウィンドウに合わせる" + "value": "Personnalisée" } }, - "ko": { + "it": { "stringUnit": { "state": "translated", - "value": "터미널을 내 창 크기에 맞추기" + "value": "Personalizzato" } }, - "zh-Hans": { + "ja": { "stringUnit": { "state": "translated", - "value": "让终端适配我的窗口" + "value": "カスタム" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "讓終端機符合我的視窗大小" + "value": "사용자 지정" } - } - } - }, - "terminalSharing.detached.hostShutdown": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "nb": { "stringUnit": { "state": "translated", - "value": "The terminal host shut down at %@." + "value": "Egendefinert" } }, - "ar": { + "pl": { "stringUnit": { "state": "translated", - "value": "توقف مضيف الطرفية في %@." + "value": "Niestandardowy" } }, - "de": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Der Terminal-Host wurde um %@ beendet." + "value": "Personalizado" } }, - "es": { + "ru": { "stringUnit": { "state": "translated", - "value": "El host de la terminal se detuvo a las %@." + "value": "Пользовательский" } }, - "fr": { + "th": { "stringUnit": { "state": "translated", - "value": "L’hôte du terminal s’est arrêté à %@." + "value": "กำหนดเอง" } }, - "ja": { + "tr": { "stringUnit": { "state": "translated", - "value": "ターミナルホストが %@ に終了しました。" + "value": "Özel" } }, - "ko": { + "uk": { "stringUnit": { "state": "translated", - "value": "터미널 호스트가 %@에 종료되었습니다." + "value": "Власний" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "终端主机已于 %@ 关闭。" + "value": "自定义" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "終端機主機已於 %@ 關閉。" + "value": "自訂" } } } }, - "terminalSharing.detached.network": { + "devices.incoming.confirm.enable": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "The network dropped." + "value": "Make Discoverable" } }, "ar": { "stringUnit": { "state": "translated", - "value": "انقطع اتصال الشبكة." + "value": "جعل الجهاز قابلاً للاكتشاف" } }, "de": { "stringUnit": { "state": "translated", - "value": "Die Netzwerkverbindung wurde unterbrochen." + "value": "Auffindbar machen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Se perdió la conexión de red." + "value": "Hacer detectable" } }, "fr": { "stringUnit": { "state": "translated", - "value": "La connexion réseau a été interrompue." + "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": "允許探索" } - } - } - }, - "terminalSharing.detached.reattach": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "bs": { "stringUnit": { "state": "translated", - "value": "Reattach" + "value": "Učini dostupnim" } }, - "ar": { + "da": { "stringUnit": { "state": "translated", - "value": "إعادة الإرفاق" + "value": "Gør synlig" } }, - "de": { + "it": { "stringUnit": { "state": "translated", - "value": "Erneut verbinden" + "value": "Rendi individuabile" } }, - "es": { + "km": { "stringUnit": { "state": "translated", - "value": "Volver a conectar" + "value": "ធ្វើឲ្យអាចរកឃើញ" } }, - "fr": { + "nb": { "stringUnit": { "state": "translated", - "value": "Se reconnecter" + "value": "Gjør denne Mac-en synlig" } }, - "ja": { + "pl": { "stringUnit": { "state": "translated", - "value": "再接続" + "value": "Włącz wykrywanie" } }, - "ko": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "다시 연결" + "value": "Tornar detectável" } }, - "zh-Hans": { + "ru": { "stringUnit": { "state": "translated", - "value": "重新连接" + "value": "Сделать доступным для обнаружения" } }, - "zh-Hant": { + "th": { "stringUnit": { "state": "translated", - "value": "重新連接" + "value": "ทำให้ Mac เครื่องนี้ค้นพบได้" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Keşfedilebilir yap" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Зробити цей Mac видимим" } } } }, - "terminalSharing.detached.reattachAsViewer": { + "devices.incoming.confirm.message": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Reattach as Viewer" + "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": "Als Zuschauer erneut verbinden" + "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": "Volver a conectar como espectador" + "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": "Se reconnecter en lecture seule" + "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 並連線至其工作區。要繼續嗎?" } - } - } - }, - "terminalSharing.detached.reattachAsViewer.help": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "bs": { "stringUnit": { "state": "translated", - "value": "Reattach without changing the terminal size" + "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?" } }, - "ar": { + "da": { "stringUnit": { "state": "translated", - "value": "إعادة الإرفاق دون تغيير حجم الطرفية" + "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?" } }, - "de": { + "it": { "stringUnit": { "state": "translated", - "value": "Erneut verbinden, ohne die Terminalgröße zu ändern" + "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?" } }, - "es": { + "km": { "stringUnit": { "state": "translated", - "value": "Volver a conectar sin cambiar el tamaño de la terminal" + "value": "Mac ផ្សេងទៀតដែលបានចូលគណនី cmux របស់អ្នក អាចរកឃើញ Mac នេះ និងភ្ជាប់ទៅកាន់ workspace របស់វា។ តើអ្នកចង់បន្តឬទេ?" } }, - "fr": { + "nb": { "stringUnit": { "state": "translated", - "value": "Se reconnecter sans modifier la taille du terminal" + "value": "Andre Mac-maskiner som er logget på cmux-kontoen din, kan finne denne Mac-en og koble til arbeidsområdene. Vil du fortsette?" } }, - "ja": { + "pl": { "stringUnit": { "state": "translated", - "value": "ターミナルサイズを変えずに再接続" + "value": "Inne Maki zalogowane na Twoje konto cmux mogą wykryć tego Maca i połączyć się z jego obszarami roboczymi. Czy chcesz kontynuować?" } }, - "ko": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "터미널 크기를 바꾸지 않고 다시 연결" + "value": "Outros Macs conectados à sua conta cmux poderão descobrir este Mac e se conectar aos seus espaços de trabalho. Deseja continuar?" } }, - "zh-Hans": { + "ru": { "stringUnit": { "state": "translated", - "value": "重新连接但不更改终端大小" + "value": "Другие Mac, вошедшие в вашу учётную запись cmux, могут обнаружить этот Mac и подключиться к его рабочим пространствам. Продолжить?" } }, - "zh-Hant": { + "th": { "stringUnit": { "state": "translated", - "value": "重新連接但不變更終端機大小" + "value": "Mac เครื่องอื่นที่ลงชื่อเข้าใช้บัญชี cmux ของคุณอาจค้นพบ Mac เครื่องนี้และเชื่อมต่อกับพื้นที่ทำงานของเครื่องนี้ คุณต้องการดำเนินการต่อหรือไม่" + } + }, + "tr": { + "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?" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Інші Mac, на яких виконано вхід у ваш обліковий запис cmux, можуть виявити цей Mac і підключитися до його робочих просторів. Продовжити?" } } } }, - "terminalSharing.detached.someone": { + "devices.incoming.confirm.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Someone" + "value": "Make this Mac discoverable?" } }, "ar": { "stringUnit": { "state": "translated", - "value": "شخص ما" + "value": "هل تريد جعل جهاز Mac هذا قابلاً للاكتشاف؟" } }, "de": { "stringUnit": { "state": "translated", - "value": "Jemand" + "value": "Diesen Mac auffindbar machen?" } }, "es": { "stringUnit": { "state": "translated", - "value": "Alguien" + "value": "¿Hacer que este Mac sea detectable?" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Quelqu’un" + "value": "Rendre ce Mac détectable ?" } }, "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.superseded": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "bs": { "stringUnit": { "state": "translated", - "value": "Another window of this Mac replaced this one at %@." + "value": "Učiniti ovaj Mac dostupnim?" } }, - "ar": { + "da": { "stringUnit": { "state": "translated", - "value": "استبدلت نافذة أخرى على جهاز Mac هذا هذه النافذة في %@." + "value": "Gør denne Mac synlig?" } }, - "de": { + "it": { "stringUnit": { "state": "translated", - "value": "Ein anderes Fenster dieses Macs hat dieses um %@ ersetzt." + "value": "Rendere individuabile questo Mac?" } }, - "es": { + "km": { "stringUnit": { "state": "translated", - "value": "Otra ventana de este Mac reemplazó a esta a las %@." + "value": "ធ្វើឲ្យ Mac នេះអាចរកឃើញ?" } }, - "fr": { + "nb": { "stringUnit": { "state": "translated", - "value": "Une autre fenêtre de ce Mac a remplacé celle-ci à %@." + "value": "Gjøre denne Mac-en synlig?" } }, - "ja": { + "pl": { "stringUnit": { "state": "translated", - "value": "このMacの別のウィンドウが %@ にこのウィンドウを置き換えました。" + "value": "Uwidocznić tego Maca?" } }, - "ko": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "이 Mac의 다른 창이 %@에 이 창을 대체했습니다." + "value": "Tornar este Mac detectável?" } }, - "zh-Hans": { + "ru": { "stringUnit": { "state": "translated", - "value": "这台 Mac 的另一个窗口已于 %@ 替换此窗口。" + "value": "Сделать этот Mac доступным для обнаружения?" } }, - "zh-Hant": { + "th": { "stringUnit": { "state": "translated", - "value": "這台 Mac 的另一個視窗已於 %@ 取代此視窗。" + "value": "ทำให้ Mac เครื่องนี้ค้นพบได้หรือไม่" } - } - } - }, - "terminalSharing.participant.personDevice": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "tr": { "stringUnit": { "state": "translated", - "value": "%1$@ · %2$@" + "value": "Bu Mac keşfedilebilir yapılsın mı?" } }, - "ja": { + "uk": { "stringUnit": { "state": "translated", - "value": "%1$@ · %2$@" + "value": "Зробити цей Mac доступним для виявлення?" } } } }, - "terminalSharing.device.browser": { + "cloudTree.device.status.connecting": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Browser" + "value": "Connecting…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "المتصفح" + "value": "جارٍ الاتصال…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Browser" + "value": "Wird verbunden…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Navegador" + "value": "Conectando…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Navigateur" + "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": "瀏覽器" - } - } - } - }, - "terminalSharing.device.ipad": { - "extractionState": "manual", - "localizations": { - "en": { - "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" + "value": "正在連線…" } } } }, - "terminalSharing.device.tui": { + "cloud.teamPicker.createSheet.create": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Terminal client" + "value": "Create" } }, "ar": { "stringUnit": { "state": "translated", - "value": "عميل طرفية" + "value": "إنشاء" } }, "de": { "stringUnit": { "state": "translated", - "value": "Terminal-Client" + "value": "Erstellen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Cliente de terminal" + "value": "Crear" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Client terminal" + "value": "Créer" } }, "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": { + "cloud.teamPicker.createSheet.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Device" + "value": "Create Team" } }, "ar": { "stringUnit": { "state": "translated", - "value": "جهاز" + "value": "إنشاء فريق" } }, "de": { "stringUnit": { "state": "translated", - "value": "Gerät" + "value": "Team erstellen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Dispositivo" + "value": "Crear equipo" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Appareil" + "value": "Créer une é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.owner.held": { + "cloud.teamPicker.createTeam": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Held size" + "value": "Create Team…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "حجم محتفظ به" + "value": "إنشاء فريق…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Beibehaltene Größe" + "value": "Team erstellen…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Tamaño conservado" + "value": "Crear equipo…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Taille conservée" + "value": "Créer une é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.owner.largest": { + "cloud.teamPicker.switching": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Largest window" + "value": "Switching teams…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "أكبر نافذة" + "value": "جارٍ تبديل الفريق…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Größtes Fenster" + "value": "Team wird gewechselt…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Ventana más grande" + "value": "Cambiando de equipo…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Plus grande fenêtre" + "value": "Changement d’é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.owner.shared": { + "cloud.teamPicker.creating": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Shared size" + "value": "Creating team…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "حجم مشترك" + "value": "جارٍ إنشاء الفريق…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Gemeinsame Größe" + "value": "Team wird erstellt…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Tamaño compartido" + "value": "Creando equipo…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Taille partagée" + "value": "Création de l’é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.owner.smallest": { + "socket.authTeam.busy": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Fits everyone" + "value": "Another team change is in progress. Try again when it finishes." } }, "ar": { "stringUnit": { "state": "translated", - "value": "يناسب الجميع" + "value": "هناك تغيير آخر في الفريق قيد التنفيذ. حاول مرة أخرى عند انتهائه." } }, "de": { "stringUnit": { "state": "translated", - "value": "Passt für alle" + "value": "Eine andere Teamänderung läuft noch. Versuche es erneut, wenn sie abgeschlossen ist." } }, "es": { "stringUnit": { "state": "translated", - "value": "Se ajusta a todos" + "value": "Hay otro cambio de equipo en curso. Inténtalo de nuevo cuando termine." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Convient à tous" + "value": "Une autre modification d’équipe est en cours. Réessayez une fois terminé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.participant.thisMac": { + "cloud.teamPicker.createSheet.message": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "This Mac" + "value": "The new team becomes your active team." } }, "ar": { "stringUnit": { "state": "translated", - "value": "جهاز Mac هذا" + "value": "يصبح الفريق الجديد فريقك النشط." } }, "de": { "stringUnit": { "state": "translated", - "value": "Dieser Mac" + "value": "Das neue Team wird Ihr aktives Team." } }, "es": { "stringUnit": { "state": "translated", - "value": "Este Mac" + "value": "El nuevo equipo pasa a ser su equipo activo." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ce Mac" + "value": "La nouvelle équipe devient votre équipe active." } }, "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" + "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.diffViewerNextHunk.label": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Size" + "value": "Diff Viewer: Next Hunk" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "الحجم" + "value": "差分ビューア: 次のハンク" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Größe" + "value": "差异查看器:下一个块" } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "Tamaño" + "value": "Diff-Viewer: Nächster Hunk" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Taille" + "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.sizeMode.latest": { + "shortcut.diffViewerPreviousHunk.label": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Follow Latest" + "value": "Diff Viewer: Previous Hunk" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "اتباع الأحدث" + "value": "差分ビューア: 前のハンク" } }, - "de": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Letzter Eingabe folgen" + "value": "差异查看器:上一个块" } }, - "es": { + "de": { "stringUnit": { "state": "translated", - "value": "Seguir la última entrada" + "value": "Diff-Viewer: Vorheriger Hunk" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Suivre la dernière saisie" + "value": "Visionneuse de diff : Bloc précédent" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "最新の入力に合わせる" + "value": "عارض الفروق: المقطع السابق" } }, - "ko": { + "es": { "stringUnit": { "state": "translated", - "value": "최근 입력 따르기" + "value": "Visor de diff: Bloque anterior" } }, - "zh-Hans": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "跟随最新输入" + "value": "差異檢視器:上一個區塊" } }, - "zh-Hant": { + "ko": { "stringUnit": { "state": "translated", - "value": "跟隨最新輸入" + "value": "비교 뷰어: 이전 헝크" } } } }, - "terminalSharing.sizeMode.smallest": { + "cloudMenu.machine.freeAccess": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Fit Everyone" + "value": "Free access" } }, "ar": { "stringUnit": { "state": "translated", - "value": "ملاءمة الجميع" + "value": "وصول مجاني" } }, "de": { "stringUnit": { "state": "translated", - "value": "Allen anpassen" + "value": "Kostenloser Zugang" } }, "es": { "stringUnit": { "state": "translated", - "value": "Ajustar a todos" + "value": "Acceso gratuito" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Adapter à tous" + "value": "Accès gratuit" } }, "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": { + "cloudMenu.machine.locked": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Largest Window" + "value": "Locked" } }, "ar": { "stringUnit": { "state": "translated", - "value": "أكبر نافذة" + "value": "مقفلة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Größtes Fenster" + "value": "Gesperrt" } }, "es": { "stringUnit": { "state": "translated", - "value": "Ventana más grande" + "value": "Bloqueada" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Plus grande fenêtre" + "value": "Verrouillé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.sizeMode.priority": { + "cloudMenu.dashboard": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Priority" + "value": "Open Cloud Dashboard" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الأولوية" + "value": "فتح لوحة تحكم السحابة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Priorität" + "value": "Cloud-Dashboard öffnen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Prioridad" + "value": "Abrir el panel de Cloud" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Priorité" + "value": "Ouvrir le tableau de bord 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.sizeMode.fixed": { + "cloudMenu.diagnostics": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Fixed" + "value": "Cloud Diagnostics" } }, "ar": { "stringUnit": { "state": "translated", - "value": "ثابت" + "value": "تشخيصات السحابة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Fest" + "value": "Cloud-Diagnose" } }, "es": { "stringUnit": { "state": "translated", - "value": "Fijo" + "value": "Diagnóstico de Cloud" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Fixe" + "value": "Diagnostics 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.panel.setsSize": { + "cloudMenu.machines.empty": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "sets size" + "value": "No machines yet" } }, "ar": { "stringUnit": { "state": "translated", - "value": "يحدد الحجم" + "value": "لا توجد أجهزة بعد" } }, "de": { "stringUnit": { "state": "translated", - "value": "legt Größe fest" + "value": "Noch keine Maschinen" } }, "es": { "stringUnit": { "state": "translated", - "value": "define el tamaño" + "value": "Aún no hay máquinas" } }, "fr": { "stringUnit": { "state": "translated", - "value": "définit la taille" + "value": "Aucune machine pour le moment" } }, "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": { + "cloudMenu.machines.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "not counted" + "value": "Cloud Machines" } }, "ar": { "stringUnit": { "state": "translated", - "value": "غير محتسب" + "value": "أجهزة السحابة" } }, "de": { "stringUnit": { "state": "translated", - "value": "nicht gezählt" + "value": "Cloud-Maschinen" } }, "es": { "stringUnit": { "state": "translated", - "value": "no cuenta" + "value": "Máquinas de Cloud" } }, "fr": { "stringUnit": { "state": "translated", - "value": "non compté" + "value": "Machines 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.panel.rowOptions": { + "cloudMenu.more": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Options for %@" + "value": "More Cloud" } }, "ar": { "stringUnit": { "state": "translated", - "value": "خيارات %@" + "value": "المزيد من السحابة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Optionen für %@" + "value": "Mehr Cloud" } }, "es": { "stringUnit": { "state": "translated", - "value": "Opciones de %@" + "value": "Más de Cloud" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Options pour %@" + "value": "Plus de 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.panel.disconnectOthersButton": { + "cloudMenu.problem.requiresPro": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Disconnect Others" + "value": "Cloud machines need cmux Pro" } }, "ar": { "stringUnit": { "state": "translated", - "value": "قطع اتصال الآخرين" + "value": "تتطلب أجهزة السحابة cmux Pro" } }, "de": { "stringUnit": { "state": "translated", - "value": "Andere trennen" + "value": "Cloud-Maschinen erfordern cmux Pro" } }, "es": { "stringUnit": { "state": "translated", - "value": "Desconectar a los demás" + "value": "Las máquinas de Cloud requieren cmux Pro" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Déconnecter les autres" + "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" } } } }, - "terminalSharing.detached.titleShort": { + "cloudMenu.problem.session": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Detached" + "value": "Your Cloud session expired" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تم الفصل" + "value": "انتهت صلاحية جلسة السحابة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Getrennt" + "value": "Deine Cloud-Sitzung ist abgelaufen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Desconectado" + "value": "Tu sesión de Cloud ha caducado" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Détaché" + "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": "你的雲端工作階段已過期" } } } }, - "terminalSharing.detached.byMessageShort": { + "cloudMenu.problem.unreachable": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "%1$@ disconnected this Mac at %2$@." + "value": "Could not reach cmux Cloud" } }, "ar": { "stringUnit": { "state": "translated", - "value": "قطع %1$@ اتصال هذا الـMac في %2$@." + "value": "تعذر الوصول إلى cmux Cloud" } }, "de": { "stringUnit": { "state": "translated", - "value": "%1$@ hat diesen Mac um %2$@ getrennt." + "value": "cmux Cloud ist nicht erreichbar" } }, "es": { "stringUnit": { "state": "translated", - "value": "%1$@ desconectó este Mac a las %2$@." + "value": "No se pudo conectar con cmux Cloud" } }, "fr": { "stringUnit": { "state": "translated", - "value": "%1$@ a déconnecté ce Mac à %2$@." + "value": "Impossible de joindre cmux Cloud" } }, "ja": { "stringUnit": { "state": "translated", - "value": "%1$@が%2$@にこのMacを切断しました。" + "value": "cmux Cloud に接続できません" } }, "ko": { "stringUnit": { "state": "translated", - "value": "%1$@이(가) %2$@에 이 Mac의 연결을 끊었습니다." + "value": "cmux Cloud에 연결할 수 없습니다" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "%1$@于%2$@断开了这台Mac的连接。" + "value": "无法连接 cmux Cloud" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "%1$@於%2$@中斷了這台Mac的連線。" + "value": "無法連線到 cmux Cloud" } } } }, - "terminalSharing.chip.hiddenColumns": { + "cloudMenu.retry": { "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": "Try Again" } }, "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": "Erneut versuchen" } }, "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": "Reintentar" } }, "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": "Réessayer" } }, "ja": { - "variations": { - "plural": { - "other": { - "stringUnit": { - "state": "translated", - "value": "%ld列が非表示" - } - } - } + "stringUnit": { + "state": "translated", + "value": "再試行" } }, "ko": { - "variations": { - "plural": { - "other": { - "stringUnit": { - "state": "translated", - "value": "%ld열 숨겨짐" - } - } - } + "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": { + "cloudMenu.showMachines": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Cancel" + "value": "Show Machines Sidebar" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إلغاء" + "value": "إظهار الشريط الجانبي للأجهزة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Abbrechen" + "value": "Maschinen-Seitenleiste anzeigen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Cancelar" + "value": "Mostrar la barra lateral de máquinas" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Annuler" + "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.panel.disconnectOthers.confirm": { + "cloudMenu.signOut": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Disconnect all other clients?" + "value": "Sign Out" } }, "ar": { "stringUnit": { "state": "translated", - "value": "هل تريد قطع اتصال جميع العملاء الآخرين؟" + "value": "تسجيل الخروج" } }, "de": { "stringUnit": { "state": "translated", - "value": "Alle anderen Clients trennen?" + "value": "Abmelden" } }, "es": { "stringUnit": { "state": "translated", - "value": "¿Desconectar todos los demás clientes?" + "value": "Cerrar sesión" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Déconnecter tous les autres clients ?" + "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.panel.disconnectOthers.confirmButton": { + "cloudMenu.signedIn": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Disconnect" + "value": "Signed In" } }, "ar": { "stringUnit": { "state": "translated", - "value": "قطع الاتصال" + "value": "تم تسجيل الدخول" } }, "de": { "stringUnit": { "state": "translated", - "value": "Trennen" + "value": "Angemeldet" } }, "es": { "stringUnit": { "state": "translated", - "value": "Desconectar" + "value": "Sesión iniciada" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Déconnecter" + "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.panel.fixedColumns": { + "cloudMenu.team": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Columns" + "value": "Team" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الأعمدة" + "value": "الفريق" } }, "de": { "stringUnit": { "state": "translated", - "value": "Spalten" + "value": "Team" } }, "es": { "stringUnit": { "state": "translated", - "value": "Columnas" + "value": "Equipo" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Colonnes" + "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.panel.fixedRows": { + "cloudMenu.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Rows" + "value": "Cloud" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الصفوف" + "value": "السحابة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Zeilen" + "value": "Cloud" } }, "es": { "stringUnit": { "state": "translated", - "value": "Filas" + "value": "Cloud" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Lignes" + "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.panel.unavailable": { + "cloudMenu.tone.attention": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "This terminal is not shared." + "value": "Needs attention" } }, "ar": { "stringUnit": { "state": "translated", - "value": "هذه الطرفية غير مشتركة." + "value": "يحتاج إلى انتباه" } }, "de": { "stringUnit": { "state": "translated", - "value": "Dieses Terminal wird nicht geteilt." + "value": "Erfordert Aufmerksamkeit" } }, "es": { "stringUnit": { "state": "translated", - "value": "Esta terminal no está compartida." + "value": "Requiere atención" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ce terminal n’est pas partagé." + "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.panel.counts": { + "menu.cloud.title": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Counts toward size" + "value": "Cloud" } }, "ar": { "stringUnit": { "state": "translated", - "value": "يُحتسب في الحجم" + "value": "السحابة" } }, "de": { "stringUnit": { "state": "translated", - "value": "Zählt für die Größe" + "value": "Cloud" } }, "es": { "stringUnit": { "state": "translated", - "value": "Cuenta para el tamaño" + "value": "Cloud" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Compte pour la taille" + "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.panel.disconnect": { + "cloudMenu.machines.loading": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Disconnect" + "value": "Cloud Machines · Loading…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "قطع الاتصال" + "value": "أجهزة السحابة · جارٍ التحميل…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Trennen" + "value": "Cloud-Maschinen · Wird geladen…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Desconectar" + "value": "Máquinas de Cloud · Cargando…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Déconnecter" + "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": "雲端機器 · 正在載入…" } } } }, - "cloudTree.action.newCloudMachine": { + "cloudMenu.machines.showAll": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "New Cloud Machine" + "value": "Show All Machines…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "جهاز سحابي جديد" + "value": "عرض كل الأجهزة…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Neue Cloud-Maschine" + "value": "Alle Maschinen anzeigen…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Nueva máquina en la nube" + "value": "Mostrar todas las máquinas…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Nouvelle machine cloud" + "value": "Afficher toutes les 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": "新增雲端機器" - } - }, - "bs": { - "stringUnit": { - "state": "translated", - "value": "Nova cloud mašina" - } - }, - "da": { - "stringUnit": { - "state": "translated", - "value": "Ny cloud-maskine" + "value": "顯示所有機器…" } - }, - "it": { + } + } + }, + "cloudMenu.newMachine": { + "extractionState": "manual", + "localizations": { + "en": { "stringUnit": { "state": "translated", - "value": "Nuova macchina cloud" + "value": "New Cloud Machine…" } }, - "km": { + "ar": { "stringUnit": { "state": "translated", - "value": "ម៉ាស៊ីន Cloud ថ្មី" + "value": "جهاز سحابي جديد…" } }, - "nb": { + "de": { "stringUnit": { "state": "translated", - "value": "Ny sky-maskin" + "value": "Neue Cloud-Maschine…" } }, - "pl": { + "es": { "stringUnit": { "state": "translated", - "value": "Nowa maszyna w chmurze" + "value": "Nueva máquina de Cloud…" } }, - "pt-BR": { + "fr": { "stringUnit": { "state": "translated", - "value": "Nova máquina na nuvem" + "value": "Nouvelle machine Cloud…" } }, - "ru": { + "ja": { "stringUnit": { "state": "translated", - "value": "Новая облачная машина" + "value": "新規クラウドマシン…" } }, - "th": { + "ko": { "stringUnit": { "state": "translated", - "value": "เครื่องคลาวด์ใหม่" + "value": "새 클라우드 머신…" } }, - "tr": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Yeni bulut makinesi" + "value": "新建云端机器…" } }, - "uk": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Нова хмарна машина" + "value": "新增雲端機器…" } } } }, - "terminalContextMenu.copyLink": { + "cloudMenu.signIn": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Copy Link" + "value": "Sign In to cmux Cloud…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "نسخ الرابط" + "value": "تسجيل الدخول إلى cmux Cloud…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Link kopieren" + "value": "Bei cmux Cloud anmelden…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Copiar enlace" + "value": "Iniciar sesión en cmux Cloud…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Copier le lien" + "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…" } } } }, - "terminalContextMenu.openLinkInCmuxBrowser": { + "cloudMenu.signInAgain": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open Link in cmux Browser" + "value": "Sign In Again…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "فتح الرابط في متصفح cmux" + "value": "تسجيل الدخول مجددًا…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Link im cmux-Browser öffnen" + "value": "Erneut anmelden…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Abrir enlace en el navegador de cmux" + "value": "Volver a iniciar sesión…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ouvrir le lien dans le navigateur cmux" + "value": "Se reconnecter…" } }, "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": "重新登入…" } } } }, - "terminalContextMenu.openLinkInDefaultBrowser": { + "cloudMenu.signingIn": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Open Link in Default Browser" + "value": "Signing In…" } }, "ar": { "stringUnit": { "state": "translated", - "value": "فتح الرابط في المتصفح الافتراضي" + "value": "جارٍ تسجيل الدخول…" } }, "de": { "stringUnit": { "state": "translated", - "value": "Link im Standardbrowser öffnen" + "value": "Anmeldung läuft…" } }, "es": { "stringUnit": { "state": "translated", - "value": "Abrir enlace en el navegador predeterminado" + "value": "Iniciando sesión…" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ouvrir le lien dans le navigateur par défaut" + "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": "正在登入…" } } } }, - "cli.restore.error.routedLauncherNotFound": { + "cloudMenu.upgrade": { "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": "Upgrade to Pro…" } }, - "ja": { + "ar": { "stringUnit": { "state": "translated", - "value": "restore: このセッションは「%1$@ claude proxy」で起動されましたが、このシェルの PATH に「%1$@」がありません。PATH に追加してから、再試行してください。" + "value": "الترقية إلى Pro…" } }, - "zh-Hans": { + "de": { "stringUnit": { "state": "translated", - "value": "restore:此会话是通过“%1$@ claude proxy”启动的,但此 shell 的 PATH 中没有“%1$@”。请将其添加到 PATH,然后重试。" + "value": "Auf Pro upgraden…" } }, - "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": "Mejorar a Pro…" } }, "fr": { "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": "Passer à Pro…" } }, - "ar": { + "ja": { "stringUnit": { "state": "translated", - "value": "restore: بدأت هذه الجلسة باستخدام '%1$@ claude proxy'، لكن '%1$@' غير موجود في PATH في هذه الصدفة. أضفه إلى PATH، ثم أعد المحاولة." + "value": "Pro にアップグレード…" } }, - "es": { + "ko": { "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": "Pro로 업그레이드…" } }, - "zh-Hant": { + "zh-Hans": { "stringUnit": { "state": "translated", - "value": "restore:此工作階段是以「%1$@ claude proxy」啟動的,但此 shell 的 PATH 中沒有「%1$@」。請將其加入 PATH,然後重試。" + "value": "升级到 Pro…" } }, - "ko": { + "zh-Hant": { "stringUnit": { "state": "translated", - "value": "restore: 이 세션은 '%1$@ claude proxy'로 시작되었지만 이 셸의 PATH에 '%1$@'이(가) 없습니다. PATH에 추가한 후 다시 시도하십시오." + "value": "升級至 Pro…" } } } }, - "settings.terminal.textEditingCommandMovesByWord": { + "cloudTree.action.newCloudMachine": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Command Moves by Word" + "value": "New Cloud Machine" } }, "ar": { "stringUnit": { "state": "translated", - "value": "Command ينقل حسب الكلمة" + "value": "جهاز سحابي جديد" } }, "de": { "stringUnit": { "state": "translated", - "value": "Befehlstaste bewegt wortweise" + "value": "Neue Cloud-Maschine" } }, "es": { "stringUnit": { "state": "translated", - "value": "Comando mueve por palabra" + "value": "Nueva máquina en la nube" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Commande déplace par mot" + "value": "Nouvelle machine cloud" } }, "ja": { "stringUnit": { "state": "translated", - "value": "Command で単語単位に移動" + "value": "新しいクラウドマシン" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Command로 단어 단위 이동" + "value": "새 클라우드 머신" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Command 按词移动" + "value": "新建云主机" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Command 依字移動" + "value": "新增雲端機器" } - } - } - }, - "settings.terminal.textEditingCommandMovesByWord.subtitleOn": { - "extractionState": "manual", - "localizations": { - "en": { + }, + "bs": { "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": "Nova cloud mašina" } }, - "ar": { + "da": { "stringUnit": { "state": "translated", - "value": "تنقل مفاتيح الأسهم والحذف مع Command وتحذف حسب الكلمة، مثل Option. وينقل Control مع السهمين الأيسر والأيمن إلى بداية السطر ونهايته." + "value": "Ny cloud-maskine" } }, - "de": { + "it": { "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": "Nuova macchina cloud" } }, - "es": { + "km": { "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": "ម៉ាស៊ីន Cloud ថ្មី" } }, - "fr": { + "nb": { "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": "Ny sky-maskin" } }, - "ja": { + "pl": { "stringUnit": { "state": "translated", - "value": "Command と矢印キー・削除キーで、Option と同じく単語単位に移動・削除します。Control と左右矢印キーで行頭・行末に移動します。" + "value": "Nowa maszyna w chmurze" } }, - "ko": { + "pt-BR": { "stringUnit": { "state": "translated", - "value": "Command 화살표 및 삭제 키가 Option처럼 단어 단위로 이동하고 삭제합니다. Control 왼쪽 및 오른쪽 화살표는 줄의 시작과 끝으로 이동합니다." + "value": "Nova máquina na nuvem" } }, - "zh-Hans": { + "ru": { "stringUnit": { "state": "translated", - "value": "Command 加方向键和删除键按词移动和删除,与 Option 相同。Control 加左右方向键移到行首和行尾。" + "value": "Новая облачная машина" } }, - "zh-Hant": { + "th": { "stringUnit": { "state": "translated", - "value": "Command 加方向鍵與刪除鍵會依字移動與刪除,與 Option 相同。Control 加左右方向鍵會移到行首與行尾。" + "value": "เครื่องคลาวด์ใหม่" + } + }, + "tr": { + "stringUnit": { + "state": "translated", + "value": "Yeni bulut makinesi" + } + }, + "uk": { + "stringUnit": { + "state": "translated", + "value": "Нова хмарна машина" } } } }, - "settings.terminal.textEditingCommandMovesByWord.subtitleOff": { + "terminalContextMenu.copyLink": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Command arrow and delete keys move and delete by line, as in macOS text fields." + "value": "Copy Link" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تنقل مفاتيح الأسهم والحذف مع Command وتحذف حسب السطر، كما في حقول النص في macOS." + "value": "نسخ الرابط" } }, "de": { "stringUnit": { "state": "translated", - "value": "Befehlstaste mit Pfeil- und Löschtasten bewegt und löscht zeilenweise, wie in macOS-Textfeldern." + "value": "Link kopieren" } }, "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": "Copiar enlace" } }, "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": "Copier le lien" } }, "ja": { "stringUnit": { "state": "translated", - "value": "Command と矢印キー・削除キーで、macOS のテキストフィールドと同じく行単位に移動・削除します。" + "value": "リンクをコピー" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Command 화살표 및 삭제 키가 macOS 텍스트 필드처럼 줄 단위로 이동하고 삭제합니다." + "value": "링크 복사" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Command 加方向键和删除键按行移动和删除,与 macOS 文本框相同。" + "value": "复制链接" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Command 加方向鍵與刪除鍵會依行移動與刪除,與 macOS 文字欄位相同。" + "value": "複製連結" } } } }, - "settings.terminal.textEditingGesturesInFullScreenApps": { + "terminalContextMenu.openLinkInCmuxBrowser": { "extractionState": "manual", "localizations": { "en": { "stringUnit": { "state": "translated", - "value": "Text Editing Gestures in Full-Screen Apps" + "value": "Open Link in cmux Browser" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إيماءات تحرير النص في التطبيقات بملء الشاشة" + "value": "فتح الرابط في متصفح cmux" } }, "de": { "stringUnit": { "state": "translated", - "value": "Textbearbeitungsgesten in Vollbild-Apps" + "value": "Link im cmux-Browser öffnen" } }, "es": { "stringUnit": { "state": "translated", - "value": "Gestos de edición de texto en apps a pantalla completa" + "value": "Abrir enlace en el navegador de cmux" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Gestes d’édition de texte dans les apps plein écran" + "value": "Ouvrir le lien dans le navigateur cmux" } }, "ja": { "stringUnit": { "state": "translated", - "value": "フルスクリーンアプリでのテキスト編集ジェスチャー" + "value": "リンクをcmuxブラウザで開く" } }, "ko": { "stringUnit": { "state": "translated", - "value": "전체 화면 앱에서 텍스트 편집 제스처" + "value": "링크를 cmux 브라우저에서 열기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "全屏应用中的文本编辑手势" + "value": "在 cmux 浏览器中打开链接" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "全螢幕 App 中的文字編輯手勢" + "value": "在 cmux 瀏覽器中開啟連結" } } } }, - "settings.terminal.textEditingGesturesInFullScreenApps.subtitle": { + "terminalContextMenu.openLinkInDefaultBrowser": { "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": "Open Link in Default Browser" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تنطبق الإيماءات أيضًا أثناء تشغيل تطبيق بملء الشاشة مثل vim أو less أو tmux، فتظل تعمل في الصدفة داخل tmux أو screen أو zellij." + "value": "فتح الرابط في المتصفح الافتراضي" } }, "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": "Link im Standardbrowser öffnen" } }, "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": "Abrir enlace en el navegador predeterminado" } }, "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": "Ouvrir le lien dans le navigateur par défaut" } }, "ja": { "stringUnit": { "state": "translated", - "value": "vim、less、tmux などのフルスクリーンアプリの実行中もジェスチャーが有効になるため、tmux、screen、zellij 内のシェルでも引き続き使えます。" + "value": "リンクをデフォルトブラウザで開く" } }, "ko": { "stringUnit": { "state": "translated", - "value": "vim, less, tmux 같은 전체 화면 앱이 실행 중일 때도 제스처가 적용되므로 tmux, screen, zellij 안의 셸에서도 계속 작동합니다." + "value": "링크를 기본 브라우저에서 열기" } }, "zh-Hans": { "stringUnit": { "state": "translated", - "value": "在 vim、less 或 tmux 等全屏应用运行时手势也会生效,因此在 tmux、screen 或 zellij 中的 shell 里仍可使用。" + "value": "在默认浏览器中打开链接" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "在 vim、less 或 tmux 等全螢幕 App 執行時手勢也會生效,因此在 tmux、screen 或 zellij 中的 shell 裡仍可使用。" + "value": "在預設瀏覽器中開啟連結" } } } @@ -589775,6 +589027,360 @@ } } }, + "cli.restore.error.routedLauncherNotFound": { + "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." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "restore: このセッションは「%1$@ claude proxy」で起動されましたが、このシェルの PATH に「%1$@」がありません。PATH に追加してから、再試行してください。" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "restore:此会话是通过“%1$@ claude proxy”启动的,但此 shell 的 PATH 中没有“%1$@”。请将其添加到 PATH,然后重试。" + } + }, + "de": { + "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." + } + }, + "fr": { + "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." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "restore: بدأت هذه الجلسة باستخدام '%1$@ claude proxy'، لكن '%1$@' غير موجود في PATH في هذه الصدفة. أضفه إلى PATH، ثم أعد المحاولة." + } + }, + "es": { + "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." + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "restore:此工作階段是以「%1$@ claude proxy」啟動的,但此 shell 的 PATH 中沒有「%1$@」。請將其加入 PATH,然後重試。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "restore: 이 세션은 '%1$@ claude proxy'로 시작되었지만 이 셸의 PATH에 '%1$@'이(가) 없습니다. PATH에 추가한 후 다시 시도하십시오." + } + } + } + }, + "settings.terminal.textEditingCommandMovesByWord": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Command Moves by Word" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "Command ينقل حسب الكلمة" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Befehlstaste bewegt wortweise" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Comando mueve por palabra" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Commande déplace par mot" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Command で単語単位に移動" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "Command로 단어 단위 이동" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "Command 按词移动" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "Command 依字移動" + } + } + } + }, + "settings.terminal.textEditingCommandMovesByWord.subtitleOn": { + "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." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تنقل مفاتيح الأسهم والحذف مع Command وتحذف حسب الكلمة، مثل Option. وينقل Control مع السهمين الأيسر والأيمن إلى بداية السطر ونهايته." + } + }, + "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." + } + }, + "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." + } + }, + "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." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Command と矢印キー・削除キーで、Option と同じく単語単位に移動・削除します。Control と左右矢印キーで行頭・行末に移動します。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "Command 화살표 및 삭제 키가 Option처럼 단어 단위로 이동하고 삭제합니다. Control 왼쪽 및 오른쪽 화살표는 줄의 시작과 끝으로 이동합니다." + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "Command 加方向键和删除键按词移动和删除,与 Option 相同。Control 加左右方向键移到行首和行尾。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "Command 加方向鍵與刪除鍵會依字移動與刪除,與 Option 相同。Control 加左右方向鍵會移到行首與行尾。" + } + } + } + }, + "settings.terminal.textEditingCommandMovesByWord.subtitleOff": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Command arrow and delete keys move and delete by line, as in macOS text fields." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تنقل مفاتيح الأسهم والحذف مع Command وتحذف حسب السطر، كما في حقول النص في macOS." + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Befehlstaste mit Pfeil- und Löschtasten bewegt und löscht zeilenweise, wie in macOS-Textfeldern." + } + }, + "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." + } + }, + "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." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Command と矢印キー・削除キーで、macOS のテキストフィールドと同じく行単位に移動・削除します。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "Command 화살표 및 삭제 키가 macOS 텍스트 필드처럼 줄 단위로 이동하고 삭제합니다." + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "Command 加方向键和删除键按行移动和删除,与 macOS 文本框相同。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "Command 加方向鍵與刪除鍵會依行移動與刪除,與 macOS 文字欄位相同。" + } + } + } + }, + "settings.terminal.textEditingGesturesInFullScreenApps": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Text Editing Gestures in Full-Screen Apps" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "إيماءات تحرير النص في التطبيقات بملء الشاشة" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Textbearbeitungsgesten in Vollbild-Apps" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Gestos de edición de texto en apps a pantalla completa" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Gestes d’édition de texte dans les apps plein écran" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "フルスクリーンアプリでのテキスト編集ジェスチャー" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "전체 화면 앱에서 텍스트 편집 제스처" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "全屏应用中的文本编辑手势" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "全螢幕 App 中的文字編輯手勢" + } + } + } + }, + "settings.terminal.textEditingGesturesInFullScreenApps.subtitle": { + "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." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تنطبق الإيماءات أيضًا أثناء تشغيل تطبيق بملء الشاشة مثل vim أو less أو tmux، فتظل تعمل في الصدفة داخل tmux أو screen أو zellij." + } + }, + "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." + } + }, + "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." + } + }, + "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." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "vim、less、tmux などのフルスクリーンアプリの実行中もジェスチャーが有効になるため、tmux、screen、zellij 内のシェルでも引き続き使えます。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "vim, less, tmux 같은 전체 화면 앱이 실행 중일 때도 제스처가 적용되므로 tmux, screen, zellij 안의 셸에서도 계속 작동합니다." + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "在 vim、less 或 tmux 等全屏应用运行时手势也会生效,因此在 tmux、screen 或 zellij 中的 shell 里仍可使用。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "在 vim、less 或 tmux 等全螢幕 App 執行時手勢也會生效,因此在 tmux、screen 或 zellij 中的 shell 裡仍可使用。" + } + } + } + }, "cli.help.record": { "extractionState": "manual", "localizations": { @@ -592922,6 +592528,950 @@ } } }, + "settings.search.alias.setting.browser.hidden-webview-discard-mode": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload メモリセーバー モード 予算 タイマー 非表示 タブ 破棄 解放" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload Speichersparmodus Modus Budget zeitgesteuert ausgeblendete Tabs verwerfen entladen" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload économiseur de mémoire mode budget minuteur onglets masqués rejeter décharger" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload توفير الذاكرة وضع ميزانية مؤقت علامات تبويب مخفية تجاهل إلغاء تحميل" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload ahorro de memoria modo presupuesto temporizador pestañas ocultas descartar descargar" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload 記憶體節省 方式 預算 計時器 隱藏 標籤頁 捨棄 卸載" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload 内存节省 方式 预算 计时器 隐藏 标签页 丢弃 卸载" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewDiscardMode memory saver budget timer hidden tabs discard unload 메모리 절약 방식 예산 타이머 숨겨진 탭 삭제 언로드" + } + } + } + }, + "settings.search.alias.setting.browser.hidden-webview-memory-budget": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload メモリ 予算 上限 メガバイト 非表示 タブ 破棄 解放" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload Speicher Budget Limit Megabyte ausgeblendete Tabs verwerfen entladen" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload mémoire budget limite mégaoctets onglets masqués rejeter décharger" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload ذاكرة ميزانية حد ميغابايت علامات تبويب مخفية تجاهل إلغاء تحميل" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload memoria presupuesto límite megabytes pestañas ocultas descartar descargar" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload 記憶體 預算 上限 MB 隱藏 標籤頁 捨棄 卸載" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload 内存 预算 上限 MB 隐藏 标签页 丢弃 卸载" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "browser.hiddenWebViewMemoryBudgetMB memory budget limit megabytes hidden tabs discard unload 메모리 예산 한도 메가바이트 숨겨진 탭 삭제 언로드" + } + } + } + }, + "browser.discard.restoring": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Restoring…" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "جارٍ الاستعادة…" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Wird wiederhergestellt…" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Restaurando…" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Restauration…" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "復元中…" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "복원 중…" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "正在恢复…" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "正在還原…" + } + } + } + }, + "settings.browser.hiddenWebViewDiscardMode": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Memory Saver Mode" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "وضع توفير الذاكرة" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Speichersparmodus-Art" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Modo de ahorro de memoria" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Mode de l’économiseur de mémoire" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "メモリセーバーのモード" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "메모리 절약 방식" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "内存节省方式" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "記憶體節省方式" + } + } + } + }, + "settings.browser.hiddenWebViewMemoryBudget": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Hidden Tab Memory Budget" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "ميزانية ذاكرة علامات التبويب المخفية" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Speicherbudget für ausgeblendete Tabs" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Presupuesto de memoria de pestañas ocultas" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Budget mémoire des onglets masqués" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "非表示タブのメモリ予算" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "숨겨진 탭 메모리 예산" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "隐藏标签页内存预算" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "隱藏標籤頁記憶體預算" + } + } + } + }, + "settings.browser.hiddenWebViewDiscardMode.memoryBudget": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Memory Budget" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "ميزانية الذاكرة" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Speicherbudget" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Presupuesto de memoria" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Budget mémoire" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "メモリ予算" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "메모리 예산" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "内存预算" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "記憶體預算" + } + } + } + }, + "settings.browser.hiddenWebViewDiscardMode.subtitle": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Memory Budget frees the tabs hidden longest once hidden tabs use more than the budget. Timer frees every tab hidden longer than the delay." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "يحرر «ميزانية الذاكرة» علامات التبويب المخفية منذ أطول مدة عندما تتجاوز علامات التبويب المخفية الميزانية. ويحرر «المؤقت» كل علامة تبويب مخفية لمدة أطول من التأخير." + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "„Speicherbudget“ gibt die am längsten ausgeblendeten Tabs frei, sobald ausgeblendete Tabs mehr als das Budget belegen. „Zeitgesteuert“ gibt jeden Tab frei, der länger als die Verzögerung ausgeblendet ist." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "«Presupuesto de memoria» libera las pestañas ocultas desde hace más tiempo cuando las pestañas ocultas superan el presupuesto. «Temporizador» libera cada pestaña oculta durante más tiempo que la demora." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "« Budget mémoire » libère les onglets masqués depuis le plus longtemps dès que les onglets masqués dépassent le budget. « Minuteur » libère chaque onglet masqué depuis plus longtemps que le délai." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "「メモリ予算」は、非表示のタブが予算を超えてメモリを使うと、最も長く非表示になっているタブから解放します。「タイマー」は、遅延時間より長く非表示になっているすべてのタブを解放します。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "'메모리 예산'은 숨겨진 탭이 예산보다 많은 메모리를 사용하면 가장 오래 숨겨진 탭부터 해제합니다. '타이머'는 지연 시간보다 오래 숨겨진 모든 탭을 해제합니다." + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "“内存预算”会在隐藏标签页占用的内存超过预算时,释放隐藏最久的标签页。“计时器”会释放隐藏时间超过延迟的每个标签页。" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "「記憶體預算」會在隱藏標籤頁使用的記憶體超過預算時,釋放隱藏最久的標籤頁。「計時器」會釋放隱藏時間超過延遲的每個標籤頁。" + } + } + } + }, + "settings.browser.hiddenWebViewDiscardMode.timer": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Timer" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "المؤقت" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Zeitgesteuert" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Temporizador" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Minuteur" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "タイマー" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "타이머" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "计时器" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "計時器" + } + } + } + }, + "settings.browser.hiddenWebViewMemoryBudget.subtitle": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "How much memory hidden browser tabs may use before cmux frees the ones hidden longest." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "مقدار الذاكرة التي يمكن أن تستخدمها علامات تبويب المتصفح المخفية قبل أن يحرر cmux العلامات المخفية منذ أطول مدة." + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Wie viel Speicher ausgeblendete Browser-Tabs belegen dürfen, bevor cmux die am längsten ausgeblendeten freigibt." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Cuánta memoria pueden usar las pestañas ocultas del navegador antes de que cmux libere las que llevan más tiempo ocultas." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Quantité de mémoire que les onglets de navigateur masqués peuvent utiliser avant que cmux libère ceux masqués depuis le plus longtemps." + } + }, + "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 會釋放隱藏最久的標籤頁。" + } + } + } + }, + "command.browserKeepPageActive.enable.title": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Keep Page Active While Hidden" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Seite im Hintergrund aktiv halten" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Garder la page active lorsqu’elle est masquée" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "إبقاء الصفحة نشطة أثناء إخفائها" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Mantener la página activa mientras está oculta" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "隱藏時保持頁面啟用" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "隐藏时保持页面活跃" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "숨겨져 있을 때 페이지 활성 상태 유지" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "非表示中もページをアクティブに保つ" + } + } + } + }, + "command.browserKeepPageActive.disable.title": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Allow Page to Unload While Hidden" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Entladen der Seite im Hintergrund erlauben" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Autoriser le déchargement de la page lorsqu’elle est masquée" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "السماح بإلغاء تحميل الصفحة أثناء إخفائها" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Permitir descargar la página mientras está oculta" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "允許在隱藏時卸載頁面" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "允许在隐藏时卸载页面" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "숨겨져 있을 때 페이지 언로드 허용" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "非表示中のページのアンロードを許可" + } + } + } + }, + "browser.discard.unloadedMessage": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "This page was unloaded to save memory." + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Diese Seite wurde entladen, um Arbeitsspeicher zu sparen." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Cette page a été déchargée pour économiser de la mémoire." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تم إلغاء تحميل هذه الصفحة لتوفير الذاكرة." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Esta página se descargó para ahorrar memoria." + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "已卸載此網頁以節省記憶體。" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "已卸载此页面以节省内存。" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "메모리를 절약하기 위해 이 페이지를 언로드했습니다." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "メモリを節約するため、このページはアンロードされました。" + } + } + } + }, + "browser.discard.restore": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Restore" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Wiederherstellen" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Restaurer" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "استعادة" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Restaurar" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "還原" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "恢复" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "복원" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "復元" + } + } + } + }, + "settings.browser.autoRestoreUnloadedPages": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Restore Unloaded Pages Automatically" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Entladene Seiten automatisch wiederherstellen" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Restaurer automatiquement les pages déchargées" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "استعادة الصفحات التي أُلغي تحميلها تلقائيًا" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Restaurar automáticamente las páginas descargadas" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "自動還原已卸載的網頁" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "自动恢复已卸载的页面" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "언로드된 페이지 자동 복원" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アンロードされたページを自動的に復元" + } + } + } + }, + "settings.browser.autoRestoreUnloadedPages.subtitle": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Brings back an unloaded page as soon as its tab is shown. When off, the tab shows the page's last snapshot until you click Restore." + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "Stellt eine entladene Seite wieder her, sobald ihr Tab angezeigt wird. Wenn deaktiviert, zeigt der Tab die letzte Momentaufnahme der Seite, bis Sie auf „Wiederherstellen“ klicken." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Restaure une page déchargée dès que son onglet est affiché. Si cette option est désactivée, l’onglet affiche le dernier aperçu de la page jusqu’à ce que vous cliquiez sur Restaurer." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "يستعيد الصفحة التي أُلغي تحميلها بمجرد عرض علامة تبويبها. عند إيقاف هذا الخيار، تعرض علامة التبويب آخر لقطة للصفحة إلى أن تنقر على استعادة." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Recupera una página descargada en cuanto se muestra su pestaña. Si está desactivado, la pestaña muestra la última captura de la página hasta que hagas clic en Restaurar." + } + }, + "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.browser.unloaded-page-auto-restore": { + "extractionState": "manual", + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "browser.autoRestoreUnloadedPages restore reload unloaded discarded hidden tabs placeholder" + } + }, + "de": { + "stringUnit": { + "state": "translated", + "value": "browser.autoRestoreUnloadedPages wiederherstellen neu laden entladen verworfen ausgeblendete Tabs Platzhalter" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "browser.autoRestoreUnloadedPages restaurer recharger déchargée supprimée onglets masqués espace réservé" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "browser.autoRestoreUnloadedPages استعادة إعادة تحميل إلغاء التحميل مهملة علامات التبويب المخفية عنصر نائب" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "browser.autoRestoreUnloadedPages restaurar recargar descargada descartada pestañas ocultas marcador de posición" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "browser.autoRestoreUnloadedPages 還原 重新載入 已卸載 已捨棄 隱藏標籤頁 預留位置" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "browser.autoRestoreUnloadedPages 恢复 重新加载 已卸载 已丢弃 隐藏标签页 占位符" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "browser.autoRestoreUnloadedPages 복원 새로고침 언로드 삭제됨 숨겨진 탭 자리 표시자" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "browser.autoRestoreUnloadedPages 復元 再読み込み アンロード 破棄 非表示のタブ プレースホルダ" + } + } + } + }, "machines.meter.upgrade": { "extractionState": "manual", "localizations": { diff --git a/Sources/TerminalController+AgentSessionsCommands.swift b/Sources/TerminalController+AgentSessionsCommands.swift new file mode 100644 index 000000000000..ddffa4a8c44e --- /dev/null +++ b/Sources/TerminalController+AgentSessionsCommands.swift @@ -0,0 +1,40 @@ +import CmuxMobileHost +import Foundation + +/// Socket v2 surface for the live agent-session registry. +extension TerminalController { + /// `agent.sessions.list` — every chat-capable agent session the Mac + /// currently knows about, in attention order, across all workspaces. + /// + /// This reads the live registry (`AgentChatSessionRegistry`, fed by agent + /// hooks), not the saved hook records on disk that `cmux sessions list` + /// walks. The difference is the point: only the registry carries the + /// current `state`, when that state began, and the conversation title, so + /// only the registry can answer "which agent is waiting on me right now". + /// + /// Deliberately unscoped. The registry can filter by its stored + /// `workspaceID`, but that field goes stale: cmux re-mints workspace ids on + /// every relaunch while surface bindings survive, so a workspace filter + /// keyed on it silently drops sessions created before the last relaunch. + /// `mobile.chat.sessions` solves that by resolving the workspace's live + /// surface ids first; until this verb does the same, it returns everything + /// and lets the caller filter on the `workspace_id` it can see. A + /// cross-workspace list is what this verb is for in any case. + /// + /// Not relay-exported. `RemoteRelayCommandPolicy` denies by default and + /// this method is not on its allowlist, which is correct: the reply spans + /// every workspace on the Mac and carries conversation titles, working + /// directories, transcript paths and pids. That is local state a remote + /// session has no business reading, so the method stays local-only. + func v2AgentSessionsList() -> V2CallResult { + guard let service = agentChatTranscriptService else { + return .err(code: "unavailable", message: Self.chatServiceUnavailableErrorMessage, data: nil) + } + // `AgentSessionListPayload.list` applies the attention ordering, so + // every client of this verb shares one triage order. + return .ok(AgentSessionListPayload().list( + records: service.sessionRecords(workspaceID: nil), + now: Date() + )) + } +} diff --git a/Sources/TerminalController+Capabilities.swift b/Sources/TerminalController+Capabilities.swift index ad6829995dfe..5b9775d9e564 100644 --- a/Sources/TerminalController+Capabilities.swift +++ b/Sources/TerminalController+Capabilities.swift @@ -50,6 +50,7 @@ extension TerminalController { "caffeine.status", "caffeine.set", "comments.list", + "agent.sessions.list", "mobile.host.status", "mobile.attach_ticket.create", "mobile.terminal.set_font", diff --git a/Sources/TerminalController.swift b/Sources/TerminalController.swift index 4b7ca8af4a5e..f5f0ef50f474 100644 --- a/Sources/TerminalController.swift +++ b/Sources/TerminalController.swift @@ -3207,6 +3207,9 @@ class TerminalController { // Diff review comments case "comments.list": return v2Result(id: id, self.v2CommentsList(params: params)) + // Live agent sessions + case "agent.sessions.list": return v2Result(id: id, self.v2AgentSessionsList()) + // App focus (app.focus_override.set/app.simulate_active) handled by ControlCommandCoordinator. // Browser diff --git a/cmux.xcodeproj/project.pbxproj b/cmux.xcodeproj/project.pbxproj index 53441d579dae..aefc0a9c69c1 100644 --- a/cmux.xcodeproj/project.pbxproj +++ b/cmux.xcodeproj/project.pbxproj @@ -672,6 +672,7 @@ A5D41209A1B2C3D4E5F60718 /* CLIRovoDevHookPersistenceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D4120AA1B2C3D4E5F60718 /* CLIRovoDevHookPersistenceTests.swift */; }; AE55B7F6000000000000A002 /* CLISendDraftGuardTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE55B7F6000000000000A001 /* CLISendDraftGuardTests.swift */; }; FE89827F4FAB9F7524A38B41 /* CLISendQueuedOutputTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85A183D9426E08846D029219 /* CLISendQueuedOutputTests.swift */; }; + C117570000000000000000E2 /* CLISessionsLiveTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C117570000000000000000E1 /* CLISessionsLiveTests.swift */; }; B900004AA1B2C3D4E5F60719 /* CLISocketPathResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B900004BA1B2C3D4E5F60719 /* CLISocketPathResolver.swift */; }; B900004CA1B2C3D4E5F60719 /* CLISocketPathResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B900004BA1B2C3D4E5F60719 /* CLISocketPathResolver.swift */; }; C12985000000000000000002 /* CLISocketSentryTelemetry.swift in Sources */ = {isa = PBXBuildFile; fileRef = C12985000000000000000001 /* CLISocketSentryTelemetry.swift */; }; @@ -1234,6 +1235,7 @@ C0DE64950000000000000007 /* CMUXCLI+SessionsListForkDiagnostics.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0DE64950000000000000008 /* CMUXCLI+SessionsListForkDiagnostics.swift */; }; C0DE64960000000000000003 /* CMUXCLI+SessionsListForkStartupInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0DE64960000000000000004 /* CMUXCLI+SessionsListForkStartupInput.swift */; }; C0DE64960000000000000001 /* CMUXCLI+SessionsListProcessArguments.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0DE64960000000000000002 /* CMUXCLI+SessionsListProcessArguments.swift */; }; + C0DE64950000000000000A01 /* CMUXCLI+SessionsLive.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0DE64950000000000000A02 /* CMUXCLI+SessionsLive.swift */; }; C12984000000000000000002 /* CMUXCLI+SIGPIPEProbes.swift in Sources */ = {isa = PBXBuildFile; fileRef = C12984000000000000000001 /* CMUXCLI+SIGPIPEProbes.swift */; }; C51A73000000000000000001 /* CMUXCLI+Simulator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C51A73000000000000000002 /* CMUXCLI+Simulator.swift */; }; C51A73000000000000000005 /* CMUXCLI+SimulatorAgent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C51A73000000000000000006 /* CMUXCLI+SimulatorAgent.swift */; }; @@ -3573,6 +3575,7 @@ D35A00000000000000000014 /* TerminalController+AgentPromptDelivery.swift in Sources */ = {isa = PBXBuildFile; fileRef = D35B00000000000000000014 /* TerminalController+AgentPromptDelivery.swift */; }; 110434021104340211043402 /* TerminalController+AgentRestoreAdmission.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110434011104340111043401 /* TerminalController+AgentRestoreAdmission.swift */; }; 1C2E31B0392EDA1F21B150A4 /* TerminalController+AgentRestoreRecovery.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BC27608B94D9C9D703147F2 /* TerminalController+AgentRestoreRecovery.swift */; }; + CC0033E15A1B2C3D4E5F0A01 /* TerminalController+AgentSessionsCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0033E15A1B2C3D4E5F0A02 /* TerminalController+AgentSessionsCommands.swift */; }; 2AEE214AD8A145C2BEA7AEE3 /* TerminalController+AgentTitle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCD6F86F7D943F79609DF83 /* TerminalController+AgentTitle.swift */; }; 13019E000000000000000002 /* TerminalController+AuthTeam.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13019E000000000000000001 /* TerminalController+AuthTeam.swift */; }; A106490C0000000000000001 /* TerminalController+Automation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A106490B0000000000000001 /* TerminalController+Automation.swift */; }; @@ -5107,6 +5110,7 @@ A5D4120AA1B2C3D4E5F60718 /* CLIRovoDevHookPersistenceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CLIRovoDevHookPersistenceTests.swift; sourceTree = "<group>"; }; AE55B7F6000000000000A001 /* CLISendDraftGuardTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CLISendDraftGuardTests.swift; sourceTree = "<group>"; }; 85A183D9426E08846D029219 /* CLISendQueuedOutputTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CLISendQueuedOutputTests.swift; sourceTree = "<group>"; }; + C117570000000000000000E1 /* CLISessionsLiveTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CLISessionsLiveTests.swift; sourceTree = "<group>"; }; B900004BA1B2C3D4E5F60719 /* CLISocketPathResolver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CLISocketPathResolver.swift; sourceTree = "<group>"; }; C12985000000000000000001 /* CLISocketSentryTelemetry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CLISocketSentryTelemetry.swift; sourceTree = "<group>"; }; D0F102000000000000000003 /* CLISSHPTYAttachBridgeServer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CLISSHPTYAttachBridgeServer.swift; sourceTree = "<group>"; }; @@ -5644,6 +5648,7 @@ C0DE64950000000000000008 /* CMUXCLI+SessionsListForkDiagnostics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CMUXCLI+SessionsListForkDiagnostics.swift"; sourceTree = "<group>"; }; C0DE64960000000000000004 /* CMUXCLI+SessionsListForkStartupInput.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CMUXCLI+SessionsListForkStartupInput.swift"; sourceTree = "<group>"; }; C0DE64960000000000000002 /* CMUXCLI+SessionsListProcessArguments.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CMUXCLI+SessionsListProcessArguments.swift"; sourceTree = "<group>"; }; + C0DE64950000000000000A02 /* CMUXCLI+SessionsLive.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CMUXCLI+SessionsLive.swift"; sourceTree = "<group>"; }; C12984000000000000000001 /* CMUXCLI+SIGPIPEProbes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CMUXCLI+SIGPIPEProbes.swift"; sourceTree = "<group>"; }; C51A73000000000000000002 /* CMUXCLI+Simulator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CMUXCLI+Simulator.swift"; sourceTree = "<group>"; }; C51A73000000000000000006 /* CMUXCLI+SimulatorAgent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CMUXCLI+SimulatorAgent.swift"; sourceTree = "<group>"; }; @@ -7850,6 +7855,7 @@ D35B00000000000000000014 /* TerminalController+AgentPromptDelivery.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TerminalController+AgentPromptDelivery.swift"; sourceTree = "<group>"; }; 110434011104340111043401 /* TerminalController+AgentRestoreAdmission.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TerminalController+AgentRestoreAdmission.swift"; sourceTree = "<group>"; }; 8BC27608B94D9C9D703147F2 /* TerminalController+AgentRestoreRecovery.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TerminalController+AgentRestoreRecovery.swift"; sourceTree = "<group>"; }; + CC0033E15A1B2C3D4E5F0A02 /* TerminalController+AgentSessionsCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TerminalController+AgentSessionsCommands.swift"; sourceTree = "<group>"; }; 0CCD6F86F7D943F79609DF83 /* TerminalController+AgentTitle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TerminalController+AgentTitle.swift"; sourceTree = "<group>"; }; 13019E000000000000000001 /* TerminalController+AuthTeam.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TerminalController+AuthTeam.swift"; sourceTree = "<group>"; }; A106490B0000000000000001 /* TerminalController+Automation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TerminalController+Automation.swift"; sourceTree = "<group>"; }; @@ -8834,6 +8840,7 @@ C11757000000000000000016 /* CLIHookNoResponseTests.swift */, C11757000000000000000017 /* CLIOmpSupersededCleanupTests.swift */, C11757000000000000000018 /* CLIRelayQueuedHookRegressionTests.swift */, + C117570000000000000000E1 /* CLISessionsLiveTests.swift */, C117570000000000000000C0 /* ClaudeHookSessionStoreRecoveryTests.swift */, C11757000000000000000070 /* CLIRestoreSessionTransferTests.swift */, C11757000000000000000019 /* CLISSHPTYResizeInputTests.swift */, @@ -11493,6 +11500,7 @@ FEED0000000000000000F003 /* Feed */, C57B00040000000000000002 /* TerminalController+CustomSidebarCommands.swift */, CC0033E15A1B2C3D4E5F0004 /* TerminalController+CommentsCommands.swift */, + CC0033E15A1B2C3D4E5F0A02 /* TerminalController+AgentSessionsCommands.swift */, 8054A0040000000000000004 /* TerminalController+BrowserAutomationRecovery.swift */, C57B00050000000000000002 /* CmuxExtensionSidebarSelection+CustomSidebarName.swift */, 59065015952E1B5BE5E23519 /* Mobile */, @@ -11856,6 +11864,7 @@ A10240070000000000000001 /* OwnedProcessSupervisor.swift */, A10240090000000000000001 /* CodexTeamsPOSIXSupport.swift */, C0DE64950000000000000002 /* CMUXCLI+SessionsList.swift */, + C0DE64950000000000000A02 /* CMUXCLI+SessionsLive.swift */, C0DE5E5500000000000000A2 /* CMUXCLI+SessionMove.swift */, C0DE64960000000000000006 /* CMUXCLI+SessionsListClaudeWorkflow.swift */, C0DE64950000000000000008 /* CMUXCLI+SessionsListForkDiagnostics.swift */, @@ -13841,6 +13850,7 @@ C11757000000000000000031 /* CLIRelayQueuedHookRegressionTests.swift in Sources */, C11757000000000000000071 /* CLIRestoreSessionTransferTests.swift in Sources */, AE55B7F6000000000000A002 /* CLISendDraftGuardTests.swift in Sources */, + C117570000000000000000E2 /* CLISessionsLiveTests.swift in Sources */, C11757000000000000000032 /* CLISSHPTYResizeInputTests.swift in Sources */, C11757000000000000000033 /* CLIStdioSIGPIPERegressionTests.swift in Sources */, C11757000000000000000045 /* CLITestBundleAnchor.swift in Sources */, @@ -15859,6 +15869,7 @@ D35A00000000000000000014 /* TerminalController+AgentPromptDelivery.swift in Sources */, 110434021104340211043402 /* TerminalController+AgentRestoreAdmission.swift in Sources */, 1C2E31B0392EDA1F21B150A4 /* TerminalController+AgentRestoreRecovery.swift in Sources */, + CC0033E15A1B2C3D4E5F0A01 /* TerminalController+AgentSessionsCommands.swift in Sources */, 2AEE214AD8A145C2BEA7AEE3 /* TerminalController+AgentTitle.swift in Sources */, 13019E000000000000000002 /* TerminalController+AuthTeam.swift in Sources */, A106490C0000000000000001 /* TerminalController+Automation.swift in Sources */, @@ -16596,6 +16607,7 @@ C0DE64950000000000000007 /* CMUXCLI+SessionsListForkDiagnostics.swift in Sources */, C0DE64960000000000000003 /* CMUXCLI+SessionsListForkStartupInput.swift in Sources */, C0DE64960000000000000001 /* CMUXCLI+SessionsListProcessArguments.swift in Sources */, + C0DE64950000000000000A01 /* CMUXCLI+SessionsLive.swift in Sources */, C12984000000000000000002 /* CMUXCLI+SIGPIPEProbes.swift in Sources */, C51A73000000000000000001 /* CMUXCLI+Simulator.swift in Sources */, C51A73000000000000000005 /* CMUXCLI+SimulatorAgent.swift in Sources */, diff --git a/cmuxCLITests/CLISessionsLiveTests.swift b/cmuxCLITests/CLISessionsLiveTests.swift new file mode 100644 index 000000000000..3869d0e87cdf --- /dev/null +++ b/cmuxCLITests/CLISessionsLiveTests.swift @@ -0,0 +1,569 @@ +import Darwin +import Foundation +import Testing + +/// Covers `cmux sessions live` end to end against a stub control socket. +/// +/// The ordering and payload logic is unit-tested in `CmuxMobileHostTests`; what +/// only an end-to-end run can prove is that the CLI asks for the method the app +/// actually registers, preserves the order the app sent, and filters on the +/// state names that appear on the wire. A typo in any of those three would pass +/// every unit test and ship a broken command. +final class CLISessionsLiveTests { + private struct ProcessRunResult { + let status: Int32 + let stdout: String + let stderr: String + let timedOut: Bool + } + + private final class MockSocketServerState: @unchecked Sendable { + private let lock = NSLock() + private var storage: [String] = [] + + var commands: [String] { + lock.lock() + defer { lock.unlock() } + return storage + } + + func append(_ command: String) { + lock.lock() + storage.append(command) + lock.unlock() + } + } + + /// Three sessions, already in the attention order the app applies: a + /// blocked one, a running one, then an idle one. + private static func stubSessions() -> [[String: Any]] { + [ + [ + "session_id": "sess-needs", + "agent": "claude", + "agent_name": "Claude", + "state": "needs_input", + "state_confirmed": true, + "attention_rank": 0, + "needs_attention": true, + "state_since": "2026-09-28T09:00:00Z", + "state_age_seconds": 720.0, + "title": "Fix the parser", + "cwd": "/Users/dev/Projects/cmux", + "last_activity_at": "2026-09-28T09:00:00Z", + "children_running": 0, + "version": 4, + ], + [ + "session_id": "sess-work", + "agent": "codex", + "agent_name": "Codex", + "state": "working", + "state_confirmed": true, + "attention_rank": 1, + "needs_attention": false, + "state_since": "2026-09-28T09:09:00Z", + "state_age_seconds": 180.0, + "title": "Add the usage dashboard", + "cwd": "/Users/dev/Projects/notes", + "last_activity_at": "2026-09-28T09:11:00Z", + "children_running": 2, + "version": 9, + ], + [ + "session_id": "sess-idle", + "agent": "claude", + "agent_name": "Claude", + "state": "idle", + "state_confirmed": false, + "attention_rank": 2, + "needs_attention": false, + "last_activity_at": "2026-09-28T09:10:00Z", + "children_running": 0, + "version": 2, + ], + ] + } + + private static func stubReply() -> [String: Any] { + [ + "sessions": stubSessions(), + "count": 3, + "state_counts": ["needs_input": 1, "working": 1, "idle": 1, "ended": 0, "total": 3], + "generated_at": "2026-09-28T09:12:00Z", + ] + } + + @Test func sessionsLiveRequestsTheRegistryAndKeepsItsOrder() throws { + let cliPath = try bundledCLIPath() + let socketPath = makeSocketPath("sessions-live") + let listenerFD = try bindUnixSocket(at: socketPath) + let state = MockSocketServerState() + defer { + Darwin.close(listenerFD) + unlink(socketPath) + } + + let serverHandled = startMockServer(listenerFD: listenerFD, state: state) { line in + guard let payload = Self.v2Payload(from: line), + let id = payload["id"] as? String, + let method = payload["method"] as? String else { + return Self.v2Response(id: "unknown", ok: false, error: ["code": "unexpected"]) + } + guard method == "agent.sessions.list" else { + return Self.v2Response(id: id, ok: false, error: ["code": "unexpected", "message": method]) + } + return Self.v2Response(id: id, ok: true, result: Self.stubReply()) + } + + let result = runCLI(cliPath: cliPath, socketPath: socketPath, arguments: ["sessions", "live"]) + + #expect(serverHandled.wait(timeout: .now() + 5) == .success) + #expect(!result.timedOut, Comment(rawValue: result.stderr)) + #expect(result.status == 0, Comment(rawValue: result.stderr)) + + // The CLI must ask for exactly the method the app registers. + #expect(state.commands.compactMap { Self.v2Payload(from: $0)?["method"] as? String } == ["agent.sessions.list"]) + + let lines = result.stdout.split(separator: "\n", omittingEmptySubsequences: false).map(String.init) + #expect(lines.first == "sessions=3 needs_input=1 working=1") + + // Order is the app's, not re-derived here: the CLI must not reshuffle it. + let needsIndex = try #require(lines.firstIndex { $0.contains("sess-needs") }) + let workIndex = try #require(lines.firstIndex { $0.contains("sess-work") }) + let idleIndex = try #require(lines.firstIndex { $0.contains("sess-idle") }) + #expect(needsIndex < workIndex) + #expect(workIndex < idleIndex) + + #expect(result.stdout.contains("needs_input")) + #expect(result.stdout.contains("12m")) + #expect(result.stdout.contains("Fix the parser")) + #expect(result.stdout.contains("cwd=/Users/dev/Projects/cmux")) + #expect(result.stdout.contains("subagents=2")) + // The idle session was discovered without a hook confirming idleness. + #expect(result.stdout.contains("state=unconfirmed")) + } + + @Test func needsMeFiltersToBlockedSessionsAndRecountsThem() throws { + let cliPath = try bundledCLIPath() + let socketPath = makeSocketPath("sessions-needsme") + let listenerFD = try bindUnixSocket(at: socketPath) + let state = MockSocketServerState() + defer { + Darwin.close(listenerFD) + unlink(socketPath) + } + + let serverHandled = startMockServer(listenerFD: listenerFD, state: state) { line in + guard let payload = Self.v2Payload(from: line), + let id = payload["id"] as? String, + payload["method"] as? String == "agent.sessions.list" else { + return Self.v2Response(id: "unknown", ok: false, error: ["code": "unexpected"]) + } + return Self.v2Response(id: id, ok: true, result: Self.stubReply()) + } + + let result = runCLI( + cliPath: cliPath, + socketPath: socketPath, + arguments: ["sessions", "live", "--needs-me", "--json"] + ) + + #expect(serverHandled.wait(timeout: .now() + 5) == .success) + #expect(!result.timedOut, Comment(rawValue: result.stderr)) + #expect(result.status == 0, Comment(rawValue: result.stderr)) + + let json = try #require(Self.v2Payload(from: result.stdout)) + let sessions = try #require(json["sessions"] as? [[String: Any]]) + #expect(sessions.count == 1) + #expect(sessions.first?["session_id"] as? String == "sess-needs") + #expect(json["count"] as? Int == 1) + // Counts describe the matched set, not the unfiltered reply, and both + // sizes stay visible so the filter is not silently lossy. + let counts = try #require(json["state_counts"] as? [String: Int]) + #expect(counts["needs_input"] == 1) + #expect(counts["working"] == 0) + #expect(counts["total"] == 1) + #expect(json["total_matches"] as? Int == 1) + #expect(json["total_live"] as? Int == 3) + #expect(json["limit"] as? Int == 100) + } + + @Test func unknownStateIsRejectedWithoutContactingTheSocket() throws { + let cliPath = try bundledCLIPath() + let socketPath = makeSocketPath("sessions-badstate") + let listenerFD = try bindUnixSocket(at: socketPath) + let state = MockSocketServerState() + defer { + Darwin.close(listenerFD) + unlink(socketPath) + } + + // A live server is started so that a request WOULD be recorded; the + // assertion below is only meaningful because something was listening. + // Its semaphore is deliberately not awaited: nothing should connect, and + // closing the listener in `defer` unblocks the accept. + _ = startMockServer(listenerFD: listenerFD, state: state) { line in + guard let id = Self.v2Payload(from: line)?["id"] as? String else { + return Self.v2Response(id: "unknown", ok: false, error: ["code": "unexpected"]) + } + return Self.v2Response(id: id, ok: true, result: Self.stubReply()) + } + + let result = runCLI( + cliPath: cliPath, + socketPath: socketPath, + arguments: ["sessions", "live", "--state", "blocked"] + ) + + #expect(!result.timedOut, Comment(rawValue: result.stderr)) + #expect(result.status != 0) + #expect(result.stderr.contains("unknown state")) + // Nothing was sent, so a typo never reaches the app. With the socket + // path forced through the environment, this also means argument + // validation runs before the connection; on the default path the CLI + // reports "not running" first, which is its own correct answer. + #expect(state.commands.isEmpty) + } + + @Test func flagShapedFilterValueIsRejectedInsteadOfFilteringOnIt() throws { + let cliPath = try bundledCLIPath() + let socketPath = makeSocketPath("sessions-flagvalue") + let listenerFD = try bindUnixSocket(at: socketPath) + let state = MockSocketServerState() + defer { + Darwin.close(listenerFD) + unlink(socketPath) + } + + _ = startMockServer(listenerFD: listenerFD, state: state) { line in + guard let id = Self.v2Payload(from: line)?["id"] as? String else { + return Self.v2Response(id: "unknown", ok: false, error: ["code": "unexpected"]) + } + return Self.v2Response(id: id, ok: true, result: Self.stubReply()) + } + + // Taking the next token blindly would read "--needs-me" as the agent + // name: the filter matches nothing, and the caller who asked what is + // waiting on them is told nothing is. + let result = runCLI( + cliPath: cliPath, + socketPath: socketPath, + arguments: ["sessions", "live", "--agent", "--needs-me"] + ) + + #expect(!result.timedOut, Comment(rawValue: result.stderr)) + #expect(result.status != 0) + #expect(result.stderr.contains("another flag")) + #expect(!result.stdout.contains("No live agent sessions matched.")) + #expect(state.commands.isEmpty) + } + + @Test func valueTakingFlagAtTheEndOfArgvSaysItNeedsAValue() throws { + let cliPath = try bundledCLIPath() + let socketPath = makeSocketPath("sessions-novalue") + let listenerFD = try bindUnixSocket(at: socketPath) + let state = MockSocketServerState() + defer { + Darwin.close(listenerFD) + unlink(socketPath) + } + + _ = startMockServer(listenerFD: listenerFD, state: state) { line in + guard let id = Self.v2Payload(from: line)?["id"] as? String else { + return Self.v2Response(id: "unknown", ok: false, error: ["code": "unexpected"]) + } + return Self.v2Response(id: id, ok: true, result: Self.stubReply()) + } + + let result = runCLI( + cliPath: cliPath, + socketPath: socketPath, + arguments: ["sessions", "live", "--limit"] + ) + + #expect(!result.timedOut, Comment(rawValue: result.stderr)) + #expect(result.status != 0) + #expect(result.stderr.contains("requires a value")) + // Not "unknown flag '--limit'", which is what a trailing-flag bug looks + // like from the outside. + #expect(!result.stderr.contains("unknown flag")) + #expect(state.commands.isEmpty) + } + + @Test func unknownAgentIsRejectedRatherThanMatchingNothing() throws { + let cliPath = try bundledCLIPath() + let socketPath = makeSocketPath("sessions-badagent") + let listenerFD = try bindUnixSocket(at: socketPath) + let state = MockSocketServerState() + defer { + Darwin.close(listenerFD) + unlink(socketPath) + } + + _ = startMockServer(listenerFD: listenerFD, state: state) { line in + guard let id = Self.v2Payload(from: line)?["id"] as? String else { + return Self.v2Response(id: "unknown", ok: false, error: ["code": "unexpected"]) + } + return Self.v2Response(id: id, ok: true, result: Self.stubReply()) + } + + let result = runCLI( + cliPath: cliPath, + socketPath: socketPath, + arguments: ["sessions", "live", "--agent", "clyde"] + ) + + #expect(!result.timedOut, Comment(rawValue: result.stderr)) + #expect(result.status != 0) + #expect(result.stderr.contains("unknown agent")) + #expect(state.commands.isEmpty) + } + + @Test func agentAliasResolvesToTheWireAgentName() throws { + let cliPath = try bundledCLIPath() + let socketPath = makeSocketPath("sessions-alias") + let listenerFD = try bindUnixSocket(at: socketPath) + let state = MockSocketServerState() + defer { + Darwin.close(listenerFD) + unlink(socketPath) + } + + let serverHandled = startMockServer(listenerFD: listenerFD, state: state) { line in + guard let payload = Self.v2Payload(from: line), + let id = payload["id"] as? String, + payload["method"] as? String == "agent.sessions.list" else { + return Self.v2Response(id: "unknown", ok: false, error: ["code": "unexpected"]) + } + return Self.v2Response(id: id, ok: true, result: Self.stubReply()) + } + + // `sessions list` has always taken this spelling. The wire name is + // "claude", so accepting only that would make the two subcommands + // disagree about the same flag. + let result = runCLI( + cliPath: cliPath, + socketPath: socketPath, + arguments: ["sessions", "live", "--agent", "claude-code", "--json"] + ) + + #expect(serverHandled.wait(timeout: .now() + 5) == .success) + #expect(!result.timedOut, Comment(rawValue: result.stderr)) + #expect(result.status == 0, Comment(rawValue: result.stderr)) + + let json = try #require(Self.v2Payload(from: result.stdout)) + let sessions = try #require(json["sessions"] as? [[String: Any]]) + #expect(sessions.count == 2) + #expect(sessions.allSatisfy { ($0["agent"] as? String) == "claude" }) + #expect(json["total_matches"] as? Int == 2) + #expect(json["total_live"] as? Int == 3) + } + + @Test func limitTruncatesRowsAndSaysHowManyAreHidden() throws { + let cliPath = try bundledCLIPath() + let socketPath = makeSocketPath("sessions-limit") + let listenerFD = try bindUnixSocket(at: socketPath) + let state = MockSocketServerState() + defer { + Darwin.close(listenerFD) + unlink(socketPath) + } + + let serverHandled = startMockServer(listenerFD: listenerFD, state: state) { line in + guard let payload = Self.v2Payload(from: line), + let id = payload["id"] as? String, + payload["method"] as? String == "agent.sessions.list" else { + return Self.v2Response(id: "unknown", ok: false, error: ["code": "unexpected"]) + } + return Self.v2Response(id: id, ok: true, result: Self.stubReply()) + } + + let result = runCLI( + cliPath: cliPath, + socketPath: socketPath, + arguments: ["sessions", "live", "--limit", "1"] + ) + + #expect(serverHandled.wait(timeout: .now() + 5) == .success) + #expect(!result.timedOut, Comment(rawValue: result.stderr)) + #expect(result.status == 0, Comment(rawValue: result.stderr)) + + // The summary counts every match, so a truncated list never reads as + // the whole world, and the footer says exactly what was withheld. + let lines = result.stdout.split(separator: "\n", omittingEmptySubsequences: false).map(String.init) + #expect(lines.first == "sessions=3 needs_input=1 working=1") + #expect(result.stdout.contains("sess-needs")) + #expect(!result.stdout.contains("sess-work")) + #expect(!result.stdout.contains("sess-idle")) + #expect(result.stdout.contains("... 2 more.")) + } + + // MARK: - Harness + + private func bundledCLIPath() throws -> String { + try BundledCLITestSupport.bundledCLIPath(for: Self.self) + } + + private func runCLI( + cliPath: String, + socketPath: String, + arguments: [String], + environmentOverrides: [String: String] = [:] + ) -> ProcessRunResult { + var environment = ProcessInfo.processInfo.environment + environment["CMUX_SOCKET_PATH"] = socketPath + environment["CMUX_CLI_SENTRY_DISABLED"] = "1" + environment["CMUX_CLAUDE_HOOK_SENTRY_DISABLED"] = "1" + environmentOverrides.forEach { environment[$0.key] = $0.value } + return runProcess(executablePath: cliPath, arguments: arguments, environment: environment, timeout: 15) + } + + private func runProcess( + executablePath: String, + arguments: [String], + environment: [String: String], + timeout: TimeInterval + ) -> ProcessRunResult { + let process = Process() + let stdoutPipe = Pipe() + let stderrPipe = Pipe() + process.executableURL = URL(fileURLWithPath: executablePath) + process.arguments = arguments + process.environment = environment + process.standardInput = FileHandle.nullDevice + process.standardOutput = stdoutPipe + process.standardError = stderrPipe + + do { + try process.run() + } catch { + return ProcessRunResult(status: -1, stdout: "", stderr: String(describing: error), timedOut: false) + } + + let exitSignal = DispatchSemaphore(value: 0) + process.terminationHandler = { _ in exitSignal.signal() } + + let timedOut = exitSignal.wait(timeout: .now() + timeout) == .timedOut + if timedOut { + process.terminate() + if exitSignal.wait(timeout: .now() + 1) == .timedOut, process.isRunning { + kill(process.processIdentifier, SIGKILL) + _ = exitSignal.wait(timeout: .now() + 1) + } + } + + let stdout = String(data: stdoutPipe.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) ?? "" + let stderr = String(data: stderrPipe.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) ?? "" + return ProcessRunResult( + status: timedOut ? 124 : process.terminationStatus, + stdout: stdout, + stderr: stderr, + timedOut: timedOut + ) + } + + private func bindUnixSocket(at path: String) throws -> Int32 { + unlink(path) + + let fd = socket(AF_UNIX, SOCK_STREAM, 0) + guard fd >= 0 else { + throw NSError(domain: NSPOSIXErrorDomain, code: Int(errno)) + } + + var addr = sockaddr_un() + addr.sun_family = sa_family_t(AF_UNIX) + let maxPathLength = MemoryLayout.size(ofValue: addr.sun_path) + path.withCString { ptr in + withUnsafeMutablePointer(to: &addr.sun_path) { pathPtr in + let pathBuf = UnsafeMutableRawPointer(pathPtr).assumingMemoryBound(to: CChar.self) + strncpy(pathBuf, ptr, maxPathLength - 1) + } + } + + let bindResult = withUnsafePointer(to: &addr) { ptr in + ptr.withMemoryRebound(to: sockaddr.self, capacity: 1) { sockaddrPtr in + Darwin.bind(fd, sockaddrPtr, socklen_t(MemoryLayout<sockaddr_un>.size)) + } + } + guard bindResult == 0, Darwin.listen(fd, 1) == 0 else { + let code = Int(errno) + Darwin.close(fd) + throw NSError(domain: NSPOSIXErrorDomain, code: code) + } + + return fd + } + + private func makeSocketPath(_ name: String) -> String { + let shortID = UUID().uuidString.replacingOccurrences(of: "-", with: "").prefix(8) + return URL(fileURLWithPath: NSTemporaryDirectory()) + .appendingPathComponent("cli-\(name.prefix(6))-\(shortID).sock") + .path + } + + private func startMockServer( + listenerFD: Int32, + state: MockSocketServerState, + handler: @escaping @Sendable (String) -> String + ) -> DispatchSemaphore { + let handled = DispatchSemaphore(value: 0) + DispatchQueue.global(qos: .userInitiated).async { + var clientAddr = sockaddr_un() + var clientAddrLen = socklen_t(MemoryLayout<sockaddr_un>.size) + let clientFD = withUnsafeMutablePointer(to: &clientAddr) { ptr in + ptr.withMemoryRebound(to: sockaddr.self, capacity: 1) { sockaddrPtr in + Darwin.accept(listenerFD, sockaddrPtr, &clientAddrLen) + } + } + guard clientFD >= 0 else { + handled.signal() + return + } + defer { + Darwin.close(clientFD) + handled.signal() + } + guard ignoreSIGPIPE(onAcceptedFixtureSocket: clientFD) else { return } + + var pending = Data() + var buffer = [UInt8](repeating: 0, count: 4096) + while true { + let count = Darwin.read(clientFD, &buffer, buffer.count) + if count < 0 { + if errno == EINTR { continue } + return + } + if count == 0 { return } + pending.append(buffer, count: count) + + while let newlineRange = pending.firstRange(of: Data([0x0A])) { + let lineData = pending.subdata(in: 0..<newlineRange.lowerBound) + pending.removeSubrange(0...newlineRange.lowerBound) + guard let line = String(data: lineData, encoding: .utf8) else { continue } + state.append(line) + guard writeAllToFixtureSocket(handler(line) + "\n", fd: clientFD) else { return } + } + } + } + return handled + } + + private static func v2Payload(from line: String) -> [String: Any]? { + guard let data = line.data(using: .utf8) else { return nil } + return try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] + } + + private static func v2Response( + id: String, + ok: Bool, + result: [String: Any]? = nil, + error: [String: Any]? = nil + ) -> String { + var payload: [String: Any] = ["id": id, "ok": ok] + if let result { payload["result"] = result } + if let error { payload["error"] = error } + let data = try? JSONSerialization.data(withJSONObject: payload, options: []) + return String(data: data ?? Data("{}".utf8), encoding: .utf8) ?? "{}" + } +} diff --git a/docs/cli-contract.md b/docs/cli-contract.md index c43746e3a2be..d1de4d9c5398 100644 --- a/docs/cli-contract.md +++ b/docs/cli-contract.md @@ -99,6 +99,7 @@ Environment: | `glaeda` | Emit one caller-neutral `glaeda-external-execution-request/v1` and validate/correlate one bounded Glaeda receipt. `request` and `observe` are local data operations and do not require a running cmux socket. They carry exact Git source plus caller correlation only; CMUX workspace/UI and provider placement stay outside the request. | | `current` | Print bounded current-work facts (`--limit <1...200>`, `--json`). Read-only: it does not refresh machines, read transcripts, or change any work item. See [Glaeda execution exchange and current-work ownership](#glaeda-execution-exchange-and-current-work-ownership). | | `sessions [list]` | List saved agent session records without requiring a running cmux socket. Filters: `--agent <name>`, `--session <id>`, `--workspace <id>`, `--surface <id>`, `--cwd <text>`. Overrides: `--state-dir <path>`, `--codex-home <path>`. Text output defaults to 100 results; `--limit <n>` takes a positive integer and `--all` removes the limit. Supports `--json`. Records also report metadata for matching cmux-owned scratch roots (`scratch_owned`, byte count, file count, and root path); unmarked directories are never scanned. | +| `sessions live` | List the running app's live agent sessions across all workspaces, ordered for triage. Requires a running cmux socket and never launches one. Filters: `--needs-me` (only sessions waiting on a human), `--state <needs-input\|working\|idle\|ended>`, `--agent <name>`. Rejects a flag-shaped filter value (`--agent --needs-me`) rather than filtering on it. Shows 100 rows by default; `--limit <n>` takes a positive integer and `--all` removes the limit. A truncated text list ends with `... N more.`, and `--json` reports `total_matches`, `total_live` and the effective `limit` beside the rows, so truncation is never silent. `state_counts` describes every match, not only the rows shown. Backed by the socket v2 method `agent.sessions.list`. Distinct from `sessions [list]`, which reads saved records off disk and knows no live state. | | `session-debug` | Alias for `sessions debug`, kept for older debug scripts. Works without a socket. | | `session move <session-id> --to <ssh-destination\|local>` | Move a stopped Claude Code session between this Mac and an SSH host and resume it there. Refuses while a Claude process for the session runs on either side. Carries the cwd's git checkout (a snapshot commit of the working tree on top of HEAD at `refs/agent-move/<id>`, HEAD on the same branch when it is safe, plus modified, deleted and untracked non-ignored files; adds a worktree when the repository exists on the destination but the path does not; refuses when the destination has its own uncommitted changes or its branch has commits HEAD lacks), then the transcript, its session directory, file history, and the project memory directory (merged both ways, newest wins, nothing deleted). When the destination home is not the same directory at the same path, paths under the home are mapped and the project is re-slugged. Opens a `cmux ssh` workspace (or a local workspace for `--to local`) that resumes the session with its recorded launcher (on a host, cmux-owned launchers such as `claude-teams` fall back to the plain agent command), and clears the old local surface's resume binding. `--from` defaults to where the last move put the session (`~/.cmuxterm/agent-moves/<id>.json`). Flags: `--name`, `--no-code`, `--port`, `--identity`, `--ssh-option`, `--no-focus`. | | `auth`, `login`, `logout` | `auth <status\|login\|logout\|team>`, with `status` the default; `team` carries `list`, `use`, and `create`. Sign-in and sign-out run through the app, and `login` waits for the browser round trip. `login` and `logout` are top-level aliases for `auth login` and `auth logout`. | @@ -402,6 +403,37 @@ object with: | `stores` | Per-agent hook store files that were read: `agent`, `path`, `exists`, `session_count`. | | `sessions` | The limited result set of session records. | +`cmux sessions live` asks the running app instead, because only the live +registry knows a session's current state, when that state began, and its +conversation title. Sessions arrive in triage order: waiting on a human first +(longest wait first), then running (longest first), then idle and ended (most +recent activity first). Ties break on session id, so the order is stable across +calls. Text output opens with one `key=value` summary line over every match, +`sessions=<n> needs_input=<n> working=<n>`, so a truncated list still says how +much work is queued. Its keys are the canonical row-state names (`needs_input`); +`--state` accepts the hyphenated spelling `needs-input` for the same state. +`--json` prints one object with: + +| Field | Contract | +| --- | --- | +| `sessions` | The filtered result set, at most `limit` rows, in the order described above. | +| `count` | Number of sessions in `sessions`. | +| `total_matches` | Matching sessions counted before `--limit` is applied. | +| `total_live` | Sessions the app reported before filtering. | +| `limit` | Applied row limit, or `null` when `--all` removes it. | +| `state_counts` | Per-state totals over every match, not only the rows shown: `needs_input`, `working`, `idle`, `ended`, `total`. A state name this CLI does not know is counted in `total` only, so the four buckets can sum to less. | +| `generated_at` | When the app built the reply. | + +Each session object carries `session_id`, `agent`, `agent_name`, `state`, +`attention_rank` (0 needs input, 1 working, 2 idle, 3 ended), `needs_attention`, +`state_confirmed`, `last_activity_at`, `children_running` and `version`, plus +`state_since` and `state_age_seconds` for `needs_input` and `working`, and +`title`, `cwd`, `workspace_id`, `surface_id`, `transcript_path`, `pid` and +`ended_at` when known. `state_confirmed` is false for a session discovered from +the process table: its presence is known but its idleness was never confirmed by +a hook, so do not report it as idle without qualification. The reply spans every +workspace; `agent.sessions.list` is not available through a remote relay. + Auth subcommands: | Command | Contract | @@ -890,7 +922,7 @@ the expected text without connecting to a cmux socket. <!-- cli-contract-help-probes:start --> - `cmux --help` -> `cmux - control cmux via Unix socket` - `cmux --help` -> `open <path-or-url>...` -- `cmux --help` -> `sessions [list] [options]` +- `cmux --help` -> `sessions [list|live] [options]` - `cmux help` -> `cmux - control cmux via Unix socket` - `cmux --help` -> `Start & Resume:` - `cmux --help` -> `Diagnostics / Advanced:` @@ -923,6 +955,8 @@ the expected text without connecting to a cmux socket. - `cmux cloud guide --help` -> `Usage: cmux cloud guide | cmux cloud --skill [--json]` - `cmux cloud --skill -h` -> `Usage: cmux cloud guide | cmux cloud --skill [--json]` - `cmux sessions --help` -> `Usage: cmux sessions list [options]` +- `cmux sessions --help` -> `cmux sessions live [options]` +- `cmux sessions live --help` -> `--needs-me Only sessions waiting on a human` - `cmux ping --help` -> `Usage: cmux ping` - `cmux capabilities --help` -> `Usage: cmux capabilities` - `cmux events --help` -> `Usage: cmux events [options]` diff --git a/dogfood/scenarios/agent-sessions-live-tour.json b/dogfood/scenarios/agent-sessions-live-tour.json new file mode 100644 index 000000000000..a88f6de563de --- /dev/null +++ b/dogfood/scenarios/agent-sessions-live-tour.json @@ -0,0 +1,62 @@ +{ + "steps": [ + {"socket": "workspace.create", "params": {"title": "Agent A", "initial_input": "clear; mkdir -p /tmp/parity-a; cd /tmp/parity-a; echo '{\"session_id\":\"11111111-1111-4111-8111-111111111111\",\"cwd\":\"/tmp/parity-a\"}' | cmux hooks enqueue claude session-start; echo '{\"session_id\":\"11111111-1111-4111-8111-111111111111\",\"cwd\":\"/tmp/parity-a\",\"message\":\"Which of these two files should I edit?\"}' | cmux hooks enqueue claude notification\n", "focus": false}, "save": "agentA"}, + {"wait": 4}, + {"socket": "workspace.create", "params": {"title": "Agent B", "initial_input": "clear; mkdir -p /tmp/parity-b; cd /tmp/parity-b; echo '{\"session_id\":\"22222222-2222-4222-8222-222222222222\",\"cwd\":\"/tmp/parity-b\"}' | cmux hooks enqueue codex session-start; echo '{\"session_id\":\"22222222-2222-4222-8222-222222222222\",\"cwd\":\"/tmp/parity-b\",\"prompt\":\"Summarize every file under docs/\"}' | cmux hooks enqueue codex prompt-submit\n", "focus": false}, "save": "agentB"}, + {"wait": 2}, + {"socket": "workspace.create", "params": {"title": "Agent C", "initial_input": "clear; mkdir -p /tmp/parity-c; cd /tmp/parity-c; echo '{\"session_id\":\"33333333-3333-4333-8333-333333333333\",\"cwd\":\"/tmp/parity-c\"}' | cmux hooks enqueue claude session-start\n", "focus": false}, "save": "agentC"}, + {"wait": 2}, + {"socket": "workspace.create", "params": {"title": "Agent D", "initial_input": "clear; mkdir -p /tmp/parity-d; cd /tmp/parity-d; echo '{\"session_id\":\"44444444-4444-4444-8444-444444444444\",\"cwd\":\"/tmp/parity-d\"}' | cmux hooks enqueue claude session-start; echo '{\"session_id\":\"44444444-4444-4444-8444-444444444444\",\"cwd\":\"/tmp/parity-d\"}' | cmux hooks enqueue claude session-end\n", "focus": false}, "save": "agentD"}, + {"wait": 2}, + {"socket": "workspace.create", "params": {"title": "Triage", "initial_input": "clear\n", "focus": true}, "save": "triage"}, + {"wait": 2}, + {"shot": "00-four-agent-workspaces"}, + + {"socket": "agent.sessions.list", "save": "socketList"}, + + {"type": "cmux sessions live\n"}, + {"wait": 2}, + {"shot": "01-live-triage-order"}, + + {"type": "clear; cmux sessions live --json\n"}, + {"wait": 2}, + {"shot": "02-live-json"}, + + {"type": "clear; cmux sessions list\n"}, + {"wait": 2}, + {"shot": "03-list-saved-control"}, + + {"type": "clear; cmux sessions live --needs-me\n"}, + {"wait": 2}, + {"shot": "04-live-needs-me"}, + + {"type": "clear; cmux sessions live --limit 1\n"}, + {"wait": 2}, + {"shot": "05-live-limit-truncation"}, + + {"type": "clear; cmux sessions live --agent claude-code\n"}, + {"wait": 2}, + {"shot": "06-live-agent-alias"}, + + {"type": "clear; cmux sessions live --state ended\n"}, + {"wait": 2}, + {"shot": "07-live-state-ended"}, + + {"type": "clear; cmux sessions live --agent --needs-me; echo exit=$?\n"}, + {"wait": 2}, + {"shot": "08-live-flag-as-value-error"}, + + {"type": "clear; cmux sessions live --state blorp; echo exit=$?\n"}, + {"wait": 2}, + {"shot": "09-live-unknown-state-error"}, + + {"type": "clear; echo '{\"session_id\":\"11111111-1111-4111-8111-111111111111\",\"cwd\":\"/tmp/parity-a\",\"prompt\":\"The first one.\"}' | cmux hooks enqueue claude prompt-submit\n"}, + {"wait": 3}, + {"type": "clear; cmux sessions live\n"}, + {"wait": 2}, + {"shot": "10-live-after-answering-a"}, + + {"socket": "agent.sessions.list", "save": "socketListAfter"}, + {"shot": "99-end", "screen": true} + ] +} diff --git a/scripts/localization-allowed-omissions.json b/scripts/localization-allowed-omissions.json index ba24ade1623d..681d5d170187 100644 --- a/scripts/localization-allowed-omissions.json +++ b/scripts/localization-allowed-omissions.json @@ -480,7 +480,7 @@ }, "cli.sessions.command": { "class": "syntax", - "source": "sessions [list] [options]" + "source": "sessions [list|live] [options]" }, "cli.sidebar.report.error": { "source": "ERROR %@ [%@] %@: %@",