feat(studio): Store + Cmd+K palette i18n (v0.27.0)
- Localize Store page: search hint, category and status filter
chips (All / Published / Alpha / Planned / Installed),
pluralized result count, hub-unreachable / no-matches empty
states, featured strip header, store-card pills (installed /
update / version), Install / Update / Details / Read docs /
Uninstall / Not installable buttons, install-progress dialog,
uninstall confirm dialog, install / uninstall toasts,
open-browser failure toast.
- Localize detail-sheet sections: Tags, Required capabilities,
Required host services, Screenshots, Documentation, Source.
- Localize docs panel: Load documentation button, fetching
spinner copy, Open repository in browser button, friendly
error mapping (not_found / no_docs / auth / network / parse).
- Localize Cmd+K palette: search hint, group labels (Pages /
Modules / Store / Flows), keyboard hint footer, indexing /
no-matches states, dynamic-hit copy ("installed module ·
v{version}", "saved flow", "uncategorized"). Static page
hits now flow through the localized "Pages" group; Settings
entry uses the localized label and hint.
Status pill values ("published", "alpha", "planned") stay as
data-derived English strings since they map directly to the
store-index `status:` enum.
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
d25b4c87ae
commit
e2b2639a86
9 changed files with 990 additions and 109 deletions
|
|
@ -117,6 +117,66 @@
|
|||
"@storeNResults": {
|
||||
"placeholders": { "n": { "type": "int" } }
|
||||
},
|
||||
"storeReloadTooltip": "Aktualisieren",
|
||||
"storePillInstalled": "installiert",
|
||||
"storePillUpdate": "Update",
|
||||
"storeUpdateButton": "Update auf {version}",
|
||||
"@storeUpdateButton": { "placeholders": { "version": { "type": "String" } } },
|
||||
"storeUpdateTooltip": "Installiert {installed} — Store bietet v{best}",
|
||||
"@storeUpdateTooltip": {
|
||||
"placeholders": {
|
||||
"installed": { "type": "String" },
|
||||
"best": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"storeNoTagline": "(keine Beschreibung)",
|
||||
"storeUninstallTitle": "Modul deinstallieren?",
|
||||
"storeUninstallBody": "Entfernt {name} aus diesem Hub. Flows, die es verwenden, schlagen beim nächsten Lauf fehl.",
|
||||
"@storeUninstallBody": { "placeholders": { "name": { "type": "String" } } },
|
||||
"storeInstalledToast": "{name} v{version} installiert.",
|
||||
"@storeInstalledToast": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" },
|
||||
"version": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"storeInstallFailedToast": "Installation fehlgeschlagen: {error}",
|
||||
"@storeInstallFailedToast": { "placeholders": { "error": { "type": "String" } } },
|
||||
"storeUninstalledToast": "{name} v{version} deinstalliert.",
|
||||
"@storeUninstalledToast": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" },
|
||||
"version": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"storeUninstallFailedToast": "Deinstallation fehlgeschlagen: {error}",
|
||||
"@storeUninstallFailedToast": { "placeholders": { "error": { "type": "String" } } },
|
||||
"storeOpenBrowserFailed": "Browser konnte nicht geöffnet werden: {error}",
|
||||
"@storeOpenBrowserFailed": { "placeholders": { "error": { "type": "String" } } },
|
||||
"storeSectionTags": "Tags",
|
||||
"storeSectionRequiredCapabilities": "Erforderliche Capabilities",
|
||||
"storeSectionRequiredHostServices": "Erforderliche Host-Dienste",
|
||||
"storeSectionScreenshots": "Screenshots",
|
||||
"storeSectionDocumentation": "Dokumentation",
|
||||
"storeSectionSource": "Quelle",
|
||||
"storeInstallingButton": "Installiere…",
|
||||
"storeNotInstallable": "Nicht installierbar",
|
||||
"storeNotInstallableTooltip": "Status „{status}\" — Installations-Pfad noch nicht verdrahtet.",
|
||||
"@storeNotInstallableTooltip": { "placeholders": { "status": { "type": "String" } } },
|
||||
"storeInstallProgressTitle": "Installation von {name}",
|
||||
"@storeInstallProgressTitle": { "placeholders": { "name": { "type": "String" } } },
|
||||
"storeInstallProgressBody": "Holen, verifizieren, entpacken…",
|
||||
"storeLoadDocs": "Dokumentation laden",
|
||||
"storeDocsHint": "README inline gerendert; nutzt das Registry-Token des Hubs, falls nötig.",
|
||||
"storeDocsFetching": "README wird geladen…",
|
||||
"storeOpenRepoButton": "Repository im Browser öffnen",
|
||||
"storeDocsErrorNotFound": "Dieses Modul ist nicht im Store-Index des Hubs enthalten.",
|
||||
"storeDocsErrorNoDocs": "Für dieses Modul ist keine Repository-URL hinterlegt.",
|
||||
"storeDocsErrorAuth": "Die Registry erfordert Authentifizierung, um dieses README zu laden. Setze FAI_REGISTRY_TOKEN in der Umgebung des Daemons und starte den Hub neu.",
|
||||
"storeDocsErrorNetwork": "Netzwerkfehler beim Laden des README. {detail}",
|
||||
"@storeDocsErrorNetwork": { "placeholders": { "detail": { "type": "String" } } },
|
||||
"storeDocsErrorParse": "README ist kein gültiges UTF-8.",
|
||||
"storeDocsErrorGeneric": "README konnte nicht geladen werden.",
|
||||
"storeFederationNudgeTitle": "Mehr Capabilities?",
|
||||
"storeFederationNudgeBody": "MCP-Server oder n8n-Endpunkt unter Einstellungen → MCP-Clients / N8N-Endpunkte konfigurieren. Entdeckte Tools und Workflows tauchen hier als `mcp.<server>.<tool>`- und `n8n.<endpoint>.<workflow>`-Capabilities auf — jeder Anthropic-/Community-MCP-Server bringt mehrere auf einmal.",
|
||||
"storeFederationNudgeButton": "Einstellungen öffnen",
|
||||
|
|
@ -328,5 +388,28 @@
|
|||
"hubUnreachableHint": "Hub starten mit `fai serve`.",
|
||||
|
||||
"languageEnglish": "English",
|
||||
"languageGerman": "Deutsch"
|
||||
"languageGerman": "Deutsch",
|
||||
|
||||
"searchHint": "Springe überall hin — Module, Store, Flows, Seiten…",
|
||||
"searchIndexing": "Indiziere…",
|
||||
"searchNoMatches": "Keine Treffer.",
|
||||
"searchHintNavigate": "↑↓ navigieren",
|
||||
"searchHintOpen": "Enter öffnen",
|
||||
"searchHintClose": "Esc schließen",
|
||||
"searchGroupPages": "Seiten",
|
||||
"searchGroupModules": "Module",
|
||||
"searchGroupStore": "Store",
|
||||
"searchGroupFlows": "Flows",
|
||||
"searchSettingsLabel": "Einstellungen",
|
||||
"searchPageHint": "Seite · ⌘{n}",
|
||||
"@searchPageHint": { "placeholders": { "n": { "type": "int" } } },
|
||||
"searchSettingsHint": "Hub-Endpunkt, Kanäle, System-AI · ⌘;",
|
||||
"searchInstalledModuleHint": "installiertes Modul · v{version}",
|
||||
"@searchInstalledModuleHint": { "placeholders": { "version": { "type": "String" } } },
|
||||
"searchStoreUncategorized": "ohne Kategorie",
|
||||
"searchStoreHintWithTagline": "Store · {tagline}",
|
||||
"@searchStoreHintWithTagline": { "placeholders": { "tagline": { "type": "String" } } },
|
||||
"searchStoreHintWithCategory": "Store · {category}",
|
||||
"@searchStoreHintWithCategory": { "placeholders": { "category": { "type": "String" } } },
|
||||
"searchSavedFlowHint": "gespeicherter Flow"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -118,6 +118,66 @@
|
|||
"@storeNResults": {
|
||||
"placeholders": { "n": { "type": "int" } }
|
||||
},
|
||||
"storeReloadTooltip": "Reload",
|
||||
"storePillInstalled": "installed",
|
||||
"storePillUpdate": "update",
|
||||
"storeUpdateButton": "Update to {version}",
|
||||
"@storeUpdateButton": { "placeholders": { "version": { "type": "String" } } },
|
||||
"storeUpdateTooltip": "Installed {installed} — store has v{best}",
|
||||
"@storeUpdateTooltip": {
|
||||
"placeholders": {
|
||||
"installed": { "type": "String" },
|
||||
"best": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"storeNoTagline": "(no tagline)",
|
||||
"storeUninstallTitle": "Uninstall module?",
|
||||
"storeUninstallBody": "Removes {name} from this hub. Flows that reference it will fail at the next run.",
|
||||
"@storeUninstallBody": { "placeholders": { "name": { "type": "String" } } },
|
||||
"storeInstalledToast": "{name} v{version} installed.",
|
||||
"@storeInstalledToast": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" },
|
||||
"version": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"storeInstallFailedToast": "Install failed: {error}",
|
||||
"@storeInstallFailedToast": { "placeholders": { "error": { "type": "String" } } },
|
||||
"storeUninstalledToast": "{name} v{version} uninstalled.",
|
||||
"@storeUninstalledToast": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" },
|
||||
"version": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"storeUninstallFailedToast": "Uninstall failed: {error}",
|
||||
"@storeUninstallFailedToast": { "placeholders": { "error": { "type": "String" } } },
|
||||
"storeOpenBrowserFailed": "Could not open browser: {error}",
|
||||
"@storeOpenBrowserFailed": { "placeholders": { "error": { "type": "String" } } },
|
||||
"storeSectionTags": "Tags",
|
||||
"storeSectionRequiredCapabilities": "Required capabilities",
|
||||
"storeSectionRequiredHostServices": "Required host services",
|
||||
"storeSectionScreenshots": "Screenshots",
|
||||
"storeSectionDocumentation": "Documentation",
|
||||
"storeSectionSource": "Source",
|
||||
"storeInstallingButton": "Installing…",
|
||||
"storeNotInstallable": "Not installable",
|
||||
"storeNotInstallableTooltip": "Status \"{status}\" — install path not yet wired.",
|
||||
"@storeNotInstallableTooltip": { "placeholders": { "status": { "type": "String" } } },
|
||||
"storeInstallProgressTitle": "Installing {name}",
|
||||
"@storeInstallProgressTitle": { "placeholders": { "name": { "type": "String" } } },
|
||||
"storeInstallProgressBody": "Fetching, verifying, unpacking…",
|
||||
"storeLoadDocs": "Load documentation",
|
||||
"storeDocsHint": "README rendered inline; uses the hub's registry token when needed.",
|
||||
"storeDocsFetching": "Fetching README…",
|
||||
"storeOpenRepoButton": "Open repository in browser",
|
||||
"storeDocsErrorNotFound": "This module is not in the hub's store index.",
|
||||
"storeDocsErrorNoDocs": "No repository URL is recorded for this module.",
|
||||
"storeDocsErrorAuth": "The registry requires authentication to fetch this README. Set FAI_REGISTRY_TOKEN in the daemon's environment and restart the hub.",
|
||||
"storeDocsErrorNetwork": "Network error while fetching the README. {detail}",
|
||||
"@storeDocsErrorNetwork": { "placeholders": { "detail": { "type": "String" } } },
|
||||
"storeDocsErrorParse": "README is not valid UTF-8.",
|
||||
"storeDocsErrorGeneric": "Could not load README.",
|
||||
"storeFederationNudgeTitle": "Want more capabilities?",
|
||||
"storeFederationNudgeBody": "Configure an MCP server or n8n endpoint in Settings → MCP Clients / N8N Endpoints. Discovered tools and workflows surface here as `mcp.<server>.<tool>` and `n8n.<endpoint>.<workflow>` capabilities — every Anthropic / community MCP server adds a handful at once.",
|
||||
"storeFederationNudgeButton": "Open Settings",
|
||||
|
|
@ -329,5 +389,28 @@
|
|||
"hubUnreachableHint": "Start the hub with `fai serve`.",
|
||||
|
||||
"languageEnglish": "English",
|
||||
"languageGerman": "Deutsch"
|
||||
"languageGerman": "Deutsch",
|
||||
|
||||
"searchHint": "Jump anywhere — modules, store, flows, pages…",
|
||||
"searchIndexing": "Indexing…",
|
||||
"searchNoMatches": "No matches.",
|
||||
"searchHintNavigate": "↑↓ navigate",
|
||||
"searchHintOpen": "enter open",
|
||||
"searchHintClose": "esc close",
|
||||
"searchGroupPages": "Pages",
|
||||
"searchGroupModules": "Modules",
|
||||
"searchGroupStore": "Store",
|
||||
"searchGroupFlows": "Flows",
|
||||
"searchSettingsLabel": "Settings",
|
||||
"searchPageHint": "page · ⌘{n}",
|
||||
"@searchPageHint": { "placeholders": { "n": { "type": "int" } } },
|
||||
"searchSettingsHint": "hub endpoint, channels, system AI · ⌘;",
|
||||
"searchInstalledModuleHint": "installed module · v{version}",
|
||||
"@searchInstalledModuleHint": { "placeholders": { "version": { "type": "String" } } },
|
||||
"searchStoreUncategorized": "uncategorized",
|
||||
"searchStoreHintWithTagline": "store · {tagline}",
|
||||
"@searchStoreHintWithTagline": { "placeholders": { "tagline": { "type": "String" } } },
|
||||
"searchStoreHintWithCategory": "store · {category}",
|
||||
"@searchStoreHintWithCategory": { "placeholders": { "category": { "type": "String" } } },
|
||||
"searchSavedFlowHint": "saved flow"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -686,6 +686,210 @@ abstract class AppLocalizations {
|
|||
/// **'{n} result{n, plural, =1{} other{s}}'**
|
||||
String storeNResults(int n);
|
||||
|
||||
/// No description provided for @storeReloadTooltip.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reload'**
|
||||
String get storeReloadTooltip;
|
||||
|
||||
/// No description provided for @storePillInstalled.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'installed'**
|
||||
String get storePillInstalled;
|
||||
|
||||
/// No description provided for @storePillUpdate.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'update'**
|
||||
String get storePillUpdate;
|
||||
|
||||
/// No description provided for @storeUpdateButton.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Update to {version}'**
|
||||
String storeUpdateButton(String version);
|
||||
|
||||
/// No description provided for @storeUpdateTooltip.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Installed {installed} — store has v{best}'**
|
||||
String storeUpdateTooltip(String installed, String best);
|
||||
|
||||
/// No description provided for @storeNoTagline.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'(no tagline)'**
|
||||
String get storeNoTagline;
|
||||
|
||||
/// No description provided for @storeUninstallTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Uninstall module?'**
|
||||
String get storeUninstallTitle;
|
||||
|
||||
/// No description provided for @storeUninstallBody.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Removes {name} from this hub. Flows that reference it will fail at the next run.'**
|
||||
String storeUninstallBody(String name);
|
||||
|
||||
/// No description provided for @storeInstalledToast.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{name} v{version} installed.'**
|
||||
String storeInstalledToast(String name, String version);
|
||||
|
||||
/// No description provided for @storeInstallFailedToast.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Install failed: {error}'**
|
||||
String storeInstallFailedToast(String error);
|
||||
|
||||
/// No description provided for @storeUninstalledToast.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{name} v{version} uninstalled.'**
|
||||
String storeUninstalledToast(String name, String version);
|
||||
|
||||
/// No description provided for @storeUninstallFailedToast.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Uninstall failed: {error}'**
|
||||
String storeUninstallFailedToast(String error);
|
||||
|
||||
/// No description provided for @storeOpenBrowserFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Could not open browser: {error}'**
|
||||
String storeOpenBrowserFailed(String error);
|
||||
|
||||
/// No description provided for @storeSectionTags.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Tags'**
|
||||
String get storeSectionTags;
|
||||
|
||||
/// No description provided for @storeSectionRequiredCapabilities.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Required capabilities'**
|
||||
String get storeSectionRequiredCapabilities;
|
||||
|
||||
/// No description provided for @storeSectionRequiredHostServices.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Required host services'**
|
||||
String get storeSectionRequiredHostServices;
|
||||
|
||||
/// No description provided for @storeSectionScreenshots.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Screenshots'**
|
||||
String get storeSectionScreenshots;
|
||||
|
||||
/// No description provided for @storeSectionDocumentation.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Documentation'**
|
||||
String get storeSectionDocumentation;
|
||||
|
||||
/// No description provided for @storeSectionSource.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Source'**
|
||||
String get storeSectionSource;
|
||||
|
||||
/// No description provided for @storeInstallingButton.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Installing…'**
|
||||
String get storeInstallingButton;
|
||||
|
||||
/// No description provided for @storeNotInstallable.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Not installable'**
|
||||
String get storeNotInstallable;
|
||||
|
||||
/// No description provided for @storeNotInstallableTooltip.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Status \"{status}\" — install path not yet wired.'**
|
||||
String storeNotInstallableTooltip(String status);
|
||||
|
||||
/// No description provided for @storeInstallProgressTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Installing {name}'**
|
||||
String storeInstallProgressTitle(String name);
|
||||
|
||||
/// No description provided for @storeInstallProgressBody.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Fetching, verifying, unpacking…'**
|
||||
String get storeInstallProgressBody;
|
||||
|
||||
/// No description provided for @storeLoadDocs.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Load documentation'**
|
||||
String get storeLoadDocs;
|
||||
|
||||
/// No description provided for @storeDocsHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'README rendered inline; uses the hub\'s registry token when needed.'**
|
||||
String get storeDocsHint;
|
||||
|
||||
/// No description provided for @storeDocsFetching.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Fetching README…'**
|
||||
String get storeDocsFetching;
|
||||
|
||||
/// No description provided for @storeOpenRepoButton.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Open repository in browser'**
|
||||
String get storeOpenRepoButton;
|
||||
|
||||
/// No description provided for @storeDocsErrorNotFound.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This module is not in the hub\'s store index.'**
|
||||
String get storeDocsErrorNotFound;
|
||||
|
||||
/// No description provided for @storeDocsErrorNoDocs.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No repository URL is recorded for this module.'**
|
||||
String get storeDocsErrorNoDocs;
|
||||
|
||||
/// No description provided for @storeDocsErrorAuth.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The registry requires authentication to fetch this README. Set FAI_REGISTRY_TOKEN in the daemon\'s environment and restart the hub.'**
|
||||
String get storeDocsErrorAuth;
|
||||
|
||||
/// No description provided for @storeDocsErrorNetwork.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Network error while fetching the README. {detail}'**
|
||||
String storeDocsErrorNetwork(String detail);
|
||||
|
||||
/// No description provided for @storeDocsErrorParse.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'README is not valid UTF-8.'**
|
||||
String get storeDocsErrorParse;
|
||||
|
||||
/// No description provided for @storeDocsErrorGeneric.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Could not load README.'**
|
||||
String get storeDocsErrorGeneric;
|
||||
|
||||
/// No description provided for @storeFederationNudgeTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
@ -1471,6 +1675,114 @@ abstract class AppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'Deutsch'**
|
||||
String get languageGerman;
|
||||
|
||||
/// No description provided for @searchHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Jump anywhere — modules, store, flows, pages…'**
|
||||
String get searchHint;
|
||||
|
||||
/// No description provided for @searchIndexing.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Indexing…'**
|
||||
String get searchIndexing;
|
||||
|
||||
/// No description provided for @searchNoMatches.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No matches.'**
|
||||
String get searchNoMatches;
|
||||
|
||||
/// No description provided for @searchHintNavigate.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'↑↓ navigate'**
|
||||
String get searchHintNavigate;
|
||||
|
||||
/// No description provided for @searchHintOpen.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'enter open'**
|
||||
String get searchHintOpen;
|
||||
|
||||
/// No description provided for @searchHintClose.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'esc close'**
|
||||
String get searchHintClose;
|
||||
|
||||
/// No description provided for @searchGroupPages.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Pages'**
|
||||
String get searchGroupPages;
|
||||
|
||||
/// No description provided for @searchGroupModules.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Modules'**
|
||||
String get searchGroupModules;
|
||||
|
||||
/// No description provided for @searchGroupStore.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Store'**
|
||||
String get searchGroupStore;
|
||||
|
||||
/// No description provided for @searchGroupFlows.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Flows'**
|
||||
String get searchGroupFlows;
|
||||
|
||||
/// No description provided for @searchSettingsLabel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Settings'**
|
||||
String get searchSettingsLabel;
|
||||
|
||||
/// No description provided for @searchPageHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'page · ⌘{n}'**
|
||||
String searchPageHint(int n);
|
||||
|
||||
/// No description provided for @searchSettingsHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'hub endpoint, channels, system AI · ⌘;'**
|
||||
String get searchSettingsHint;
|
||||
|
||||
/// No description provided for @searchInstalledModuleHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'installed module · v{version}'**
|
||||
String searchInstalledModuleHint(String version);
|
||||
|
||||
/// No description provided for @searchStoreUncategorized.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'uncategorized'**
|
||||
String get searchStoreUncategorized;
|
||||
|
||||
/// No description provided for @searchStoreHintWithTagline.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'store · {tagline}'**
|
||||
String searchStoreHintWithTagline(String tagline);
|
||||
|
||||
/// No description provided for @searchStoreHintWithCategory.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'store · {category}'**
|
||||
String searchStoreHintWithCategory(String category);
|
||||
|
||||
/// No description provided for @searchSavedFlowHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'saved flow'**
|
||||
String get searchSavedFlowHint;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
|
|
|||
|
|
@ -342,6 +342,134 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
return '$n Treffer';
|
||||
}
|
||||
|
||||
@override
|
||||
String get storeReloadTooltip => 'Aktualisieren';
|
||||
|
||||
@override
|
||||
String get storePillInstalled => 'installiert';
|
||||
|
||||
@override
|
||||
String get storePillUpdate => 'Update';
|
||||
|
||||
@override
|
||||
String storeUpdateButton(String version) {
|
||||
return 'Update auf $version';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeUpdateTooltip(String installed, String best) {
|
||||
return 'Installiert $installed — Store bietet v$best';
|
||||
}
|
||||
|
||||
@override
|
||||
String get storeNoTagline => '(keine Beschreibung)';
|
||||
|
||||
@override
|
||||
String get storeUninstallTitle => 'Modul deinstallieren?';
|
||||
|
||||
@override
|
||||
String storeUninstallBody(String name) {
|
||||
return 'Entfernt $name aus diesem Hub. Flows, die es verwenden, schlagen beim nächsten Lauf fehl.';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeInstalledToast(String name, String version) {
|
||||
return '$name v$version installiert.';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeInstallFailedToast(String error) {
|
||||
return 'Installation fehlgeschlagen: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeUninstalledToast(String name, String version) {
|
||||
return '$name v$version deinstalliert.';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeUninstallFailedToast(String error) {
|
||||
return 'Deinstallation fehlgeschlagen: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeOpenBrowserFailed(String error) {
|
||||
return 'Browser konnte nicht geöffnet werden: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get storeSectionTags => 'Tags';
|
||||
|
||||
@override
|
||||
String get storeSectionRequiredCapabilities => 'Erforderliche Capabilities';
|
||||
|
||||
@override
|
||||
String get storeSectionRequiredHostServices => 'Erforderliche Host-Dienste';
|
||||
|
||||
@override
|
||||
String get storeSectionScreenshots => 'Screenshots';
|
||||
|
||||
@override
|
||||
String get storeSectionDocumentation => 'Dokumentation';
|
||||
|
||||
@override
|
||||
String get storeSectionSource => 'Quelle';
|
||||
|
||||
@override
|
||||
String get storeInstallingButton => 'Installiere…';
|
||||
|
||||
@override
|
||||
String get storeNotInstallable => 'Nicht installierbar';
|
||||
|
||||
@override
|
||||
String storeNotInstallableTooltip(String status) {
|
||||
return 'Status „$status\" — Installations-Pfad noch nicht verdrahtet.';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeInstallProgressTitle(String name) {
|
||||
return 'Installation von $name';
|
||||
}
|
||||
|
||||
@override
|
||||
String get storeInstallProgressBody => 'Holen, verifizieren, entpacken…';
|
||||
|
||||
@override
|
||||
String get storeLoadDocs => 'Dokumentation laden';
|
||||
|
||||
@override
|
||||
String get storeDocsHint =>
|
||||
'README inline gerendert; nutzt das Registry-Token des Hubs, falls nötig.';
|
||||
|
||||
@override
|
||||
String get storeDocsFetching => 'README wird geladen…';
|
||||
|
||||
@override
|
||||
String get storeOpenRepoButton => 'Repository im Browser öffnen';
|
||||
|
||||
@override
|
||||
String get storeDocsErrorNotFound =>
|
||||
'Dieses Modul ist nicht im Store-Index des Hubs enthalten.';
|
||||
|
||||
@override
|
||||
String get storeDocsErrorNoDocs =>
|
||||
'Für dieses Modul ist keine Repository-URL hinterlegt.';
|
||||
|
||||
@override
|
||||
String get storeDocsErrorAuth =>
|
||||
'Die Registry erfordert Authentifizierung, um dieses README zu laden. Setze FAI_REGISTRY_TOKEN in der Umgebung des Daemons und starte den Hub neu.';
|
||||
|
||||
@override
|
||||
String storeDocsErrorNetwork(String detail) {
|
||||
return 'Netzwerkfehler beim Laden des README. $detail';
|
||||
}
|
||||
|
||||
@override
|
||||
String get storeDocsErrorParse => 'README ist kein gültiges UTF-8.';
|
||||
|
||||
@override
|
||||
String get storeDocsErrorGeneric => 'README konnte nicht geladen werden.';
|
||||
|
||||
@override
|
||||
String get storeFederationNudgeTitle => 'Mehr Capabilities?';
|
||||
|
||||
|
|
@ -814,4 +942,67 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
|
||||
@override
|
||||
String get languageGerman => 'Deutsch';
|
||||
|
||||
@override
|
||||
String get searchHint =>
|
||||
'Springe überall hin — Module, Store, Flows, Seiten…';
|
||||
|
||||
@override
|
||||
String get searchIndexing => 'Indiziere…';
|
||||
|
||||
@override
|
||||
String get searchNoMatches => 'Keine Treffer.';
|
||||
|
||||
@override
|
||||
String get searchHintNavigate => '↑↓ navigieren';
|
||||
|
||||
@override
|
||||
String get searchHintOpen => 'Enter öffnen';
|
||||
|
||||
@override
|
||||
String get searchHintClose => 'Esc schließen';
|
||||
|
||||
@override
|
||||
String get searchGroupPages => 'Seiten';
|
||||
|
||||
@override
|
||||
String get searchGroupModules => 'Module';
|
||||
|
||||
@override
|
||||
String get searchGroupStore => 'Store';
|
||||
|
||||
@override
|
||||
String get searchGroupFlows => 'Flows';
|
||||
|
||||
@override
|
||||
String get searchSettingsLabel => 'Einstellungen';
|
||||
|
||||
@override
|
||||
String searchPageHint(int n) {
|
||||
return 'Seite · ⌘$n';
|
||||
}
|
||||
|
||||
@override
|
||||
String get searchSettingsHint => 'Hub-Endpunkt, Kanäle, System-AI · ⌘;';
|
||||
|
||||
@override
|
||||
String searchInstalledModuleHint(String version) {
|
||||
return 'installiertes Modul · v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String get searchStoreUncategorized => 'ohne Kategorie';
|
||||
|
||||
@override
|
||||
String searchStoreHintWithTagline(String tagline) {
|
||||
return 'Store · $tagline';
|
||||
}
|
||||
|
||||
@override
|
||||
String searchStoreHintWithCategory(String category) {
|
||||
return 'Store · $category';
|
||||
}
|
||||
|
||||
@override
|
||||
String get searchSavedFlowHint => 'gespeicherter Flow';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -360,6 +360,134 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
return '$n result$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get storeReloadTooltip => 'Reload';
|
||||
|
||||
@override
|
||||
String get storePillInstalled => 'installed';
|
||||
|
||||
@override
|
||||
String get storePillUpdate => 'update';
|
||||
|
||||
@override
|
||||
String storeUpdateButton(String version) {
|
||||
return 'Update to $version';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeUpdateTooltip(String installed, String best) {
|
||||
return 'Installed $installed — store has v$best';
|
||||
}
|
||||
|
||||
@override
|
||||
String get storeNoTagline => '(no tagline)';
|
||||
|
||||
@override
|
||||
String get storeUninstallTitle => 'Uninstall module?';
|
||||
|
||||
@override
|
||||
String storeUninstallBody(String name) {
|
||||
return 'Removes $name from this hub. Flows that reference it will fail at the next run.';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeInstalledToast(String name, String version) {
|
||||
return '$name v$version installed.';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeInstallFailedToast(String error) {
|
||||
return 'Install failed: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeUninstalledToast(String name, String version) {
|
||||
return '$name v$version uninstalled.';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeUninstallFailedToast(String error) {
|
||||
return 'Uninstall failed: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeOpenBrowserFailed(String error) {
|
||||
return 'Could not open browser: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get storeSectionTags => 'Tags';
|
||||
|
||||
@override
|
||||
String get storeSectionRequiredCapabilities => 'Required capabilities';
|
||||
|
||||
@override
|
||||
String get storeSectionRequiredHostServices => 'Required host services';
|
||||
|
||||
@override
|
||||
String get storeSectionScreenshots => 'Screenshots';
|
||||
|
||||
@override
|
||||
String get storeSectionDocumentation => 'Documentation';
|
||||
|
||||
@override
|
||||
String get storeSectionSource => 'Source';
|
||||
|
||||
@override
|
||||
String get storeInstallingButton => 'Installing…';
|
||||
|
||||
@override
|
||||
String get storeNotInstallable => 'Not installable';
|
||||
|
||||
@override
|
||||
String storeNotInstallableTooltip(String status) {
|
||||
return 'Status \"$status\" — install path not yet wired.';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeInstallProgressTitle(String name) {
|
||||
return 'Installing $name';
|
||||
}
|
||||
|
||||
@override
|
||||
String get storeInstallProgressBody => 'Fetching, verifying, unpacking…';
|
||||
|
||||
@override
|
||||
String get storeLoadDocs => 'Load documentation';
|
||||
|
||||
@override
|
||||
String get storeDocsHint =>
|
||||
'README rendered inline; uses the hub\'s registry token when needed.';
|
||||
|
||||
@override
|
||||
String get storeDocsFetching => 'Fetching README…';
|
||||
|
||||
@override
|
||||
String get storeOpenRepoButton => 'Open repository in browser';
|
||||
|
||||
@override
|
||||
String get storeDocsErrorNotFound =>
|
||||
'This module is not in the hub\'s store index.';
|
||||
|
||||
@override
|
||||
String get storeDocsErrorNoDocs =>
|
||||
'No repository URL is recorded for this module.';
|
||||
|
||||
@override
|
||||
String get storeDocsErrorAuth =>
|
||||
'The registry requires authentication to fetch this README. Set FAI_REGISTRY_TOKEN in the daemon\'s environment and restart the hub.';
|
||||
|
||||
@override
|
||||
String storeDocsErrorNetwork(String detail) {
|
||||
return 'Network error while fetching the README. $detail';
|
||||
}
|
||||
|
||||
@override
|
||||
String get storeDocsErrorParse => 'README is not valid UTF-8.';
|
||||
|
||||
@override
|
||||
String get storeDocsErrorGeneric => 'Could not load README.';
|
||||
|
||||
@override
|
||||
String get storeFederationNudgeTitle => 'Want more capabilities?';
|
||||
|
||||
|
|
@ -827,4 +955,66 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
|
||||
@override
|
||||
String get languageGerman => 'Deutsch';
|
||||
|
||||
@override
|
||||
String get searchHint => 'Jump anywhere — modules, store, flows, pages…';
|
||||
|
||||
@override
|
||||
String get searchIndexing => 'Indexing…';
|
||||
|
||||
@override
|
||||
String get searchNoMatches => 'No matches.';
|
||||
|
||||
@override
|
||||
String get searchHintNavigate => '↑↓ navigate';
|
||||
|
||||
@override
|
||||
String get searchHintOpen => 'enter open';
|
||||
|
||||
@override
|
||||
String get searchHintClose => 'esc close';
|
||||
|
||||
@override
|
||||
String get searchGroupPages => 'Pages';
|
||||
|
||||
@override
|
||||
String get searchGroupModules => 'Modules';
|
||||
|
||||
@override
|
||||
String get searchGroupStore => 'Store';
|
||||
|
||||
@override
|
||||
String get searchGroupFlows => 'Flows';
|
||||
|
||||
@override
|
||||
String get searchSettingsLabel => 'Settings';
|
||||
|
||||
@override
|
||||
String searchPageHint(int n) {
|
||||
return 'page · ⌘$n';
|
||||
}
|
||||
|
||||
@override
|
||||
String get searchSettingsHint => 'hub endpoint, channels, system AI · ⌘;';
|
||||
|
||||
@override
|
||||
String searchInstalledModuleHint(String version) {
|
||||
return 'installed module · v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String get searchStoreUncategorized => 'uncategorized';
|
||||
|
||||
@override
|
||||
String searchStoreHintWithTagline(String tagline) {
|
||||
return 'store · $tagline';
|
||||
}
|
||||
|
||||
@override
|
||||
String searchStoreHintWithCategory(String category) {
|
||||
return 'store · $category';
|
||||
}
|
||||
|
||||
@override
|
||||
String get searchSavedFlowHint => 'saved flow';
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue