chore(ui): regenerate control ui locale bundles

This commit is contained in:
Vincent Koc
2026-04-05 12:49:29 +01:00
parent ee4fe4fb1e
commit ac2ca8b2ca
24 changed files with 7366 additions and 4 deletions

View File

@@ -0,0 +1,439 @@
{
"fallbackKeys": [
"chat.toolCallsToggle",
"common.offline",
"common.ok",
"common.online",
"common.search",
"common.theme",
"common.version",
"cron.errors.agentMessageRequired",
"cron.errors.agentMessageRequiredShort",
"cron.errors.cronExprRequired",
"cron.errors.cronExprRequiredShort",
"cron.errors.everyAmountInvalid",
"cron.errors.invalidIntervalAmount",
"cron.errors.invalidRunTime",
"cron.errors.invalidStaggerAmount",
"cron.errors.nameRequired",
"cron.errors.nameRequiredShort",
"cron.errors.scheduleAtInvalid",
"cron.errors.staggerAmountInvalid",
"cron.errors.systemEventTextRequired",
"cron.errors.systemTextRequired",
"cron.errors.timeoutInvalid",
"cron.errors.webhookUrlInvalid",
"cron.errors.webhookUrlRequired",
"cron.form.addJob",
"cron.form.advanced",
"cron.form.advancedHelp",
"cron.form.agentHelp",
"cron.form.agentId",
"cron.form.agentPlaceholder",
"cron.form.agentTurn",
"cron.form.agentTurnHelp",
"cron.form.announceDefault",
"cron.form.assistantTaskPrompt",
"cron.form.at",
"cron.form.basics",
"cron.form.basicsSub",
"cron.form.bestEffortDelivery",
"cron.form.bestEffortHelp",
"cron.form.cancel",
"cron.form.cantAddYet",
"cron.form.channel",
"cron.form.channelHelp",
"cron.form.clearAgentHelp",
"cron.form.clearAgentOverride",
"cron.form.createSubtitle",
"cron.form.cronOption",
"cron.form.days",
"cron.form.deleteAfterRun",
"cron.form.deleteAfterRunHelp",
"cron.form.deliveryHelp",
"cron.form.deliverySection",
"cron.form.deliverySub",
"cron.form.description",
"cron.form.descriptionPlaceholder",
"cron.form.editJob",
"cron.form.every",
"cron.form.everyAmountPlaceholder",
"cron.form.exactTiming",
"cron.form.exactTimingHelp",
"cron.form.execution",
"cron.form.executionSub",
"cron.form.expression",
"cron.form.expressionPlaceholder",
"cron.form.fieldName",
"cron.form.fillRequired",
"cron.form.fixFields",
"cron.form.fixFieldsPlural",
"cron.form.hours",
"cron.form.isolated",
"cron.form.jitterHelp",
"cron.form.main",
"cron.form.mainTimelineMessage",
"cron.form.minutes",
"cron.form.model",
"cron.form.modelHelp",
"cron.form.modelPlaceholder",
"cron.form.namePlaceholder",
"cron.form.newJob",
"cron.form.nextHeartbeat",
"cron.form.noneInternal",
"cron.form.now",
"cron.form.payloadKind",
"cron.form.required",
"cron.form.requiredSr",
"cron.form.resultDelivery",
"cron.form.runAt",
"cron.form.saveChanges",
"cron.form.saving",
"cron.form.schedule",
"cron.form.scheduleSub",
"cron.form.seconds",
"cron.form.session",
"cron.form.sessionHelp",
"cron.form.staggerPlaceholder",
"cron.form.staggerUnit",
"cron.form.staggerWindow",
"cron.form.systemEvent",
"cron.form.systemEventHelp",
"cron.form.thinking",
"cron.form.thinkingHelp",
"cron.form.thinkingPlaceholder",
"cron.form.timeoutHelp",
"cron.form.timeoutPlaceholder",
"cron.form.timeoutSeconds",
"cron.form.timezoneHelp",
"cron.form.timezoneOptional",
"cron.form.timezonePlaceholder",
"cron.form.to",
"cron.form.toHelp",
"cron.form.toPlaceholder",
"cron.form.unit",
"cron.form.updateSubtitle",
"cron.form.wakeMode",
"cron.form.wakeModeHelp",
"cron.form.webhookHelp",
"cron.form.webhookPlaceholder",
"cron.form.webhookPost",
"cron.form.webhookUrl",
"cron.jobDetail.agent",
"cron.jobDetail.delivery",
"cron.jobDetail.prompt",
"cron.jobDetail.system",
"cron.jobList.allJobs",
"cron.jobList.clone",
"cron.jobList.disable",
"cron.jobList.disabled",
"cron.jobList.edit",
"cron.jobList.enable",
"cron.jobList.enabled",
"cron.jobList.history",
"cron.jobList.remove",
"cron.jobList.run",
"cron.jobList.selectJob",
"cron.jobs.all",
"cron.jobs.ascending",
"cron.jobs.descending",
"cron.jobs.direction",
"cron.jobs.enabled",
"cron.jobs.lastRun",
"cron.jobs.loading",
"cron.jobs.loadMore",
"cron.jobs.name",
"cron.jobs.nextRun",
"cron.jobs.noMatching",
"cron.jobs.recentlyUpdated",
"cron.jobs.reset",
"cron.jobs.schedule",
"cron.jobs.searchJobs",
"cron.jobs.searchPlaceholder",
"cron.jobs.shownOf",
"cron.jobs.sort",
"cron.jobs.subtitle",
"cron.jobs.title",
"cron.jobState.last",
"cron.jobState.next",
"cron.jobState.status",
"cron.runEntry.due",
"cron.runEntry.next",
"cron.runEntry.noSummary",
"cron.runEntry.openRunChat",
"cron.runEntry.runAt",
"cron.runs.allDelivery",
"cron.runs.allJobs",
"cron.runs.allStatuses",
"cron.runs.clear",
"cron.runs.delivery",
"cron.runs.deliveryDelivered",
"cron.runs.deliveryNotDelivered",
"cron.runs.deliveryNotRequested",
"cron.runs.deliveryUnknown",
"cron.runs.loadMore",
"cron.runs.newestFirst",
"cron.runs.noMatching",
"cron.runs.oldestFirst",
"cron.runs.runStatusError",
"cron.runs.runStatusOk",
"cron.runs.runStatusSkipped",
"cron.runs.runStatusUnknown",
"cron.runs.scope",
"cron.runs.searchPlaceholder",
"cron.runs.searchRuns",
"cron.runs.selectedJob",
"cron.runs.selectJobHint",
"cron.runs.status",
"cron.runs.subtitleAll",
"cron.runs.subtitleJob",
"cron.runs.title",
"cron.summary.enabled",
"cron.summary.jobs",
"cron.summary.nextWake",
"cron.summary.no",
"cron.summary.refresh",
"cron.summary.refreshing",
"cron.summary.yes",
"languages.en",
"languages.fr",
"languages.jaJP",
"languages.ko",
"login.passwordPlaceholder",
"login.subtitle",
"nav.agent",
"nav.chat",
"nav.resize",
"overview.attention.title",
"overview.cards.cost",
"overview.cards.recentSessions",
"overview.cards.skills",
"overview.connection.docsHint",
"overview.connection.docsLink",
"overview.connection.step1",
"overview.connection.step2",
"overview.connection.step3",
"overview.connection.step4",
"overview.connection.title",
"overview.eventLog.title",
"overview.logTail.title",
"overview.palette.noResults",
"overview.palette.placeholder",
"overview.quickActions.automation",
"overview.quickActions.newSession",
"overview.quickActions.refreshAll",
"overview.quickActions.terminal",
"overview.snapshot.status",
"overview.snapshot.title",
"overview.stats.cron",
"subtitles.aiAgents",
"subtitles.appearance",
"subtitles.automation",
"subtitles.communications",
"subtitles.dreams",
"subtitles.infrastructure",
"tabs.aiAgents",
"tabs.appearance",
"tabs.automation",
"tabs.chat",
"tabs.communications",
"tabs.debug",
"tabs.dreams",
"tabs.infrastructure",
"usage.breakdown.cacheRead",
"usage.breakdown.cacheWrite",
"usage.breakdown.costByType",
"usage.breakdown.input",
"usage.breakdown.output",
"usage.breakdown.tokensByType",
"usage.breakdown.total",
"usage.common.emptyValue",
"usage.common.unknown",
"usage.daily.byType",
"usage.daily.costTitle",
"usage.daily.title",
"usage.daily.tokensTitle",
"usage.daily.total",
"usage.details.assistantOutputTokens",
"usage.details.baseContextPerMessage",
"usage.details.close",
"usage.details.collapse",
"usage.details.collapseAll",
"usage.details.conversation",
"usage.details.cumulative",
"usage.details.duration",
"usage.details.expandAll",
"usage.details.files",
"usage.details.filtered",
"usage.details.hasTools",
"usage.details.modelMix",
"usage.details.noContextData",
"usage.details.noDataInRange",
"usage.details.noMessages",
"usage.details.noMessagesMatch",
"usage.details.noTimeline",
"usage.details.noUsageData",
"usage.details.of",
"usage.details.ofInput",
"usage.details.perTurn",
"usage.details.reset",
"usage.details.searchConversation",
"usage.details.skills",
"usage.details.system",
"usage.details.systemPromptBreakdown",
"usage.details.systemShort",
"usage.details.timelineFiltered",
"usage.details.tokensReadFromCache",
"usage.details.tokensWrittenToCache",
"usage.details.tool",
"usage.details.toolResult",
"usage.details.tools",
"usage.details.turnRange",
"usage.details.usageOverTime",
"usage.details.userToolInputTokens",
"usage.details.you",
"usage.empty.featureOverview",
"usage.empty.featureSessions",
"usage.empty.featureTimeline",
"usage.empty.hint",
"usage.empty.noData",
"usage.empty.subtitle",
"usage.empty.title",
"usage.export.dailyCsv",
"usage.export.json",
"usage.export.label",
"usage.export.sessionsCsv",
"usage.filters.agent",
"usage.filters.all",
"usage.filters.channel",
"usage.filters.clear",
"usage.filters.clearAll",
"usage.filters.days",
"usage.filters.daysCount",
"usage.filters.endDate",
"usage.filters.hours",
"usage.filters.hoursCount",
"usage.filters.model",
"usage.filters.pin",
"usage.filters.pinned",
"usage.filters.provider",
"usage.filters.remove",
"usage.filters.selectAll",
"usage.filters.session",
"usage.filters.sessionsCount",
"usage.filters.startDate",
"usage.filters.timeZone",
"usage.filters.timeZoneLocal",
"usage.filters.timeZoneUtc",
"usage.filters.title",
"usage.filters.to",
"usage.filters.tool",
"usage.filters.unpin",
"usage.loading.badge",
"usage.loading.title",
"usage.metrics.cost",
"usage.metrics.session",
"usage.metrics.sessions",
"usage.metrics.tokens",
"usage.mosaic.dayOfWeek",
"usage.mosaic.eightAm",
"usage.mosaic.eightPm",
"usage.mosaic.fourAm",
"usage.mosaic.fourPm",
"usage.mosaic.fri",
"usage.mosaic.legend",
"usage.mosaic.midnight",
"usage.mosaic.mon",
"usage.mosaic.noon",
"usage.mosaic.noTimelineData",
"usage.mosaic.sat",
"usage.mosaic.subtitle",
"usage.mosaic.subtitleEmpty",
"usage.mosaic.sun",
"usage.mosaic.thu",
"usage.mosaic.title",
"usage.mosaic.tue",
"usage.mosaic.wed",
"usage.overview.acrossMessages",
"usage.overview.assistant",
"usage.overview.avgCost",
"usage.overview.avgCostHint",
"usage.overview.avgCostHintMissing",
"usage.overview.avgSession",
"usage.overview.avgTokens",
"usage.overview.avgTokensHint",
"usage.overview.cached",
"usage.overview.cacheHint",
"usage.overview.cacheHitRate",
"usage.overview.calls",
"usage.overview.errorHint",
"usage.overview.errorRate",
"usage.overview.errors",
"usage.overview.errorsHint",
"usage.overview.messages",
"usage.overview.messagesAbbrev",
"usage.overview.messagesHint",
"usage.overview.noAgentData",
"usage.overview.noChannelData",
"usage.overview.noErrorData",
"usage.overview.noModelData",
"usage.overview.noProviderData",
"usage.overview.noToolCalls",
"usage.overview.peakErrorDays",
"usage.overview.peakErrorHours",
"usage.overview.perMinute",
"usage.overview.prompt",
"usage.overview.sessions",
"usage.overview.sessionsHint",
"usage.overview.sessionsInRange",
"usage.overview.throughput",
"usage.overview.throughputHint",
"usage.overview.title",
"usage.overview.tokensPerMinute",
"usage.overview.toolCalls",
"usage.overview.toolCallsHint",
"usage.overview.toolResults",
"usage.overview.toolsUsed",
"usage.overview.topAgents",
"usage.overview.topChannels",
"usage.overview.topModels",
"usage.overview.topProviders",
"usage.overview.topTools",
"usage.overview.user",
"usage.page.subtitle",
"usage.presets.last30d",
"usage.presets.last7d",
"usage.presets.today",
"usage.query.apply",
"usage.query.inRange",
"usage.query.matching",
"usage.query.placeholder",
"usage.query.tip",
"usage.sessions.all",
"usage.sessions.ascending",
"usage.sessions.avg",
"usage.sessions.clearSelection",
"usage.sessions.copy",
"usage.sessions.copyName",
"usage.sessions.descending",
"usage.sessions.limitReached",
"usage.sessions.more",
"usage.sessions.noneInRange",
"usage.sessions.noRecent",
"usage.sessions.recent",
"usage.sessions.recentShort",
"usage.sessions.selected",
"usage.sessions.shown",
"usage.sessions.sort",
"usage.sessions.title",
"usage.sessions.total"
],
"generatedAt": "2026-04-05T11:44:58.694Z",
"locale": "de",
"model": "",
"provider": "",
"sourceHash": "e482fa23a5ebfb33fa807a476f14ddb196e51d099b046a19e9573d54acdcd931",
"totalKeys": 509,
"translatedKeys": 82,
"workflow": 1
}

View File

@@ -0,0 +1,257 @@
{
"fallbackKeys": [
"chat.toolCallsToggle",
"common.docs",
"common.na",
"common.search",
"common.theme",
"cron.form.cronOption",
"cron.form.everyAmountPlaceholder",
"cron.form.expressionPlaceholder",
"cron.form.modelPlaceholder",
"cron.form.staggerPlaceholder",
"cron.form.timezonePlaceholder",
"cron.form.webhookPlaceholder",
"cron.form.webhookPost",
"cron.runs.runStatusError",
"cron.runs.runStatusOk",
"cron.summary.no",
"languages.fr",
"languages.jaJP",
"languages.ko",
"login.passwordPlaceholder",
"login.subtitle",
"nav.chat",
"nav.control",
"nav.resize",
"overview.attention.title",
"overview.cards.cost",
"overview.cards.recentSessions",
"overview.cards.skills",
"overview.connection.docsHint",
"overview.connection.docsLink",
"overview.connection.step1",
"overview.connection.step2",
"overview.connection.step3",
"overview.connection.step4",
"overview.connection.title",
"overview.eventLog.title",
"overview.logTail.title",
"overview.notes.tailscaleTitle",
"overview.palette.noResults",
"overview.palette.placeholder",
"overview.quickActions.automation",
"overview.quickActions.newSession",
"overview.quickActions.refreshAll",
"overview.quickActions.terminal",
"overview.stats.cron",
"subtitles.aiAgents",
"subtitles.appearance",
"subtitles.automation",
"subtitles.communications",
"subtitles.dreams",
"subtitles.infrastructure",
"tabs.aiAgents",
"tabs.appearance",
"tabs.automation",
"tabs.chat",
"tabs.communications",
"tabs.dreams",
"tabs.infrastructure",
"usage.breakdown.cacheRead",
"usage.breakdown.cacheWrite",
"usage.breakdown.costByType",
"usage.breakdown.input",
"usage.breakdown.output",
"usage.breakdown.tokensByType",
"usage.breakdown.total",
"usage.common.emptyValue",
"usage.common.unknown",
"usage.daily.byType",
"usage.daily.costTitle",
"usage.daily.title",
"usage.daily.tokensTitle",
"usage.daily.total",
"usage.details.assistantOutputTokens",
"usage.details.baseContextPerMessage",
"usage.details.close",
"usage.details.collapse",
"usage.details.collapseAll",
"usage.details.conversation",
"usage.details.cumulative",
"usage.details.duration",
"usage.details.expandAll",
"usage.details.files",
"usage.details.filtered",
"usage.details.hasTools",
"usage.details.modelMix",
"usage.details.noContextData",
"usage.details.noDataInRange",
"usage.details.noMessages",
"usage.details.noMessagesMatch",
"usage.details.noTimeline",
"usage.details.noUsageData",
"usage.details.of",
"usage.details.ofInput",
"usage.details.perTurn",
"usage.details.reset",
"usage.details.searchConversation",
"usage.details.skills",
"usage.details.system",
"usage.details.systemPromptBreakdown",
"usage.details.systemShort",
"usage.details.timelineFiltered",
"usage.details.tokensReadFromCache",
"usage.details.tokensWrittenToCache",
"usage.details.tool",
"usage.details.toolResult",
"usage.details.tools",
"usage.details.turnRange",
"usage.details.usageOverTime",
"usage.details.userToolInputTokens",
"usage.details.you",
"usage.empty.featureOverview",
"usage.empty.featureSessions",
"usage.empty.featureTimeline",
"usage.empty.hint",
"usage.empty.noData",
"usage.empty.subtitle",
"usage.empty.title",
"usage.export.dailyCsv",
"usage.export.json",
"usage.export.label",
"usage.export.sessionsCsv",
"usage.filters.agent",
"usage.filters.all",
"usage.filters.channel",
"usage.filters.clear",
"usage.filters.clearAll",
"usage.filters.days",
"usage.filters.daysCount",
"usage.filters.endDate",
"usage.filters.hours",
"usage.filters.hoursCount",
"usage.filters.model",
"usage.filters.pin",
"usage.filters.pinned",
"usage.filters.provider",
"usage.filters.remove",
"usage.filters.selectAll",
"usage.filters.session",
"usage.filters.sessionsCount",
"usage.filters.startDate",
"usage.filters.timeZone",
"usage.filters.timeZoneLocal",
"usage.filters.timeZoneUtc",
"usage.filters.title",
"usage.filters.to",
"usage.filters.tool",
"usage.filters.unpin",
"usage.loading.badge",
"usage.loading.title",
"usage.metrics.cost",
"usage.metrics.session",
"usage.metrics.sessions",
"usage.metrics.tokens",
"usage.mosaic.dayOfWeek",
"usage.mosaic.eightAm",
"usage.mosaic.eightPm",
"usage.mosaic.fourAm",
"usage.mosaic.fourPm",
"usage.mosaic.fri",
"usage.mosaic.legend",
"usage.mosaic.midnight",
"usage.mosaic.mon",
"usage.mosaic.noon",
"usage.mosaic.noTimelineData",
"usage.mosaic.sat",
"usage.mosaic.subtitle",
"usage.mosaic.subtitleEmpty",
"usage.mosaic.sun",
"usage.mosaic.thu",
"usage.mosaic.title",
"usage.mosaic.tue",
"usage.mosaic.wed",
"usage.overview.acrossMessages",
"usage.overview.assistant",
"usage.overview.avgCost",
"usage.overview.avgCostHint",
"usage.overview.avgCostHintMissing",
"usage.overview.avgSession",
"usage.overview.avgTokens",
"usage.overview.avgTokensHint",
"usage.overview.cached",
"usage.overview.cacheHint",
"usage.overview.cacheHitRate",
"usage.overview.calls",
"usage.overview.errorHint",
"usage.overview.errorRate",
"usage.overview.errors",
"usage.overview.errorsHint",
"usage.overview.messages",
"usage.overview.messagesAbbrev",
"usage.overview.messagesHint",
"usage.overview.noAgentData",
"usage.overview.noChannelData",
"usage.overview.noErrorData",
"usage.overview.noModelData",
"usage.overview.noProviderData",
"usage.overview.noToolCalls",
"usage.overview.peakErrorDays",
"usage.overview.peakErrorHours",
"usage.overview.perMinute",
"usage.overview.prompt",
"usage.overview.sessions",
"usage.overview.sessionsHint",
"usage.overview.sessionsInRange",
"usage.overview.throughput",
"usage.overview.throughputHint",
"usage.overview.title",
"usage.overview.tokensPerMinute",
"usage.overview.toolCalls",
"usage.overview.toolCallsHint",
"usage.overview.toolResults",
"usage.overview.toolsUsed",
"usage.overview.topAgents",
"usage.overview.topChannels",
"usage.overview.topModels",
"usage.overview.topProviders",
"usage.overview.topTools",
"usage.overview.user",
"usage.page.subtitle",
"usage.presets.last30d",
"usage.presets.last7d",
"usage.presets.today",
"usage.query.apply",
"usage.query.inRange",
"usage.query.matching",
"usage.query.placeholder",
"usage.query.tip",
"usage.sessions.all",
"usage.sessions.ascending",
"usage.sessions.avg",
"usage.sessions.clearSelection",
"usage.sessions.copy",
"usage.sessions.copyName",
"usage.sessions.descending",
"usage.sessions.limitReached",
"usage.sessions.more",
"usage.sessions.noneInRange",
"usage.sessions.noRecent",
"usage.sessions.recent",
"usage.sessions.recentShort",
"usage.sessions.selected",
"usage.sessions.shown",
"usage.sessions.sort",
"usage.sessions.title",
"usage.sessions.total"
],
"generatedAt": "2026-04-05T11:44:58.707Z",
"locale": "es",
"model": "",
"provider": "",
"sourceHash": "e482fa23a5ebfb33fa807a476f14ddb196e51d099b046a19e9573d54acdcd931",
"totalKeys": 509,
"translatedKeys": 264,
"workflow": 1
}

View File

@@ -0,0 +1,521 @@
{
"fallbackKeys": [
"chat.disconnected",
"chat.focusToggle",
"chat.hideCronSessions",
"chat.onboardingDisabled",
"chat.refreshTitle",
"chat.showCronSessions",
"chat.showCronSessionsHidden",
"chat.thinkingToggle",
"chat.toolCallsToggle",
"common.connect",
"common.disabled",
"common.docs",
"common.enabled",
"common.health",
"common.na",
"common.offline",
"common.ok",
"common.online",
"common.refresh",
"common.resources",
"common.search",
"common.theme",
"common.version",
"cron.errors.agentMessageRequired",
"cron.errors.agentMessageRequiredShort",
"cron.errors.cronExprRequired",
"cron.errors.cronExprRequiredShort",
"cron.errors.everyAmountInvalid",
"cron.errors.invalidIntervalAmount",
"cron.errors.invalidRunTime",
"cron.errors.invalidStaggerAmount",
"cron.errors.nameRequired",
"cron.errors.nameRequiredShort",
"cron.errors.scheduleAtInvalid",
"cron.errors.staggerAmountInvalid",
"cron.errors.systemEventTextRequired",
"cron.errors.systemTextRequired",
"cron.errors.timeoutInvalid",
"cron.errors.webhookUrlInvalid",
"cron.errors.webhookUrlRequired",
"cron.form.addJob",
"cron.form.advanced",
"cron.form.advancedHelp",
"cron.form.agentHelp",
"cron.form.agentId",
"cron.form.agentPlaceholder",
"cron.form.agentTurn",
"cron.form.agentTurnHelp",
"cron.form.announceDefault",
"cron.form.assistantTaskPrompt",
"cron.form.at",
"cron.form.basics",
"cron.form.basicsSub",
"cron.form.bestEffortDelivery",
"cron.form.bestEffortHelp",
"cron.form.cancel",
"cron.form.cantAddYet",
"cron.form.channel",
"cron.form.channelHelp",
"cron.form.clearAgentHelp",
"cron.form.clearAgentOverride",
"cron.form.createSubtitle",
"cron.form.cronOption",
"cron.form.days",
"cron.form.deleteAfterRun",
"cron.form.deleteAfterRunHelp",
"cron.form.deliveryHelp",
"cron.form.deliverySection",
"cron.form.deliverySub",
"cron.form.description",
"cron.form.descriptionPlaceholder",
"cron.form.editJob",
"cron.form.every",
"cron.form.everyAmountPlaceholder",
"cron.form.exactTiming",
"cron.form.exactTimingHelp",
"cron.form.execution",
"cron.form.executionSub",
"cron.form.expression",
"cron.form.expressionPlaceholder",
"cron.form.fieldName",
"cron.form.fillRequired",
"cron.form.fixFields",
"cron.form.fixFieldsPlural",
"cron.form.hours",
"cron.form.isolated",
"cron.form.jitterHelp",
"cron.form.main",
"cron.form.mainTimelineMessage",
"cron.form.minutes",
"cron.form.model",
"cron.form.modelHelp",
"cron.form.modelPlaceholder",
"cron.form.namePlaceholder",
"cron.form.newJob",
"cron.form.nextHeartbeat",
"cron.form.noneInternal",
"cron.form.now",
"cron.form.payloadKind",
"cron.form.required",
"cron.form.requiredSr",
"cron.form.resultDelivery",
"cron.form.runAt",
"cron.form.saveChanges",
"cron.form.saving",
"cron.form.schedule",
"cron.form.scheduleSub",
"cron.form.seconds",
"cron.form.session",
"cron.form.sessionHelp",
"cron.form.staggerPlaceholder",
"cron.form.staggerUnit",
"cron.form.staggerWindow",
"cron.form.systemEvent",
"cron.form.systemEventHelp",
"cron.form.thinking",
"cron.form.thinkingHelp",
"cron.form.thinkingPlaceholder",
"cron.form.timeoutHelp",
"cron.form.timeoutPlaceholder",
"cron.form.timeoutSeconds",
"cron.form.timezoneHelp",
"cron.form.timezoneOptional",
"cron.form.timezonePlaceholder",
"cron.form.to",
"cron.form.toHelp",
"cron.form.toPlaceholder",
"cron.form.unit",
"cron.form.updateSubtitle",
"cron.form.wakeMode",
"cron.form.wakeModeHelp",
"cron.form.webhookHelp",
"cron.form.webhookPlaceholder",
"cron.form.webhookPost",
"cron.form.webhookUrl",
"cron.jobDetail.agent",
"cron.jobDetail.delivery",
"cron.jobDetail.prompt",
"cron.jobDetail.system",
"cron.jobList.allJobs",
"cron.jobList.clone",
"cron.jobList.disable",
"cron.jobList.disabled",
"cron.jobList.edit",
"cron.jobList.enable",
"cron.jobList.enabled",
"cron.jobList.history",
"cron.jobList.remove",
"cron.jobList.run",
"cron.jobList.selectJob",
"cron.jobs.all",
"cron.jobs.ascending",
"cron.jobs.descending",
"cron.jobs.direction",
"cron.jobs.enabled",
"cron.jobs.lastRun",
"cron.jobs.loading",
"cron.jobs.loadMore",
"cron.jobs.name",
"cron.jobs.nextRun",
"cron.jobs.noMatching",
"cron.jobs.recentlyUpdated",
"cron.jobs.reset",
"cron.jobs.schedule",
"cron.jobs.searchJobs",
"cron.jobs.searchPlaceholder",
"cron.jobs.shownOf",
"cron.jobs.sort",
"cron.jobs.subtitle",
"cron.jobs.title",
"cron.jobState.last",
"cron.jobState.next",
"cron.jobState.status",
"cron.runEntry.due",
"cron.runEntry.next",
"cron.runEntry.noSummary",
"cron.runEntry.openRunChat",
"cron.runEntry.runAt",
"cron.runs.allDelivery",
"cron.runs.allJobs",
"cron.runs.allStatuses",
"cron.runs.clear",
"cron.runs.delivery",
"cron.runs.deliveryDelivered",
"cron.runs.deliveryNotDelivered",
"cron.runs.deliveryNotRequested",
"cron.runs.deliveryUnknown",
"cron.runs.loadMore",
"cron.runs.newestFirst",
"cron.runs.noMatching",
"cron.runs.oldestFirst",
"cron.runs.runStatusError",
"cron.runs.runStatusOk",
"cron.runs.runStatusSkipped",
"cron.runs.runStatusUnknown",
"cron.runs.scope",
"cron.runs.searchPlaceholder",
"cron.runs.searchRuns",
"cron.runs.selectedJob",
"cron.runs.selectJobHint",
"cron.runs.status",
"cron.runs.subtitleAll",
"cron.runs.subtitleJob",
"cron.runs.title",
"cron.summary.enabled",
"cron.summary.jobs",
"cron.summary.nextWake",
"cron.summary.no",
"cron.summary.refresh",
"cron.summary.refreshing",
"cron.summary.yes",
"languages.de",
"languages.en",
"languages.es",
"languages.fr",
"languages.jaJP",
"languages.ko",
"languages.ptBR",
"languages.zhCN",
"languages.zhTW",
"login.passwordPlaceholder",
"login.subtitle",
"nav.agent",
"nav.chat",
"nav.collapse",
"nav.control",
"nav.expand",
"nav.resize",
"nav.settings",
"overview.access.connectHint",
"overview.access.language",
"overview.access.password",
"overview.access.sessionKey",
"overview.access.subtitle",
"overview.access.title",
"overview.access.token",
"overview.access.trustedProxy",
"overview.access.wsUrl",
"overview.attention.title",
"overview.auth.failed",
"overview.auth.required",
"overview.cards.cost",
"overview.cards.recentSessions",
"overview.cards.skills",
"overview.connection.docsHint",
"overview.connection.docsLink",
"overview.connection.step1",
"overview.connection.step2",
"overview.connection.step3",
"overview.connection.step4",
"overview.connection.title",
"overview.eventLog.title",
"overview.insecure.hint",
"overview.insecure.stayHttp",
"overview.logTail.title",
"overview.notes.cronText",
"overview.notes.cronTitle",
"overview.notes.sessionText",
"overview.notes.sessionTitle",
"overview.notes.subtitle",
"overview.notes.tailscaleText",
"overview.notes.tailscaleTitle",
"overview.notes.title",
"overview.pairing.hint",
"overview.pairing.mobileHint",
"overview.palette.noResults",
"overview.palette.placeholder",
"overview.quickActions.automation",
"overview.quickActions.newSession",
"overview.quickActions.refreshAll",
"overview.quickActions.terminal",
"overview.snapshot.channelsHint",
"overview.snapshot.lastChannelsRefresh",
"overview.snapshot.status",
"overview.snapshot.subtitle",
"overview.snapshot.tickInterval",
"overview.snapshot.title",
"overview.snapshot.uptime",
"overview.stats.cron",
"overview.stats.cronNext",
"overview.stats.instances",
"overview.stats.instancesHint",
"overview.stats.sessions",
"overview.stats.sessionsHint",
"subtitles.agents",
"subtitles.aiAgents",
"subtitles.appearance",
"subtitles.automation",
"subtitles.channels",
"subtitles.chat",
"subtitles.communications",
"subtitles.config",
"subtitles.cron",
"subtitles.debug",
"subtitles.dreams",
"subtitles.infrastructure",
"subtitles.instances",
"subtitles.logs",
"subtitles.nodes",
"subtitles.overview",
"subtitles.sessions",
"subtitles.skills",
"subtitles.usage",
"tabs.agents",
"tabs.aiAgents",
"tabs.appearance",
"tabs.automation",
"tabs.channels",
"tabs.chat",
"tabs.communications",
"tabs.config",
"tabs.cron",
"tabs.debug",
"tabs.dreams",
"tabs.infrastructure",
"tabs.instances",
"tabs.logs",
"tabs.nodes",
"tabs.overview",
"tabs.sessions",
"tabs.skills",
"tabs.usage",
"usage.breakdown.cacheRead",
"usage.breakdown.cacheWrite",
"usage.breakdown.costByType",
"usage.breakdown.input",
"usage.breakdown.output",
"usage.breakdown.tokensByType",
"usage.breakdown.total",
"usage.common.emptyValue",
"usage.common.unknown",
"usage.daily.byType",
"usage.daily.costTitle",
"usage.daily.title",
"usage.daily.tokensTitle",
"usage.daily.total",
"usage.details.assistantOutputTokens",
"usage.details.baseContextPerMessage",
"usage.details.close",
"usage.details.collapse",
"usage.details.collapseAll",
"usage.details.conversation",
"usage.details.cumulative",
"usage.details.duration",
"usage.details.expandAll",
"usage.details.files",
"usage.details.filtered",
"usage.details.hasTools",
"usage.details.modelMix",
"usage.details.noContextData",
"usage.details.noDataInRange",
"usage.details.noMessages",
"usage.details.noMessagesMatch",
"usage.details.noTimeline",
"usage.details.noUsageData",
"usage.details.of",
"usage.details.ofInput",
"usage.details.perTurn",
"usage.details.reset",
"usage.details.searchConversation",
"usage.details.skills",
"usage.details.system",
"usage.details.systemPromptBreakdown",
"usage.details.systemShort",
"usage.details.timelineFiltered",
"usage.details.tokensReadFromCache",
"usage.details.tokensWrittenToCache",
"usage.details.tool",
"usage.details.toolResult",
"usage.details.tools",
"usage.details.turnRange",
"usage.details.usageOverTime",
"usage.details.userToolInputTokens",
"usage.details.you",
"usage.empty.featureOverview",
"usage.empty.featureSessions",
"usage.empty.featureTimeline",
"usage.empty.hint",
"usage.empty.noData",
"usage.empty.subtitle",
"usage.empty.title",
"usage.export.dailyCsv",
"usage.export.json",
"usage.export.label",
"usage.export.sessionsCsv",
"usage.filters.agent",
"usage.filters.all",
"usage.filters.channel",
"usage.filters.clear",
"usage.filters.clearAll",
"usage.filters.days",
"usage.filters.daysCount",
"usage.filters.endDate",
"usage.filters.hours",
"usage.filters.hoursCount",
"usage.filters.model",
"usage.filters.pin",
"usage.filters.pinned",
"usage.filters.provider",
"usage.filters.remove",
"usage.filters.selectAll",
"usage.filters.session",
"usage.filters.sessionsCount",
"usage.filters.startDate",
"usage.filters.timeZone",
"usage.filters.timeZoneLocal",
"usage.filters.timeZoneUtc",
"usage.filters.title",
"usage.filters.to",
"usage.filters.tool",
"usage.filters.unpin",
"usage.loading.badge",
"usage.loading.title",
"usage.metrics.cost",
"usage.metrics.session",
"usage.metrics.sessions",
"usage.metrics.tokens",
"usage.mosaic.dayOfWeek",
"usage.mosaic.eightAm",
"usage.mosaic.eightPm",
"usage.mosaic.fourAm",
"usage.mosaic.fourPm",
"usage.mosaic.fri",
"usage.mosaic.legend",
"usage.mosaic.midnight",
"usage.mosaic.mon",
"usage.mosaic.noon",
"usage.mosaic.noTimelineData",
"usage.mosaic.sat",
"usage.mosaic.subtitle",
"usage.mosaic.subtitleEmpty",
"usage.mosaic.sun",
"usage.mosaic.thu",
"usage.mosaic.title",
"usage.mosaic.tue",
"usage.mosaic.wed",
"usage.overview.acrossMessages",
"usage.overview.assistant",
"usage.overview.avgCost",
"usage.overview.avgCostHint",
"usage.overview.avgCostHintMissing",
"usage.overview.avgSession",
"usage.overview.avgTokens",
"usage.overview.avgTokensHint",
"usage.overview.cached",
"usage.overview.cacheHint",
"usage.overview.cacheHitRate",
"usage.overview.calls",
"usage.overview.errorHint",
"usage.overview.errorRate",
"usage.overview.errors",
"usage.overview.errorsHint",
"usage.overview.messages",
"usage.overview.messagesAbbrev",
"usage.overview.messagesHint",
"usage.overview.noAgentData",
"usage.overview.noChannelData",
"usage.overview.noErrorData",
"usage.overview.noModelData",
"usage.overview.noProviderData",
"usage.overview.noToolCalls",
"usage.overview.peakErrorDays",
"usage.overview.peakErrorHours",
"usage.overview.perMinute",
"usage.overview.prompt",
"usage.overview.sessions",
"usage.overview.sessionsHint",
"usage.overview.sessionsInRange",
"usage.overview.throughput",
"usage.overview.throughputHint",
"usage.overview.title",
"usage.overview.tokensPerMinute",
"usage.overview.toolCalls",
"usage.overview.toolCallsHint",
"usage.overview.toolResults",
"usage.overview.toolsUsed",
"usage.overview.topAgents",
"usage.overview.topChannels",
"usage.overview.topModels",
"usage.overview.topProviders",
"usage.overview.topTools",
"usage.overview.user",
"usage.page.subtitle",
"usage.presets.last30d",
"usage.presets.last7d",
"usage.presets.today",
"usage.query.apply",
"usage.query.inRange",
"usage.query.matching",
"usage.query.placeholder",
"usage.query.tip",
"usage.sessions.all",
"usage.sessions.ascending",
"usage.sessions.avg",
"usage.sessions.clearSelection",
"usage.sessions.copy",
"usage.sessions.copyName",
"usage.sessions.descending",
"usage.sessions.limitReached",
"usage.sessions.more",
"usage.sessions.noneInRange",
"usage.sessions.noRecent",
"usage.sessions.recent",
"usage.sessions.recentShort",
"usage.sessions.selected",
"usage.sessions.shown",
"usage.sessions.sort",
"usage.sessions.title",
"usage.sessions.total"
],
"generatedAt": "2026-04-05T11:44:58.742Z",
"locale": "fr",
"model": "",
"provider": "",
"sourceHash": "e482fa23a5ebfb33fa807a476f14ddb196e51d099b046a19e9573d54acdcd931",
"totalKeys": 509,
"translatedKeys": 0,
"workflow": 1
}

View File

@@ -0,0 +1,42 @@
[
{
"source": "OpenClaw",
"target": "OpenClaw"
},
{
"source": "Gateway",
"target": "Gateway"
},
{
"source": "Control UI",
"target": "Control UI"
},
{
"source": "Skills",
"target": "Skills"
},
{
"source": "Tailscale",
"target": "Tailscale"
},
{
"source": "WhatsApp",
"target": "WhatsApp"
},
{
"source": "Telegram",
"target": "Telegram"
},
{
"source": "Discord",
"target": "Discord"
},
{
"source": "Signal",
"target": "Signal"
},
{
"source": "iMessage",
"target": "iMessage"
}
]

View File

@@ -0,0 +1,42 @@
[
{
"source": "OpenClaw",
"target": "OpenClaw"
},
{
"source": "Gateway",
"target": "Gateway"
},
{
"source": "Control UI",
"target": "Control UI"
},
{
"source": "Skills",
"target": "Skills"
},
{
"source": "Tailscale",
"target": "Tailscale"
},
{
"source": "WhatsApp",
"target": "WhatsApp"
},
{
"source": "Telegram",
"target": "Telegram"
},
{
"source": "Discord",
"target": "Discord"
},
{
"source": "Signal",
"target": "Signal"
},
{
"source": "iMessage",
"target": "iMessage"
}
]

View File

@@ -0,0 +1,42 @@
[
{
"source": "OpenClaw",
"target": "OpenClaw"
},
{
"source": "Gateway",
"target": "Gateway"
},
{
"source": "Control UI",
"target": "Control UI"
},
{
"source": "Skills",
"target": "Skills"
},
{
"source": "Tailscale",
"target": "Tailscale"
},
{
"source": "WhatsApp",
"target": "WhatsApp"
},
{
"source": "Telegram",
"target": "Telegram"
},
{
"source": "Discord",
"target": "Discord"
},
{
"source": "Signal",
"target": "Signal"
},
{
"source": "iMessage",
"target": "iMessage"
}
]

View File

@@ -0,0 +1,42 @@
[
{
"source": "OpenClaw",
"target": "OpenClaw"
},
{
"source": "Gateway",
"target": "Gateway"
},
{
"source": "Control UI",
"target": "Control UI"
},
{
"source": "Skills",
"target": "Skills"
},
{
"source": "Tailscale",
"target": "Tailscale"
},
{
"source": "WhatsApp",
"target": "WhatsApp"
},
{
"source": "Telegram",
"target": "Telegram"
},
{
"source": "Discord",
"target": "Discord"
},
{
"source": "Signal",
"target": "Signal"
},
{
"source": "iMessage",
"target": "iMessage"
}
]

View File

@@ -0,0 +1,42 @@
[
{
"source": "OpenClaw",
"target": "OpenClaw"
},
{
"source": "Gateway",
"target": "Gateway"
},
{
"source": "Control UI",
"target": "Control UI"
},
{
"source": "Skills",
"target": "Skills"
},
{
"source": "Tailscale",
"target": "Tailscale"
},
{
"source": "WhatsApp",
"target": "WhatsApp"
},
{
"source": "Telegram",
"target": "Telegram"
},
{
"source": "Discord",
"target": "Discord"
},
{
"source": "Signal",
"target": "Signal"
},
{
"source": "iMessage",
"target": "iMessage"
}
]

View File

@@ -0,0 +1,42 @@
[
{
"source": "OpenClaw",
"target": "OpenClaw"
},
{
"source": "Gateway",
"target": "Gateway"
},
{
"source": "Control UI",
"target": "Control UI"
},
{
"source": "Skills",
"target": "Skills"
},
{
"source": "Tailscale",
"target": "Tailscale"
},
{
"source": "WhatsApp",
"target": "WhatsApp"
},
{
"source": "Telegram",
"target": "Telegram"
},
{
"source": "Discord",
"target": "Discord"
},
{
"source": "Signal",
"target": "Signal"
},
{
"source": "iMessage",
"target": "iMessage"
}
]

View File

@@ -0,0 +1,42 @@
[
{
"source": "OpenClaw",
"target": "OpenClaw"
},
{
"source": "Gateway",
"target": "Gateway"
},
{
"source": "Control UI",
"target": "Control UI"
},
{
"source": "Skills",
"target": "Skills"
},
{
"source": "Tailscale",
"target": "Tailscale"
},
{
"source": "WhatsApp",
"target": "WhatsApp"
},
{
"source": "Telegram",
"target": "Telegram"
},
{
"source": "Discord",
"target": "Discord"
},
{
"source": "Signal",
"target": "Signal"
},
{
"source": "iMessage",
"target": "iMessage"
}
]

View File

@@ -0,0 +1,42 @@
[
{
"source": "OpenClaw",
"target": "OpenClaw"
},
{
"source": "Gateway",
"target": "Gateway"
},
{
"source": "Control UI",
"target": "Control UI"
},
{
"source": "Skills",
"target": "Skills"
},
{
"source": "Tailscale",
"target": "Tailscale"
},
{
"source": "WhatsApp",
"target": "WhatsApp"
},
{
"source": "Telegram",
"target": "Telegram"
},
{
"source": "Discord",
"target": "Discord"
},
{
"source": "Signal",
"target": "Signal"
},
{
"source": "iMessage",
"target": "iMessage"
}
]

View File

@@ -0,0 +1,521 @@
{
"fallbackKeys": [
"chat.disconnected",
"chat.focusToggle",
"chat.hideCronSessions",
"chat.onboardingDisabled",
"chat.refreshTitle",
"chat.showCronSessions",
"chat.showCronSessionsHidden",
"chat.thinkingToggle",
"chat.toolCallsToggle",
"common.connect",
"common.disabled",
"common.docs",
"common.enabled",
"common.health",
"common.na",
"common.offline",
"common.ok",
"common.online",
"common.refresh",
"common.resources",
"common.search",
"common.theme",
"common.version",
"cron.errors.agentMessageRequired",
"cron.errors.agentMessageRequiredShort",
"cron.errors.cronExprRequired",
"cron.errors.cronExprRequiredShort",
"cron.errors.everyAmountInvalid",
"cron.errors.invalidIntervalAmount",
"cron.errors.invalidRunTime",
"cron.errors.invalidStaggerAmount",
"cron.errors.nameRequired",
"cron.errors.nameRequiredShort",
"cron.errors.scheduleAtInvalid",
"cron.errors.staggerAmountInvalid",
"cron.errors.systemEventTextRequired",
"cron.errors.systemTextRequired",
"cron.errors.timeoutInvalid",
"cron.errors.webhookUrlInvalid",
"cron.errors.webhookUrlRequired",
"cron.form.addJob",
"cron.form.advanced",
"cron.form.advancedHelp",
"cron.form.agentHelp",
"cron.form.agentId",
"cron.form.agentPlaceholder",
"cron.form.agentTurn",
"cron.form.agentTurnHelp",
"cron.form.announceDefault",
"cron.form.assistantTaskPrompt",
"cron.form.at",
"cron.form.basics",
"cron.form.basicsSub",
"cron.form.bestEffortDelivery",
"cron.form.bestEffortHelp",
"cron.form.cancel",
"cron.form.cantAddYet",
"cron.form.channel",
"cron.form.channelHelp",
"cron.form.clearAgentHelp",
"cron.form.clearAgentOverride",
"cron.form.createSubtitle",
"cron.form.cronOption",
"cron.form.days",
"cron.form.deleteAfterRun",
"cron.form.deleteAfterRunHelp",
"cron.form.deliveryHelp",
"cron.form.deliverySection",
"cron.form.deliverySub",
"cron.form.description",
"cron.form.descriptionPlaceholder",
"cron.form.editJob",
"cron.form.every",
"cron.form.everyAmountPlaceholder",
"cron.form.exactTiming",
"cron.form.exactTimingHelp",
"cron.form.execution",
"cron.form.executionSub",
"cron.form.expression",
"cron.form.expressionPlaceholder",
"cron.form.fieldName",
"cron.form.fillRequired",
"cron.form.fixFields",
"cron.form.fixFieldsPlural",
"cron.form.hours",
"cron.form.isolated",
"cron.form.jitterHelp",
"cron.form.main",
"cron.form.mainTimelineMessage",
"cron.form.minutes",
"cron.form.model",
"cron.form.modelHelp",
"cron.form.modelPlaceholder",
"cron.form.namePlaceholder",
"cron.form.newJob",
"cron.form.nextHeartbeat",
"cron.form.noneInternal",
"cron.form.now",
"cron.form.payloadKind",
"cron.form.required",
"cron.form.requiredSr",
"cron.form.resultDelivery",
"cron.form.runAt",
"cron.form.saveChanges",
"cron.form.saving",
"cron.form.schedule",
"cron.form.scheduleSub",
"cron.form.seconds",
"cron.form.session",
"cron.form.sessionHelp",
"cron.form.staggerPlaceholder",
"cron.form.staggerUnit",
"cron.form.staggerWindow",
"cron.form.systemEvent",
"cron.form.systemEventHelp",
"cron.form.thinking",
"cron.form.thinkingHelp",
"cron.form.thinkingPlaceholder",
"cron.form.timeoutHelp",
"cron.form.timeoutPlaceholder",
"cron.form.timeoutSeconds",
"cron.form.timezoneHelp",
"cron.form.timezoneOptional",
"cron.form.timezonePlaceholder",
"cron.form.to",
"cron.form.toHelp",
"cron.form.toPlaceholder",
"cron.form.unit",
"cron.form.updateSubtitle",
"cron.form.wakeMode",
"cron.form.wakeModeHelp",
"cron.form.webhookHelp",
"cron.form.webhookPlaceholder",
"cron.form.webhookPost",
"cron.form.webhookUrl",
"cron.jobDetail.agent",
"cron.jobDetail.delivery",
"cron.jobDetail.prompt",
"cron.jobDetail.system",
"cron.jobList.allJobs",
"cron.jobList.clone",
"cron.jobList.disable",
"cron.jobList.disabled",
"cron.jobList.edit",
"cron.jobList.enable",
"cron.jobList.enabled",
"cron.jobList.history",
"cron.jobList.remove",
"cron.jobList.run",
"cron.jobList.selectJob",
"cron.jobs.all",
"cron.jobs.ascending",
"cron.jobs.descending",
"cron.jobs.direction",
"cron.jobs.enabled",
"cron.jobs.lastRun",
"cron.jobs.loading",
"cron.jobs.loadMore",
"cron.jobs.name",
"cron.jobs.nextRun",
"cron.jobs.noMatching",
"cron.jobs.recentlyUpdated",
"cron.jobs.reset",
"cron.jobs.schedule",
"cron.jobs.searchJobs",
"cron.jobs.searchPlaceholder",
"cron.jobs.shownOf",
"cron.jobs.sort",
"cron.jobs.subtitle",
"cron.jobs.title",
"cron.jobState.last",
"cron.jobState.next",
"cron.jobState.status",
"cron.runEntry.due",
"cron.runEntry.next",
"cron.runEntry.noSummary",
"cron.runEntry.openRunChat",
"cron.runEntry.runAt",
"cron.runs.allDelivery",
"cron.runs.allJobs",
"cron.runs.allStatuses",
"cron.runs.clear",
"cron.runs.delivery",
"cron.runs.deliveryDelivered",
"cron.runs.deliveryNotDelivered",
"cron.runs.deliveryNotRequested",
"cron.runs.deliveryUnknown",
"cron.runs.loadMore",
"cron.runs.newestFirst",
"cron.runs.noMatching",
"cron.runs.oldestFirst",
"cron.runs.runStatusError",
"cron.runs.runStatusOk",
"cron.runs.runStatusSkipped",
"cron.runs.runStatusUnknown",
"cron.runs.scope",
"cron.runs.searchPlaceholder",
"cron.runs.searchRuns",
"cron.runs.selectedJob",
"cron.runs.selectJobHint",
"cron.runs.status",
"cron.runs.subtitleAll",
"cron.runs.subtitleJob",
"cron.runs.title",
"cron.summary.enabled",
"cron.summary.jobs",
"cron.summary.nextWake",
"cron.summary.no",
"cron.summary.refresh",
"cron.summary.refreshing",
"cron.summary.yes",
"languages.de",
"languages.en",
"languages.es",
"languages.fr",
"languages.jaJP",
"languages.ko",
"languages.ptBR",
"languages.zhCN",
"languages.zhTW",
"login.passwordPlaceholder",
"login.subtitle",
"nav.agent",
"nav.chat",
"nav.collapse",
"nav.control",
"nav.expand",
"nav.resize",
"nav.settings",
"overview.access.connectHint",
"overview.access.language",
"overview.access.password",
"overview.access.sessionKey",
"overview.access.subtitle",
"overview.access.title",
"overview.access.token",
"overview.access.trustedProxy",
"overview.access.wsUrl",
"overview.attention.title",
"overview.auth.failed",
"overview.auth.required",
"overview.cards.cost",
"overview.cards.recentSessions",
"overview.cards.skills",
"overview.connection.docsHint",
"overview.connection.docsLink",
"overview.connection.step1",
"overview.connection.step2",
"overview.connection.step3",
"overview.connection.step4",
"overview.connection.title",
"overview.eventLog.title",
"overview.insecure.hint",
"overview.insecure.stayHttp",
"overview.logTail.title",
"overview.notes.cronText",
"overview.notes.cronTitle",
"overview.notes.sessionText",
"overview.notes.sessionTitle",
"overview.notes.subtitle",
"overview.notes.tailscaleText",
"overview.notes.tailscaleTitle",
"overview.notes.title",
"overview.pairing.hint",
"overview.pairing.mobileHint",
"overview.palette.noResults",
"overview.palette.placeholder",
"overview.quickActions.automation",
"overview.quickActions.newSession",
"overview.quickActions.refreshAll",
"overview.quickActions.terminal",
"overview.snapshot.channelsHint",
"overview.snapshot.lastChannelsRefresh",
"overview.snapshot.status",
"overview.snapshot.subtitle",
"overview.snapshot.tickInterval",
"overview.snapshot.title",
"overview.snapshot.uptime",
"overview.stats.cron",
"overview.stats.cronNext",
"overview.stats.instances",
"overview.stats.instancesHint",
"overview.stats.sessions",
"overview.stats.sessionsHint",
"subtitles.agents",
"subtitles.aiAgents",
"subtitles.appearance",
"subtitles.automation",
"subtitles.channels",
"subtitles.chat",
"subtitles.communications",
"subtitles.config",
"subtitles.cron",
"subtitles.debug",
"subtitles.dreams",
"subtitles.infrastructure",
"subtitles.instances",
"subtitles.logs",
"subtitles.nodes",
"subtitles.overview",
"subtitles.sessions",
"subtitles.skills",
"subtitles.usage",
"tabs.agents",
"tabs.aiAgents",
"tabs.appearance",
"tabs.automation",
"tabs.channels",
"tabs.chat",
"tabs.communications",
"tabs.config",
"tabs.cron",
"tabs.debug",
"tabs.dreams",
"tabs.infrastructure",
"tabs.instances",
"tabs.logs",
"tabs.nodes",
"tabs.overview",
"tabs.sessions",
"tabs.skills",
"tabs.usage",
"usage.breakdown.cacheRead",
"usage.breakdown.cacheWrite",
"usage.breakdown.costByType",
"usage.breakdown.input",
"usage.breakdown.output",
"usage.breakdown.tokensByType",
"usage.breakdown.total",
"usage.common.emptyValue",
"usage.common.unknown",
"usage.daily.byType",
"usage.daily.costTitle",
"usage.daily.title",
"usage.daily.tokensTitle",
"usage.daily.total",
"usage.details.assistantOutputTokens",
"usage.details.baseContextPerMessage",
"usage.details.close",
"usage.details.collapse",
"usage.details.collapseAll",
"usage.details.conversation",
"usage.details.cumulative",
"usage.details.duration",
"usage.details.expandAll",
"usage.details.files",
"usage.details.filtered",
"usage.details.hasTools",
"usage.details.modelMix",
"usage.details.noContextData",
"usage.details.noDataInRange",
"usage.details.noMessages",
"usage.details.noMessagesMatch",
"usage.details.noTimeline",
"usage.details.noUsageData",
"usage.details.of",
"usage.details.ofInput",
"usage.details.perTurn",
"usage.details.reset",
"usage.details.searchConversation",
"usage.details.skills",
"usage.details.system",
"usage.details.systemPromptBreakdown",
"usage.details.systemShort",
"usage.details.timelineFiltered",
"usage.details.tokensReadFromCache",
"usage.details.tokensWrittenToCache",
"usage.details.tool",
"usage.details.toolResult",
"usage.details.tools",
"usage.details.turnRange",
"usage.details.usageOverTime",
"usage.details.userToolInputTokens",
"usage.details.you",
"usage.empty.featureOverview",
"usage.empty.featureSessions",
"usage.empty.featureTimeline",
"usage.empty.hint",
"usage.empty.noData",
"usage.empty.subtitle",
"usage.empty.title",
"usage.export.dailyCsv",
"usage.export.json",
"usage.export.label",
"usage.export.sessionsCsv",
"usage.filters.agent",
"usage.filters.all",
"usage.filters.channel",
"usage.filters.clear",
"usage.filters.clearAll",
"usage.filters.days",
"usage.filters.daysCount",
"usage.filters.endDate",
"usage.filters.hours",
"usage.filters.hoursCount",
"usage.filters.model",
"usage.filters.pin",
"usage.filters.pinned",
"usage.filters.provider",
"usage.filters.remove",
"usage.filters.selectAll",
"usage.filters.session",
"usage.filters.sessionsCount",
"usage.filters.startDate",
"usage.filters.timeZone",
"usage.filters.timeZoneLocal",
"usage.filters.timeZoneUtc",
"usage.filters.title",
"usage.filters.to",
"usage.filters.tool",
"usage.filters.unpin",
"usage.loading.badge",
"usage.loading.title",
"usage.metrics.cost",
"usage.metrics.session",
"usage.metrics.sessions",
"usage.metrics.tokens",
"usage.mosaic.dayOfWeek",
"usage.mosaic.eightAm",
"usage.mosaic.eightPm",
"usage.mosaic.fourAm",
"usage.mosaic.fourPm",
"usage.mosaic.fri",
"usage.mosaic.legend",
"usage.mosaic.midnight",
"usage.mosaic.mon",
"usage.mosaic.noon",
"usage.mosaic.noTimelineData",
"usage.mosaic.sat",
"usage.mosaic.subtitle",
"usage.mosaic.subtitleEmpty",
"usage.mosaic.sun",
"usage.mosaic.thu",
"usage.mosaic.title",
"usage.mosaic.tue",
"usage.mosaic.wed",
"usage.overview.acrossMessages",
"usage.overview.assistant",
"usage.overview.avgCost",
"usage.overview.avgCostHint",
"usage.overview.avgCostHintMissing",
"usage.overview.avgSession",
"usage.overview.avgTokens",
"usage.overview.avgTokensHint",
"usage.overview.cached",
"usage.overview.cacheHint",
"usage.overview.cacheHitRate",
"usage.overview.calls",
"usage.overview.errorHint",
"usage.overview.errorRate",
"usage.overview.errors",
"usage.overview.errorsHint",
"usage.overview.messages",
"usage.overview.messagesAbbrev",
"usage.overview.messagesHint",
"usage.overview.noAgentData",
"usage.overview.noChannelData",
"usage.overview.noErrorData",
"usage.overview.noModelData",
"usage.overview.noProviderData",
"usage.overview.noToolCalls",
"usage.overview.peakErrorDays",
"usage.overview.peakErrorHours",
"usage.overview.perMinute",
"usage.overview.prompt",
"usage.overview.sessions",
"usage.overview.sessionsHint",
"usage.overview.sessionsInRange",
"usage.overview.throughput",
"usage.overview.throughputHint",
"usage.overview.title",
"usage.overview.tokensPerMinute",
"usage.overview.toolCalls",
"usage.overview.toolCallsHint",
"usage.overview.toolResults",
"usage.overview.toolsUsed",
"usage.overview.topAgents",
"usage.overview.topChannels",
"usage.overview.topModels",
"usage.overview.topProviders",
"usage.overview.topTools",
"usage.overview.user",
"usage.page.subtitle",
"usage.presets.last30d",
"usage.presets.last7d",
"usage.presets.today",
"usage.query.apply",
"usage.query.inRange",
"usage.query.matching",
"usage.query.placeholder",
"usage.query.tip",
"usage.sessions.all",
"usage.sessions.ascending",
"usage.sessions.avg",
"usage.sessions.clearSelection",
"usage.sessions.copy",
"usage.sessions.copyName",
"usage.sessions.descending",
"usage.sessions.limitReached",
"usage.sessions.more",
"usage.sessions.noneInRange",
"usage.sessions.noRecent",
"usage.sessions.recent",
"usage.sessions.recentShort",
"usage.sessions.selected",
"usage.sessions.shown",
"usage.sessions.sort",
"usage.sessions.title",
"usage.sessions.total"
],
"generatedAt": "2026-04-05T11:44:58.722Z",
"locale": "ja-JP",
"model": "",
"provider": "",
"sourceHash": "e482fa23a5ebfb33fa807a476f14ddb196e51d099b046a19e9573d54acdcd931",
"totalKeys": 509,
"translatedKeys": 0,
"workflow": 1
}

View File

@@ -0,0 +1,521 @@
{
"fallbackKeys": [
"chat.disconnected",
"chat.focusToggle",
"chat.hideCronSessions",
"chat.onboardingDisabled",
"chat.refreshTitle",
"chat.showCronSessions",
"chat.showCronSessionsHidden",
"chat.thinkingToggle",
"chat.toolCallsToggle",
"common.connect",
"common.disabled",
"common.docs",
"common.enabled",
"common.health",
"common.na",
"common.offline",
"common.ok",
"common.online",
"common.refresh",
"common.resources",
"common.search",
"common.theme",
"common.version",
"cron.errors.agentMessageRequired",
"cron.errors.agentMessageRequiredShort",
"cron.errors.cronExprRequired",
"cron.errors.cronExprRequiredShort",
"cron.errors.everyAmountInvalid",
"cron.errors.invalidIntervalAmount",
"cron.errors.invalidRunTime",
"cron.errors.invalidStaggerAmount",
"cron.errors.nameRequired",
"cron.errors.nameRequiredShort",
"cron.errors.scheduleAtInvalid",
"cron.errors.staggerAmountInvalid",
"cron.errors.systemEventTextRequired",
"cron.errors.systemTextRequired",
"cron.errors.timeoutInvalid",
"cron.errors.webhookUrlInvalid",
"cron.errors.webhookUrlRequired",
"cron.form.addJob",
"cron.form.advanced",
"cron.form.advancedHelp",
"cron.form.agentHelp",
"cron.form.agentId",
"cron.form.agentPlaceholder",
"cron.form.agentTurn",
"cron.form.agentTurnHelp",
"cron.form.announceDefault",
"cron.form.assistantTaskPrompt",
"cron.form.at",
"cron.form.basics",
"cron.form.basicsSub",
"cron.form.bestEffortDelivery",
"cron.form.bestEffortHelp",
"cron.form.cancel",
"cron.form.cantAddYet",
"cron.form.channel",
"cron.form.channelHelp",
"cron.form.clearAgentHelp",
"cron.form.clearAgentOverride",
"cron.form.createSubtitle",
"cron.form.cronOption",
"cron.form.days",
"cron.form.deleteAfterRun",
"cron.form.deleteAfterRunHelp",
"cron.form.deliveryHelp",
"cron.form.deliverySection",
"cron.form.deliverySub",
"cron.form.description",
"cron.form.descriptionPlaceholder",
"cron.form.editJob",
"cron.form.every",
"cron.form.everyAmountPlaceholder",
"cron.form.exactTiming",
"cron.form.exactTimingHelp",
"cron.form.execution",
"cron.form.executionSub",
"cron.form.expression",
"cron.form.expressionPlaceholder",
"cron.form.fieldName",
"cron.form.fillRequired",
"cron.form.fixFields",
"cron.form.fixFieldsPlural",
"cron.form.hours",
"cron.form.isolated",
"cron.form.jitterHelp",
"cron.form.main",
"cron.form.mainTimelineMessage",
"cron.form.minutes",
"cron.form.model",
"cron.form.modelHelp",
"cron.form.modelPlaceholder",
"cron.form.namePlaceholder",
"cron.form.newJob",
"cron.form.nextHeartbeat",
"cron.form.noneInternal",
"cron.form.now",
"cron.form.payloadKind",
"cron.form.required",
"cron.form.requiredSr",
"cron.form.resultDelivery",
"cron.form.runAt",
"cron.form.saveChanges",
"cron.form.saving",
"cron.form.schedule",
"cron.form.scheduleSub",
"cron.form.seconds",
"cron.form.session",
"cron.form.sessionHelp",
"cron.form.staggerPlaceholder",
"cron.form.staggerUnit",
"cron.form.staggerWindow",
"cron.form.systemEvent",
"cron.form.systemEventHelp",
"cron.form.thinking",
"cron.form.thinkingHelp",
"cron.form.thinkingPlaceholder",
"cron.form.timeoutHelp",
"cron.form.timeoutPlaceholder",
"cron.form.timeoutSeconds",
"cron.form.timezoneHelp",
"cron.form.timezoneOptional",
"cron.form.timezonePlaceholder",
"cron.form.to",
"cron.form.toHelp",
"cron.form.toPlaceholder",
"cron.form.unit",
"cron.form.updateSubtitle",
"cron.form.wakeMode",
"cron.form.wakeModeHelp",
"cron.form.webhookHelp",
"cron.form.webhookPlaceholder",
"cron.form.webhookPost",
"cron.form.webhookUrl",
"cron.jobDetail.agent",
"cron.jobDetail.delivery",
"cron.jobDetail.prompt",
"cron.jobDetail.system",
"cron.jobList.allJobs",
"cron.jobList.clone",
"cron.jobList.disable",
"cron.jobList.disabled",
"cron.jobList.edit",
"cron.jobList.enable",
"cron.jobList.enabled",
"cron.jobList.history",
"cron.jobList.remove",
"cron.jobList.run",
"cron.jobList.selectJob",
"cron.jobs.all",
"cron.jobs.ascending",
"cron.jobs.descending",
"cron.jobs.direction",
"cron.jobs.enabled",
"cron.jobs.lastRun",
"cron.jobs.loading",
"cron.jobs.loadMore",
"cron.jobs.name",
"cron.jobs.nextRun",
"cron.jobs.noMatching",
"cron.jobs.recentlyUpdated",
"cron.jobs.reset",
"cron.jobs.schedule",
"cron.jobs.searchJobs",
"cron.jobs.searchPlaceholder",
"cron.jobs.shownOf",
"cron.jobs.sort",
"cron.jobs.subtitle",
"cron.jobs.title",
"cron.jobState.last",
"cron.jobState.next",
"cron.jobState.status",
"cron.runEntry.due",
"cron.runEntry.next",
"cron.runEntry.noSummary",
"cron.runEntry.openRunChat",
"cron.runEntry.runAt",
"cron.runs.allDelivery",
"cron.runs.allJobs",
"cron.runs.allStatuses",
"cron.runs.clear",
"cron.runs.delivery",
"cron.runs.deliveryDelivered",
"cron.runs.deliveryNotDelivered",
"cron.runs.deliveryNotRequested",
"cron.runs.deliveryUnknown",
"cron.runs.loadMore",
"cron.runs.newestFirst",
"cron.runs.noMatching",
"cron.runs.oldestFirst",
"cron.runs.runStatusError",
"cron.runs.runStatusOk",
"cron.runs.runStatusSkipped",
"cron.runs.runStatusUnknown",
"cron.runs.scope",
"cron.runs.searchPlaceholder",
"cron.runs.searchRuns",
"cron.runs.selectedJob",
"cron.runs.selectJobHint",
"cron.runs.status",
"cron.runs.subtitleAll",
"cron.runs.subtitleJob",
"cron.runs.title",
"cron.summary.enabled",
"cron.summary.jobs",
"cron.summary.nextWake",
"cron.summary.no",
"cron.summary.refresh",
"cron.summary.refreshing",
"cron.summary.yes",
"languages.de",
"languages.en",
"languages.es",
"languages.fr",
"languages.jaJP",
"languages.ko",
"languages.ptBR",
"languages.zhCN",
"languages.zhTW",
"login.passwordPlaceholder",
"login.subtitle",
"nav.agent",
"nav.chat",
"nav.collapse",
"nav.control",
"nav.expand",
"nav.resize",
"nav.settings",
"overview.access.connectHint",
"overview.access.language",
"overview.access.password",
"overview.access.sessionKey",
"overview.access.subtitle",
"overview.access.title",
"overview.access.token",
"overview.access.trustedProxy",
"overview.access.wsUrl",
"overview.attention.title",
"overview.auth.failed",
"overview.auth.required",
"overview.cards.cost",
"overview.cards.recentSessions",
"overview.cards.skills",
"overview.connection.docsHint",
"overview.connection.docsLink",
"overview.connection.step1",
"overview.connection.step2",
"overview.connection.step3",
"overview.connection.step4",
"overview.connection.title",
"overview.eventLog.title",
"overview.insecure.hint",
"overview.insecure.stayHttp",
"overview.logTail.title",
"overview.notes.cronText",
"overview.notes.cronTitle",
"overview.notes.sessionText",
"overview.notes.sessionTitle",
"overview.notes.subtitle",
"overview.notes.tailscaleText",
"overview.notes.tailscaleTitle",
"overview.notes.title",
"overview.pairing.hint",
"overview.pairing.mobileHint",
"overview.palette.noResults",
"overview.palette.placeholder",
"overview.quickActions.automation",
"overview.quickActions.newSession",
"overview.quickActions.refreshAll",
"overview.quickActions.terminal",
"overview.snapshot.channelsHint",
"overview.snapshot.lastChannelsRefresh",
"overview.snapshot.status",
"overview.snapshot.subtitle",
"overview.snapshot.tickInterval",
"overview.snapshot.title",
"overview.snapshot.uptime",
"overview.stats.cron",
"overview.stats.cronNext",
"overview.stats.instances",
"overview.stats.instancesHint",
"overview.stats.sessions",
"overview.stats.sessionsHint",
"subtitles.agents",
"subtitles.aiAgents",
"subtitles.appearance",
"subtitles.automation",
"subtitles.channels",
"subtitles.chat",
"subtitles.communications",
"subtitles.config",
"subtitles.cron",
"subtitles.debug",
"subtitles.dreams",
"subtitles.infrastructure",
"subtitles.instances",
"subtitles.logs",
"subtitles.nodes",
"subtitles.overview",
"subtitles.sessions",
"subtitles.skills",
"subtitles.usage",
"tabs.agents",
"tabs.aiAgents",
"tabs.appearance",
"tabs.automation",
"tabs.channels",
"tabs.chat",
"tabs.communications",
"tabs.config",
"tabs.cron",
"tabs.debug",
"tabs.dreams",
"tabs.infrastructure",
"tabs.instances",
"tabs.logs",
"tabs.nodes",
"tabs.overview",
"tabs.sessions",
"tabs.skills",
"tabs.usage",
"usage.breakdown.cacheRead",
"usage.breakdown.cacheWrite",
"usage.breakdown.costByType",
"usage.breakdown.input",
"usage.breakdown.output",
"usage.breakdown.tokensByType",
"usage.breakdown.total",
"usage.common.emptyValue",
"usage.common.unknown",
"usage.daily.byType",
"usage.daily.costTitle",
"usage.daily.title",
"usage.daily.tokensTitle",
"usage.daily.total",
"usage.details.assistantOutputTokens",
"usage.details.baseContextPerMessage",
"usage.details.close",
"usage.details.collapse",
"usage.details.collapseAll",
"usage.details.conversation",
"usage.details.cumulative",
"usage.details.duration",
"usage.details.expandAll",
"usage.details.files",
"usage.details.filtered",
"usage.details.hasTools",
"usage.details.modelMix",
"usage.details.noContextData",
"usage.details.noDataInRange",
"usage.details.noMessages",
"usage.details.noMessagesMatch",
"usage.details.noTimeline",
"usage.details.noUsageData",
"usage.details.of",
"usage.details.ofInput",
"usage.details.perTurn",
"usage.details.reset",
"usage.details.searchConversation",
"usage.details.skills",
"usage.details.system",
"usage.details.systemPromptBreakdown",
"usage.details.systemShort",
"usage.details.timelineFiltered",
"usage.details.tokensReadFromCache",
"usage.details.tokensWrittenToCache",
"usage.details.tool",
"usage.details.toolResult",
"usage.details.tools",
"usage.details.turnRange",
"usage.details.usageOverTime",
"usage.details.userToolInputTokens",
"usage.details.you",
"usage.empty.featureOverview",
"usage.empty.featureSessions",
"usage.empty.featureTimeline",
"usage.empty.hint",
"usage.empty.noData",
"usage.empty.subtitle",
"usage.empty.title",
"usage.export.dailyCsv",
"usage.export.json",
"usage.export.label",
"usage.export.sessionsCsv",
"usage.filters.agent",
"usage.filters.all",
"usage.filters.channel",
"usage.filters.clear",
"usage.filters.clearAll",
"usage.filters.days",
"usage.filters.daysCount",
"usage.filters.endDate",
"usage.filters.hours",
"usage.filters.hoursCount",
"usage.filters.model",
"usage.filters.pin",
"usage.filters.pinned",
"usage.filters.provider",
"usage.filters.remove",
"usage.filters.selectAll",
"usage.filters.session",
"usage.filters.sessionsCount",
"usage.filters.startDate",
"usage.filters.timeZone",
"usage.filters.timeZoneLocal",
"usage.filters.timeZoneUtc",
"usage.filters.title",
"usage.filters.to",
"usage.filters.tool",
"usage.filters.unpin",
"usage.loading.badge",
"usage.loading.title",
"usage.metrics.cost",
"usage.metrics.session",
"usage.metrics.sessions",
"usage.metrics.tokens",
"usage.mosaic.dayOfWeek",
"usage.mosaic.eightAm",
"usage.mosaic.eightPm",
"usage.mosaic.fourAm",
"usage.mosaic.fourPm",
"usage.mosaic.fri",
"usage.mosaic.legend",
"usage.mosaic.midnight",
"usage.mosaic.mon",
"usage.mosaic.noon",
"usage.mosaic.noTimelineData",
"usage.mosaic.sat",
"usage.mosaic.subtitle",
"usage.mosaic.subtitleEmpty",
"usage.mosaic.sun",
"usage.mosaic.thu",
"usage.mosaic.title",
"usage.mosaic.tue",
"usage.mosaic.wed",
"usage.overview.acrossMessages",
"usage.overview.assistant",
"usage.overview.avgCost",
"usage.overview.avgCostHint",
"usage.overview.avgCostHintMissing",
"usage.overview.avgSession",
"usage.overview.avgTokens",
"usage.overview.avgTokensHint",
"usage.overview.cached",
"usage.overview.cacheHint",
"usage.overview.cacheHitRate",
"usage.overview.calls",
"usage.overview.errorHint",
"usage.overview.errorRate",
"usage.overview.errors",
"usage.overview.errorsHint",
"usage.overview.messages",
"usage.overview.messagesAbbrev",
"usage.overview.messagesHint",
"usage.overview.noAgentData",
"usage.overview.noChannelData",
"usage.overview.noErrorData",
"usage.overview.noModelData",
"usage.overview.noProviderData",
"usage.overview.noToolCalls",
"usage.overview.peakErrorDays",
"usage.overview.peakErrorHours",
"usage.overview.perMinute",
"usage.overview.prompt",
"usage.overview.sessions",
"usage.overview.sessionsHint",
"usage.overview.sessionsInRange",
"usage.overview.throughput",
"usage.overview.throughputHint",
"usage.overview.title",
"usage.overview.tokensPerMinute",
"usage.overview.toolCalls",
"usage.overview.toolCallsHint",
"usage.overview.toolResults",
"usage.overview.toolsUsed",
"usage.overview.topAgents",
"usage.overview.topChannels",
"usage.overview.topModels",
"usage.overview.topProviders",
"usage.overview.topTools",
"usage.overview.user",
"usage.page.subtitle",
"usage.presets.last30d",
"usage.presets.last7d",
"usage.presets.today",
"usage.query.apply",
"usage.query.inRange",
"usage.query.matching",
"usage.query.placeholder",
"usage.query.tip",
"usage.sessions.all",
"usage.sessions.ascending",
"usage.sessions.avg",
"usage.sessions.clearSelection",
"usage.sessions.copy",
"usage.sessions.copyName",
"usage.sessions.descending",
"usage.sessions.limitReached",
"usage.sessions.more",
"usage.sessions.noneInRange",
"usage.sessions.noRecent",
"usage.sessions.recent",
"usage.sessions.recentShort",
"usage.sessions.selected",
"usage.sessions.shown",
"usage.sessions.sort",
"usage.sessions.title",
"usage.sessions.total"
],
"generatedAt": "2026-04-05T11:44:58.733Z",
"locale": "ko",
"model": "",
"provider": "",
"sourceHash": "e482fa23a5ebfb33fa807a476f14ddb196e51d099b046a19e9573d54acdcd931",
"totalKeys": 509,
"translatedKeys": 0,
"workflow": 1
}

View File

@@ -0,0 +1,410 @@
{
"fallbackKeys": [
"chat.toolCallsToggle",
"common.docs",
"common.na",
"common.offline",
"common.ok",
"common.online",
"common.theme",
"cron.errors.agentMessageRequired",
"cron.errors.agentMessageRequiredShort",
"cron.errors.cronExprRequired",
"cron.errors.cronExprRequiredShort",
"cron.errors.everyAmountInvalid",
"cron.errors.invalidIntervalAmount",
"cron.errors.invalidRunTime",
"cron.errors.invalidStaggerAmount",
"cron.errors.nameRequired",
"cron.errors.nameRequiredShort",
"cron.errors.scheduleAtInvalid",
"cron.errors.staggerAmountInvalid",
"cron.errors.systemEventTextRequired",
"cron.errors.systemTextRequired",
"cron.errors.timeoutInvalid",
"cron.errors.webhookUrlInvalid",
"cron.errors.webhookUrlRequired",
"cron.form.addJob",
"cron.form.advanced",
"cron.form.advancedHelp",
"cron.form.agentHelp",
"cron.form.agentId",
"cron.form.agentPlaceholder",
"cron.form.agentTurn",
"cron.form.agentTurnHelp",
"cron.form.announceDefault",
"cron.form.assistantTaskPrompt",
"cron.form.at",
"cron.form.basics",
"cron.form.basicsSub",
"cron.form.bestEffortDelivery",
"cron.form.bestEffortHelp",
"cron.form.cancel",
"cron.form.cantAddYet",
"cron.form.channel",
"cron.form.channelHelp",
"cron.form.clearAgentHelp",
"cron.form.clearAgentOverride",
"cron.form.createSubtitle",
"cron.form.cronOption",
"cron.form.days",
"cron.form.deleteAfterRun",
"cron.form.deleteAfterRunHelp",
"cron.form.deliveryHelp",
"cron.form.deliverySection",
"cron.form.deliverySub",
"cron.form.description",
"cron.form.descriptionPlaceholder",
"cron.form.editJob",
"cron.form.every",
"cron.form.everyAmountPlaceholder",
"cron.form.exactTiming",
"cron.form.exactTimingHelp",
"cron.form.execution",
"cron.form.executionSub",
"cron.form.expression",
"cron.form.expressionPlaceholder",
"cron.form.fieldName",
"cron.form.fillRequired",
"cron.form.fixFields",
"cron.form.fixFieldsPlural",
"cron.form.hours",
"cron.form.isolated",
"cron.form.jitterHelp",
"cron.form.main",
"cron.form.mainTimelineMessage",
"cron.form.minutes",
"cron.form.model",
"cron.form.modelHelp",
"cron.form.modelPlaceholder",
"cron.form.namePlaceholder",
"cron.form.newJob",
"cron.form.nextHeartbeat",
"cron.form.noneInternal",
"cron.form.now",
"cron.form.payloadKind",
"cron.form.required",
"cron.form.requiredSr",
"cron.form.resultDelivery",
"cron.form.runAt",
"cron.form.saveChanges",
"cron.form.saving",
"cron.form.schedule",
"cron.form.scheduleSub",
"cron.form.seconds",
"cron.form.session",
"cron.form.sessionHelp",
"cron.form.staggerPlaceholder",
"cron.form.staggerUnit",
"cron.form.staggerWindow",
"cron.form.systemEvent",
"cron.form.systemEventHelp",
"cron.form.thinking",
"cron.form.thinkingHelp",
"cron.form.thinkingPlaceholder",
"cron.form.timeoutHelp",
"cron.form.timeoutPlaceholder",
"cron.form.timeoutSeconds",
"cron.form.timezoneHelp",
"cron.form.timezoneOptional",
"cron.form.timezonePlaceholder",
"cron.form.to",
"cron.form.toHelp",
"cron.form.toPlaceholder",
"cron.form.unit",
"cron.form.updateSubtitle",
"cron.form.wakeMode",
"cron.form.wakeModeHelp",
"cron.form.webhookHelp",
"cron.form.webhookPlaceholder",
"cron.form.webhookPost",
"cron.form.webhookUrl",
"cron.jobDetail.agent",
"cron.jobDetail.delivery",
"cron.jobDetail.prompt",
"cron.jobDetail.system",
"cron.jobList.allJobs",
"cron.jobList.clone",
"cron.jobList.disable",
"cron.jobList.disabled",
"cron.jobList.edit",
"cron.jobList.enable",
"cron.jobList.enabled",
"cron.jobList.history",
"cron.jobList.remove",
"cron.jobList.run",
"cron.jobList.selectJob",
"cron.jobs.all",
"cron.jobs.ascending",
"cron.jobs.descending",
"cron.jobs.direction",
"cron.jobs.enabled",
"cron.jobs.lastRun",
"cron.jobs.loading",
"cron.jobs.loadMore",
"cron.jobs.name",
"cron.jobs.nextRun",
"cron.jobs.noMatching",
"cron.jobs.recentlyUpdated",
"cron.jobs.reset",
"cron.jobs.schedule",
"cron.jobs.searchJobs",
"cron.jobs.searchPlaceholder",
"cron.jobs.shownOf",
"cron.jobs.sort",
"cron.jobs.subtitle",
"cron.jobs.title",
"cron.jobState.last",
"cron.jobState.next",
"cron.jobState.status",
"cron.runEntry.due",
"cron.runEntry.next",
"cron.runEntry.noSummary",
"cron.runEntry.openRunChat",
"cron.runEntry.runAt",
"cron.runs.allDelivery",
"cron.runs.allJobs",
"cron.runs.allStatuses",
"cron.runs.clear",
"cron.runs.delivery",
"cron.runs.deliveryDelivered",
"cron.runs.deliveryNotDelivered",
"cron.runs.deliveryNotRequested",
"cron.runs.deliveryUnknown",
"cron.runs.loadMore",
"cron.runs.newestFirst",
"cron.runs.noMatching",
"cron.runs.oldestFirst",
"cron.runs.runStatusError",
"cron.runs.runStatusOk",
"cron.runs.runStatusSkipped",
"cron.runs.runStatusUnknown",
"cron.runs.scope",
"cron.runs.searchPlaceholder",
"cron.runs.searchRuns",
"cron.runs.selectedJob",
"cron.runs.selectJobHint",
"cron.runs.status",
"cron.runs.subtitleAll",
"cron.runs.subtitleJob",
"cron.runs.title",
"cron.summary.enabled",
"cron.summary.jobs",
"cron.summary.nextWake",
"cron.summary.no",
"cron.summary.refresh",
"cron.summary.refreshing",
"cron.summary.yes",
"languages.en",
"languages.fr",
"languages.jaJP",
"languages.ko",
"nav.chat",
"overview.notes.tailscaleTitle",
"overview.quickActions.terminal",
"overview.snapshot.status",
"overview.snapshot.title",
"overview.stats.cron",
"subtitles.dreams",
"tabs.chat",
"tabs.config",
"tabs.debug",
"tabs.dreams",
"tabs.logs",
"usage.breakdown.cacheRead",
"usage.breakdown.cacheWrite",
"usage.breakdown.costByType",
"usage.breakdown.input",
"usage.breakdown.output",
"usage.breakdown.tokensByType",
"usage.breakdown.total",
"usage.common.emptyValue",
"usage.common.unknown",
"usage.daily.byType",
"usage.daily.costTitle",
"usage.daily.title",
"usage.daily.tokensTitle",
"usage.daily.total",
"usage.details.assistantOutputTokens",
"usage.details.baseContextPerMessage",
"usage.details.close",
"usage.details.collapse",
"usage.details.collapseAll",
"usage.details.conversation",
"usage.details.cumulative",
"usage.details.duration",
"usage.details.expandAll",
"usage.details.files",
"usage.details.filtered",
"usage.details.hasTools",
"usage.details.modelMix",
"usage.details.noContextData",
"usage.details.noDataInRange",
"usage.details.noMessages",
"usage.details.noMessagesMatch",
"usage.details.noTimeline",
"usage.details.noUsageData",
"usage.details.of",
"usage.details.ofInput",
"usage.details.perTurn",
"usage.details.reset",
"usage.details.searchConversation",
"usage.details.skills",
"usage.details.system",
"usage.details.systemPromptBreakdown",
"usage.details.systemShort",
"usage.details.timelineFiltered",
"usage.details.tokensReadFromCache",
"usage.details.tokensWrittenToCache",
"usage.details.tool",
"usage.details.toolResult",
"usage.details.tools",
"usage.details.turnRange",
"usage.details.usageOverTime",
"usage.details.userToolInputTokens",
"usage.details.you",
"usage.empty.featureOverview",
"usage.empty.featureSessions",
"usage.empty.featureTimeline",
"usage.empty.hint",
"usage.empty.noData",
"usage.empty.subtitle",
"usage.empty.title",
"usage.export.dailyCsv",
"usage.export.json",
"usage.export.label",
"usage.export.sessionsCsv",
"usage.filters.agent",
"usage.filters.all",
"usage.filters.channel",
"usage.filters.clear",
"usage.filters.clearAll",
"usage.filters.days",
"usage.filters.daysCount",
"usage.filters.endDate",
"usage.filters.hours",
"usage.filters.hoursCount",
"usage.filters.model",
"usage.filters.pin",
"usage.filters.pinned",
"usage.filters.provider",
"usage.filters.remove",
"usage.filters.selectAll",
"usage.filters.session",
"usage.filters.sessionsCount",
"usage.filters.startDate",
"usage.filters.timeZone",
"usage.filters.timeZoneLocal",
"usage.filters.timeZoneUtc",
"usage.filters.title",
"usage.filters.to",
"usage.filters.tool",
"usage.filters.unpin",
"usage.loading.badge",
"usage.loading.title",
"usage.metrics.cost",
"usage.metrics.session",
"usage.metrics.sessions",
"usage.metrics.tokens",
"usage.mosaic.dayOfWeek",
"usage.mosaic.eightAm",
"usage.mosaic.eightPm",
"usage.mosaic.fourAm",
"usage.mosaic.fourPm",
"usage.mosaic.fri",
"usage.mosaic.legend",
"usage.mosaic.midnight",
"usage.mosaic.mon",
"usage.mosaic.noon",
"usage.mosaic.noTimelineData",
"usage.mosaic.sat",
"usage.mosaic.subtitle",
"usage.mosaic.subtitleEmpty",
"usage.mosaic.sun",
"usage.mosaic.thu",
"usage.mosaic.title",
"usage.mosaic.tue",
"usage.mosaic.wed",
"usage.overview.acrossMessages",
"usage.overview.assistant",
"usage.overview.avgCost",
"usage.overview.avgCostHint",
"usage.overview.avgCostHintMissing",
"usage.overview.avgSession",
"usage.overview.avgTokens",
"usage.overview.avgTokensHint",
"usage.overview.cached",
"usage.overview.cacheHint",
"usage.overview.cacheHitRate",
"usage.overview.calls",
"usage.overview.errorHint",
"usage.overview.errorRate",
"usage.overview.errors",
"usage.overview.errorsHint",
"usage.overview.messages",
"usage.overview.messagesAbbrev",
"usage.overview.messagesHint",
"usage.overview.noAgentData",
"usage.overview.noChannelData",
"usage.overview.noErrorData",
"usage.overview.noModelData",
"usage.overview.noProviderData",
"usage.overview.noToolCalls",
"usage.overview.peakErrorDays",
"usage.overview.peakErrorHours",
"usage.overview.perMinute",
"usage.overview.prompt",
"usage.overview.sessions",
"usage.overview.sessionsHint",
"usage.overview.sessionsInRange",
"usage.overview.throughput",
"usage.overview.throughputHint",
"usage.overview.title",
"usage.overview.tokensPerMinute",
"usage.overview.toolCalls",
"usage.overview.toolCallsHint",
"usage.overview.toolResults",
"usage.overview.toolsUsed",
"usage.overview.topAgents",
"usage.overview.topChannels",
"usage.overview.topModels",
"usage.overview.topProviders",
"usage.overview.topTools",
"usage.overview.user",
"usage.page.subtitle",
"usage.presets.last30d",
"usage.presets.last7d",
"usage.presets.today",
"usage.query.apply",
"usage.query.inRange",
"usage.query.matching",
"usage.query.placeholder",
"usage.query.tip",
"usage.sessions.all",
"usage.sessions.ascending",
"usage.sessions.avg",
"usage.sessions.clearSelection",
"usage.sessions.copy",
"usage.sessions.copyName",
"usage.sessions.descending",
"usage.sessions.limitReached",
"usage.sessions.more",
"usage.sessions.noneInRange",
"usage.sessions.noRecent",
"usage.sessions.recent",
"usage.sessions.recentShort",
"usage.sessions.selected",
"usage.sessions.shown",
"usage.sessions.sort",
"usage.sessions.title",
"usage.sessions.total"
],
"generatedAt": "2026-04-05T11:44:58.685Z",
"locale": "pt-BR",
"model": "",
"provider": "",
"sourceHash": "e482fa23a5ebfb33fa807a476f14ddb196e51d099b046a19e9573d54acdcd931",
"totalKeys": 509,
"translatedKeys": 111,
"workflow": 1
}

View File

@@ -0,0 +1,222 @@
{
"fallbackKeys": [
"chat.toolCallsToggle",
"common.theme",
"cron.form.cronOption",
"cron.form.everyAmountPlaceholder",
"cron.form.expressionPlaceholder",
"cron.form.modelPlaceholder",
"cron.form.staggerPlaceholder",
"cron.form.thinkingPlaceholder",
"cron.form.timezonePlaceholder",
"cron.form.webhookPlaceholder",
"cron.form.webhookPost",
"cron.form.webhookUrl",
"cron.jobs.lastRun",
"cron.jobs.reset",
"cron.jobs.schedule",
"languages.en",
"languages.fr",
"languages.jaJP",
"languages.ko",
"overview.access.wsUrl",
"overview.notes.tailscaleTitle",
"subtitles.dreams",
"tabs.dreams",
"usage.breakdown.cacheRead",
"usage.breakdown.cacheWrite",
"usage.breakdown.costByType",
"usage.breakdown.input",
"usage.breakdown.output",
"usage.breakdown.tokensByType",
"usage.breakdown.total",
"usage.common.emptyValue",
"usage.common.unknown",
"usage.daily.byType",
"usage.daily.costTitle",
"usage.daily.title",
"usage.daily.tokensTitle",
"usage.daily.total",
"usage.details.assistantOutputTokens",
"usage.details.baseContextPerMessage",
"usage.details.close",
"usage.details.collapse",
"usage.details.collapseAll",
"usage.details.conversation",
"usage.details.cumulative",
"usage.details.duration",
"usage.details.expandAll",
"usage.details.files",
"usage.details.filtered",
"usage.details.hasTools",
"usage.details.modelMix",
"usage.details.noContextData",
"usage.details.noDataInRange",
"usage.details.noMessages",
"usage.details.noMessagesMatch",
"usage.details.noTimeline",
"usage.details.noUsageData",
"usage.details.of",
"usage.details.ofInput",
"usage.details.perTurn",
"usage.details.reset",
"usage.details.searchConversation",
"usage.details.skills",
"usage.details.system",
"usage.details.systemPromptBreakdown",
"usage.details.systemShort",
"usage.details.timelineFiltered",
"usage.details.tokensReadFromCache",
"usage.details.tokensWrittenToCache",
"usage.details.tool",
"usage.details.toolResult",
"usage.details.tools",
"usage.details.turnRange",
"usage.details.usageOverTime",
"usage.details.userToolInputTokens",
"usage.details.you",
"usage.empty.featureOverview",
"usage.empty.featureSessions",
"usage.empty.featureTimeline",
"usage.empty.hint",
"usage.empty.noData",
"usage.empty.subtitle",
"usage.empty.title",
"usage.export.dailyCsv",
"usage.export.json",
"usage.export.label",
"usage.export.sessionsCsv",
"usage.filters.agent",
"usage.filters.all",
"usage.filters.channel",
"usage.filters.clear",
"usage.filters.clearAll",
"usage.filters.days",
"usage.filters.daysCount",
"usage.filters.endDate",
"usage.filters.hours",
"usage.filters.hoursCount",
"usage.filters.model",
"usage.filters.pin",
"usage.filters.pinned",
"usage.filters.provider",
"usage.filters.remove",
"usage.filters.selectAll",
"usage.filters.session",
"usage.filters.sessionsCount",
"usage.filters.startDate",
"usage.filters.timeZone",
"usage.filters.timeZoneLocal",
"usage.filters.timeZoneUtc",
"usage.filters.title",
"usage.filters.to",
"usage.filters.tool",
"usage.filters.unpin",
"usage.loading.badge",
"usage.loading.title",
"usage.metrics.cost",
"usage.metrics.session",
"usage.metrics.sessions",
"usage.metrics.tokens",
"usage.mosaic.dayOfWeek",
"usage.mosaic.eightAm",
"usage.mosaic.eightPm",
"usage.mosaic.fourAm",
"usage.mosaic.fourPm",
"usage.mosaic.fri",
"usage.mosaic.legend",
"usage.mosaic.midnight",
"usage.mosaic.mon",
"usage.mosaic.noon",
"usage.mosaic.noTimelineData",
"usage.mosaic.sat",
"usage.mosaic.subtitle",
"usage.mosaic.subtitleEmpty",
"usage.mosaic.sun",
"usage.mosaic.thu",
"usage.mosaic.title",
"usage.mosaic.tue",
"usage.mosaic.wed",
"usage.overview.acrossMessages",
"usage.overview.assistant",
"usage.overview.avgCost",
"usage.overview.avgCostHint",
"usage.overview.avgCostHintMissing",
"usage.overview.avgSession",
"usage.overview.avgTokens",
"usage.overview.avgTokensHint",
"usage.overview.cached",
"usage.overview.cacheHint",
"usage.overview.cacheHitRate",
"usage.overview.calls",
"usage.overview.errorHint",
"usage.overview.errorRate",
"usage.overview.errors",
"usage.overview.errorsHint",
"usage.overview.messages",
"usage.overview.messagesAbbrev",
"usage.overview.messagesHint",
"usage.overview.noAgentData",
"usage.overview.noChannelData",
"usage.overview.noErrorData",
"usage.overview.noModelData",
"usage.overview.noProviderData",
"usage.overview.noToolCalls",
"usage.overview.peakErrorDays",
"usage.overview.peakErrorHours",
"usage.overview.perMinute",
"usage.overview.prompt",
"usage.overview.sessions",
"usage.overview.sessionsHint",
"usage.overview.sessionsInRange",
"usage.overview.throughput",
"usage.overview.throughputHint",
"usage.overview.title",
"usage.overview.tokensPerMinute",
"usage.overview.toolCalls",
"usage.overview.toolCallsHint",
"usage.overview.toolResults",
"usage.overview.toolsUsed",
"usage.overview.topAgents",
"usage.overview.topChannels",
"usage.overview.topModels",
"usage.overview.topProviders",
"usage.overview.topTools",
"usage.overview.user",
"usage.page.subtitle",
"usage.presets.last30d",
"usage.presets.last7d",
"usage.presets.today",
"usage.query.apply",
"usage.query.inRange",
"usage.query.matching",
"usage.query.placeholder",
"usage.query.tip",
"usage.sessions.all",
"usage.sessions.ascending",
"usage.sessions.avg",
"usage.sessions.clearSelection",
"usage.sessions.copy",
"usage.sessions.copyName",
"usage.sessions.descending",
"usage.sessions.limitReached",
"usage.sessions.more",
"usage.sessions.noneInRange",
"usage.sessions.noRecent",
"usage.sessions.recent",
"usage.sessions.recentShort",
"usage.sessions.selected",
"usage.sessions.shown",
"usage.sessions.sort",
"usage.sessions.title",
"usage.sessions.total"
],
"generatedAt": "2026-04-05T11:44:58.662Z",
"locale": "zh-CN",
"model": "",
"provider": "",
"sourceHash": "e482fa23a5ebfb33fa807a476f14ddb196e51d099b046a19e9573d54acdcd931",
"totalKeys": 509,
"translatedKeys": 299,
"workflow": 1
}

View File

@@ -0,0 +1,397 @@
{
"fallbackKeys": [
"chat.toolCallsToggle",
"common.theme",
"cron.errors.agentMessageRequired",
"cron.errors.agentMessageRequiredShort",
"cron.errors.cronExprRequired",
"cron.errors.cronExprRequiredShort",
"cron.errors.everyAmountInvalid",
"cron.errors.invalidIntervalAmount",
"cron.errors.invalidRunTime",
"cron.errors.invalidStaggerAmount",
"cron.errors.nameRequired",
"cron.errors.nameRequiredShort",
"cron.errors.scheduleAtInvalid",
"cron.errors.staggerAmountInvalid",
"cron.errors.systemEventTextRequired",
"cron.errors.systemTextRequired",
"cron.errors.timeoutInvalid",
"cron.errors.webhookUrlInvalid",
"cron.errors.webhookUrlRequired",
"cron.form.addJob",
"cron.form.advanced",
"cron.form.advancedHelp",
"cron.form.agentHelp",
"cron.form.agentId",
"cron.form.agentPlaceholder",
"cron.form.agentTurn",
"cron.form.agentTurnHelp",
"cron.form.announceDefault",
"cron.form.assistantTaskPrompt",
"cron.form.at",
"cron.form.basics",
"cron.form.basicsSub",
"cron.form.bestEffortDelivery",
"cron.form.bestEffortHelp",
"cron.form.cancel",
"cron.form.cantAddYet",
"cron.form.channel",
"cron.form.channelHelp",
"cron.form.clearAgentHelp",
"cron.form.clearAgentOverride",
"cron.form.createSubtitle",
"cron.form.cronOption",
"cron.form.days",
"cron.form.deleteAfterRun",
"cron.form.deleteAfterRunHelp",
"cron.form.deliveryHelp",
"cron.form.deliverySection",
"cron.form.deliverySub",
"cron.form.description",
"cron.form.descriptionPlaceholder",
"cron.form.editJob",
"cron.form.every",
"cron.form.everyAmountPlaceholder",
"cron.form.exactTiming",
"cron.form.exactTimingHelp",
"cron.form.execution",
"cron.form.executionSub",
"cron.form.expression",
"cron.form.expressionPlaceholder",
"cron.form.fieldName",
"cron.form.fillRequired",
"cron.form.fixFields",
"cron.form.fixFieldsPlural",
"cron.form.hours",
"cron.form.isolated",
"cron.form.jitterHelp",
"cron.form.main",
"cron.form.mainTimelineMessage",
"cron.form.minutes",
"cron.form.model",
"cron.form.modelHelp",
"cron.form.modelPlaceholder",
"cron.form.namePlaceholder",
"cron.form.newJob",
"cron.form.nextHeartbeat",
"cron.form.noneInternal",
"cron.form.now",
"cron.form.payloadKind",
"cron.form.required",
"cron.form.requiredSr",
"cron.form.resultDelivery",
"cron.form.runAt",
"cron.form.saveChanges",
"cron.form.saving",
"cron.form.schedule",
"cron.form.scheduleSub",
"cron.form.seconds",
"cron.form.session",
"cron.form.sessionHelp",
"cron.form.staggerPlaceholder",
"cron.form.staggerUnit",
"cron.form.staggerWindow",
"cron.form.systemEvent",
"cron.form.systemEventHelp",
"cron.form.thinking",
"cron.form.thinkingHelp",
"cron.form.thinkingPlaceholder",
"cron.form.timeoutHelp",
"cron.form.timeoutPlaceholder",
"cron.form.timeoutSeconds",
"cron.form.timezoneHelp",
"cron.form.timezoneOptional",
"cron.form.timezonePlaceholder",
"cron.form.to",
"cron.form.toHelp",
"cron.form.toPlaceholder",
"cron.form.unit",
"cron.form.updateSubtitle",
"cron.form.wakeMode",
"cron.form.wakeModeHelp",
"cron.form.webhookHelp",
"cron.form.webhookPlaceholder",
"cron.form.webhookPost",
"cron.form.webhookUrl",
"cron.jobDetail.agent",
"cron.jobDetail.delivery",
"cron.jobDetail.prompt",
"cron.jobDetail.system",
"cron.jobList.allJobs",
"cron.jobList.clone",
"cron.jobList.disable",
"cron.jobList.disabled",
"cron.jobList.edit",
"cron.jobList.enable",
"cron.jobList.enabled",
"cron.jobList.history",
"cron.jobList.remove",
"cron.jobList.run",
"cron.jobList.selectJob",
"cron.jobs.all",
"cron.jobs.ascending",
"cron.jobs.descending",
"cron.jobs.direction",
"cron.jobs.enabled",
"cron.jobs.lastRun",
"cron.jobs.loading",
"cron.jobs.loadMore",
"cron.jobs.name",
"cron.jobs.nextRun",
"cron.jobs.noMatching",
"cron.jobs.recentlyUpdated",
"cron.jobs.reset",
"cron.jobs.schedule",
"cron.jobs.searchJobs",
"cron.jobs.searchPlaceholder",
"cron.jobs.shownOf",
"cron.jobs.sort",
"cron.jobs.subtitle",
"cron.jobs.title",
"cron.jobState.last",
"cron.jobState.next",
"cron.jobState.status",
"cron.runEntry.due",
"cron.runEntry.next",
"cron.runEntry.noSummary",
"cron.runEntry.openRunChat",
"cron.runEntry.runAt",
"cron.runs.allDelivery",
"cron.runs.allJobs",
"cron.runs.allStatuses",
"cron.runs.clear",
"cron.runs.delivery",
"cron.runs.deliveryDelivered",
"cron.runs.deliveryNotDelivered",
"cron.runs.deliveryNotRequested",
"cron.runs.deliveryUnknown",
"cron.runs.loadMore",
"cron.runs.newestFirst",
"cron.runs.noMatching",
"cron.runs.oldestFirst",
"cron.runs.runStatusError",
"cron.runs.runStatusOk",
"cron.runs.runStatusSkipped",
"cron.runs.runStatusUnknown",
"cron.runs.scope",
"cron.runs.searchPlaceholder",
"cron.runs.searchRuns",
"cron.runs.selectedJob",
"cron.runs.selectJobHint",
"cron.runs.status",
"cron.runs.subtitleAll",
"cron.runs.subtitleJob",
"cron.runs.title",
"cron.summary.enabled",
"cron.summary.jobs",
"cron.summary.nextWake",
"cron.summary.no",
"cron.summary.refresh",
"cron.summary.refreshing",
"cron.summary.yes",
"languages.en",
"languages.fr",
"languages.jaJP",
"languages.ko",
"overview.access.wsUrl",
"overview.notes.tailscaleTitle",
"subtitles.dreams",
"tabs.dreams",
"usage.breakdown.cacheRead",
"usage.breakdown.cacheWrite",
"usage.breakdown.costByType",
"usage.breakdown.input",
"usage.breakdown.output",
"usage.breakdown.tokensByType",
"usage.breakdown.total",
"usage.common.emptyValue",
"usage.common.unknown",
"usage.daily.byType",
"usage.daily.costTitle",
"usage.daily.title",
"usage.daily.tokensTitle",
"usage.daily.total",
"usage.details.assistantOutputTokens",
"usage.details.baseContextPerMessage",
"usage.details.close",
"usage.details.collapse",
"usage.details.collapseAll",
"usage.details.conversation",
"usage.details.cumulative",
"usage.details.duration",
"usage.details.expandAll",
"usage.details.files",
"usage.details.filtered",
"usage.details.hasTools",
"usage.details.modelMix",
"usage.details.noContextData",
"usage.details.noDataInRange",
"usage.details.noMessages",
"usage.details.noMessagesMatch",
"usage.details.noTimeline",
"usage.details.noUsageData",
"usage.details.of",
"usage.details.ofInput",
"usage.details.perTurn",
"usage.details.reset",
"usage.details.searchConversation",
"usage.details.skills",
"usage.details.system",
"usage.details.systemPromptBreakdown",
"usage.details.systemShort",
"usage.details.timelineFiltered",
"usage.details.tokensReadFromCache",
"usage.details.tokensWrittenToCache",
"usage.details.tool",
"usage.details.toolResult",
"usage.details.tools",
"usage.details.turnRange",
"usage.details.usageOverTime",
"usage.details.userToolInputTokens",
"usage.details.you",
"usage.empty.featureOverview",
"usage.empty.featureSessions",
"usage.empty.featureTimeline",
"usage.empty.hint",
"usage.empty.noData",
"usage.empty.subtitle",
"usage.empty.title",
"usage.export.dailyCsv",
"usage.export.json",
"usage.export.label",
"usage.export.sessionsCsv",
"usage.filters.agent",
"usage.filters.all",
"usage.filters.channel",
"usage.filters.clear",
"usage.filters.clearAll",
"usage.filters.days",
"usage.filters.daysCount",
"usage.filters.endDate",
"usage.filters.hours",
"usage.filters.hoursCount",
"usage.filters.model",
"usage.filters.pin",
"usage.filters.pinned",
"usage.filters.provider",
"usage.filters.remove",
"usage.filters.selectAll",
"usage.filters.session",
"usage.filters.sessionsCount",
"usage.filters.startDate",
"usage.filters.timeZone",
"usage.filters.timeZoneLocal",
"usage.filters.timeZoneUtc",
"usage.filters.title",
"usage.filters.to",
"usage.filters.tool",
"usage.filters.unpin",
"usage.loading.badge",
"usage.loading.title",
"usage.metrics.cost",
"usage.metrics.session",
"usage.metrics.sessions",
"usage.metrics.tokens",
"usage.mosaic.dayOfWeek",
"usage.mosaic.eightAm",
"usage.mosaic.eightPm",
"usage.mosaic.fourAm",
"usage.mosaic.fourPm",
"usage.mosaic.fri",
"usage.mosaic.legend",
"usage.mosaic.midnight",
"usage.mosaic.mon",
"usage.mosaic.noon",
"usage.mosaic.noTimelineData",
"usage.mosaic.sat",
"usage.mosaic.subtitle",
"usage.mosaic.subtitleEmpty",
"usage.mosaic.sun",
"usage.mosaic.thu",
"usage.mosaic.title",
"usage.mosaic.tue",
"usage.mosaic.wed",
"usage.overview.acrossMessages",
"usage.overview.assistant",
"usage.overview.avgCost",
"usage.overview.avgCostHint",
"usage.overview.avgCostHintMissing",
"usage.overview.avgSession",
"usage.overview.avgTokens",
"usage.overview.avgTokensHint",
"usage.overview.cached",
"usage.overview.cacheHint",
"usage.overview.cacheHitRate",
"usage.overview.calls",
"usage.overview.errorHint",
"usage.overview.errorRate",
"usage.overview.errors",
"usage.overview.errorsHint",
"usage.overview.messages",
"usage.overview.messagesAbbrev",
"usage.overview.messagesHint",
"usage.overview.noAgentData",
"usage.overview.noChannelData",
"usage.overview.noErrorData",
"usage.overview.noModelData",
"usage.overview.noProviderData",
"usage.overview.noToolCalls",
"usage.overview.peakErrorDays",
"usage.overview.peakErrorHours",
"usage.overview.perMinute",
"usage.overview.prompt",
"usage.overview.sessions",
"usage.overview.sessionsHint",
"usage.overview.sessionsInRange",
"usage.overview.throughput",
"usage.overview.throughputHint",
"usage.overview.title",
"usage.overview.tokensPerMinute",
"usage.overview.toolCalls",
"usage.overview.toolCallsHint",
"usage.overview.toolResults",
"usage.overview.toolsUsed",
"usage.overview.topAgents",
"usage.overview.topChannels",
"usage.overview.topModels",
"usage.overview.topProviders",
"usage.overview.topTools",
"usage.overview.user",
"usage.page.subtitle",
"usage.presets.last30d",
"usage.presets.last7d",
"usage.presets.today",
"usage.query.apply",
"usage.query.inRange",
"usage.query.matching",
"usage.query.placeholder",
"usage.query.tip",
"usage.sessions.all",
"usage.sessions.ascending",
"usage.sessions.avg",
"usage.sessions.clearSelection",
"usage.sessions.copy",
"usage.sessions.copyName",
"usage.sessions.descending",
"usage.sessions.limitReached",
"usage.sessions.more",
"usage.sessions.noneInRange",
"usage.sessions.noRecent",
"usage.sessions.recent",
"usage.sessions.recentShort",
"usage.sessions.selected",
"usage.sessions.shown",
"usage.sessions.sort",
"usage.sessions.title",
"usage.sessions.total"
],
"generatedAt": "2026-04-05T11:44:58.675Z",
"locale": "zh-TW",
"model": "",
"provider": "",
"sourceHash": "e482fa23a5ebfb33fa807a476f14ddb196e51d099b046a19e9573d54acdcd931",
"totalKeys": 509,
"translatedKeys": 124,
"workflow": 1
}

View File

@@ -1,8 +1,8 @@
import type { TranslationMap } from "../lib/types.ts";
// Generated by scripts/control-ui-i18n.ts.
export const de: TranslationMap = {
common: {
version: "Version",
health: "Status",
ok: "OK",
online: "Online",
@@ -12,8 +12,11 @@ export const de: TranslationMap = {
enabled: "Aktiviert",
disabled: "Deaktiviert",
na: "k. A.",
version: "Version",
docs: "Dokumentation",
theme: "Theme",
resources: "Ressourcen",
search: "Search",
},
nav: {
chat: "Chat",
@@ -22,6 +25,7 @@ export const de: TranslationMap = {
settings: "Einstellungen",
expand: "Seitenleiste ausklappen",
collapse: "Seitenleiste einklappen",
resize: "Resize sidebar",
},
tabs: {
agents: "Agenten",
@@ -35,8 +39,14 @@ export const de: TranslationMap = {
nodes: "Geräte",
chat: "Chat",
config: "Konfiguration",
communications: "Communications",
appearance: "Appearance",
automation: "Automation",
infrastructure: "Infrastructure",
aiAgents: "AI & Agents",
debug: "Debug",
logs: "Protokolle",
dreams: "Dreams",
},
subtitles: {
agents: "Agent-Arbeitsbereiche, Tools und Identitäten verwalten.",
@@ -50,8 +60,14 @@ export const de: TranslationMap = {
nodes: "Gekoppelte Geräte, Fähigkeiten und Befehlsfreigabe.",
chat: "Direkte Gateway-Chat-Sitzung für schnelle Eingriffe.",
config: "~/.openclaw/openclaw.json sicher bearbeiten.",
communications: "Channels, messages, and audio settings.",
appearance: "Theme, UI, and setup wizard settings.",
automation: "Commands, hooks, cron, and plugins.",
infrastructure: "Gateway, web, browser, and media settings.",
aiAgents: "Agents, models, skills, tools, memory, session.",
debug: "Gateway-Snapshots, Ereignisse und manuelle RPC-Aufrufe.",
logs: "Live-Verfolgung der Gateway-Protokolldateien.",
dreams: "Memory consolidation while sleeping.",
},
overview: {
access: {
@@ -59,7 +75,7 @@ export const de: TranslationMap = {
subtitle: "Wo sich das Dashboard verbindet und wie es sich authentifiziert.",
wsUrl: "WebSocket-URL",
token: "Gateway-Token",
password: "Passwort (nicht gespeichert)", // pragma: allowlist secret
password: "Passwort (nicht gespeichert)",
sessionKey: "Standard-Sitzungsschlüssel",
language: "Sprache",
connectHint: "Klicken Sie auf Verbinden, um Verbindungsänderungen anzuwenden.",
@@ -109,11 +125,271 @@ export const de: TranslationMap = {
hint: "Diese Seite ist HTTP, daher blockiert der Browser die Geräteidentifikation. Verwenden Sie HTTPS (Tailscale Serve) oder öffnen Sie {url} auf dem Gateway-Host.",
stayHttp: "Wenn Sie bei HTTP bleiben müssen, setzen Sie {config} (nur Token).",
},
connection: {
title: "How to connect",
step1: "Start the gateway on your host machine:",
step2: "Get a tokenized dashboard URL:",
step3: "Paste the WebSocket URL and token above, or open the tokenized URL directly.",
step4: "Or generate a reusable token:",
docsHint: "For remote access, Tailscale Serve is recommended. ",
docsLink: "Read the docs →",
},
cards: {
cost: "Cost",
skills: "Skills",
recentSessions: "Recent Sessions",
},
attention: {
title: "Attention",
},
eventLog: {
title: "Event Log",
},
logTail: {
title: "Gateway Logs",
},
quickActions: {
newSession: "New Session",
automation: "Automation",
refreshAll: "Refresh All",
terminal: "Terminal",
},
palette: {
placeholder: "Type a command…",
noResults: "No results",
},
},
usage: {
page: {
subtitle: "See where tokens go, when sessions spike, and what drives cost.",
},
common: {
emptyValue: "—",
unknown: "unknown",
},
loading: {
title: "Usage Overview",
badge: "Loading",
},
metrics: {
tokens: "Tokens",
cost: "Cost",
session: "session",
sessions: "sessions",
},
presets: {
today: "Today",
last7d: "7d",
last30d: "30d",
},
filters: {
title: "Filters",
to: "to",
startDate: "Start date",
endDate: "End date",
timeZone: "Time zone",
timeZoneLocal: "Local",
timeZoneUtc: "UTC",
pin: "Pin",
pinned: "Pinned",
unpin: "Unpin filters",
selectAll: "Select All",
clear: "Clear",
clearAll: "Clear All",
remove: "Remove filter",
all: "All",
days: "Days",
hours: "Hours",
session: "Session",
agent: "Agent",
channel: "Channel",
provider: "Provider",
model: "Model",
tool: "Tool",
daysCount: "{count} days",
hoursCount: "{count} hours",
sessionsCount: "{count} sessions",
},
query: {
placeholder:
"Filter sessions (e.g. key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)",
apply: "Filter (client-side)",
matching: "{shown} of {total} sessions match",
inRange: "{total} sessions in range",
tip: "Tip: use filters or click bars to refine days.",
},
export: {
label: "Export",
sessionsCsv: "Sessions CSV",
dailyCsv: "Daily CSV",
json: "JSON",
},
empty: {
title: "Start with a date range",
subtitle:
"Load usage data to compare costs, inspect sessions, and drill into timelines without leaving the dashboard.",
hint: "Select a date range and click Refresh to load usage.",
noData: "No data",
featureOverview: "Overview cards",
featureSessions: "Session ranking",
featureTimeline: "Timeline drilldown",
},
daily: {
title: "Daily Usage",
total: "Total",
byType: "By Type",
tokensTitle: "Daily Token Usage",
costTitle: "Daily Cost",
},
breakdown: {
output: "Output",
input: "Input",
cacheWrite: "Cache Write",
cacheRead: "Cache Read",
total: "Total",
tokensByType: "Tokens by Type",
costByType: "Cost by Type",
},
overview: {
title: "Usage Overview",
messages: "Messages",
messagesHint: "Total user and assistant messages in range.",
messagesAbbrev: "msgs",
user: "user",
assistant: "assistant",
toolCalls: "Tool Calls",
toolCallsHint: "Total tool call count across sessions.",
toolsUsed: "tools used",
errors: "Errors",
errorsHint: "Total message and tool errors in range.",
toolResults: "tool results",
avgTokens: "Avg Tokens / Msg",
avgTokensHint: "Average tokens per message in this range.",
avgCost: "Avg Cost / Msg",
avgCostHint: "Average cost per message when providers report costs.",
avgCostHintMissing:
"Average cost per message when providers report costs. Cost data is missing for some or all sessions in this range.",
acrossMessages: "Across {count} messages",
sessions: "Sessions",
sessionsHint: "Distinct sessions in the range.",
sessionsInRange: "of {count} in range",
throughput: "Throughput",
throughputHint: "Throughput shows tokens per minute over active time. Higher is better.",
tokensPerMinute: "tok/min",
perMinute: "/ min",
errorRate: "Error Rate",
errorHint: "Error rate = errors / total messages. Lower is better.",
avgSession: "avg session",
cacheHitRate: "Cache Hit Rate",
cacheHint: "Cache hit rate = cache read / (input + cache read). Higher is better.",
cached: "cached",
prompt: "prompt",
calls: "calls",
topModels: "Top Models",
topProviders: "Top Providers",
topTools: "Top Tools",
topAgents: "Top Agents",
topChannels: "Top Channels",
peakErrorDays: "Peak Error Days",
peakErrorHours: "Peak Error Hours",
noModelData: "No model data",
noProviderData: "No provider data",
noToolCalls: "No tool calls",
noAgentData: "No agent data",
noChannelData: "No channel data",
noErrorData: "No error data",
},
sessions: {
title: "Sessions",
shown: "{count} shown",
total: "{count} total",
avg: "avg",
all: "All",
recent: "Recently viewed",
recentShort: "Recent",
sort: "Sort",
ascending: "Ascending",
descending: "Descending",
clearSelection: "Clear Selection",
noRecent: "No recent sessions",
noneInRange: "No sessions in range",
more: "+{count} more",
selected: "Selected ({count})",
copy: "Copy",
copyName: "Copy session name",
limitReached: "Showing first 1,000 sessions. Narrow date range for complete results.",
},
details: {
noUsageData: "No usage data for this session.",
duration: "Duration",
modelMix: "Model Mix",
filtered: "(filtered)",
close: "Close session details",
noTimeline: "No timeline data",
noDataInRange: "No data in range",
usageOverTime: "Usage Over Time",
reset: "Reset",
perTurn: "Per Turn",
cumulative: "Cumulative",
turnRange: "Turns {start}{end} of {total}",
assistantOutputTokens: "Assistant output tokens",
userToolInputTokens: "User + tool input tokens",
tokensWrittenToCache: "Tokens written to cache",
tokensReadFromCache: "Tokens read from cache",
noContextData: "No context data",
systemPromptBreakdown: "System Prompt Breakdown",
collapse: "Collapse",
collapseAll: "Collapse All",
expandAll: "Expand All",
baseContextPerMessage: "Base context per message",
system: "System",
systemShort: "Sys",
skills: "Skills",
tools: "Tools",
files: "Files",
ofInput: "of input",
of: "of",
timelineFiltered: "timeline filtered",
conversation: "Conversation",
noMessages: "No messages",
tool: "Tool",
toolResult: "Tool result",
hasTools: "Has tools",
searchConversation: "Search conversation",
you: "You",
noMessagesMatch: "No messages match the filters.",
},
mosaic: {
title: "Activity by Time",
subtitleEmpty: "Estimates require session timestamps.",
subtitle: "Estimated from session spans (first/last activity). Time zone: {zone}.",
noTimelineData: "No timeline data yet.",
dayOfWeek: "Day of Week",
midnight: "Midnight",
fourAm: "4am",
eightAm: "8am",
noon: "Noon",
fourPm: "4pm",
eightPm: "8pm",
legend: "Low → High token density",
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat",
},
},
login: {
subtitle: "Gateway Dashboard",
passwordPlaceholder: "optional",
},
chat: {
disconnected: "Verbindung zum Gateway getrennt.",
refreshTitle: "Chat-Daten aktualisieren",
thinkingToggle: "Ausgabe des Assistenten ein-/ausblenden",
toolCallsToggle: "Toggle tool calls and tool results",
focusToggle: "Fokusmodus ein-/ausschalten (Seitenleiste + Kopfzeile ausblenden)",
hideCronSessions: "Cron-Sitzungen ausblenden",
showCronSessions: "Cron-Sitzungen anzeigen",
@@ -127,5 +403,219 @@ export const de: TranslationMap = {
ptBR: "Português (Brasilianisches Portugiesisch)",
de: "Deutsch",
es: "Spanisch (Español)",
jaJP: "日本語 (Japanese)",
ko: "한국어 (Korean)",
fr: "Français (French)",
},
cron: {
summary: {
enabled: "Enabled",
yes: "Yes",
no: "No",
jobs: "Jobs",
nextWake: "Next wake",
refreshing: "Refreshing...",
refresh: "Refresh",
},
jobs: {
title: "Jobs",
subtitle: "All scheduled jobs stored in the gateway.",
shownOf: "{shown} shown of {total}",
searchJobs: "Search jobs",
searchPlaceholder: "Name, description, or agent",
enabled: "Enabled",
schedule: "Schedule",
lastRun: "Last run",
all: "All",
sort: "Sort",
nextRun: "Next run",
recentlyUpdated: "Recently updated",
name: "Name",
direction: "Direction",
ascending: "Ascending",
descending: "Descending",
reset: "Reset",
noMatching: "No matching jobs.",
loading: "Loading...",
loadMore: "Load more jobs",
},
runs: {
title: "Run history",
subtitleAll: "Latest runs across all jobs.",
subtitleJob: "Latest runs for {title}.",
scope: "Scope",
allJobs: "All jobs",
selectedJob: "Selected job",
searchRuns: "Search runs",
searchPlaceholder: "Summary, error, or job",
newestFirst: "Newest first",
oldestFirst: "Oldest first",
status: "Status",
delivery: "Delivery",
clear: "Clear",
allStatuses: "All statuses",
allDelivery: "All delivery",
selectJobHint: "Select a job to inspect run history.",
noMatching: "No matching runs.",
loadMore: "Load more runs",
runStatusOk: "OK",
runStatusError: "Error",
runStatusSkipped: "Skipped",
runStatusUnknown: "Unknown",
deliveryDelivered: "Delivered",
deliveryNotDelivered: "Not delivered",
deliveryUnknown: "Unknown",
deliveryNotRequested: "Not requested",
},
form: {
editJob: "Edit Job",
newJob: "New Job",
updateSubtitle: "Update the selected scheduled job.",
createSubtitle: "Create a scheduled wakeup or agent run.",
required: "Required",
requiredSr: "required",
basics: "Basics",
basicsSub: "Name it, choose the assistant, and set enabled state.",
fieldName: "Name",
description: "Description",
agentId: "Agent ID",
namePlaceholder: "Morning brief",
descriptionPlaceholder: "Optional context for this job",
agentPlaceholder: "main or ops",
agentHelp: "Start typing to pick a known agent, or enter a custom one.",
schedule: "Schedule",
scheduleSub: "Control when this job runs.",
every: "Every",
at: "At",
cronOption: "Cron",
runAt: "Run at",
unit: "Unit",
minutes: "Minutes",
hours: "Hours",
days: "Days",
expression: "Expression",
expressionPlaceholder: "0 7 * * *",
everyAmountPlaceholder: "30",
timezoneOptional: "Timezone (optional)",
timezonePlaceholder: "America/Los_Angeles",
timezoneHelp: "Pick a common timezone or enter any valid IANA timezone.",
jitterHelp: "Need jitter? Use Advanced → Stagger window / Stagger unit.",
execution: "Execution",
executionSub: "Choose when to wake, and what this job should do.",
session: "Session",
main: "Main",
isolated: "Isolated",
sessionHelp: "Main posts a system event. Isolated runs a dedicated agent turn.",
wakeMode: "Wake mode",
now: "Now",
nextHeartbeat: "Next heartbeat",
wakeModeHelp: "Now triggers immediately. Next heartbeat waits for the next cycle.",
payloadKind: "What should run?",
systemEvent: "Post message to main timeline",
agentTurn: "Run assistant task (isolated)",
systemEventHelp:
"Sends your text to the gateway main timeline (good for reminders/triggers).",
agentTurnHelp: "Starts an assistant run in its own session using your prompt.",
timeoutSeconds: "Timeout (seconds)",
timeoutPlaceholder: "Optional, e.g. 90",
timeoutHelp:
"Optional. Leave blank to use the gateway default timeout behavior for this run.",
mainTimelineMessage: "Main timeline message",
assistantTaskPrompt: "Assistant task prompt",
deliverySection: "Delivery",
deliverySub: "Choose where run summaries are sent.",
resultDelivery: "Result delivery",
announceDefault: "Announce summary (default)",
webhookPost: "Webhook POST",
noneInternal: "None (internal)",
deliveryHelp: "Announce posts a summary to chat. None keeps execution internal.",
webhookUrl: "Webhook URL",
channel: "Channel",
webhookPlaceholder: "https://example.com/cron",
channelHelp: "Choose which connected channel receives the summary.",
webhookHelp: "Send run summaries to a webhook endpoint.",
to: "To",
toPlaceholder: "+1555... or chat id",
toHelp: "Optional recipient override (chat id, phone, or user id).",
advanced: "Advanced",
advancedHelp:
"Optional overrides for delivery guarantees, schedule jitter, and model controls.",
deleteAfterRun: "Delete after run",
deleteAfterRunHelp: "Best for one-shot reminders that should auto-clean up.",
clearAgentOverride: "Clear agent override",
clearAgentHelp: "Force this job to use the gateway default assistant.",
exactTiming: "Exact timing (no stagger)",
exactTimingHelp: "Run on exact cron boundaries with no spread.",
staggerWindow: "Stagger window",
staggerUnit: "Stagger unit",
staggerPlaceholder: "30",
seconds: "Seconds",
model: "Model",
modelPlaceholder: "openai/gpt-5.2",
modelHelp: "Start typing to pick a known model, or enter a custom one.",
thinking: "Thinking",
thinkingPlaceholder: "low",
thinkingHelp: "Use a suggested level or enter a provider-specific value.",
bestEffortDelivery: "Best effort delivery",
bestEffortHelp: "Do not fail the job if delivery itself fails.",
cantAddYet: "Can't add job yet",
fillRequired: "Fill the required fields below to enable submit.",
fixFields: "Fix {count} field to continue.",
fixFieldsPlural: "Fix {count} fields to continue.",
saving: "Saving...",
saveChanges: "Save changes",
addJob: "Add job",
cancel: "Cancel",
},
jobList: {
allJobs: "all jobs",
selectJob: "(select a job)",
enabled: "enabled",
disabled: "disabled",
edit: "Edit",
clone: "Clone",
disable: "Disable",
enable: "Enable",
run: "Run",
history: "History",
remove: "Remove",
},
jobDetail: {
system: "System",
prompt: "Prompt",
delivery: "Delivery",
agent: "Agent",
},
jobState: {
status: "Status",
next: "Next",
last: "Last",
},
runEntry: {
noSummary: "No summary.",
runAt: "Run at",
openRunChat: "Open run chat",
next: "Next {rel}",
due: "Due {rel}",
},
errors: {
nameRequired: "Name is required.",
scheduleAtInvalid: "Enter a valid date/time.",
everyAmountInvalid: "Interval must be greater than 0.",
cronExprRequired: "Cron expression is required.",
staggerAmountInvalid: "Stagger must be greater than 0.",
systemTextRequired: "System text is required.",
agentMessageRequired: "Agent message is required.",
timeoutInvalid: "If set, timeout must be greater than 0 seconds.",
webhookUrlRequired: "Webhook URL is required.",
webhookUrlInvalid: "Webhook URL must start with http:// or https://.",
invalidRunTime: "Invalid run time.",
invalidIntervalAmount: "Invalid interval amount.",
cronExprRequiredShort: "Cron expression required.",
invalidStaggerAmount: "Invalid stagger amount.",
systemEventTextRequired: "System event text required.",
agentMessageRequiredShort: "Agent message required.",
nameRequiredShort: "Name required.",
},
},
};

View File

@@ -1,8 +1,8 @@
import type { TranslationMap } from "../lib/types.ts";
// Generated by scripts/control-ui-i18n.ts.
export const es: TranslationMap = {
common: {
version: "Versión",
health: "Estado",
ok: "Correcto",
online: "En línea",
@@ -12,8 +12,11 @@ export const es: TranslationMap = {
enabled: "Habilitado",
disabled: "Deshabilitado",
na: "n/a",
version: "Versión",
docs: "Docs",
theme: "Theme",
resources: "Recursos",
search: "Search",
},
nav: {
chat: "Chat",
@@ -22,6 +25,7 @@ export const es: TranslationMap = {
settings: "Ajustes",
expand: "Expandir barra lateral",
collapse: "Contraer barra lateral",
resize: "Resize sidebar",
},
tabs: {
agents: "Agentes",
@@ -35,8 +39,14 @@ export const es: TranslationMap = {
nodes: "Nodos",
chat: "Chat",
config: "Configuración",
communications: "Communications",
appearance: "Appearance",
automation: "Automation",
infrastructure: "Infrastructure",
aiAgents: "AI & Agents",
debug: "Depuración",
logs: "Registros",
dreams: "Dreams",
},
subtitles: {
agents: "Gestionar espacios de trabajo, herramientas e identidades de agentes.",
@@ -50,8 +60,14 @@ export const es: TranslationMap = {
nodes: "Dispositivos emparejados, capacidades y exposición de comandos.",
chat: "Sesión de chat directa con la puerta de enlace para intervenciones rápidas.",
config: "Editar ~/.openclaw/openclaw.json de forma segura.",
communications: "Channels, messages, and audio settings.",
appearance: "Theme, UI, and setup wizard settings.",
automation: "Commands, hooks, cron, and plugins.",
infrastructure: "Gateway, web, browser, and media settings.",
aiAgents: "Agents, models, skills, tools, memory, session.",
debug: "Instantáneas de la puerta de enlace, eventos y llamadas RPC manuales.",
logs: "Seguimiento en vivo de los registros de la puerta de enlace.",
dreams: "Memory consolidation while sleeping.",
},
overview: {
access: {
@@ -59,7 +75,7 @@ export const es: TranslationMap = {
subtitle: "Dónde se conecta el panel y cómo se autentica.",
wsUrl: "URL de WebSocket",
token: "Token de la puerta de enlace",
password: "Contraseña (no se guarda)", // pragma: allowlist secret
password: "Contraseña (no se guarda)",
sessionKey: "Clave de sesión predeterminada",
language: "Idioma",
connectHint: "Haz clic en Conectar para aplicar los cambios de conexión.",
@@ -108,11 +124,271 @@ export const es: TranslationMap = {
hint: "Esta página es HTTP, por lo que el navegador bloquea el acceso a la identidad del dispositivo. Usa HTTPS (Tailscale Serve) o abre {url} en el equipo host.",
stayHttp: "Si debes permanecer en HTTP, utiliza {config} (solo token).",
},
connection: {
title: "How to connect",
step1: "Start the gateway on your host machine:",
step2: "Get a tokenized dashboard URL:",
step3: "Paste the WebSocket URL and token above, or open the tokenized URL directly.",
step4: "Or generate a reusable token:",
docsHint: "For remote access, Tailscale Serve is recommended. ",
docsLink: "Read the docs →",
},
cards: {
cost: "Cost",
skills: "Skills",
recentSessions: "Recent Sessions",
},
attention: {
title: "Attention",
},
eventLog: {
title: "Event Log",
},
logTail: {
title: "Gateway Logs",
},
quickActions: {
newSession: "New Session",
automation: "Automation",
refreshAll: "Refresh All",
terminal: "Terminal",
},
palette: {
placeholder: "Type a command…",
noResults: "No results",
},
},
usage: {
page: {
subtitle: "See where tokens go, when sessions spike, and what drives cost.",
},
common: {
emptyValue: "—",
unknown: "unknown",
},
loading: {
title: "Usage Overview",
badge: "Loading",
},
metrics: {
tokens: "Tokens",
cost: "Cost",
session: "session",
sessions: "sessions",
},
presets: {
today: "Today",
last7d: "7d",
last30d: "30d",
},
filters: {
title: "Filters",
to: "to",
startDate: "Start date",
endDate: "End date",
timeZone: "Time zone",
timeZoneLocal: "Local",
timeZoneUtc: "UTC",
pin: "Pin",
pinned: "Pinned",
unpin: "Unpin filters",
selectAll: "Select All",
clear: "Clear",
clearAll: "Clear All",
remove: "Remove filter",
all: "All",
days: "Days",
hours: "Hours",
session: "Session",
agent: "Agent",
channel: "Channel",
provider: "Provider",
model: "Model",
tool: "Tool",
daysCount: "{count} days",
hoursCount: "{count} hours",
sessionsCount: "{count} sessions",
},
query: {
placeholder:
"Filter sessions (e.g. key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)",
apply: "Filter (client-side)",
matching: "{shown} of {total} sessions match",
inRange: "{total} sessions in range",
tip: "Tip: use filters or click bars to refine days.",
},
export: {
label: "Export",
sessionsCsv: "Sessions CSV",
dailyCsv: "Daily CSV",
json: "JSON",
},
empty: {
title: "Start with a date range",
subtitle:
"Load usage data to compare costs, inspect sessions, and drill into timelines without leaving the dashboard.",
hint: "Select a date range and click Refresh to load usage.",
noData: "No data",
featureOverview: "Overview cards",
featureSessions: "Session ranking",
featureTimeline: "Timeline drilldown",
},
daily: {
title: "Daily Usage",
total: "Total",
byType: "By Type",
tokensTitle: "Daily Token Usage",
costTitle: "Daily Cost",
},
breakdown: {
output: "Output",
input: "Input",
cacheWrite: "Cache Write",
cacheRead: "Cache Read",
total: "Total",
tokensByType: "Tokens by Type",
costByType: "Cost by Type",
},
overview: {
title: "Usage Overview",
messages: "Messages",
messagesHint: "Total user and assistant messages in range.",
messagesAbbrev: "msgs",
user: "user",
assistant: "assistant",
toolCalls: "Tool Calls",
toolCallsHint: "Total tool call count across sessions.",
toolsUsed: "tools used",
errors: "Errors",
errorsHint: "Total message and tool errors in range.",
toolResults: "tool results",
avgTokens: "Avg Tokens / Msg",
avgTokensHint: "Average tokens per message in this range.",
avgCost: "Avg Cost / Msg",
avgCostHint: "Average cost per message when providers report costs.",
avgCostHintMissing:
"Average cost per message when providers report costs. Cost data is missing for some or all sessions in this range.",
acrossMessages: "Across {count} messages",
sessions: "Sessions",
sessionsHint: "Distinct sessions in the range.",
sessionsInRange: "of {count} in range",
throughput: "Throughput",
throughputHint: "Throughput shows tokens per minute over active time. Higher is better.",
tokensPerMinute: "tok/min",
perMinute: "/ min",
errorRate: "Error Rate",
errorHint: "Error rate = errors / total messages. Lower is better.",
avgSession: "avg session",
cacheHitRate: "Cache Hit Rate",
cacheHint: "Cache hit rate = cache read / (input + cache read). Higher is better.",
cached: "cached",
prompt: "prompt",
calls: "calls",
topModels: "Top Models",
topProviders: "Top Providers",
topTools: "Top Tools",
topAgents: "Top Agents",
topChannels: "Top Channels",
peakErrorDays: "Peak Error Days",
peakErrorHours: "Peak Error Hours",
noModelData: "No model data",
noProviderData: "No provider data",
noToolCalls: "No tool calls",
noAgentData: "No agent data",
noChannelData: "No channel data",
noErrorData: "No error data",
},
sessions: {
title: "Sessions",
shown: "{count} shown",
total: "{count} total",
avg: "avg",
all: "All",
recent: "Recently viewed",
recentShort: "Recent",
sort: "Sort",
ascending: "Ascending",
descending: "Descending",
clearSelection: "Clear Selection",
noRecent: "No recent sessions",
noneInRange: "No sessions in range",
more: "+{count} more",
selected: "Selected ({count})",
copy: "Copy",
copyName: "Copy session name",
limitReached: "Showing first 1,000 sessions. Narrow date range for complete results.",
},
details: {
noUsageData: "No usage data for this session.",
duration: "Duration",
modelMix: "Model Mix",
filtered: "(filtered)",
close: "Close session details",
noTimeline: "No timeline data",
noDataInRange: "No data in range",
usageOverTime: "Usage Over Time",
reset: "Reset",
perTurn: "Per Turn",
cumulative: "Cumulative",
turnRange: "Turns {start}{end} of {total}",
assistantOutputTokens: "Assistant output tokens",
userToolInputTokens: "User + tool input tokens",
tokensWrittenToCache: "Tokens written to cache",
tokensReadFromCache: "Tokens read from cache",
noContextData: "No context data",
systemPromptBreakdown: "System Prompt Breakdown",
collapse: "Collapse",
collapseAll: "Collapse All",
expandAll: "Expand All",
baseContextPerMessage: "Base context per message",
system: "System",
systemShort: "Sys",
skills: "Skills",
tools: "Tools",
files: "Files",
ofInput: "of input",
of: "of",
timelineFiltered: "timeline filtered",
conversation: "Conversation",
noMessages: "No messages",
tool: "Tool",
toolResult: "Tool result",
hasTools: "Has tools",
searchConversation: "Search conversation",
you: "You",
noMessagesMatch: "No messages match the filters.",
},
mosaic: {
title: "Activity by Time",
subtitleEmpty: "Estimates require session timestamps.",
subtitle: "Estimated from session spans (first/last activity). Time zone: {zone}.",
noTimelineData: "No timeline data yet.",
dayOfWeek: "Day of Week",
midnight: "Midnight",
fourAm: "4am",
eightAm: "8am",
noon: "Noon",
fourPm: "4pm",
eightPm: "8pm",
legend: "Low → High token density",
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat",
},
},
login: {
subtitle: "Gateway Dashboard",
passwordPlaceholder: "optional",
},
chat: {
disconnected: "Desconectado de la puerta de enlace.",
refreshTitle: "Actualizar datos del chat",
thinkingToggle: "Alternar salida de pensamiento/trabajo del asistente",
toolCallsToggle: "Toggle tool calls and tool results",
focusToggle: "Alternar modo de enfoque (ocultar barra lateral + cabecera)",
hideCronSessions: "Ocultar sesiones de cron",
showCronSessions: "Mostrar sesiones de cron",
@@ -126,6 +402,9 @@ export const es: TranslationMap = {
ptBR: "Portugués brasileño (Português)",
de: "Deutsch (Alemán)",
es: "Español",
jaJP: "日本語 (Japanese)",
ko: "한국어 (Korean)",
fr: "Français (French)",
},
cron: {
summary: {

618
ui/src/i18n/locales/fr.ts Normal file
View File

@@ -0,0 +1,618 @@
import type { TranslationMap } from "../lib/types.ts";
// Generated by scripts/control-ui-i18n.ts.
export const fr: TranslationMap = {
common: {
health: "Health",
ok: "OK",
online: "Online",
offline: "Offline",
connect: "Connect",
refresh: "Refresh",
enabled: "Enabled",
disabled: "Disabled",
na: "n/a",
version: "Version",
docs: "Docs",
theme: "Theme",
resources: "Resources",
search: "Search",
},
nav: {
chat: "Chat",
control: "Control",
agent: "Agent",
settings: "Settings",
expand: "Expand sidebar",
collapse: "Collapse sidebar",
resize: "Resize sidebar",
},
tabs: {
agents: "Agents",
overview: "Overview",
channels: "Channels",
instances: "Instances",
sessions: "Sessions",
usage: "Usage",
cron: "Cron Jobs",
skills: "Skills",
nodes: "Nodes",
chat: "Chat",
config: "Config",
communications: "Communications",
appearance: "Appearance",
automation: "Automation",
infrastructure: "Infrastructure",
aiAgents: "AI & Agents",
debug: "Debug",
logs: "Logs",
dreams: "Dreams",
},
subtitles: {
agents: "Workspaces, tools, identities.",
overview: "Status, entry points, health.",
channels: "Channels and settings.",
instances: "Connected clients and nodes.",
sessions: "Active sessions and defaults.",
usage: "API usage and costs.",
cron: "Wakeups and recurring runs.",
skills: "Skills and API keys.",
nodes: "Paired devices and commands.",
chat: "Gateway chat for quick interventions.",
config: "Edit openclaw.json.",
communications: "Channels, messages, and audio settings.",
appearance: "Theme, UI, and setup wizard settings.",
automation: "Commands, hooks, cron, and plugins.",
infrastructure: "Gateway, web, browser, and media settings.",
aiAgents: "Agents, models, skills, tools, memory, session.",
debug: "Snapshots, events, RPC.",
logs: "Live gateway logs.",
dreams: "Memory consolidation while sleeping.",
},
overview: {
access: {
title: "Gateway Access",
subtitle: "Where the dashboard connects and how it authenticates.",
wsUrl: "WebSocket URL",
token: "Gateway Token",
password: "Password (not stored)",
sessionKey: "Default Session Key",
language: "Language",
connectHint: "Click Connect to apply connection changes.",
trustedProxy: "Authenticated via trusted proxy.",
},
snapshot: {
title: "Snapshot",
subtitle: "Latest gateway handshake information.",
status: "Status",
uptime: "Uptime",
tickInterval: "Tick Interval",
lastChannelsRefresh: "Last Channels Refresh",
channelsHint: "Use Channels to link WhatsApp, Telegram, Discord, Signal, or iMessage.",
},
stats: {
instances: "Instances",
instancesHint: "Presence beacons in the last 5 minutes.",
sessions: "Sessions",
sessionsHint: "Recent session keys tracked by the gateway.",
cron: "Cron",
cronNext: "Next wake {time}",
},
notes: {
title: "Notes",
subtitle: "Quick reminders for remote control setups.",
tailscaleTitle: "Tailscale serve",
tailscaleText: "Prefer serve mode to keep the gateway on loopback with tailnet auth.",
sessionTitle: "Session hygiene",
sessionText: "Use /new or sessions.patch to reset context.",
cronTitle: "Cron reminders",
cronText: "Use isolated sessions for recurring runs.",
},
auth: {
required: "This gateway requires auth. Add a token or password, then click Connect.",
failed:
"Auth failed. Re-copy a tokenized URL with {command}, or update the token, then click Connect.",
},
pairing: {
hint: "This device needs pairing approval from the gateway host.",
mobileHint:
"On mobile? Copy the full URL (including #token=...) from openclaw dashboard --no-open on your desktop.",
},
insecure: {
hint: "This page is HTTP, so the browser blocks device identity. Use HTTPS (Tailscale Serve) or open {url} on the gateway host.",
stayHttp: "If you must stay on HTTP, set {config} (token-only).",
},
connection: {
title: "How to connect",
step1: "Start the gateway on your host machine:",
step2: "Get a tokenized dashboard URL:",
step3: "Paste the WebSocket URL and token above, or open the tokenized URL directly.",
step4: "Or generate a reusable token:",
docsHint: "For remote access, Tailscale Serve is recommended. ",
docsLink: "Read the docs →",
},
cards: {
cost: "Cost",
skills: "Skills",
recentSessions: "Recent Sessions",
},
attention: {
title: "Attention",
},
eventLog: {
title: "Event Log",
},
logTail: {
title: "Gateway Logs",
},
quickActions: {
newSession: "New Session",
automation: "Automation",
refreshAll: "Refresh All",
terminal: "Terminal",
},
palette: {
placeholder: "Type a command…",
noResults: "No results",
},
},
usage: {
page: {
subtitle: "See where tokens go, when sessions spike, and what drives cost.",
},
common: {
emptyValue: "—",
unknown: "unknown",
},
loading: {
title: "Usage Overview",
badge: "Loading",
},
metrics: {
tokens: "Tokens",
cost: "Cost",
session: "session",
sessions: "sessions",
},
presets: {
today: "Today",
last7d: "7d",
last30d: "30d",
},
filters: {
title: "Filters",
to: "to",
startDate: "Start date",
endDate: "End date",
timeZone: "Time zone",
timeZoneLocal: "Local",
timeZoneUtc: "UTC",
pin: "Pin",
pinned: "Pinned",
unpin: "Unpin filters",
selectAll: "Select All",
clear: "Clear",
clearAll: "Clear All",
remove: "Remove filter",
all: "All",
days: "Days",
hours: "Hours",
session: "Session",
agent: "Agent",
channel: "Channel",
provider: "Provider",
model: "Model",
tool: "Tool",
daysCount: "{count} days",
hoursCount: "{count} hours",
sessionsCount: "{count} sessions",
},
query: {
placeholder:
"Filter sessions (e.g. key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)",
apply: "Filter (client-side)",
matching: "{shown} of {total} sessions match",
inRange: "{total} sessions in range",
tip: "Tip: use filters or click bars to refine days.",
},
export: {
label: "Export",
sessionsCsv: "Sessions CSV",
dailyCsv: "Daily CSV",
json: "JSON",
},
empty: {
title: "Start with a date range",
subtitle:
"Load usage data to compare costs, inspect sessions, and drill into timelines without leaving the dashboard.",
hint: "Select a date range and click Refresh to load usage.",
noData: "No data",
featureOverview: "Overview cards",
featureSessions: "Session ranking",
featureTimeline: "Timeline drilldown",
},
daily: {
title: "Daily Usage",
total: "Total",
byType: "By Type",
tokensTitle: "Daily Token Usage",
costTitle: "Daily Cost",
},
breakdown: {
output: "Output",
input: "Input",
cacheWrite: "Cache Write",
cacheRead: "Cache Read",
total: "Total",
tokensByType: "Tokens by Type",
costByType: "Cost by Type",
},
overview: {
title: "Usage Overview",
messages: "Messages",
messagesHint: "Total user and assistant messages in range.",
messagesAbbrev: "msgs",
user: "user",
assistant: "assistant",
toolCalls: "Tool Calls",
toolCallsHint: "Total tool call count across sessions.",
toolsUsed: "tools used",
errors: "Errors",
errorsHint: "Total message and tool errors in range.",
toolResults: "tool results",
avgTokens: "Avg Tokens / Msg",
avgTokensHint: "Average tokens per message in this range.",
avgCost: "Avg Cost / Msg",
avgCostHint: "Average cost per message when providers report costs.",
avgCostHintMissing:
"Average cost per message when providers report costs. Cost data is missing for some or all sessions in this range.",
acrossMessages: "Across {count} messages",
sessions: "Sessions",
sessionsHint: "Distinct sessions in the range.",
sessionsInRange: "of {count} in range",
throughput: "Throughput",
throughputHint: "Throughput shows tokens per minute over active time. Higher is better.",
tokensPerMinute: "tok/min",
perMinute: "/ min",
errorRate: "Error Rate",
errorHint: "Error rate = errors / total messages. Lower is better.",
avgSession: "avg session",
cacheHitRate: "Cache Hit Rate",
cacheHint: "Cache hit rate = cache read / (input + cache read). Higher is better.",
cached: "cached",
prompt: "prompt",
calls: "calls",
topModels: "Top Models",
topProviders: "Top Providers",
topTools: "Top Tools",
topAgents: "Top Agents",
topChannels: "Top Channels",
peakErrorDays: "Peak Error Days",
peakErrorHours: "Peak Error Hours",
noModelData: "No model data",
noProviderData: "No provider data",
noToolCalls: "No tool calls",
noAgentData: "No agent data",
noChannelData: "No channel data",
noErrorData: "No error data",
},
sessions: {
title: "Sessions",
shown: "{count} shown",
total: "{count} total",
avg: "avg",
all: "All",
recent: "Recently viewed",
recentShort: "Recent",
sort: "Sort",
ascending: "Ascending",
descending: "Descending",
clearSelection: "Clear Selection",
noRecent: "No recent sessions",
noneInRange: "No sessions in range",
more: "+{count} more",
selected: "Selected ({count})",
copy: "Copy",
copyName: "Copy session name",
limitReached: "Showing first 1,000 sessions. Narrow date range for complete results.",
},
details: {
noUsageData: "No usage data for this session.",
duration: "Duration",
modelMix: "Model Mix",
filtered: "(filtered)",
close: "Close session details",
noTimeline: "No timeline data",
noDataInRange: "No data in range",
usageOverTime: "Usage Over Time",
reset: "Reset",
perTurn: "Per Turn",
cumulative: "Cumulative",
turnRange: "Turns {start}{end} of {total}",
assistantOutputTokens: "Assistant output tokens",
userToolInputTokens: "User + tool input tokens",
tokensWrittenToCache: "Tokens written to cache",
tokensReadFromCache: "Tokens read from cache",
noContextData: "No context data",
systemPromptBreakdown: "System Prompt Breakdown",
collapse: "Collapse",
collapseAll: "Collapse All",
expandAll: "Expand All",
baseContextPerMessage: "Base context per message",
system: "System",
systemShort: "Sys",
skills: "Skills",
tools: "Tools",
files: "Files",
ofInput: "of input",
of: "of",
timelineFiltered: "timeline filtered",
conversation: "Conversation",
noMessages: "No messages",
tool: "Tool",
toolResult: "Tool result",
hasTools: "Has tools",
searchConversation: "Search conversation",
you: "You",
noMessagesMatch: "No messages match the filters.",
},
mosaic: {
title: "Activity by Time",
subtitleEmpty: "Estimates require session timestamps.",
subtitle: "Estimated from session spans (first/last activity). Time zone: {zone}.",
noTimelineData: "No timeline data yet.",
dayOfWeek: "Day of Week",
midnight: "Midnight",
fourAm: "4am",
eightAm: "8am",
noon: "Noon",
fourPm: "4pm",
eightPm: "8pm",
legend: "Low → High token density",
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat",
},
},
login: {
subtitle: "Gateway Dashboard",
passwordPlaceholder: "optional",
},
chat: {
disconnected: "Disconnected from gateway.",
refreshTitle: "Refresh chat data",
thinkingToggle: "Toggle assistant thinking/working output",
toolCallsToggle: "Toggle tool calls and tool results",
focusToggle: "Toggle focus mode (hide sidebar + page header)",
hideCronSessions: "Hide cron sessions",
showCronSessions: "Show cron sessions",
showCronSessionsHidden: "Show cron sessions ({count} hidden)",
onboardingDisabled: "Disabled during setup",
},
languages: {
en: "English",
zhCN: "简体中文 (Simplified Chinese)",
zhTW: "繁體中文 (Traditional Chinese)",
ptBR: "Português (Brazilian Portuguese)",
de: "Deutsch (German)",
es: "Español (Spanish)",
jaJP: "日本語 (Japanese)",
ko: "한국어 (Korean)",
fr: "Français (French)",
},
cron: {
summary: {
enabled: "Enabled",
yes: "Yes",
no: "No",
jobs: "Jobs",
nextWake: "Next wake",
refreshing: "Refreshing...",
refresh: "Refresh",
},
jobs: {
title: "Jobs",
subtitle: "All scheduled jobs stored in the gateway.",
shownOf: "{shown} shown of {total}",
searchJobs: "Search jobs",
searchPlaceholder: "Name, description, or agent",
enabled: "Enabled",
schedule: "Schedule",
lastRun: "Last run",
all: "All",
sort: "Sort",
nextRun: "Next run",
recentlyUpdated: "Recently updated",
name: "Name",
direction: "Direction",
ascending: "Ascending",
descending: "Descending",
reset: "Reset",
noMatching: "No matching jobs.",
loading: "Loading...",
loadMore: "Load more jobs",
},
runs: {
title: "Run history",
subtitleAll: "Latest runs across all jobs.",
subtitleJob: "Latest runs for {title}.",
scope: "Scope",
allJobs: "All jobs",
selectedJob: "Selected job",
searchRuns: "Search runs",
searchPlaceholder: "Summary, error, or job",
newestFirst: "Newest first",
oldestFirst: "Oldest first",
status: "Status",
delivery: "Delivery",
clear: "Clear",
allStatuses: "All statuses",
allDelivery: "All delivery",
selectJobHint: "Select a job to inspect run history.",
noMatching: "No matching runs.",
loadMore: "Load more runs",
runStatusOk: "OK",
runStatusError: "Error",
runStatusSkipped: "Skipped",
runStatusUnknown: "Unknown",
deliveryDelivered: "Delivered",
deliveryNotDelivered: "Not delivered",
deliveryUnknown: "Unknown",
deliveryNotRequested: "Not requested",
},
form: {
editJob: "Edit Job",
newJob: "New Job",
updateSubtitle: "Update the selected scheduled job.",
createSubtitle: "Create a scheduled wakeup or agent run.",
required: "Required",
requiredSr: "required",
basics: "Basics",
basicsSub: "Name it, choose the assistant, and set enabled state.",
fieldName: "Name",
description: "Description",
agentId: "Agent ID",
namePlaceholder: "Morning brief",
descriptionPlaceholder: "Optional context for this job",
agentPlaceholder: "main or ops",
agentHelp: "Start typing to pick a known agent, or enter a custom one.",
schedule: "Schedule",
scheduleSub: "Control when this job runs.",
every: "Every",
at: "At",
cronOption: "Cron",
runAt: "Run at",
unit: "Unit",
minutes: "Minutes",
hours: "Hours",
days: "Days",
expression: "Expression",
expressionPlaceholder: "0 7 * * *",
everyAmountPlaceholder: "30",
timezoneOptional: "Timezone (optional)",
timezonePlaceholder: "America/Los_Angeles",
timezoneHelp: "Pick a common timezone or enter any valid IANA timezone.",
jitterHelp: "Need jitter? Use Advanced → Stagger window / Stagger unit.",
execution: "Execution",
executionSub: "Choose when to wake, and what this job should do.",
session: "Session",
main: "Main",
isolated: "Isolated",
sessionHelp: "Main posts a system event. Isolated runs a dedicated agent turn.",
wakeMode: "Wake mode",
now: "Now",
nextHeartbeat: "Next heartbeat",
wakeModeHelp: "Now triggers immediately. Next heartbeat waits for the next cycle.",
payloadKind: "What should run?",
systemEvent: "Post message to main timeline",
agentTurn: "Run assistant task (isolated)",
systemEventHelp:
"Sends your text to the gateway main timeline (good for reminders/triggers).",
agentTurnHelp: "Starts an assistant run in its own session using your prompt.",
timeoutSeconds: "Timeout (seconds)",
timeoutPlaceholder: "Optional, e.g. 90",
timeoutHelp:
"Optional. Leave blank to use the gateway default timeout behavior for this run.",
mainTimelineMessage: "Main timeline message",
assistantTaskPrompt: "Assistant task prompt",
deliverySection: "Delivery",
deliverySub: "Choose where run summaries are sent.",
resultDelivery: "Result delivery",
announceDefault: "Announce summary (default)",
webhookPost: "Webhook POST",
noneInternal: "None (internal)",
deliveryHelp: "Announce posts a summary to chat. None keeps execution internal.",
webhookUrl: "Webhook URL",
channel: "Channel",
webhookPlaceholder: "https://example.com/cron",
channelHelp: "Choose which connected channel receives the summary.",
webhookHelp: "Send run summaries to a webhook endpoint.",
to: "To",
toPlaceholder: "+1555... or chat id",
toHelp: "Optional recipient override (chat id, phone, or user id).",
advanced: "Advanced",
advancedHelp:
"Optional overrides for delivery guarantees, schedule jitter, and model controls.",
deleteAfterRun: "Delete after run",
deleteAfterRunHelp: "Best for one-shot reminders that should auto-clean up.",
clearAgentOverride: "Clear agent override",
clearAgentHelp: "Force this job to use the gateway default assistant.",
exactTiming: "Exact timing (no stagger)",
exactTimingHelp: "Run on exact cron boundaries with no spread.",
staggerWindow: "Stagger window",
staggerUnit: "Stagger unit",
staggerPlaceholder: "30",
seconds: "Seconds",
model: "Model",
modelPlaceholder: "openai/gpt-5.2",
modelHelp: "Start typing to pick a known model, or enter a custom one.",
thinking: "Thinking",
thinkingPlaceholder: "low",
thinkingHelp: "Use a suggested level or enter a provider-specific value.",
bestEffortDelivery: "Best effort delivery",
bestEffortHelp: "Do not fail the job if delivery itself fails.",
cantAddYet: "Can't add job yet",
fillRequired: "Fill the required fields below to enable submit.",
fixFields: "Fix {count} field to continue.",
fixFieldsPlural: "Fix {count} fields to continue.",
saving: "Saving...",
saveChanges: "Save changes",
addJob: "Add job",
cancel: "Cancel",
},
jobList: {
allJobs: "all jobs",
selectJob: "(select a job)",
enabled: "enabled",
disabled: "disabled",
edit: "Edit",
clone: "Clone",
disable: "Disable",
enable: "Enable",
run: "Run",
history: "History",
remove: "Remove",
},
jobDetail: {
system: "System",
prompt: "Prompt",
delivery: "Delivery",
agent: "Agent",
},
jobState: {
status: "Status",
next: "Next",
last: "Last",
},
runEntry: {
noSummary: "No summary.",
runAt: "Run at",
openRunChat: "Open run chat",
next: "Next {rel}",
due: "Due {rel}",
},
errors: {
nameRequired: "Name is required.",
scheduleAtInvalid: "Enter a valid date/time.",
everyAmountInvalid: "Interval must be greater than 0.",
cronExprRequired: "Cron expression is required.",
staggerAmountInvalid: "Stagger must be greater than 0.",
systemTextRequired: "System text is required.",
agentMessageRequired: "Agent message is required.",
timeoutInvalid: "If set, timeout must be greater than 0 seconds.",
webhookUrlRequired: "Webhook URL is required.",
webhookUrlInvalid: "Webhook URL must start with http:// or https://.",
invalidRunTime: "Invalid run time.",
invalidIntervalAmount: "Invalid interval amount.",
cronExprRequiredShort: "Cron expression required.",
invalidStaggerAmount: "Invalid stagger amount.",
systemEventTextRequired: "System event text required.",
agentMessageRequiredShort: "Agent message required.",
nameRequiredShort: "Name required.",
},
},
};

View File

@@ -0,0 +1,618 @@
import type { TranslationMap } from "../lib/types.ts";
// Generated by scripts/control-ui-i18n.ts.
export const ja_JP: TranslationMap = {
common: {
health: "Health",
ok: "OK",
online: "Online",
offline: "Offline",
connect: "Connect",
refresh: "Refresh",
enabled: "Enabled",
disabled: "Disabled",
na: "n/a",
version: "Version",
docs: "Docs",
theme: "Theme",
resources: "Resources",
search: "Search",
},
nav: {
chat: "Chat",
control: "Control",
agent: "Agent",
settings: "Settings",
expand: "Expand sidebar",
collapse: "Collapse sidebar",
resize: "Resize sidebar",
},
tabs: {
agents: "Agents",
overview: "Overview",
channels: "Channels",
instances: "Instances",
sessions: "Sessions",
usage: "Usage",
cron: "Cron Jobs",
skills: "Skills",
nodes: "Nodes",
chat: "Chat",
config: "Config",
communications: "Communications",
appearance: "Appearance",
automation: "Automation",
infrastructure: "Infrastructure",
aiAgents: "AI & Agents",
debug: "Debug",
logs: "Logs",
dreams: "Dreams",
},
subtitles: {
agents: "Workspaces, tools, identities.",
overview: "Status, entry points, health.",
channels: "Channels and settings.",
instances: "Connected clients and nodes.",
sessions: "Active sessions and defaults.",
usage: "API usage and costs.",
cron: "Wakeups and recurring runs.",
skills: "Skills and API keys.",
nodes: "Paired devices and commands.",
chat: "Gateway chat for quick interventions.",
config: "Edit openclaw.json.",
communications: "Channels, messages, and audio settings.",
appearance: "Theme, UI, and setup wizard settings.",
automation: "Commands, hooks, cron, and plugins.",
infrastructure: "Gateway, web, browser, and media settings.",
aiAgents: "Agents, models, skills, tools, memory, session.",
debug: "Snapshots, events, RPC.",
logs: "Live gateway logs.",
dreams: "Memory consolidation while sleeping.",
},
overview: {
access: {
title: "Gateway Access",
subtitle: "Where the dashboard connects and how it authenticates.",
wsUrl: "WebSocket URL",
token: "Gateway Token",
password: "Password (not stored)",
sessionKey: "Default Session Key",
language: "Language",
connectHint: "Click Connect to apply connection changes.",
trustedProxy: "Authenticated via trusted proxy.",
},
snapshot: {
title: "Snapshot",
subtitle: "Latest gateway handshake information.",
status: "Status",
uptime: "Uptime",
tickInterval: "Tick Interval",
lastChannelsRefresh: "Last Channels Refresh",
channelsHint: "Use Channels to link WhatsApp, Telegram, Discord, Signal, or iMessage.",
},
stats: {
instances: "Instances",
instancesHint: "Presence beacons in the last 5 minutes.",
sessions: "Sessions",
sessionsHint: "Recent session keys tracked by the gateway.",
cron: "Cron",
cronNext: "Next wake {time}",
},
notes: {
title: "Notes",
subtitle: "Quick reminders for remote control setups.",
tailscaleTitle: "Tailscale serve",
tailscaleText: "Prefer serve mode to keep the gateway on loopback with tailnet auth.",
sessionTitle: "Session hygiene",
sessionText: "Use /new or sessions.patch to reset context.",
cronTitle: "Cron reminders",
cronText: "Use isolated sessions for recurring runs.",
},
auth: {
required: "This gateway requires auth. Add a token or password, then click Connect.",
failed:
"Auth failed. Re-copy a tokenized URL with {command}, or update the token, then click Connect.",
},
pairing: {
hint: "This device needs pairing approval from the gateway host.",
mobileHint:
"On mobile? Copy the full URL (including #token=...) from openclaw dashboard --no-open on your desktop.",
},
insecure: {
hint: "This page is HTTP, so the browser blocks device identity. Use HTTPS (Tailscale Serve) or open {url} on the gateway host.",
stayHttp: "If you must stay on HTTP, set {config} (token-only).",
},
connection: {
title: "How to connect",
step1: "Start the gateway on your host machine:",
step2: "Get a tokenized dashboard URL:",
step3: "Paste the WebSocket URL and token above, or open the tokenized URL directly.",
step4: "Or generate a reusable token:",
docsHint: "For remote access, Tailscale Serve is recommended. ",
docsLink: "Read the docs →",
},
cards: {
cost: "Cost",
skills: "Skills",
recentSessions: "Recent Sessions",
},
attention: {
title: "Attention",
},
eventLog: {
title: "Event Log",
},
logTail: {
title: "Gateway Logs",
},
quickActions: {
newSession: "New Session",
automation: "Automation",
refreshAll: "Refresh All",
terminal: "Terminal",
},
palette: {
placeholder: "Type a command…",
noResults: "No results",
},
},
usage: {
page: {
subtitle: "See where tokens go, when sessions spike, and what drives cost.",
},
common: {
emptyValue: "—",
unknown: "unknown",
},
loading: {
title: "Usage Overview",
badge: "Loading",
},
metrics: {
tokens: "Tokens",
cost: "Cost",
session: "session",
sessions: "sessions",
},
presets: {
today: "Today",
last7d: "7d",
last30d: "30d",
},
filters: {
title: "Filters",
to: "to",
startDate: "Start date",
endDate: "End date",
timeZone: "Time zone",
timeZoneLocal: "Local",
timeZoneUtc: "UTC",
pin: "Pin",
pinned: "Pinned",
unpin: "Unpin filters",
selectAll: "Select All",
clear: "Clear",
clearAll: "Clear All",
remove: "Remove filter",
all: "All",
days: "Days",
hours: "Hours",
session: "Session",
agent: "Agent",
channel: "Channel",
provider: "Provider",
model: "Model",
tool: "Tool",
daysCount: "{count} days",
hoursCount: "{count} hours",
sessionsCount: "{count} sessions",
},
query: {
placeholder:
"Filter sessions (e.g. key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)",
apply: "Filter (client-side)",
matching: "{shown} of {total} sessions match",
inRange: "{total} sessions in range",
tip: "Tip: use filters or click bars to refine days.",
},
export: {
label: "Export",
sessionsCsv: "Sessions CSV",
dailyCsv: "Daily CSV",
json: "JSON",
},
empty: {
title: "Start with a date range",
subtitle:
"Load usage data to compare costs, inspect sessions, and drill into timelines without leaving the dashboard.",
hint: "Select a date range and click Refresh to load usage.",
noData: "No data",
featureOverview: "Overview cards",
featureSessions: "Session ranking",
featureTimeline: "Timeline drilldown",
},
daily: {
title: "Daily Usage",
total: "Total",
byType: "By Type",
tokensTitle: "Daily Token Usage",
costTitle: "Daily Cost",
},
breakdown: {
output: "Output",
input: "Input",
cacheWrite: "Cache Write",
cacheRead: "Cache Read",
total: "Total",
tokensByType: "Tokens by Type",
costByType: "Cost by Type",
},
overview: {
title: "Usage Overview",
messages: "Messages",
messagesHint: "Total user and assistant messages in range.",
messagesAbbrev: "msgs",
user: "user",
assistant: "assistant",
toolCalls: "Tool Calls",
toolCallsHint: "Total tool call count across sessions.",
toolsUsed: "tools used",
errors: "Errors",
errorsHint: "Total message and tool errors in range.",
toolResults: "tool results",
avgTokens: "Avg Tokens / Msg",
avgTokensHint: "Average tokens per message in this range.",
avgCost: "Avg Cost / Msg",
avgCostHint: "Average cost per message when providers report costs.",
avgCostHintMissing:
"Average cost per message when providers report costs. Cost data is missing for some or all sessions in this range.",
acrossMessages: "Across {count} messages",
sessions: "Sessions",
sessionsHint: "Distinct sessions in the range.",
sessionsInRange: "of {count} in range",
throughput: "Throughput",
throughputHint: "Throughput shows tokens per minute over active time. Higher is better.",
tokensPerMinute: "tok/min",
perMinute: "/ min",
errorRate: "Error Rate",
errorHint: "Error rate = errors / total messages. Lower is better.",
avgSession: "avg session",
cacheHitRate: "Cache Hit Rate",
cacheHint: "Cache hit rate = cache read / (input + cache read). Higher is better.",
cached: "cached",
prompt: "prompt",
calls: "calls",
topModels: "Top Models",
topProviders: "Top Providers",
topTools: "Top Tools",
topAgents: "Top Agents",
topChannels: "Top Channels",
peakErrorDays: "Peak Error Days",
peakErrorHours: "Peak Error Hours",
noModelData: "No model data",
noProviderData: "No provider data",
noToolCalls: "No tool calls",
noAgentData: "No agent data",
noChannelData: "No channel data",
noErrorData: "No error data",
},
sessions: {
title: "Sessions",
shown: "{count} shown",
total: "{count} total",
avg: "avg",
all: "All",
recent: "Recently viewed",
recentShort: "Recent",
sort: "Sort",
ascending: "Ascending",
descending: "Descending",
clearSelection: "Clear Selection",
noRecent: "No recent sessions",
noneInRange: "No sessions in range",
more: "+{count} more",
selected: "Selected ({count})",
copy: "Copy",
copyName: "Copy session name",
limitReached: "Showing first 1,000 sessions. Narrow date range for complete results.",
},
details: {
noUsageData: "No usage data for this session.",
duration: "Duration",
modelMix: "Model Mix",
filtered: "(filtered)",
close: "Close session details",
noTimeline: "No timeline data",
noDataInRange: "No data in range",
usageOverTime: "Usage Over Time",
reset: "Reset",
perTurn: "Per Turn",
cumulative: "Cumulative",
turnRange: "Turns {start}{end} of {total}",
assistantOutputTokens: "Assistant output tokens",
userToolInputTokens: "User + tool input tokens",
tokensWrittenToCache: "Tokens written to cache",
tokensReadFromCache: "Tokens read from cache",
noContextData: "No context data",
systemPromptBreakdown: "System Prompt Breakdown",
collapse: "Collapse",
collapseAll: "Collapse All",
expandAll: "Expand All",
baseContextPerMessage: "Base context per message",
system: "System",
systemShort: "Sys",
skills: "Skills",
tools: "Tools",
files: "Files",
ofInput: "of input",
of: "of",
timelineFiltered: "timeline filtered",
conversation: "Conversation",
noMessages: "No messages",
tool: "Tool",
toolResult: "Tool result",
hasTools: "Has tools",
searchConversation: "Search conversation",
you: "You",
noMessagesMatch: "No messages match the filters.",
},
mosaic: {
title: "Activity by Time",
subtitleEmpty: "Estimates require session timestamps.",
subtitle: "Estimated from session spans (first/last activity). Time zone: {zone}.",
noTimelineData: "No timeline data yet.",
dayOfWeek: "Day of Week",
midnight: "Midnight",
fourAm: "4am",
eightAm: "8am",
noon: "Noon",
fourPm: "4pm",
eightPm: "8pm",
legend: "Low → High token density",
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat",
},
},
login: {
subtitle: "Gateway Dashboard",
passwordPlaceholder: "optional",
},
chat: {
disconnected: "Disconnected from gateway.",
refreshTitle: "Refresh chat data",
thinkingToggle: "Toggle assistant thinking/working output",
toolCallsToggle: "Toggle tool calls and tool results",
focusToggle: "Toggle focus mode (hide sidebar + page header)",
hideCronSessions: "Hide cron sessions",
showCronSessions: "Show cron sessions",
showCronSessionsHidden: "Show cron sessions ({count} hidden)",
onboardingDisabled: "Disabled during setup",
},
languages: {
en: "English",
zhCN: "简体中文 (Simplified Chinese)",
zhTW: "繁體中文 (Traditional Chinese)",
ptBR: "Português (Brazilian Portuguese)",
de: "Deutsch (German)",
es: "Español (Spanish)",
jaJP: "日本語 (Japanese)",
ko: "한국어 (Korean)",
fr: "Français (French)",
},
cron: {
summary: {
enabled: "Enabled",
yes: "Yes",
no: "No",
jobs: "Jobs",
nextWake: "Next wake",
refreshing: "Refreshing...",
refresh: "Refresh",
},
jobs: {
title: "Jobs",
subtitle: "All scheduled jobs stored in the gateway.",
shownOf: "{shown} shown of {total}",
searchJobs: "Search jobs",
searchPlaceholder: "Name, description, or agent",
enabled: "Enabled",
schedule: "Schedule",
lastRun: "Last run",
all: "All",
sort: "Sort",
nextRun: "Next run",
recentlyUpdated: "Recently updated",
name: "Name",
direction: "Direction",
ascending: "Ascending",
descending: "Descending",
reset: "Reset",
noMatching: "No matching jobs.",
loading: "Loading...",
loadMore: "Load more jobs",
},
runs: {
title: "Run history",
subtitleAll: "Latest runs across all jobs.",
subtitleJob: "Latest runs for {title}.",
scope: "Scope",
allJobs: "All jobs",
selectedJob: "Selected job",
searchRuns: "Search runs",
searchPlaceholder: "Summary, error, or job",
newestFirst: "Newest first",
oldestFirst: "Oldest first",
status: "Status",
delivery: "Delivery",
clear: "Clear",
allStatuses: "All statuses",
allDelivery: "All delivery",
selectJobHint: "Select a job to inspect run history.",
noMatching: "No matching runs.",
loadMore: "Load more runs",
runStatusOk: "OK",
runStatusError: "Error",
runStatusSkipped: "Skipped",
runStatusUnknown: "Unknown",
deliveryDelivered: "Delivered",
deliveryNotDelivered: "Not delivered",
deliveryUnknown: "Unknown",
deliveryNotRequested: "Not requested",
},
form: {
editJob: "Edit Job",
newJob: "New Job",
updateSubtitle: "Update the selected scheduled job.",
createSubtitle: "Create a scheduled wakeup or agent run.",
required: "Required",
requiredSr: "required",
basics: "Basics",
basicsSub: "Name it, choose the assistant, and set enabled state.",
fieldName: "Name",
description: "Description",
agentId: "Agent ID",
namePlaceholder: "Morning brief",
descriptionPlaceholder: "Optional context for this job",
agentPlaceholder: "main or ops",
agentHelp: "Start typing to pick a known agent, or enter a custom one.",
schedule: "Schedule",
scheduleSub: "Control when this job runs.",
every: "Every",
at: "At",
cronOption: "Cron",
runAt: "Run at",
unit: "Unit",
minutes: "Minutes",
hours: "Hours",
days: "Days",
expression: "Expression",
expressionPlaceholder: "0 7 * * *",
everyAmountPlaceholder: "30",
timezoneOptional: "Timezone (optional)",
timezonePlaceholder: "America/Los_Angeles",
timezoneHelp: "Pick a common timezone or enter any valid IANA timezone.",
jitterHelp: "Need jitter? Use Advanced → Stagger window / Stagger unit.",
execution: "Execution",
executionSub: "Choose when to wake, and what this job should do.",
session: "Session",
main: "Main",
isolated: "Isolated",
sessionHelp: "Main posts a system event. Isolated runs a dedicated agent turn.",
wakeMode: "Wake mode",
now: "Now",
nextHeartbeat: "Next heartbeat",
wakeModeHelp: "Now triggers immediately. Next heartbeat waits for the next cycle.",
payloadKind: "What should run?",
systemEvent: "Post message to main timeline",
agentTurn: "Run assistant task (isolated)",
systemEventHelp:
"Sends your text to the gateway main timeline (good for reminders/triggers).",
agentTurnHelp: "Starts an assistant run in its own session using your prompt.",
timeoutSeconds: "Timeout (seconds)",
timeoutPlaceholder: "Optional, e.g. 90",
timeoutHelp:
"Optional. Leave blank to use the gateway default timeout behavior for this run.",
mainTimelineMessage: "Main timeline message",
assistantTaskPrompt: "Assistant task prompt",
deliverySection: "Delivery",
deliverySub: "Choose where run summaries are sent.",
resultDelivery: "Result delivery",
announceDefault: "Announce summary (default)",
webhookPost: "Webhook POST",
noneInternal: "None (internal)",
deliveryHelp: "Announce posts a summary to chat. None keeps execution internal.",
webhookUrl: "Webhook URL",
channel: "Channel",
webhookPlaceholder: "https://example.com/cron",
channelHelp: "Choose which connected channel receives the summary.",
webhookHelp: "Send run summaries to a webhook endpoint.",
to: "To",
toPlaceholder: "+1555... or chat id",
toHelp: "Optional recipient override (chat id, phone, or user id).",
advanced: "Advanced",
advancedHelp:
"Optional overrides for delivery guarantees, schedule jitter, and model controls.",
deleteAfterRun: "Delete after run",
deleteAfterRunHelp: "Best for one-shot reminders that should auto-clean up.",
clearAgentOverride: "Clear agent override",
clearAgentHelp: "Force this job to use the gateway default assistant.",
exactTiming: "Exact timing (no stagger)",
exactTimingHelp: "Run on exact cron boundaries with no spread.",
staggerWindow: "Stagger window",
staggerUnit: "Stagger unit",
staggerPlaceholder: "30",
seconds: "Seconds",
model: "Model",
modelPlaceholder: "openai/gpt-5.2",
modelHelp: "Start typing to pick a known model, or enter a custom one.",
thinking: "Thinking",
thinkingPlaceholder: "low",
thinkingHelp: "Use a suggested level or enter a provider-specific value.",
bestEffortDelivery: "Best effort delivery",
bestEffortHelp: "Do not fail the job if delivery itself fails.",
cantAddYet: "Can't add job yet",
fillRequired: "Fill the required fields below to enable submit.",
fixFields: "Fix {count} field to continue.",
fixFieldsPlural: "Fix {count} fields to continue.",
saving: "Saving...",
saveChanges: "Save changes",
addJob: "Add job",
cancel: "Cancel",
},
jobList: {
allJobs: "all jobs",
selectJob: "(select a job)",
enabled: "enabled",
disabled: "disabled",
edit: "Edit",
clone: "Clone",
disable: "Disable",
enable: "Enable",
run: "Run",
history: "History",
remove: "Remove",
},
jobDetail: {
system: "System",
prompt: "Prompt",
delivery: "Delivery",
agent: "Agent",
},
jobState: {
status: "Status",
next: "Next",
last: "Last",
},
runEntry: {
noSummary: "No summary.",
runAt: "Run at",
openRunChat: "Open run chat",
next: "Next {rel}",
due: "Due {rel}",
},
errors: {
nameRequired: "Name is required.",
scheduleAtInvalid: "Enter a valid date/time.",
everyAmountInvalid: "Interval must be greater than 0.",
cronExprRequired: "Cron expression is required.",
staggerAmountInvalid: "Stagger must be greater than 0.",
systemTextRequired: "System text is required.",
agentMessageRequired: "Agent message is required.",
timeoutInvalid: "If set, timeout must be greater than 0 seconds.",
webhookUrlRequired: "Webhook URL is required.",
webhookUrlInvalid: "Webhook URL must start with http:// or https://.",
invalidRunTime: "Invalid run time.",
invalidIntervalAmount: "Invalid interval amount.",
cronExprRequiredShort: "Cron expression required.",
invalidStaggerAmount: "Invalid stagger amount.",
systemEventTextRequired: "System event text required.",
agentMessageRequiredShort: "Agent message required.",
nameRequiredShort: "Name required.",
},
},
};

618
ui/src/i18n/locales/ko.ts Normal file
View File

@@ -0,0 +1,618 @@
import type { TranslationMap } from "../lib/types.ts";
// Generated by scripts/control-ui-i18n.ts.
export const ko: TranslationMap = {
common: {
health: "Health",
ok: "OK",
online: "Online",
offline: "Offline",
connect: "Connect",
refresh: "Refresh",
enabled: "Enabled",
disabled: "Disabled",
na: "n/a",
version: "Version",
docs: "Docs",
theme: "Theme",
resources: "Resources",
search: "Search",
},
nav: {
chat: "Chat",
control: "Control",
agent: "Agent",
settings: "Settings",
expand: "Expand sidebar",
collapse: "Collapse sidebar",
resize: "Resize sidebar",
},
tabs: {
agents: "Agents",
overview: "Overview",
channels: "Channels",
instances: "Instances",
sessions: "Sessions",
usage: "Usage",
cron: "Cron Jobs",
skills: "Skills",
nodes: "Nodes",
chat: "Chat",
config: "Config",
communications: "Communications",
appearance: "Appearance",
automation: "Automation",
infrastructure: "Infrastructure",
aiAgents: "AI & Agents",
debug: "Debug",
logs: "Logs",
dreams: "Dreams",
},
subtitles: {
agents: "Workspaces, tools, identities.",
overview: "Status, entry points, health.",
channels: "Channels and settings.",
instances: "Connected clients and nodes.",
sessions: "Active sessions and defaults.",
usage: "API usage and costs.",
cron: "Wakeups and recurring runs.",
skills: "Skills and API keys.",
nodes: "Paired devices and commands.",
chat: "Gateway chat for quick interventions.",
config: "Edit openclaw.json.",
communications: "Channels, messages, and audio settings.",
appearance: "Theme, UI, and setup wizard settings.",
automation: "Commands, hooks, cron, and plugins.",
infrastructure: "Gateway, web, browser, and media settings.",
aiAgents: "Agents, models, skills, tools, memory, session.",
debug: "Snapshots, events, RPC.",
logs: "Live gateway logs.",
dreams: "Memory consolidation while sleeping.",
},
overview: {
access: {
title: "Gateway Access",
subtitle: "Where the dashboard connects and how it authenticates.",
wsUrl: "WebSocket URL",
token: "Gateway Token",
password: "Password (not stored)",
sessionKey: "Default Session Key",
language: "Language",
connectHint: "Click Connect to apply connection changes.",
trustedProxy: "Authenticated via trusted proxy.",
},
snapshot: {
title: "Snapshot",
subtitle: "Latest gateway handshake information.",
status: "Status",
uptime: "Uptime",
tickInterval: "Tick Interval",
lastChannelsRefresh: "Last Channels Refresh",
channelsHint: "Use Channels to link WhatsApp, Telegram, Discord, Signal, or iMessage.",
},
stats: {
instances: "Instances",
instancesHint: "Presence beacons in the last 5 minutes.",
sessions: "Sessions",
sessionsHint: "Recent session keys tracked by the gateway.",
cron: "Cron",
cronNext: "Next wake {time}",
},
notes: {
title: "Notes",
subtitle: "Quick reminders for remote control setups.",
tailscaleTitle: "Tailscale serve",
tailscaleText: "Prefer serve mode to keep the gateway on loopback with tailnet auth.",
sessionTitle: "Session hygiene",
sessionText: "Use /new or sessions.patch to reset context.",
cronTitle: "Cron reminders",
cronText: "Use isolated sessions for recurring runs.",
},
auth: {
required: "This gateway requires auth. Add a token or password, then click Connect.",
failed:
"Auth failed. Re-copy a tokenized URL with {command}, or update the token, then click Connect.",
},
pairing: {
hint: "This device needs pairing approval from the gateway host.",
mobileHint:
"On mobile? Copy the full URL (including #token=...) from openclaw dashboard --no-open on your desktop.",
},
insecure: {
hint: "This page is HTTP, so the browser blocks device identity. Use HTTPS (Tailscale Serve) or open {url} on the gateway host.",
stayHttp: "If you must stay on HTTP, set {config} (token-only).",
},
connection: {
title: "How to connect",
step1: "Start the gateway on your host machine:",
step2: "Get a tokenized dashboard URL:",
step3: "Paste the WebSocket URL and token above, or open the tokenized URL directly.",
step4: "Or generate a reusable token:",
docsHint: "For remote access, Tailscale Serve is recommended. ",
docsLink: "Read the docs →",
},
cards: {
cost: "Cost",
skills: "Skills",
recentSessions: "Recent Sessions",
},
attention: {
title: "Attention",
},
eventLog: {
title: "Event Log",
},
logTail: {
title: "Gateway Logs",
},
quickActions: {
newSession: "New Session",
automation: "Automation",
refreshAll: "Refresh All",
terminal: "Terminal",
},
palette: {
placeholder: "Type a command…",
noResults: "No results",
},
},
usage: {
page: {
subtitle: "See where tokens go, when sessions spike, and what drives cost.",
},
common: {
emptyValue: "—",
unknown: "unknown",
},
loading: {
title: "Usage Overview",
badge: "Loading",
},
metrics: {
tokens: "Tokens",
cost: "Cost",
session: "session",
sessions: "sessions",
},
presets: {
today: "Today",
last7d: "7d",
last30d: "30d",
},
filters: {
title: "Filters",
to: "to",
startDate: "Start date",
endDate: "End date",
timeZone: "Time zone",
timeZoneLocal: "Local",
timeZoneUtc: "UTC",
pin: "Pin",
pinned: "Pinned",
unpin: "Unpin filters",
selectAll: "Select All",
clear: "Clear",
clearAll: "Clear All",
remove: "Remove filter",
all: "All",
days: "Days",
hours: "Hours",
session: "Session",
agent: "Agent",
channel: "Channel",
provider: "Provider",
model: "Model",
tool: "Tool",
daysCount: "{count} days",
hoursCount: "{count} hours",
sessionsCount: "{count} sessions",
},
query: {
placeholder:
"Filter sessions (e.g. key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)",
apply: "Filter (client-side)",
matching: "{shown} of {total} sessions match",
inRange: "{total} sessions in range",
tip: "Tip: use filters or click bars to refine days.",
},
export: {
label: "Export",
sessionsCsv: "Sessions CSV",
dailyCsv: "Daily CSV",
json: "JSON",
},
empty: {
title: "Start with a date range",
subtitle:
"Load usage data to compare costs, inspect sessions, and drill into timelines without leaving the dashboard.",
hint: "Select a date range and click Refresh to load usage.",
noData: "No data",
featureOverview: "Overview cards",
featureSessions: "Session ranking",
featureTimeline: "Timeline drilldown",
},
daily: {
title: "Daily Usage",
total: "Total",
byType: "By Type",
tokensTitle: "Daily Token Usage",
costTitle: "Daily Cost",
},
breakdown: {
output: "Output",
input: "Input",
cacheWrite: "Cache Write",
cacheRead: "Cache Read",
total: "Total",
tokensByType: "Tokens by Type",
costByType: "Cost by Type",
},
overview: {
title: "Usage Overview",
messages: "Messages",
messagesHint: "Total user and assistant messages in range.",
messagesAbbrev: "msgs",
user: "user",
assistant: "assistant",
toolCalls: "Tool Calls",
toolCallsHint: "Total tool call count across sessions.",
toolsUsed: "tools used",
errors: "Errors",
errorsHint: "Total message and tool errors in range.",
toolResults: "tool results",
avgTokens: "Avg Tokens / Msg",
avgTokensHint: "Average tokens per message in this range.",
avgCost: "Avg Cost / Msg",
avgCostHint: "Average cost per message when providers report costs.",
avgCostHintMissing:
"Average cost per message when providers report costs. Cost data is missing for some or all sessions in this range.",
acrossMessages: "Across {count} messages",
sessions: "Sessions",
sessionsHint: "Distinct sessions in the range.",
sessionsInRange: "of {count} in range",
throughput: "Throughput",
throughputHint: "Throughput shows tokens per minute over active time. Higher is better.",
tokensPerMinute: "tok/min",
perMinute: "/ min",
errorRate: "Error Rate",
errorHint: "Error rate = errors / total messages. Lower is better.",
avgSession: "avg session",
cacheHitRate: "Cache Hit Rate",
cacheHint: "Cache hit rate = cache read / (input + cache read). Higher is better.",
cached: "cached",
prompt: "prompt",
calls: "calls",
topModels: "Top Models",
topProviders: "Top Providers",
topTools: "Top Tools",
topAgents: "Top Agents",
topChannels: "Top Channels",
peakErrorDays: "Peak Error Days",
peakErrorHours: "Peak Error Hours",
noModelData: "No model data",
noProviderData: "No provider data",
noToolCalls: "No tool calls",
noAgentData: "No agent data",
noChannelData: "No channel data",
noErrorData: "No error data",
},
sessions: {
title: "Sessions",
shown: "{count} shown",
total: "{count} total",
avg: "avg",
all: "All",
recent: "Recently viewed",
recentShort: "Recent",
sort: "Sort",
ascending: "Ascending",
descending: "Descending",
clearSelection: "Clear Selection",
noRecent: "No recent sessions",
noneInRange: "No sessions in range",
more: "+{count} more",
selected: "Selected ({count})",
copy: "Copy",
copyName: "Copy session name",
limitReached: "Showing first 1,000 sessions. Narrow date range for complete results.",
},
details: {
noUsageData: "No usage data for this session.",
duration: "Duration",
modelMix: "Model Mix",
filtered: "(filtered)",
close: "Close session details",
noTimeline: "No timeline data",
noDataInRange: "No data in range",
usageOverTime: "Usage Over Time",
reset: "Reset",
perTurn: "Per Turn",
cumulative: "Cumulative",
turnRange: "Turns {start}{end} of {total}",
assistantOutputTokens: "Assistant output tokens",
userToolInputTokens: "User + tool input tokens",
tokensWrittenToCache: "Tokens written to cache",
tokensReadFromCache: "Tokens read from cache",
noContextData: "No context data",
systemPromptBreakdown: "System Prompt Breakdown",
collapse: "Collapse",
collapseAll: "Collapse All",
expandAll: "Expand All",
baseContextPerMessage: "Base context per message",
system: "System",
systemShort: "Sys",
skills: "Skills",
tools: "Tools",
files: "Files",
ofInput: "of input",
of: "of",
timelineFiltered: "timeline filtered",
conversation: "Conversation",
noMessages: "No messages",
tool: "Tool",
toolResult: "Tool result",
hasTools: "Has tools",
searchConversation: "Search conversation",
you: "You",
noMessagesMatch: "No messages match the filters.",
},
mosaic: {
title: "Activity by Time",
subtitleEmpty: "Estimates require session timestamps.",
subtitle: "Estimated from session spans (first/last activity). Time zone: {zone}.",
noTimelineData: "No timeline data yet.",
dayOfWeek: "Day of Week",
midnight: "Midnight",
fourAm: "4am",
eightAm: "8am",
noon: "Noon",
fourPm: "4pm",
eightPm: "8pm",
legend: "Low → High token density",
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat",
},
},
login: {
subtitle: "Gateway Dashboard",
passwordPlaceholder: "optional",
},
chat: {
disconnected: "Disconnected from gateway.",
refreshTitle: "Refresh chat data",
thinkingToggle: "Toggle assistant thinking/working output",
toolCallsToggle: "Toggle tool calls and tool results",
focusToggle: "Toggle focus mode (hide sidebar + page header)",
hideCronSessions: "Hide cron sessions",
showCronSessions: "Show cron sessions",
showCronSessionsHidden: "Show cron sessions ({count} hidden)",
onboardingDisabled: "Disabled during setup",
},
languages: {
en: "English",
zhCN: "简体中文 (Simplified Chinese)",
zhTW: "繁體中文 (Traditional Chinese)",
ptBR: "Português (Brazilian Portuguese)",
de: "Deutsch (German)",
es: "Español (Spanish)",
jaJP: "日本語 (Japanese)",
ko: "한국어 (Korean)",
fr: "Français (French)",
},
cron: {
summary: {
enabled: "Enabled",
yes: "Yes",
no: "No",
jobs: "Jobs",
nextWake: "Next wake",
refreshing: "Refreshing...",
refresh: "Refresh",
},
jobs: {
title: "Jobs",
subtitle: "All scheduled jobs stored in the gateway.",
shownOf: "{shown} shown of {total}",
searchJobs: "Search jobs",
searchPlaceholder: "Name, description, or agent",
enabled: "Enabled",
schedule: "Schedule",
lastRun: "Last run",
all: "All",
sort: "Sort",
nextRun: "Next run",
recentlyUpdated: "Recently updated",
name: "Name",
direction: "Direction",
ascending: "Ascending",
descending: "Descending",
reset: "Reset",
noMatching: "No matching jobs.",
loading: "Loading...",
loadMore: "Load more jobs",
},
runs: {
title: "Run history",
subtitleAll: "Latest runs across all jobs.",
subtitleJob: "Latest runs for {title}.",
scope: "Scope",
allJobs: "All jobs",
selectedJob: "Selected job",
searchRuns: "Search runs",
searchPlaceholder: "Summary, error, or job",
newestFirst: "Newest first",
oldestFirst: "Oldest first",
status: "Status",
delivery: "Delivery",
clear: "Clear",
allStatuses: "All statuses",
allDelivery: "All delivery",
selectJobHint: "Select a job to inspect run history.",
noMatching: "No matching runs.",
loadMore: "Load more runs",
runStatusOk: "OK",
runStatusError: "Error",
runStatusSkipped: "Skipped",
runStatusUnknown: "Unknown",
deliveryDelivered: "Delivered",
deliveryNotDelivered: "Not delivered",
deliveryUnknown: "Unknown",
deliveryNotRequested: "Not requested",
},
form: {
editJob: "Edit Job",
newJob: "New Job",
updateSubtitle: "Update the selected scheduled job.",
createSubtitle: "Create a scheduled wakeup or agent run.",
required: "Required",
requiredSr: "required",
basics: "Basics",
basicsSub: "Name it, choose the assistant, and set enabled state.",
fieldName: "Name",
description: "Description",
agentId: "Agent ID",
namePlaceholder: "Morning brief",
descriptionPlaceholder: "Optional context for this job",
agentPlaceholder: "main or ops",
agentHelp: "Start typing to pick a known agent, or enter a custom one.",
schedule: "Schedule",
scheduleSub: "Control when this job runs.",
every: "Every",
at: "At",
cronOption: "Cron",
runAt: "Run at",
unit: "Unit",
minutes: "Minutes",
hours: "Hours",
days: "Days",
expression: "Expression",
expressionPlaceholder: "0 7 * * *",
everyAmountPlaceholder: "30",
timezoneOptional: "Timezone (optional)",
timezonePlaceholder: "America/Los_Angeles",
timezoneHelp: "Pick a common timezone or enter any valid IANA timezone.",
jitterHelp: "Need jitter? Use Advanced → Stagger window / Stagger unit.",
execution: "Execution",
executionSub: "Choose when to wake, and what this job should do.",
session: "Session",
main: "Main",
isolated: "Isolated",
sessionHelp: "Main posts a system event. Isolated runs a dedicated agent turn.",
wakeMode: "Wake mode",
now: "Now",
nextHeartbeat: "Next heartbeat",
wakeModeHelp: "Now triggers immediately. Next heartbeat waits for the next cycle.",
payloadKind: "What should run?",
systemEvent: "Post message to main timeline",
agentTurn: "Run assistant task (isolated)",
systemEventHelp:
"Sends your text to the gateway main timeline (good for reminders/triggers).",
agentTurnHelp: "Starts an assistant run in its own session using your prompt.",
timeoutSeconds: "Timeout (seconds)",
timeoutPlaceholder: "Optional, e.g. 90",
timeoutHelp:
"Optional. Leave blank to use the gateway default timeout behavior for this run.",
mainTimelineMessage: "Main timeline message",
assistantTaskPrompt: "Assistant task prompt",
deliverySection: "Delivery",
deliverySub: "Choose where run summaries are sent.",
resultDelivery: "Result delivery",
announceDefault: "Announce summary (default)",
webhookPost: "Webhook POST",
noneInternal: "None (internal)",
deliveryHelp: "Announce posts a summary to chat. None keeps execution internal.",
webhookUrl: "Webhook URL",
channel: "Channel",
webhookPlaceholder: "https://example.com/cron",
channelHelp: "Choose which connected channel receives the summary.",
webhookHelp: "Send run summaries to a webhook endpoint.",
to: "To",
toPlaceholder: "+1555... or chat id",
toHelp: "Optional recipient override (chat id, phone, or user id).",
advanced: "Advanced",
advancedHelp:
"Optional overrides for delivery guarantees, schedule jitter, and model controls.",
deleteAfterRun: "Delete after run",
deleteAfterRunHelp: "Best for one-shot reminders that should auto-clean up.",
clearAgentOverride: "Clear agent override",
clearAgentHelp: "Force this job to use the gateway default assistant.",
exactTiming: "Exact timing (no stagger)",
exactTimingHelp: "Run on exact cron boundaries with no spread.",
staggerWindow: "Stagger window",
staggerUnit: "Stagger unit",
staggerPlaceholder: "30",
seconds: "Seconds",
model: "Model",
modelPlaceholder: "openai/gpt-5.2",
modelHelp: "Start typing to pick a known model, or enter a custom one.",
thinking: "Thinking",
thinkingPlaceholder: "low",
thinkingHelp: "Use a suggested level or enter a provider-specific value.",
bestEffortDelivery: "Best effort delivery",
bestEffortHelp: "Do not fail the job if delivery itself fails.",
cantAddYet: "Can't add job yet",
fillRequired: "Fill the required fields below to enable submit.",
fixFields: "Fix {count} field to continue.",
fixFieldsPlural: "Fix {count} fields to continue.",
saving: "Saving...",
saveChanges: "Save changes",
addJob: "Add job",
cancel: "Cancel",
},
jobList: {
allJobs: "all jobs",
selectJob: "(select a job)",
enabled: "enabled",
disabled: "disabled",
edit: "Edit",
clone: "Clone",
disable: "Disable",
enable: "Enable",
run: "Run",
history: "History",
remove: "Remove",
},
jobDetail: {
system: "System",
prompt: "Prompt",
delivery: "Delivery",
agent: "Agent",
},
jobState: {
status: "Status",
next: "Next",
last: "Last",
},
runEntry: {
noSummary: "No summary.",
runAt: "Run at",
openRunChat: "Open run chat",
next: "Next {rel}",
due: "Due {rel}",
},
errors: {
nameRequired: "Name is required.",
scheduleAtInvalid: "Enter a valid date/time.",
everyAmountInvalid: "Interval must be greater than 0.",
cronExprRequired: "Cron expression is required.",
staggerAmountInvalid: "Stagger must be greater than 0.",
systemTextRequired: "System text is required.",
agentMessageRequired: "Agent message is required.",
timeoutInvalid: "If set, timeout must be greater than 0 seconds.",
webhookUrlRequired: "Webhook URL is required.",
webhookUrlInvalid: "Webhook URL must start with http:// or https://.",
invalidRunTime: "Invalid run time.",
invalidIntervalAmount: "Invalid interval amount.",
cronExprRequiredShort: "Cron expression required.",
invalidStaggerAmount: "Invalid stagger amount.",
systemEventTextRequired: "System event text required.",
agentMessageRequiredShort: "Agent message required.",
nameRequiredShort: "Name required.",
},
},
};

View File

@@ -1,5 +1,6 @@
import type { TranslationMap } from "../lib/types.ts";
// Generated by scripts/control-ui-i18n.ts.
export const pt_BR: TranslationMap = {
common: {
health: "Saúde",
@@ -13,6 +14,7 @@ export const pt_BR: TranslationMap = {
na: "n/a",
version: "Versão",
docs: "Docs",
theme: "Theme",
resources: "Recursos",
search: "Pesquisar",
},
@@ -44,6 +46,7 @@ export const pt_BR: TranslationMap = {
aiAgents: "IA e Agentes",
debug: "Debug",
logs: "Logs",
dreams: "Dreams",
},
subtitles: {
agents: "Espaços, ferramentas, identidades.",
@@ -64,6 +67,7 @@ export const pt_BR: TranslationMap = {
aiAgents: "Configurações de agentes, modelos, habilidades, ferramentas, memória e sessão.",
debug: "Snapshots, eventos, RPC.",
logs: "Logs ao vivo do gateway.",
dreams: "Memory consolidation while sleeping.",
},
overview: {
access: {
@@ -154,6 +158,228 @@ export const pt_BR: TranslationMap = {
noResults: "Sem resultados",
},
},
usage: {
page: {
subtitle: "See where tokens go, when sessions spike, and what drives cost.",
},
common: {
emptyValue: "—",
unknown: "unknown",
},
loading: {
title: "Usage Overview",
badge: "Loading",
},
metrics: {
tokens: "Tokens",
cost: "Cost",
session: "session",
sessions: "sessions",
},
presets: {
today: "Today",
last7d: "7d",
last30d: "30d",
},
filters: {
title: "Filters",
to: "to",
startDate: "Start date",
endDate: "End date",
timeZone: "Time zone",
timeZoneLocal: "Local",
timeZoneUtc: "UTC",
pin: "Pin",
pinned: "Pinned",
unpin: "Unpin filters",
selectAll: "Select All",
clear: "Clear",
clearAll: "Clear All",
remove: "Remove filter",
all: "All",
days: "Days",
hours: "Hours",
session: "Session",
agent: "Agent",
channel: "Channel",
provider: "Provider",
model: "Model",
tool: "Tool",
daysCount: "{count} days",
hoursCount: "{count} hours",
sessionsCount: "{count} sessions",
},
query: {
placeholder:
"Filter sessions (e.g. key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)",
apply: "Filter (client-side)",
matching: "{shown} of {total} sessions match",
inRange: "{total} sessions in range",
tip: "Tip: use filters or click bars to refine days.",
},
export: {
label: "Export",
sessionsCsv: "Sessions CSV",
dailyCsv: "Daily CSV",
json: "JSON",
},
empty: {
title: "Start with a date range",
subtitle:
"Load usage data to compare costs, inspect sessions, and drill into timelines without leaving the dashboard.",
hint: "Select a date range and click Refresh to load usage.",
noData: "No data",
featureOverview: "Overview cards",
featureSessions: "Session ranking",
featureTimeline: "Timeline drilldown",
},
daily: {
title: "Daily Usage",
total: "Total",
byType: "By Type",
tokensTitle: "Daily Token Usage",
costTitle: "Daily Cost",
},
breakdown: {
output: "Output",
input: "Input",
cacheWrite: "Cache Write",
cacheRead: "Cache Read",
total: "Total",
tokensByType: "Tokens by Type",
costByType: "Cost by Type",
},
overview: {
title: "Usage Overview",
messages: "Messages",
messagesHint: "Total user and assistant messages in range.",
messagesAbbrev: "msgs",
user: "user",
assistant: "assistant",
toolCalls: "Tool Calls",
toolCallsHint: "Total tool call count across sessions.",
toolsUsed: "tools used",
errors: "Errors",
errorsHint: "Total message and tool errors in range.",
toolResults: "tool results",
avgTokens: "Avg Tokens / Msg",
avgTokensHint: "Average tokens per message in this range.",
avgCost: "Avg Cost / Msg",
avgCostHint: "Average cost per message when providers report costs.",
avgCostHintMissing:
"Average cost per message when providers report costs. Cost data is missing for some or all sessions in this range.",
acrossMessages: "Across {count} messages",
sessions: "Sessions",
sessionsHint: "Distinct sessions in the range.",
sessionsInRange: "of {count} in range",
throughput: "Throughput",
throughputHint: "Throughput shows tokens per minute over active time. Higher is better.",
tokensPerMinute: "tok/min",
perMinute: "/ min",
errorRate: "Error Rate",
errorHint: "Error rate = errors / total messages. Lower is better.",
avgSession: "avg session",
cacheHitRate: "Cache Hit Rate",
cacheHint: "Cache hit rate = cache read / (input + cache read). Higher is better.",
cached: "cached",
prompt: "prompt",
calls: "calls",
topModels: "Top Models",
topProviders: "Top Providers",
topTools: "Top Tools",
topAgents: "Top Agents",
topChannels: "Top Channels",
peakErrorDays: "Peak Error Days",
peakErrorHours: "Peak Error Hours",
noModelData: "No model data",
noProviderData: "No provider data",
noToolCalls: "No tool calls",
noAgentData: "No agent data",
noChannelData: "No channel data",
noErrorData: "No error data",
},
sessions: {
title: "Sessions",
shown: "{count} shown",
total: "{count} total",
avg: "avg",
all: "All",
recent: "Recently viewed",
recentShort: "Recent",
sort: "Sort",
ascending: "Ascending",
descending: "Descending",
clearSelection: "Clear Selection",
noRecent: "No recent sessions",
noneInRange: "No sessions in range",
more: "+{count} more",
selected: "Selected ({count})",
copy: "Copy",
copyName: "Copy session name",
limitReached: "Showing first 1,000 sessions. Narrow date range for complete results.",
},
details: {
noUsageData: "No usage data for this session.",
duration: "Duration",
modelMix: "Model Mix",
filtered: "(filtered)",
close: "Close session details",
noTimeline: "No timeline data",
noDataInRange: "No data in range",
usageOverTime: "Usage Over Time",
reset: "Reset",
perTurn: "Per Turn",
cumulative: "Cumulative",
turnRange: "Turns {start}{end} of {total}",
assistantOutputTokens: "Assistant output tokens",
userToolInputTokens: "User + tool input tokens",
tokensWrittenToCache: "Tokens written to cache",
tokensReadFromCache: "Tokens read from cache",
noContextData: "No context data",
systemPromptBreakdown: "System Prompt Breakdown",
collapse: "Collapse",
collapseAll: "Collapse All",
expandAll: "Expand All",
baseContextPerMessage: "Base context per message",
system: "System",
systemShort: "Sys",
skills: "Skills",
tools: "Tools",
files: "Files",
ofInput: "of input",
of: "of",
timelineFiltered: "timeline filtered",
conversation: "Conversation",
noMessages: "No messages",
tool: "Tool",
toolResult: "Tool result",
hasTools: "Has tools",
searchConversation: "Search conversation",
you: "You",
noMessagesMatch: "No messages match the filters.",
},
mosaic: {
title: "Activity by Time",
subtitleEmpty: "Estimates require session timestamps.",
subtitle: "Estimated from session spans (first/last activity). Time zone: {zone}.",
noTimelineData: "No timeline data yet.",
dayOfWeek: "Day of Week",
midnight: "Midnight",
fourAm: "4am",
eightAm: "8am",
noon: "Noon",
fourPm: "4pm",
eightPm: "8pm",
legend: "Low → High token density",
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat",
},
},
login: {
subtitle: "Painel do Gateway",
passwordPlaceholder: "opcional",
@@ -162,6 +388,7 @@ export const pt_BR: TranslationMap = {
disconnected: "Desconectado do gateway.",
refreshTitle: "Atualizar dados do chat",
thinkingToggle: "Alternar saída de pensamento/trabalho do assistente",
toolCallsToggle: "Toggle tool calls and tool results",
focusToggle: "Alternar modo de foco (ocultar barra lateral + cabeçalho da página)",
hideCronSessions: "Ocultar sessões de cron",
showCronSessions: "Mostrar sessões de cron",
@@ -175,5 +402,219 @@ export const pt_BR: TranslationMap = {
ptBR: "Português (Português Brasileiro)",
de: "Deutsch (Alemão)",
es: "Español (Espanhol)",
jaJP: "日本語 (Japanese)",
ko: "한국어 (Korean)",
fr: "Français (French)",
},
cron: {
summary: {
enabled: "Enabled",
yes: "Yes",
no: "No",
jobs: "Jobs",
nextWake: "Next wake",
refreshing: "Refreshing...",
refresh: "Refresh",
},
jobs: {
title: "Jobs",
subtitle: "All scheduled jobs stored in the gateway.",
shownOf: "{shown} shown of {total}",
searchJobs: "Search jobs",
searchPlaceholder: "Name, description, or agent",
enabled: "Enabled",
schedule: "Schedule",
lastRun: "Last run",
all: "All",
sort: "Sort",
nextRun: "Next run",
recentlyUpdated: "Recently updated",
name: "Name",
direction: "Direction",
ascending: "Ascending",
descending: "Descending",
reset: "Reset",
noMatching: "No matching jobs.",
loading: "Loading...",
loadMore: "Load more jobs",
},
runs: {
title: "Run history",
subtitleAll: "Latest runs across all jobs.",
subtitleJob: "Latest runs for {title}.",
scope: "Scope",
allJobs: "All jobs",
selectedJob: "Selected job",
searchRuns: "Search runs",
searchPlaceholder: "Summary, error, or job",
newestFirst: "Newest first",
oldestFirst: "Oldest first",
status: "Status",
delivery: "Delivery",
clear: "Clear",
allStatuses: "All statuses",
allDelivery: "All delivery",
selectJobHint: "Select a job to inspect run history.",
noMatching: "No matching runs.",
loadMore: "Load more runs",
runStatusOk: "OK",
runStatusError: "Error",
runStatusSkipped: "Skipped",
runStatusUnknown: "Unknown",
deliveryDelivered: "Delivered",
deliveryNotDelivered: "Not delivered",
deliveryUnknown: "Unknown",
deliveryNotRequested: "Not requested",
},
form: {
editJob: "Edit Job",
newJob: "New Job",
updateSubtitle: "Update the selected scheduled job.",
createSubtitle: "Create a scheduled wakeup or agent run.",
required: "Required",
requiredSr: "required",
basics: "Basics",
basicsSub: "Name it, choose the assistant, and set enabled state.",
fieldName: "Name",
description: "Description",
agentId: "Agent ID",
namePlaceholder: "Morning brief",
descriptionPlaceholder: "Optional context for this job",
agentPlaceholder: "main or ops",
agentHelp: "Start typing to pick a known agent, or enter a custom one.",
schedule: "Schedule",
scheduleSub: "Control when this job runs.",
every: "Every",
at: "At",
cronOption: "Cron",
runAt: "Run at",
unit: "Unit",
minutes: "Minutes",
hours: "Hours",
days: "Days",
expression: "Expression",
expressionPlaceholder: "0 7 * * *",
everyAmountPlaceholder: "30",
timezoneOptional: "Timezone (optional)",
timezonePlaceholder: "America/Los_Angeles",
timezoneHelp: "Pick a common timezone or enter any valid IANA timezone.",
jitterHelp: "Need jitter? Use Advanced → Stagger window / Stagger unit.",
execution: "Execution",
executionSub: "Choose when to wake, and what this job should do.",
session: "Session",
main: "Main",
isolated: "Isolated",
sessionHelp: "Main posts a system event. Isolated runs a dedicated agent turn.",
wakeMode: "Wake mode",
now: "Now",
nextHeartbeat: "Next heartbeat",
wakeModeHelp: "Now triggers immediately. Next heartbeat waits for the next cycle.",
payloadKind: "What should run?",
systemEvent: "Post message to main timeline",
agentTurn: "Run assistant task (isolated)",
systemEventHelp:
"Sends your text to the gateway main timeline (good for reminders/triggers).",
agentTurnHelp: "Starts an assistant run in its own session using your prompt.",
timeoutSeconds: "Timeout (seconds)",
timeoutPlaceholder: "Optional, e.g. 90",
timeoutHelp:
"Optional. Leave blank to use the gateway default timeout behavior for this run.",
mainTimelineMessage: "Main timeline message",
assistantTaskPrompt: "Assistant task prompt",
deliverySection: "Delivery",
deliverySub: "Choose where run summaries are sent.",
resultDelivery: "Result delivery",
announceDefault: "Announce summary (default)",
webhookPost: "Webhook POST",
noneInternal: "None (internal)",
deliveryHelp: "Announce posts a summary to chat. None keeps execution internal.",
webhookUrl: "Webhook URL",
channel: "Channel",
webhookPlaceholder: "https://example.com/cron",
channelHelp: "Choose which connected channel receives the summary.",
webhookHelp: "Send run summaries to a webhook endpoint.",
to: "To",
toPlaceholder: "+1555... or chat id",
toHelp: "Optional recipient override (chat id, phone, or user id).",
advanced: "Advanced",
advancedHelp:
"Optional overrides for delivery guarantees, schedule jitter, and model controls.",
deleteAfterRun: "Delete after run",
deleteAfterRunHelp: "Best for one-shot reminders that should auto-clean up.",
clearAgentOverride: "Clear agent override",
clearAgentHelp: "Force this job to use the gateway default assistant.",
exactTiming: "Exact timing (no stagger)",
exactTimingHelp: "Run on exact cron boundaries with no spread.",
staggerWindow: "Stagger window",
staggerUnit: "Stagger unit",
staggerPlaceholder: "30",
seconds: "Seconds",
model: "Model",
modelPlaceholder: "openai/gpt-5.2",
modelHelp: "Start typing to pick a known model, or enter a custom one.",
thinking: "Thinking",
thinkingPlaceholder: "low",
thinkingHelp: "Use a suggested level or enter a provider-specific value.",
bestEffortDelivery: "Best effort delivery",
bestEffortHelp: "Do not fail the job if delivery itself fails.",
cantAddYet: "Can't add job yet",
fillRequired: "Fill the required fields below to enable submit.",
fixFields: "Fix {count} field to continue.",
fixFieldsPlural: "Fix {count} fields to continue.",
saving: "Saving...",
saveChanges: "Save changes",
addJob: "Add job",
cancel: "Cancel",
},
jobList: {
allJobs: "all jobs",
selectJob: "(select a job)",
enabled: "enabled",
disabled: "disabled",
edit: "Edit",
clone: "Clone",
disable: "Disable",
enable: "Enable",
run: "Run",
history: "History",
remove: "Remove",
},
jobDetail: {
system: "System",
prompt: "Prompt",
delivery: "Delivery",
agent: "Agent",
},
jobState: {
status: "Status",
next: "Next",
last: "Last",
},
runEntry: {
noSummary: "No summary.",
runAt: "Run at",
openRunChat: "Open run chat",
next: "Next {rel}",
due: "Due {rel}",
},
errors: {
nameRequired: "Name is required.",
scheduleAtInvalid: "Enter a valid date/time.",
everyAmountInvalid: "Interval must be greater than 0.",
cronExprRequired: "Cron expression is required.",
staggerAmountInvalid: "Stagger must be greater than 0.",
systemTextRequired: "System text is required.",
agentMessageRequired: "Agent message is required.",
timeoutInvalid: "If set, timeout must be greater than 0 seconds.",
webhookUrlRequired: "Webhook URL is required.",
webhookUrlInvalid: "Webhook URL must start with http:// or https://.",
invalidRunTime: "Invalid run time.",
invalidIntervalAmount: "Invalid interval amount.",
cronExprRequiredShort: "Cron expression required.",
invalidStaggerAmount: "Invalid stagger amount.",
systemEventTextRequired: "System event text required.",
agentMessageRequiredShort: "Agent message required.",
nameRequiredShort: "Name required.",
},
},
};

View File

@@ -1,5 +1,6 @@
import type { TranslationMap } from "../lib/types.ts";
// Generated by scripts/control-ui-i18n.ts.
export const zh_CN: TranslationMap = {
common: {
health: "健康状况",
@@ -13,6 +14,7 @@ export const zh_CN: TranslationMap = {
na: "不适用",
version: "版本",
docs: "文档",
theme: "Theme",
resources: "资源",
search: "搜索",
},
@@ -44,6 +46,7 @@ export const zh_CN: TranslationMap = {
aiAgents: "AI 与代理",
debug: "调试",
logs: "日志",
dreams: "Dreams",
},
subtitles: {
agents: "工作区、工具、身份。",
@@ -64,6 +67,7 @@ export const zh_CN: TranslationMap = {
aiAgents: "代理、模型、技能、工具、记忆和会话设置。",
debug: "快照、事件、RPC。",
logs: "实时网关日志。",
dreams: "Memory consolidation while sleeping.",
},
overview: {
access: {
@@ -151,6 +155,228 @@ export const zh_CN: TranslationMap = {
noResults: "无结果",
},
},
usage: {
page: {
subtitle: "See where tokens go, when sessions spike, and what drives cost.",
},
common: {
emptyValue: "—",
unknown: "unknown",
},
loading: {
title: "Usage Overview",
badge: "Loading",
},
metrics: {
tokens: "Tokens",
cost: "Cost",
session: "session",
sessions: "sessions",
},
presets: {
today: "Today",
last7d: "7d",
last30d: "30d",
},
filters: {
title: "Filters",
to: "to",
startDate: "Start date",
endDate: "End date",
timeZone: "Time zone",
timeZoneLocal: "Local",
timeZoneUtc: "UTC",
pin: "Pin",
pinned: "Pinned",
unpin: "Unpin filters",
selectAll: "Select All",
clear: "Clear",
clearAll: "Clear All",
remove: "Remove filter",
all: "All",
days: "Days",
hours: "Hours",
session: "Session",
agent: "Agent",
channel: "Channel",
provider: "Provider",
model: "Model",
tool: "Tool",
daysCount: "{count} days",
hoursCount: "{count} hours",
sessionsCount: "{count} sessions",
},
query: {
placeholder:
"Filter sessions (e.g. key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)",
apply: "Filter (client-side)",
matching: "{shown} of {total} sessions match",
inRange: "{total} sessions in range",
tip: "Tip: use filters or click bars to refine days.",
},
export: {
label: "Export",
sessionsCsv: "Sessions CSV",
dailyCsv: "Daily CSV",
json: "JSON",
},
empty: {
title: "Start with a date range",
subtitle:
"Load usage data to compare costs, inspect sessions, and drill into timelines without leaving the dashboard.",
hint: "Select a date range and click Refresh to load usage.",
noData: "No data",
featureOverview: "Overview cards",
featureSessions: "Session ranking",
featureTimeline: "Timeline drilldown",
},
daily: {
title: "Daily Usage",
total: "Total",
byType: "By Type",
tokensTitle: "Daily Token Usage",
costTitle: "Daily Cost",
},
breakdown: {
output: "Output",
input: "Input",
cacheWrite: "Cache Write",
cacheRead: "Cache Read",
total: "Total",
tokensByType: "Tokens by Type",
costByType: "Cost by Type",
},
overview: {
title: "Usage Overview",
messages: "Messages",
messagesHint: "Total user and assistant messages in range.",
messagesAbbrev: "msgs",
user: "user",
assistant: "assistant",
toolCalls: "Tool Calls",
toolCallsHint: "Total tool call count across sessions.",
toolsUsed: "tools used",
errors: "Errors",
errorsHint: "Total message and tool errors in range.",
toolResults: "tool results",
avgTokens: "Avg Tokens / Msg",
avgTokensHint: "Average tokens per message in this range.",
avgCost: "Avg Cost / Msg",
avgCostHint: "Average cost per message when providers report costs.",
avgCostHintMissing:
"Average cost per message when providers report costs. Cost data is missing for some or all sessions in this range.",
acrossMessages: "Across {count} messages",
sessions: "Sessions",
sessionsHint: "Distinct sessions in the range.",
sessionsInRange: "of {count} in range",
throughput: "Throughput",
throughputHint: "Throughput shows tokens per minute over active time. Higher is better.",
tokensPerMinute: "tok/min",
perMinute: "/ min",
errorRate: "Error Rate",
errorHint: "Error rate = errors / total messages. Lower is better.",
avgSession: "avg session",
cacheHitRate: "Cache Hit Rate",
cacheHint: "Cache hit rate = cache read / (input + cache read). Higher is better.",
cached: "cached",
prompt: "prompt",
calls: "calls",
topModels: "Top Models",
topProviders: "Top Providers",
topTools: "Top Tools",
topAgents: "Top Agents",
topChannels: "Top Channels",
peakErrorDays: "Peak Error Days",
peakErrorHours: "Peak Error Hours",
noModelData: "No model data",
noProviderData: "No provider data",
noToolCalls: "No tool calls",
noAgentData: "No agent data",
noChannelData: "No channel data",
noErrorData: "No error data",
},
sessions: {
title: "Sessions",
shown: "{count} shown",
total: "{count} total",
avg: "avg",
all: "All",
recent: "Recently viewed",
recentShort: "Recent",
sort: "Sort",
ascending: "Ascending",
descending: "Descending",
clearSelection: "Clear Selection",
noRecent: "No recent sessions",
noneInRange: "No sessions in range",
more: "+{count} more",
selected: "Selected ({count})",
copy: "Copy",
copyName: "Copy session name",
limitReached: "Showing first 1,000 sessions. Narrow date range for complete results.",
},
details: {
noUsageData: "No usage data for this session.",
duration: "Duration",
modelMix: "Model Mix",
filtered: "(filtered)",
close: "Close session details",
noTimeline: "No timeline data",
noDataInRange: "No data in range",
usageOverTime: "Usage Over Time",
reset: "Reset",
perTurn: "Per Turn",
cumulative: "Cumulative",
turnRange: "Turns {start}{end} of {total}",
assistantOutputTokens: "Assistant output tokens",
userToolInputTokens: "User + tool input tokens",
tokensWrittenToCache: "Tokens written to cache",
tokensReadFromCache: "Tokens read from cache",
noContextData: "No context data",
systemPromptBreakdown: "System Prompt Breakdown",
collapse: "Collapse",
collapseAll: "Collapse All",
expandAll: "Expand All",
baseContextPerMessage: "Base context per message",
system: "System",
systemShort: "Sys",
skills: "Skills",
tools: "Tools",
files: "Files",
ofInput: "of input",
of: "of",
timelineFiltered: "timeline filtered",
conversation: "Conversation",
noMessages: "No messages",
tool: "Tool",
toolResult: "Tool result",
hasTools: "Has tools",
searchConversation: "Search conversation",
you: "You",
noMessagesMatch: "No messages match the filters.",
},
mosaic: {
title: "Activity by Time",
subtitleEmpty: "Estimates require session timestamps.",
subtitle: "Estimated from session spans (first/last activity). Time zone: {zone}.",
noTimelineData: "No timeline data yet.",
dayOfWeek: "Day of Week",
midnight: "Midnight",
fourAm: "4am",
eightAm: "8am",
noon: "Noon",
fourPm: "4pm",
eightPm: "8pm",
legend: "Low → High token density",
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat",
},
},
login: {
subtitle: "网关仪表盘",
passwordPlaceholder: "可选",
@@ -159,6 +385,7 @@ export const zh_CN: TranslationMap = {
disconnected: "已断开与网关的连接。",
refreshTitle: "刷新聊天数据",
thinkingToggle: "切换助手思考/工作输出",
toolCallsToggle: "Toggle tool calls and tool results",
focusToggle: "切换专注模式 (隐藏侧边栏 + 页面页眉)",
hideCronSessions: "隐藏定时任务会话",
showCronSessions: "显示定时任务会话",
@@ -172,6 +399,9 @@ export const zh_CN: TranslationMap = {
ptBR: "Português (巴西葡萄牙语)",
de: "Deutsch (德语)",
es: "Español (西班牙语)",
jaJP: "日本語 (Japanese)",
ko: "한국어 (Korean)",
fr: "Français (French)",
},
cron: {
summary: {
@@ -190,6 +420,8 @@ export const zh_CN: TranslationMap = {
searchJobs: "搜索任务",
searchPlaceholder: "名称、描述或代理",
enabled: "启用状态",
schedule: "Schedule",
lastRun: "Last run",
all: "全部",
sort: "排序",
nextRun: "下次运行",
@@ -198,6 +430,7 @@ export const zh_CN: TranslationMap = {
direction: "方向",
ascending: "升序",
descending: "降序",
reset: "Reset",
noMatching: "没有匹配的任务。",
loading: "加载中...",
loadMore: "加载更多任务",

View File

@@ -1,5 +1,6 @@
import type { TranslationMap } from "../lib/types.ts";
// Generated by scripts/control-ui-i18n.ts.
export const zh_TW: TranslationMap = {
common: {
health: "健康狀況",
@@ -13,6 +14,7 @@ export const zh_TW: TranslationMap = {
na: "不適用",
version: "版本",
docs: "文檔",
theme: "Theme",
resources: "資源",
search: "搜尋",
},
@@ -44,6 +46,7 @@ export const zh_TW: TranslationMap = {
aiAgents: "AI 與代理",
debug: "調試",
logs: "日誌",
dreams: "Dreams",
},
subtitles: {
agents: "工作區、工具、身份。",
@@ -64,6 +67,7 @@ export const zh_TW: TranslationMap = {
aiAgents: "代理、模型、技能、工具、記憶和會話設置。",
debug: "快照、事件、RPC。",
logs: "實時網關日誌。",
dreams: "Memory consolidation while sleeping.",
},
overview: {
access: {
@@ -151,6 +155,228 @@ export const zh_TW: TranslationMap = {
noResults: "無結果",
},
},
usage: {
page: {
subtitle: "See where tokens go, when sessions spike, and what drives cost.",
},
common: {
emptyValue: "—",
unknown: "unknown",
},
loading: {
title: "Usage Overview",
badge: "Loading",
},
metrics: {
tokens: "Tokens",
cost: "Cost",
session: "session",
sessions: "sessions",
},
presets: {
today: "Today",
last7d: "7d",
last30d: "30d",
},
filters: {
title: "Filters",
to: "to",
startDate: "Start date",
endDate: "End date",
timeZone: "Time zone",
timeZoneLocal: "Local",
timeZoneUtc: "UTC",
pin: "Pin",
pinned: "Pinned",
unpin: "Unpin filters",
selectAll: "Select All",
clear: "Clear",
clearAll: "Clear All",
remove: "Remove filter",
all: "All",
days: "Days",
hours: "Hours",
session: "Session",
agent: "Agent",
channel: "Channel",
provider: "Provider",
model: "Model",
tool: "Tool",
daysCount: "{count} days",
hoursCount: "{count} hours",
sessionsCount: "{count} sessions",
},
query: {
placeholder:
"Filter sessions (e.g. key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)",
apply: "Filter (client-side)",
matching: "{shown} of {total} sessions match",
inRange: "{total} sessions in range",
tip: "Tip: use filters or click bars to refine days.",
},
export: {
label: "Export",
sessionsCsv: "Sessions CSV",
dailyCsv: "Daily CSV",
json: "JSON",
},
empty: {
title: "Start with a date range",
subtitle:
"Load usage data to compare costs, inspect sessions, and drill into timelines without leaving the dashboard.",
hint: "Select a date range and click Refresh to load usage.",
noData: "No data",
featureOverview: "Overview cards",
featureSessions: "Session ranking",
featureTimeline: "Timeline drilldown",
},
daily: {
title: "Daily Usage",
total: "Total",
byType: "By Type",
tokensTitle: "Daily Token Usage",
costTitle: "Daily Cost",
},
breakdown: {
output: "Output",
input: "Input",
cacheWrite: "Cache Write",
cacheRead: "Cache Read",
total: "Total",
tokensByType: "Tokens by Type",
costByType: "Cost by Type",
},
overview: {
title: "Usage Overview",
messages: "Messages",
messagesHint: "Total user and assistant messages in range.",
messagesAbbrev: "msgs",
user: "user",
assistant: "assistant",
toolCalls: "Tool Calls",
toolCallsHint: "Total tool call count across sessions.",
toolsUsed: "tools used",
errors: "Errors",
errorsHint: "Total message and tool errors in range.",
toolResults: "tool results",
avgTokens: "Avg Tokens / Msg",
avgTokensHint: "Average tokens per message in this range.",
avgCost: "Avg Cost / Msg",
avgCostHint: "Average cost per message when providers report costs.",
avgCostHintMissing:
"Average cost per message when providers report costs. Cost data is missing for some or all sessions in this range.",
acrossMessages: "Across {count} messages",
sessions: "Sessions",
sessionsHint: "Distinct sessions in the range.",
sessionsInRange: "of {count} in range",
throughput: "Throughput",
throughputHint: "Throughput shows tokens per minute over active time. Higher is better.",
tokensPerMinute: "tok/min",
perMinute: "/ min",
errorRate: "Error Rate",
errorHint: "Error rate = errors / total messages. Lower is better.",
avgSession: "avg session",
cacheHitRate: "Cache Hit Rate",
cacheHint: "Cache hit rate = cache read / (input + cache read). Higher is better.",
cached: "cached",
prompt: "prompt",
calls: "calls",
topModels: "Top Models",
topProviders: "Top Providers",
topTools: "Top Tools",
topAgents: "Top Agents",
topChannels: "Top Channels",
peakErrorDays: "Peak Error Days",
peakErrorHours: "Peak Error Hours",
noModelData: "No model data",
noProviderData: "No provider data",
noToolCalls: "No tool calls",
noAgentData: "No agent data",
noChannelData: "No channel data",
noErrorData: "No error data",
},
sessions: {
title: "Sessions",
shown: "{count} shown",
total: "{count} total",
avg: "avg",
all: "All",
recent: "Recently viewed",
recentShort: "Recent",
sort: "Sort",
ascending: "Ascending",
descending: "Descending",
clearSelection: "Clear Selection",
noRecent: "No recent sessions",
noneInRange: "No sessions in range",
more: "+{count} more",
selected: "Selected ({count})",
copy: "Copy",
copyName: "Copy session name",
limitReached: "Showing first 1,000 sessions. Narrow date range for complete results.",
},
details: {
noUsageData: "No usage data for this session.",
duration: "Duration",
modelMix: "Model Mix",
filtered: "(filtered)",
close: "Close session details",
noTimeline: "No timeline data",
noDataInRange: "No data in range",
usageOverTime: "Usage Over Time",
reset: "Reset",
perTurn: "Per Turn",
cumulative: "Cumulative",
turnRange: "Turns {start}{end} of {total}",
assistantOutputTokens: "Assistant output tokens",
userToolInputTokens: "User + tool input tokens",
tokensWrittenToCache: "Tokens written to cache",
tokensReadFromCache: "Tokens read from cache",
noContextData: "No context data",
systemPromptBreakdown: "System Prompt Breakdown",
collapse: "Collapse",
collapseAll: "Collapse All",
expandAll: "Expand All",
baseContextPerMessage: "Base context per message",
system: "System",
systemShort: "Sys",
skills: "Skills",
tools: "Tools",
files: "Files",
ofInput: "of input",
of: "of",
timelineFiltered: "timeline filtered",
conversation: "Conversation",
noMessages: "No messages",
tool: "Tool",
toolResult: "Tool result",
hasTools: "Has tools",
searchConversation: "Search conversation",
you: "You",
noMessagesMatch: "No messages match the filters.",
},
mosaic: {
title: "Activity by Time",
subtitleEmpty: "Estimates require session timestamps.",
subtitle: "Estimated from session spans (first/last activity). Time zone: {zone}.",
noTimelineData: "No timeline data yet.",
dayOfWeek: "Day of Week",
midnight: "Midnight",
fourAm: "4am",
eightAm: "8am",
noon: "Noon",
fourPm: "4pm",
eightPm: "8pm",
legend: "Low → High token density",
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat",
},
},
login: {
subtitle: "閘道儀表板",
passwordPlaceholder: "可選",
@@ -159,6 +385,7 @@ export const zh_TW: TranslationMap = {
disconnected: "已斷開與網關的連接。",
refreshTitle: "刷新聊天數據",
thinkingToggle: "切換助手思考/工作輸出",
toolCallsToggle: "Toggle tool calls and tool results",
focusToggle: "切換專注模式 (隱藏側邊欄 + 頁面頁眉)",
hideCronSessions: "隱藏定時任務會話",
showCronSessions: "顯示定時任務會話",
@@ -172,5 +399,219 @@ export const zh_TW: TranslationMap = {
ptBR: "Português (巴西葡萄牙語)",
de: "Deutsch (德語)",
es: "Español (西班牙語)",
jaJP: "日本語 (Japanese)",
ko: "한국어 (Korean)",
fr: "Français (French)",
},
cron: {
summary: {
enabled: "Enabled",
yes: "Yes",
no: "No",
jobs: "Jobs",
nextWake: "Next wake",
refreshing: "Refreshing...",
refresh: "Refresh",
},
jobs: {
title: "Jobs",
subtitle: "All scheduled jobs stored in the gateway.",
shownOf: "{shown} shown of {total}",
searchJobs: "Search jobs",
searchPlaceholder: "Name, description, or agent",
enabled: "Enabled",
schedule: "Schedule",
lastRun: "Last run",
all: "All",
sort: "Sort",
nextRun: "Next run",
recentlyUpdated: "Recently updated",
name: "Name",
direction: "Direction",
ascending: "Ascending",
descending: "Descending",
reset: "Reset",
noMatching: "No matching jobs.",
loading: "Loading...",
loadMore: "Load more jobs",
},
runs: {
title: "Run history",
subtitleAll: "Latest runs across all jobs.",
subtitleJob: "Latest runs for {title}.",
scope: "Scope",
allJobs: "All jobs",
selectedJob: "Selected job",
searchRuns: "Search runs",
searchPlaceholder: "Summary, error, or job",
newestFirst: "Newest first",
oldestFirst: "Oldest first",
status: "Status",
delivery: "Delivery",
clear: "Clear",
allStatuses: "All statuses",
allDelivery: "All delivery",
selectJobHint: "Select a job to inspect run history.",
noMatching: "No matching runs.",
loadMore: "Load more runs",
runStatusOk: "OK",
runStatusError: "Error",
runStatusSkipped: "Skipped",
runStatusUnknown: "Unknown",
deliveryDelivered: "Delivered",
deliveryNotDelivered: "Not delivered",
deliveryUnknown: "Unknown",
deliveryNotRequested: "Not requested",
},
form: {
editJob: "Edit Job",
newJob: "New Job",
updateSubtitle: "Update the selected scheduled job.",
createSubtitle: "Create a scheduled wakeup or agent run.",
required: "Required",
requiredSr: "required",
basics: "Basics",
basicsSub: "Name it, choose the assistant, and set enabled state.",
fieldName: "Name",
description: "Description",
agentId: "Agent ID",
namePlaceholder: "Morning brief",
descriptionPlaceholder: "Optional context for this job",
agentPlaceholder: "main or ops",
agentHelp: "Start typing to pick a known agent, or enter a custom one.",
schedule: "Schedule",
scheduleSub: "Control when this job runs.",
every: "Every",
at: "At",
cronOption: "Cron",
runAt: "Run at",
unit: "Unit",
minutes: "Minutes",
hours: "Hours",
days: "Days",
expression: "Expression",
expressionPlaceholder: "0 7 * * *",
everyAmountPlaceholder: "30",
timezoneOptional: "Timezone (optional)",
timezonePlaceholder: "America/Los_Angeles",
timezoneHelp: "Pick a common timezone or enter any valid IANA timezone.",
jitterHelp: "Need jitter? Use Advanced → Stagger window / Stagger unit.",
execution: "Execution",
executionSub: "Choose when to wake, and what this job should do.",
session: "Session",
main: "Main",
isolated: "Isolated",
sessionHelp: "Main posts a system event. Isolated runs a dedicated agent turn.",
wakeMode: "Wake mode",
now: "Now",
nextHeartbeat: "Next heartbeat",
wakeModeHelp: "Now triggers immediately. Next heartbeat waits for the next cycle.",
payloadKind: "What should run?",
systemEvent: "Post message to main timeline",
agentTurn: "Run assistant task (isolated)",
systemEventHelp:
"Sends your text to the gateway main timeline (good for reminders/triggers).",
agentTurnHelp: "Starts an assistant run in its own session using your prompt.",
timeoutSeconds: "Timeout (seconds)",
timeoutPlaceholder: "Optional, e.g. 90",
timeoutHelp:
"Optional. Leave blank to use the gateway default timeout behavior for this run.",
mainTimelineMessage: "Main timeline message",
assistantTaskPrompt: "Assistant task prompt",
deliverySection: "Delivery",
deliverySub: "Choose where run summaries are sent.",
resultDelivery: "Result delivery",
announceDefault: "Announce summary (default)",
webhookPost: "Webhook POST",
noneInternal: "None (internal)",
deliveryHelp: "Announce posts a summary to chat. None keeps execution internal.",
webhookUrl: "Webhook URL",
channel: "Channel",
webhookPlaceholder: "https://example.com/cron",
channelHelp: "Choose which connected channel receives the summary.",
webhookHelp: "Send run summaries to a webhook endpoint.",
to: "To",
toPlaceholder: "+1555... or chat id",
toHelp: "Optional recipient override (chat id, phone, or user id).",
advanced: "Advanced",
advancedHelp:
"Optional overrides for delivery guarantees, schedule jitter, and model controls.",
deleteAfterRun: "Delete after run",
deleteAfterRunHelp: "Best for one-shot reminders that should auto-clean up.",
clearAgentOverride: "Clear agent override",
clearAgentHelp: "Force this job to use the gateway default assistant.",
exactTiming: "Exact timing (no stagger)",
exactTimingHelp: "Run on exact cron boundaries with no spread.",
staggerWindow: "Stagger window",
staggerUnit: "Stagger unit",
staggerPlaceholder: "30",
seconds: "Seconds",
model: "Model",
modelPlaceholder: "openai/gpt-5.2",
modelHelp: "Start typing to pick a known model, or enter a custom one.",
thinking: "Thinking",
thinkingPlaceholder: "low",
thinkingHelp: "Use a suggested level or enter a provider-specific value.",
bestEffortDelivery: "Best effort delivery",
bestEffortHelp: "Do not fail the job if delivery itself fails.",
cantAddYet: "Can't add job yet",
fillRequired: "Fill the required fields below to enable submit.",
fixFields: "Fix {count} field to continue.",
fixFieldsPlural: "Fix {count} fields to continue.",
saving: "Saving...",
saveChanges: "Save changes",
addJob: "Add job",
cancel: "Cancel",
},
jobList: {
allJobs: "all jobs",
selectJob: "(select a job)",
enabled: "enabled",
disabled: "disabled",
edit: "Edit",
clone: "Clone",
disable: "Disable",
enable: "Enable",
run: "Run",
history: "History",
remove: "Remove",
},
jobDetail: {
system: "System",
prompt: "Prompt",
delivery: "Delivery",
agent: "Agent",
},
jobState: {
status: "Status",
next: "Next",
last: "Last",
},
runEntry: {
noSummary: "No summary.",
runAt: "Run at",
openRunChat: "Open run chat",
next: "Next {rel}",
due: "Due {rel}",
},
errors: {
nameRequired: "Name is required.",
scheduleAtInvalid: "Enter a valid date/time.",
everyAmountInvalid: "Interval must be greater than 0.",
cronExprRequired: "Cron expression is required.",
staggerAmountInvalid: "Stagger must be greater than 0.",
systemTextRequired: "System text is required.",
agentMessageRequired: "Agent message is required.",
timeoutInvalid: "If set, timeout must be greater than 0 seconds.",
webhookUrlRequired: "Webhook URL is required.",
webhookUrlInvalid: "Webhook URL must start with http:// or https://.",
invalidRunTime: "Invalid run time.",
invalidIntervalAmount: "Invalid interval amount.",
cronExprRequiredShort: "Cron expression required.",
invalidStaggerAmount: "Invalid stagger amount.",
systemEventTextRequired: "System event text required.",
agentMessageRequiredShort: "Agent message required.",
nameRequiredShort: "Name required.",
},
},
};