refactor(i18n): route remaining extension labels through the catalog (T-468)

Migrate the user-facing strings in menubar, output, search, deeplink, editor,
files, terminal, markdown, and vim to ClideSettings.i18n.string/.interpolated;
extend the existing catalogs and create the missing ones (deeplink, output,
search, markdown, menubar, vim). vim mode labels now resolve through
builtin.vim (default still `-- NORMAL --`, now localizable). A dock-status test
seeds builtin.output so the widget's own i18n lookups resolve instead of
warning into the logRing it counts. No en_US behaviour change (D-21).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-18 22:16:20 +02:00
co-authored by Claude Opus 4.8
parent 17d22b9571
commit c5500dc235
25 changed files with 495 additions and 97 deletions
+15 -1
View File
@@ -3,6 +3,8 @@ library;
import 'package:clide/builtin/default_layout/default_layout.dart';
import 'package:clide/builtin/output/output.dart';
import 'dart:ui';
import 'package:clide/kernel/kernel.dart';
import 'package:clide/widgets/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
@@ -16,7 +18,19 @@ void main() {
late KernelFixture f;
setUp(() async {
f = await KernelFixture.create();
// Seed builtin.output so the widget's own i18n lookups resolve — as they do
// at boot in the real app. Otherwise "namespace not registered" warnings
// land in the logRing this very widget counts, skewing the health badge.
f = await KernelFixture.create(
i18nCatalogs: {
'builtin.output': {
const Locale('en', 'US'): const {
'dock.label': {'translation': 'Output'},
'a11y.toggleDock': {'translation': 'toggle output dock'},
},
},
},
);
f.services.extensions.register(DefaultLayoutExtension());
await f.services.extensions.activate('builtin.default-layout');
});