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
+14 -4
View File
@@ -320,9 +320,19 @@ class _EditorViewState extends State<EditorView> {
builder: (context, _) {
if (c.buffers.isEmpty) {
return ClidePaneChrome(
title: 'editor',
subtitle: 'no buffer · use `clide open <path>` or pick a file in the tree',
child: const Center(child: ClideText('Open a file to begin editing.', muted: true)),
title: ClideSettings.i18n.string(context, 'chrome.title', namespace: 'builtin.editor', placeholder: 'editor'),
subtitle: ClideSettings.i18n.string(
context,
'subtitle.no-buffer',
namespace: 'builtin.editor',
placeholder: 'no buffer · use `clide open <path>` or pick a file in the tree',
),
child: Center(
child: ClideText(
ClideSettings.i18n.string(context, 'empty', namespace: 'builtin.editor', placeholder: 'Open a file to begin editing.'),
muted: true,
),
),
);
}
return MultitabPane<String>(
@@ -392,7 +402,7 @@ class _TextBody extends StatelessWidget {
showCursor: true,
);
return Semantics(
label: 'editor text area',
label: ClideSettings.i18n.string(context, 'a11y.text-area', namespace: 'builtin.editor', placeholder: 'editor text area'),
textField: true,
multiline: true,
child: ColoredBox(