feat(studio): Flows + Module sheet + System-AI editor i18n (v0.28.0)
- Localize Flows page: app-bar title and reload tooltip,
hub-unreachable / no-saved-flows empty states, run-flow input
dialog (title with flow name, description, hint, Cancel /
Run), running dialog (title, "Flow running…" status, no-output
message, Close button), flow-card Run button.
- Localize the module-sheet bottom sheet: failed-to-load text,
Capabilities and "Declared permissions" section headers,
no-permissions placeholder copy.
- Localize the System-AI configuration dialog: title, intro
paragraph, provider dropdown label, endpoint label, API-key
env-var label (required vs optional) and disclaimer, privacy
mode header and three options (Off / Redacted / Full) plus
their descriptions, test-result panel ("Connection ok" /
"Connection failed", "Reply: …" prefix), model picker (label,
hint fallback, helper text with Ollama variant, Refresh /
Pull / Pulling… buttons, list errors and empty states),
hardware banner ("Detected: …" + " · curation reviewed …"
suffix), suitability legend (recommended / balanced / small /
large / huge / unknown), cache row with pluralized count and
Clear button, cache cleared / clear-failed toasts, pull-empty
/ pull-failed errors. Suitability label moved off a getter
onto a `labelFor(BuildContext)` method so it can read the
current locale.
Provider preset descriptions and modelHint strings stay in
English in `_ProviderPreset.all` — they're tightly coupled to
the wire-protocol identifiers and would require a runtime
factory rebuild rather than a const list.
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
e2b2639a86
commit
b5a4c74c4b
10 changed files with 1120 additions and 91 deletions
|
|
@ -263,6 +263,25 @@
|
|||
"modulesUninstallFailed": "Deinstallation fehlgeschlagen: {error}",
|
||||
"@modulesUninstallFailed": { "placeholders": { "error": { "type": "String" } } },
|
||||
"modulesUninstalling": "Wird deinstalliert…",
|
||||
"moduleSheetFailedToLoad": "Laden fehlgeschlagen: {error}",
|
||||
"@moduleSheetFailedToLoad": { "placeholders": { "error": { "type": "String" } } },
|
||||
"moduleSheetCapabilities": "Capabilities",
|
||||
"moduleSheetPermissions": "Deklarierte Berechtigungen",
|
||||
"moduleSheetNoPermissions": "(keine — reines Berechnungsmodul)",
|
||||
|
||||
"flowsTitle": "Flows",
|
||||
"flowsReloadTooltip": "Aktualisieren",
|
||||
"flowsNoneTitle": "Keine gespeicherten Flows",
|
||||
"flowsNoneHint": "Flow speichern mit `fai admin flows save <name> <flow.yaml>`, dann taucht er hier auf.",
|
||||
"flowsRunDialogTitle": "{name} ausführen",
|
||||
"@flowsRunDialogTitle": { "placeholders": { "name": { "type": "String" } } },
|
||||
"flowsRunDialogBody": "Eingaben als key=value, eine pro Zeile. Alle Werte werden als Text-Payloads gesendet. Für binäre Eingaben die `fai run` CLI nutzen.",
|
||||
"flowsInputsHint": "name=World\ntarget_language=English\nsummary_style=three bullet points",
|
||||
"flowsRunButton": "Starten",
|
||||
"flowsRunningTitle": "{name} läuft",
|
||||
"@flowsRunningTitle": { "placeholders": { "name": { "type": "String" } } },
|
||||
"flowsRunning": "Flow läuft…",
|
||||
"flowsNoOutputs": "Flow abgeschlossen ohne deklarierte Outputs.",
|
||||
|
||||
"approvalsTitle": "Freigaben",
|
||||
"approvalsTabPending": "Offen",
|
||||
|
|
@ -411,5 +430,65 @@
|
|||
"@searchStoreHintWithTagline": { "placeholders": { "tagline": { "type": "String" } } },
|
||||
"searchStoreHintWithCategory": "Store · {category}",
|
||||
"@searchStoreHintWithCategory": { "placeholders": { "category": { "type": "String" } } },
|
||||
"searchSavedFlowHint": "gespeicherter Flow"
|
||||
"searchSavedFlowHint": "gespeicherter Flow",
|
||||
|
||||
"systemAiTitle": "System-AI",
|
||||
"systemAiIntro": "Die hub-interne LLM, die die Plattform selbst für Fehlererklärungen und Operator-Hilfe nutzt. Standardmäßig aus; hier konfigurieren. Siehe docs/architecture/system-ai.md, was über die Leitung geht.",
|
||||
"systemAiProviderLabel": "Provider",
|
||||
"systemAiEndpointLabel": "Endpunkt-URL (bis /v1)",
|
||||
"systemAiApiKeyRequired": "API-Key-Umgebungsvariable (erforderlich)",
|
||||
"systemAiApiKeyOptional": "API-Key-Umgebungsvariable (optional)",
|
||||
"systemAiApiKeyDisclaimer": "Studio liest oder speichert den Key-Wert nie — nur den Namen der Umgebungsvariable. Der Hub liest `${name}` zur Anfragezeit.",
|
||||
"@systemAiApiKeyDisclaimer": { "placeholders": { "name": { "type": "String" } } },
|
||||
"systemAiTestConnection": "Verbindung testen",
|
||||
"systemAiTesting": "Teste…",
|
||||
"systemAiSave": "Speichern",
|
||||
"systemAiPrivacyHeader": "PRIVACY-MODUS",
|
||||
"systemAiPrivacyOffLabel": "Aus",
|
||||
"systemAiPrivacyOffDesc": "Feature deaktiviert. Keine Anfragen verlassen den Hub.",
|
||||
"systemAiPrivacyRedactedLabel": "Redigiert",
|
||||
"systemAiPrivacyRedactedDesc": "Nur event_type / error / Modul-Namen. KRITIS-freundlicher Standard.",
|
||||
"systemAiPrivacyFullLabel": "Voll",
|
||||
"systemAiPrivacyFullDesc": "Enthält das Audit-Detail-JSON (nur Hash — keine Roh-Payloads).",
|
||||
"systemAiConnectionOk": "Verbindung ok",
|
||||
"systemAiConnectionFailed": "Verbindung fehlgeschlagen",
|
||||
"systemAiReplyPrefix": "Antwort: {text}",
|
||||
"@systemAiReplyPrefix": { "placeholders": { "text": { "type": "String" } } },
|
||||
"systemAiModelLabel": "Modell (erforderlich)",
|
||||
"systemAiModelHintFallback": "Modell-Identifier, den der Provider erwartet",
|
||||
"systemAiModelHelperBase": "Erforderlich: aus der Liste auswählen (Aktualisieren) oder eintippen.",
|
||||
"systemAiModelHelperOllama": "Erforderlich: aus der Liste auswählen (Aktualisieren) oder eintippen. Mit Pull von Ollama herunterladen.",
|
||||
"systemAiRefresh": "Aktualisieren",
|
||||
"systemAiPull": "Pull",
|
||||
"systemAiPulling": "Lade…",
|
||||
"systemAiCouldNotListModels": "Modelle konnten nicht aufgelistet werden: {error}",
|
||||
"@systemAiCouldNotListModels": { "placeholders": { "error": { "type": "String" } } },
|
||||
"systemAiNoModelsOllama": "Noch keine Modelle auf dem Ollama-Server. Oben eintippen und Pull klicken.",
|
||||
"systemAiNoModelsGeneric": "Provider lieferte keine Modelle.",
|
||||
"systemAiSuitabilityRecommended": "empfohlen",
|
||||
"systemAiSuitabilityBalanced": "ausgewogen",
|
||||
"systemAiSuitabilitySmall": "klein — Qualität evtl. eingeschränkt",
|
||||
"systemAiSuitabilityLarge": "groß — langsamer",
|
||||
"systemAiSuitabilityHuge": "sehr groß — auf einem Laptop wahrscheinlich zu langsam",
|
||||
"systemAiSuitabilityUnknown": "Größe unbekannt",
|
||||
"systemAiHwDetected": "Erkannt: {summary}",
|
||||
"@systemAiHwDetected": { "placeholders": { "summary": { "type": "String" } } },
|
||||
"systemAiHwReviewed": " · Kuratierung geprüft {date}",
|
||||
"@systemAiHwReviewed": { "placeholders": { "date": { "type": "String" } } },
|
||||
"systemAiLegendRecommended": "empfohlen für diese Hardware{tier}",
|
||||
"@systemAiLegendRecommended": { "placeholders": { "tier": { "type": "String" } } },
|
||||
"systemAiLegendBalanced": "ausgewogen (4-8B)",
|
||||
"systemAiLegendSmallLarge": "klein <3B / groß 9-15B / über Hardware",
|
||||
"systemAiLegendHuge": "sehr groß >15B",
|
||||
"systemAiLegendUnknown": "Größe unbekannt",
|
||||
"systemAiCacheRow": "Cache: {n} {n, plural, =1{gespeicherte Erklärung} other{gespeicherte Erklärungen}}. Identische Prompts treffen den Cache; Modell- oder Privacy-Modus-Wechsel leeren ihn automatisch.",
|
||||
"@systemAiCacheRow": { "placeholders": { "n": { "type": "int" } } },
|
||||
"systemAiCacheClear": "Leeren",
|
||||
"systemAiCacheClearedToast": "{n} gespeicherte System-AI-Erklärungen gelöscht.",
|
||||
"@systemAiCacheClearedToast": { "placeholders": { "n": { "type": "int" } } },
|
||||
"systemAiCacheClearFailed": "Cache-Löschen fehlgeschlagen: {error}",
|
||||
"@systemAiCacheClearFailed": { "placeholders": { "error": { "type": "String" } } },
|
||||
"systemAiPullEmptyError": "Erst eine Modell-ID eintippen (z.B. gemma3:4b).",
|
||||
"systemAiPullFailedError": "Pull fehlgeschlagen: {error}",
|
||||
"@systemAiPullFailedError": { "placeholders": { "error": { "type": "String" } } }
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue