chore(i18n): replace hardcoded UI text with t() calls across dashboard (round 4)

Round-4 subagent + manual key-resolution refactored remaining strings in
3 high-traffic settings/API tabs, plus extracted English values for
keys that were already added as t() calls but lost during the previous
en.json race-condition resets.

Pages affected:
- api-manager/ApiManagerPageClient (7 → 0 missing key)
- settings/CompressionSettingsTab (8 → 0 missing key)
- settings/MemorySkillsTab (8 → 0 missing key)
- settings/ResilienceTab (4 more keys recovered)

Hardcoded total: 164 → 140. Real missing keys: 0 (6 remaining are the
exampleTemplates.tsx false positives — t passed as parameter).
This commit is contained in:
diegosouzapw
2026-05-19 22:45:17 -03:00
parent 16277bd6df
commit 42e1466cf4
4 changed files with 40 additions and 14 deletions

View File

@@ -1468,7 +1468,7 @@ const PermissionsModal = memo(function PermissionsModal({
{/* Privacy Toggle */}
<div className="flex items-start justify-between gap-3 p-3 rounded-lg border border-border bg-surface/40">
<div className="flex flex-col gap-1">
<p className="text-sm font-medium text-text-main">No-Log Payload Privacy</p>
<p className="text-sm font-medium text-text-main">{t("noLogPayloadPrivacy")}</p>
<p className="text-xs text-text-muted">
Disable request/response payload persistence for this API key.
</p>
@@ -1518,7 +1518,7 @@ const PermissionsModal = memo(function PermissionsModal({
{/* Ban Toggle (SECURITY) */}
<div className="flex items-start justify-between gap-3 p-3 rounded-lg border border-red-500/20 bg-red-500/5">
<div className="flex flex-col gap-1">
<p className="text-sm font-bold text-red-700 dark:text-red-400">Banned Status</p>
<p className="text-sm font-bold text-red-700 dark:text-red-400">{t("bannedStatus")}</p>
<p className="text-xs text-red-600 dark:text-red-300">
Immediately revoke all access. Used for suspected abuse or compromised keys.
</p>
@@ -1542,7 +1542,7 @@ const PermissionsModal = memo(function PermissionsModal({
{/* Management API Access Toggle */}
<div className="flex items-start justify-between gap-3 p-3 rounded-lg border border-border bg-surface/40">
<div className="flex flex-col gap-1">
<p className="text-sm font-medium text-text-main">Management API Access</p>
<p className="text-sm font-medium text-text-main">{t("managementApiAccess")}</p>
<p className="text-xs text-text-muted">
Allow this key to call management routes (providers, combos, settings) via{" "}
<code className="font-mono">Authorization: Bearer</code>. Use for LLM agents only.
@@ -1567,7 +1567,7 @@ const PermissionsModal = memo(function PermissionsModal({
{/* Expiration Date */}
<div className="flex flex-col gap-2 p-3 rounded-lg border border-border bg-surface/40">
<div className="flex flex-col gap-1">
<p className="text-sm font-medium text-text-main">Expiration Date</p>
<p className="text-sm font-medium text-text-main">{t("expirationDate")}</p>
<p className="text-xs text-text-muted">
Key will automatically stop working after this date.
</p>
@@ -1585,7 +1585,7 @@ const PermissionsModal = memo(function PermissionsModal({
{/* Management Access */}
<div className="flex flex-col gap-2 p-3 rounded-lg border border-border bg-surface/40">
<div className="flex flex-col gap-1">
<p className="text-sm font-medium text-text-main">Management Access</p>
<p className="text-sm font-medium text-text-main">{t("managementAccess")}</p>
<p className="text-xs text-text-muted">
Allow this API key to manage OmniRoute configuration.
</p>
@@ -1774,7 +1774,7 @@ const PermissionsModal = memo(function PermissionsModal({
{allConnections.length > 0 && (
<div className="flex flex-col gap-2 p-3 rounded-lg border border-border bg-surface/40">
<div className="flex items-center justify-between">
<p className="text-sm font-medium text-text-main">Allowed Connections</p>
<p className="text-sm font-medium text-text-main">{t("allowedConnections")}</p>
<div className="flex gap-1 p-0.5 bg-surface rounded-md">
<button
onClick={() => {

View File

@@ -613,7 +613,9 @@ export default function CompressionSettingsTab() {
</label>
<label className="flex items-center justify-between">
<span className="text-sm text-text-muted">Auto clarity bypass</span>
<span className="text-sm text-text-muted">
{t("compressionSettingsAutoClarityBypass")}
</span>
<button
onClick={() =>
save({

View File

@@ -757,7 +757,7 @@ export default function MemorySkillsTab() {
</span>
</div>
<div>
<h3 className="text-lg font-semibold">SkillsMP Marketplace</h3>
<h3 className="text-lg font-semibold">{t("memorySkillsSkillsmpMarketplace")}</h3>
<p className="text-sm text-text-muted">
Connect to SkillsMP to discover and install skills from the marketplace.
</p>
@@ -769,12 +769,14 @@ export default function MemorySkillsTab() {
</span>
)}
{skillsmpStatus === "error" && (
<span className="ml-auto text-xs font-medium text-red-500">Failed to save</span>
<span className="ml-auto text-xs font-medium text-red-500">
{t("memorySkillsFailedToSave")}
</span>
)}
</div>
<div className="p-4 rounded-lg bg-surface/30 border border-border/30">
<label className="text-sm font-medium block mb-2">API Key</label>
<label className="text-sm font-medium block mb-2">{t("memorySkillsApiKey")}</label>
<div className="flex gap-2">
<input
type="password"
@@ -807,7 +809,7 @@ export default function MemorySkillsTab() {
</span>
</div>
<div>
<h3 className="text-lg font-semibold">Active Skills Provider</h3>
<h3 className="text-lg font-semibold">{t("memorySkillsActiveSkillsProvider")}</h3>
<p className="text-sm text-text-muted">
Choose which provider the Skills page uses for search and install.
</p>
@@ -819,7 +821,9 @@ export default function MemorySkillsTab() {
</span>
)}
{skillsProviderStatus === "error" && (
<span className="ml-auto text-xs font-medium text-red-500">Failed to save</span>
<span className="ml-auto text-xs font-medium text-red-500">
{t("memorySkillsFailedToSave")}
</span>
)}
</div>

View File

@@ -1296,7 +1296,13 @@
"apiManagerRateLimitReqPer": "req /",
"apiManagerRateLimitSecondsPlaceholder": "Seconds",
"apiManagerRemoveLimitTitle": "Remove limit",
"apiManagerTimezonePlaceholder": "America/Sao_Paulo"
"apiManagerTimezonePlaceholder": "America/Sao_Paulo",
"noLogPayloadPrivacy": "No-Log Payload Privacy",
"bannedStatus": "Banned Status",
"managementApiAccess": "Management API Access",
"expirationDate": "Expiration Date",
"managementAccess": "Management Access",
"allowedConnections": "Allowed Connections"
},
"auditLog": {
"title": "Audit Log",
@@ -4421,7 +4427,21 @@
"storageIntegrityCheck": "Integrity Check",
"storageIntegrityOk": "✓ OK",
"storageIntegrityError": "✗ Error",
"storageUsageTokenBuffer": "Usage Token Buffer"
"storageUsageTokenBuffer": "Usage Token Buffer",
"compressionSettingsAutoTriggerMode": "Auto trigger mode",
"compressionSettingsMcpDescriptionCompression": "MCP description compression",
"compressionSettingsCavemanIntensity": "Caveman intensity",
"compressionSettingsCavemanOutputMode": "Caveman output mode",
"compressionSettingsOutputIntensity": "Output intensity",
"compressionSettingsAutoClarityBypass": "Auto clarity bypass",
"resilienceWaitForCooldown": "Wait for Cooldown",
"resilienceEnableServerSideWait": "Enable server-side wait",
"resilienceMaximumRetries": "Maximum retries",
"resilienceMaximumWaitPerRetry": "Maximum wait per retry",
"memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace",
"memorySkillsFailedToSave": "Failed to save",
"memorySkillsApiKey": "API Key",
"memorySkillsActiveSkillsProvider": "Active Skills Provider"
},
"contextRtk": {
"title": "RTK Engine",