fix(i18n): Translate the remaining UI text (Git, hierarchy, pull requests, dialogs, aria labels) (#114)

Hard-coded UI text, titles and aria-labels in about 110 components (Git panels, hierarchy, pull requests, dialogs, settings, welcome) now go through tx; spliced fragments became whole sentences (fileCount, noneFoundLabel, hierarchyTitle) and pull request states use keyed messages. 225 zh entries added, stale fragment entries removed.

Also: tx used as a tag without interpolations (tx`No checks`) now looks the text up exactly instead of as a template, so it is translated like tx("No checks"); the text-catalog test checks such tags as plain literals. Check and test counts reuse the existing "{count} passed" / "{failed} failing" entries.

Claude-Session: https://claude.ai/code/session_01VUYsdXA2nkF5v6zsC93dpn
Co-authored-by: jaw52 <[email protected]>
Цей коміт міститься в:
Jaw authored and GitHub committed 2026-10-28 12:18:46 +08:00
1 джерело faf666d125
коміт 70f10e741c
121 files changed
+854 -457

No files matched your search

+3 -3
Переглянути файл
@@ -41,7 +41,7 @@ export function VimSettingsPage() {
label="Enable Vim emulation"
/>
<section className={styles.section} aria-label="Vim rc file">
<section className={styles.section} aria-label={tx("Vim rc file")}>
<div className={styles.header}>
<span>
<T>Configuration file</T>
@@ -66,7 +66,7 @@ export function VimSettingsPage() {
</T>
</p>
{rc.ignored.length > 0 && (
<ul className={styles.ignored} aria-label="Ignored lines">
<ul className={styles.ignored} aria-label={tx("Ignored lines")}>
{rc.ignored.map((i) => (
<li key={i.line}>
<span className={styles.mono}>
@@ -79,7 +79,7 @@ export function VimSettingsPage() {
)}
</section>
<section className={styles.section} aria-label="Shortcut conflicts">
<section className={styles.section} aria-label={tx("Shortcut conflicts")}>
<div className={styles.header}>
<span>
<T>Shortcut conflicts</T>