fix(l10n): low-severity language findings from the usertest panel
Some checks are pending
Security / Security check (push) Waiting to run

- 'Mit Endpunkt verbinden' — no Endpoint/Endpunkt mix
- audit-chain lead term is 'Hash-Kette' everywhere (doctor pill);
  chain detail says 'Verkettung lückenlos geprüft' instead of the
  raw field name prev_event_sha256
- welcome checklist line says who refreshes what
- setup privacy note explains the local model instead of ending in
  a bare model tag
- default project renders localized ('Allgemein') in the switcher;
  sealed-area status pills explain run state on hover

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-07-18 00:33:27 +02:00
parent 32e2510c63
commit 12b2e8327a
6 changed files with 99 additions and 30 deletions

View file

@ -11,6 +11,7 @@
import 'package:flutter/material.dart';
import '../data/hub.dart' show ProjectRef;
import '../data/sealed_areas.dart';
import '../data/workspace.dart';
import '../l10n/app_localizations.dart';
@ -36,7 +37,11 @@ class ChainWorkspaceSwitcher extends StatelessWidget {
final label = ws.inSealedArea
? ws.activeSealed!.name
: (ws.isAll ? l.workspaceAll : (ws.active?.name ?? ws.activeSlug));
: (ws.isAll
? l.workspaceAll
: (ws.active == null
? ws.activeSlug
: _projectLabel(l, ws.active!)));
return Tooltip(
message: l.workspaceSwitcherTooltip,
@ -82,7 +87,12 @@ class ChainWorkspaceSwitcher extends StatelessWidget {
children: [
_ProjectDot(color: p.color),
const SizedBox(width: ChainSpace.sm),
Flexible(child: Text(p.name, overflow: TextOverflow.ellipsis)),
Flexible(
child: Text(
_projectLabel(l, p),
overflow: TextOverflow.ellipsis,
),
),
if (p.isProtected) ...[
const SizedBox(width: ChainSpace.sm),
Tooltip(
@ -130,12 +140,19 @@ class ChainWorkspaceSwitcher extends StatelessWidget {
const SizedBox(width: 4),
Flexible(child: Text(a.name, overflow: TextOverflow.ellipsis)),
const SizedBox(width: ChainSpace.sm),
Text(
a.running ? l.workspaceSealedRunning : l.workspaceSealedStopped,
style: theme.textTheme.labelSmall?.copyWith(
color: a.running
? ChainColors.success
: theme.colorScheme.onSurfaceVariant,
Tooltip(
message: a.running
? l.workspaceSealedRunningHint
: l.workspaceSealedStoppedHint,
child: Text(
a.running
? l.workspaceSealedRunning
: l.workspaceSealedStopped,
style: theme.textTheme.labelSmall?.copyWith(
color: a.running
? ChainColors.success
: theme.colorScheme.onSurfaceVariant,
),
),
),
],
@ -266,6 +283,12 @@ class ChainWorkspaceSwitcher extends StatelessWidget {
}
}
/// Display name for a registry project. The hub's default project
/// carries the fixed English name "General"; render it localized
/// ("Allgemein") so no English label sits in the German menu.
String _projectLabel(AppLocalizations l, ProjectRef p) =>
p.slug == 'general' ? l.workspaceDefaultProject : p.name;
/// The project's registry colour as a small marking dot. Falls back
/// to the theme's outline colour when unset.
class _ProjectDot extends StatelessWidget {